A strict path audit following #225 found one more broken reference: fastapi-expert's migration-from-django.md cited an absolute-style path that resolves nowhere. To guard this recurring bug class, add ReferencePathChecker to validate-skills.py: every backtick or markdown-link .md path in skill files must resolve relative to the containing file or the skill root. Runs by default, so CI and make validate exercise it on every push. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E6LA4sndtVGyvoXqwYeHoB
11 KiB
Claude Skills Project Configuration
This file governs Claude's behavior when working on the claude-skills repository.
Skill Authorship Standards
Skills follow the Agent Skills specification. This section covers project-specific conventions that go beyond the base spec.
The Description Trap
Critical: Never put process steps or workflow sequences in descriptions. When descriptions contain step-by-step instructions, agents follow the brief description instead of reading the full skill content. This defeats the purpose of detailed skills.
Brief capability statements (what it does) and trigger conditions (when to use it) are both appropriate. Process steps (how it works) are not.
BAD - Process steps in description:
description: Use for debugging. First investigate root cause, then analyze
patterns, test hypotheses, and implement fixes with tests.
GOOD - Capability + trigger:
description: Diagnoses bugs through root cause analysis and pattern matching.
Use when encountering errors or unexpected behavior requiring investigation.
Format: [Brief capability statement]. Use when [triggering conditions].
Descriptions tell WHAT the skill does and WHEN to use it. The SKILL.md body tells HOW.
Frontmatter Requirements
Per the Agent Skills specification, only name and description are top-level required fields. Custom fields go under metadata.
---
name: skill-name-with-hyphens
description: [Brief capability statement]. Use when [triggering conditions] - max 1024 chars
license: MIT
metadata:
author: https://github.com/Jeffallan
version: "1.0.0"
domain: frontend
triggers: keyword1, keyword2, keyword3
role: specialist
scope: implementation
output-format: code
related-skills: fullstack-guardian, test-master, devops-engineer
---
Top-level fields (spec-defined):
name: Letters, numbers, and hyphens only (no parentheses or special characters)description: Maximum 1024 characters. Capability statement + trigger conditions. No process steps.license: AlwaysMITfor this projectallowed-tools: Space-delimited tool list (only on skills that restrict tools)
Metadata fields (project-specific):
author: GitHub profile URL of the skill authorversion: Semantic version string (quoted, e.g.,"1.0.0")domain: Category from the domain list belowtriggers: Comma-separated searchable keywordsrole:specialist|expert|architect|engineerscope:implementation|review|design|system-design|testing|analysis|infrastructure|optimization|architectureoutput-format:code|document|report|architecture|specification|schema|manifests|analysis|analysis-and-code|code+analysisrelated-skills: Comma-separated skill directory names (e.g.,fullstack-guardian, test-master). Must resolve to existing skill directories.
Domain values:
language · backend · frontend · infrastructure · api-architecture · quality · devops · security · data-ml · platform · specialized · workflow
Reference File Standards
Reference files follow the Agent Skills specification. No specific headers are required.
Guidelines:
- 100-600 lines per reference file
- Keep files focused on a single topic
- Complete, working code examples with TypeScript types
- Cross-reference related skills where relevant
- Include "when to use" and "when not to use" guidance
- Practical patterns over theoretical explanations
Framework Idiom Principle
Reference files for framework-specific skills must reflect the idiomatic best practices of that framework, not generic patterns applied uniformly across all skills. If a framework provides a built-in mechanism (e.g., global error handling, middleware, dependency injection), reference examples should use it rather than duplicating that behavior manually. Each framework's conventions for error handling, architecture, and code organization take precedence over cross-project consistency.
Documentation Backlink
Every SKILL.md MUST end with a single canonical Documentation link pointing back to the docs site:
[Documentation](https://jeffallan.github.io/claude-skills/skills/{domain}/{skill-name}/)
{domain}ismetadata.domainfrom the frontmatter (defaultspecializedif absent — matches the fallback insite/scripts/sync-content.mjs).{skill-name}is the skill's directory name.- Format is exactly markdown link syntax (
[text](url)), not a bare URL. Strict CommonMark renderers do not auto-link bare URLs, and the line's purpose is to render as a real<a href>on aggregators (skills.sh, etc.) for SEO backlinks.
Why two surfaces, two behaviors:
- Aggregators consume raw
SKILL.mdfrom GitHub and render the line as a hyperlink. This is the SEO point. - The docs site itself would render this line as a self-link, which is redundant.
syncSkillPagesinsite/scripts/sync-content.mjsstrips the line at build time so the docs site, public markdown mirrors,llms.txt, andllms-full.txtnever show it.
When adding or renaming a skill: update both the directory name (which becomes {skill-name}) and the metadata.domain consistently with this URL formula, otherwise the backlink will 404.
Progressive Disclosure Architecture
Tier 1 - SKILL.md (~80-100 lines)
- Role definition and expertise level
- When-to-use guidance (triggers)
- Core workflow (5 steps)
- Constraints (MUST DO / MUST NOT DO)
- Routing table to references
Tier 2 - Reference Files (100-600 lines each)
- Deep technical content
- Complete code examples
- Edge cases and anti-patterns
- Loaded only when context requires
Goal: 50% token reduction through selective loading.
Project Workflow
When Creating New Skills
- Check existing skills for overlap
- Write SKILL.md with capability + trigger description (no process steps)
- Create reference files for deep content (100+ lines)
- Add routing table linking topics to references
- Append the canonical Documentation backlink as the last line (see Documentation Backlink above)
- Test skill triggers with realistic prompts
- Update SKILLS_GUIDE.md if adding new domain
When Modifying Skills
- Read the full current skill before editing
- Maintain capability + trigger description format (no process steps)
- Preserve progressive disclosure structure
- Update related cross-references
- Verify routing table accuracy
Release Checklist
When releasing a new version, follow these steps.
1. Update Version and Counts
Version and counts are managed through version.json:
{
"version": "0.4.2",
"skillCount": 65,
"workflowCount": 9,
"referenceFileCount": 355
}
To release a new version:
- Update the
versionfield inversion.json - Run the update script:
python scripts/update-docs.py
The script will:
- Compute counts from the filesystem (skills, references, workflows)
- Update
version.jsonwith computed counts - Update all documentation files (README.md, plugin.json, etc.)
Options:
python scripts/update-docs.py --check # Verify files are in sync (CI use)
python scripts/update-docs.py --dry-run # Preview changes without writing
2. Update CHANGELOG.md
Add new version entry at the top following Keep a Changelog format:
## [X.Y.Z] - YYYY-MM-DD
### Added
- New features, skills, commands
### Changed
- Modified functionality, updated skills
### Fixed
- Bug fixes
Add version comparison link at bottom:
[X.Y.Z]: https://github.com/jeffallan/claude-skills/compare/vPREVIOUS...vX.Y.Z
3. Update Documentation for New/Modified Content
For new skills:
- Add to
SKILLS_GUIDE.mdin appropriate category - Add to decision trees if applicable
- Run
python scripts/update-docs.pyto update counts
For new commands:
- Add to
docs/WORKFLOW_COMMANDS.md - Add to
README.mdProject Workflow Commands table - Run
python scripts/update-docs.pyto update counts
For modified skills/commands:
- Update any cross-references
- Update SKILLS_GUIDE.md if triggers changed
4. Generate Social Preview (conditional)
The social preview embeds skill, workflow, and reference counts but not the version. Only regenerate when at least one of skillCount, workflowCount, or referenceFileCount in version.json changed in this release — patch releases that only fix docs or a single skill normally do not need it.
When regeneration is needed:
npx -y -p puppeteer node ./assets/capture-screenshot.js
This creates assets/social-preview.png from assets/social-preview.html.
5. Validate Skills Integrity
Critical: Run validation before release to prevent broken skills from being published.
python scripts/validate-skills.py
The script validates:
- YAML frontmatter - Parsing, required fields (name, description, triggers), format
- Name format - Letters, numbers, hyphens only
- Description - Max 1024 chars, must contain "Use when" trigger clause
- References - Directory exists, has files, proper headers
- Reference paths - File paths cited in skill markdown resolve relative to the containing file or the skill root
- Count consistency - Skills/reference counts match across documentation
Options:
python scripts/validate-skills.py --check yaml # YAML checks only
python scripts/validate-skills.py --check references # Reference checks only
python scripts/validate-skills.py --skill react-expert # Single skill
python scripts/validate-skills.py --format json # JSON output for CI
python scripts/validate-skills.py --help # Full usage
Exit codes: 0 = success (warnings OK), 1 = errors found
6. Validate Markdown Syntax
Critical: Run markdown validation to catch parsing errors.
python scripts/validate-markdown.py
The script validates:
- HTML comments in tables - Comments between table rows break parsing
- Unclosed code blocks - Ensures all code fences are properly closed
- Missing table separators - Tables require
|---|row after header - Column count consistency - All table rows must have same column count
Options:
python scripts/validate-markdown.py --check # CI mode (exit code only)
python scripts/validate-markdown.py --path FILE # Single file
python scripts/validate-markdown.py --format json # JSON output for CI
Exit codes: 0 = no issues, 1 = issues found
7. Final Verification
After running validation, manually verify:
# Check no old version references remain (except historical changelog)
grep -r "OLD_VERSION" --include="*.md" --include="*.json" --include="*.html"
Attribution
Behavioral patterns and process discipline adapted from:
- obra/superpowers by Jesse Vincent (@obra)
- License: MIT
Research documented in: research/superpowers.md