mirror of
https://github.com/mukul975/Anthropic-Cybersecurity-Skills.git
synced 2026-08-29 04:39:40 +03:00
The Thanks-to-our-contributors block was hand-maintained and had gone stale: it listed 8 people where the API reports 13, omitting valorisa (second by contribution count with 18), Daytona39264, kevglynn, OctoBored and farhan6667. tools/update-contributors.py regenerates the block between <!-- contributors:start --> and <!-- contributors:end --> from the GitHub contributors API, ordered by contribution count, bots excluded, with the contribution count in each avatar's tooltip. It has a --check mode and refuses to write an empty wall if the API returns nothing. .github/workflows/update-contributors.yml runs it on push to main, weekly, and on demand, committing only when the block actually changes. The weekly pass exists because the contributors API is cached and can lag a merge by about a day, so a push-triggered run alone would miss people. Avatars come from github.com/<login>.png rather than a third-party contributor-image service. A README image is fetched on every page view, so an external host would be an uncontrolled dependency in the most-viewed file in the repository - the same objection raised against the star-history endpoint swap in #124.
Skill Validation Tools
validate-skill.py
Validate SKILL.md metadata before submitting a PR.
Usage
# Validate a single skill
python tools/validate-skill.py skills/my-new-skill/
# Validate all skills
python tools/validate-skill.py --all
What it checks
- SKILL.md exists in the skill directory
- Valid YAML frontmatter (between
---markers) - Required fields present:
name,description,domain,subdomain,tags,version,author,license - Name is kebab-case, 1–64 characters
- Description is at least 50 characters (agentskills.io caps it at 1024;
tools/validate-agentskills.pyenforces that) - Domain is
cybersecurity - Subdomain is from the allowed list
- Tags is a list with at least 2 items
Requirements
Python 3.8+ and PyYAML (pip install pyyaml).
All frontmatter is parsed by skill_frontmatter.py, the single PyYAML-backed loader. It replaced three hand-rolled regex parsers that silently truncated multi-line descriptions to their first line — that bug shipped 604 of 817 descriptions broken in index.json. Do not reintroduce regex frontmatter parsing; CI fails the build if it detects any.