agentleFS
lsyamsiarlsyamsiar/claude-skills/CLAUDE.md

claude-skills

CLAUDE.md0 starsChanged 11 months agoMITView on GitHub

This file governs Claude's behavior when working on the claude-skills repository. Skills follow the Agent Skills specification. This section covers project-specific conventions that go beyond the base spec. 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…

The file

Show its rules and text

We split this CLAUDE.md into the rules it gives an agent

33 rules. About 0 are common, 20 are distinctive, and 13 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈20

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 13

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Critical: Never put process steps or workflow sequences in descriptions.

    line 13
  2. Distinctive:

    Keep files focused on a single topic

    line 85
  3. Very specific:

    Every SKILL.md MUST end with a single canonical Documentation link pointing back to the docs site:

    line 99
  4. Very specific:

    When adding or renaming a skill: update both the directory name (which becomes {skill-name}) and the metadata.domain consistently with this …

    line 114
  5. Distinctive:

    Check existing skills for overlap

    line 155
  6. Very specific:

    Write SKILL.md with capability + trigger description (no process steps)

    line 156
  7. Distinctive:

    Create reference files for deep content (100+ lines)

    line 157
  8. Distinctive:

    Add routing table linking topics to references

    line 158
  9. Distinctive:

    Test skill triggers with realistic prompts

    line 160
  10. Very specific:

    Update SKILLS_GUIDE.md if adding new domain

    line 161
  11. Distinctive:

    Read the full current skill before editing

    line 165
  12. Distinctive:

    Verify routing table accuracy

    line 169
  13. Very specific:

    Every external contribution (issue or PR) gets the gratitude label, whatever its outcome.

    line 173
  14. Very specific:

    If skill or reference counts changed, run python scripts/update-docs.py in the same push, otherwise update-docs.py --check fails CI on main

    line 181
  15. Distinctive:

    When releasing a new version, follow these steps.

    line 195
  16. Very specific:

    Update the version field in version.json

    line 212
  17. Distinctive:

    Run the update script:

    line 213
  18. Very specific:

    Update version.json with computed counts

    line 221
  19. Very specific:

    Update all documentation files (README.md, plugin.json, etc.)

    line 222
  20. Distinctive:

    Add new version entry at the top following Keep a Changelog format:

    line 232
  21. Distinctive:

    Add version comparison link at bottom:

    line 247
  22. Very specific:

    Add to SKILLS_GUIDE.md in appropriate category

    line 255
  23. Distinctive:

    Add to decision trees if applicable

    line 256
  24. Very specific:

    Run python scripts/update-docs.py to update counts

    line 257
  25. Distinctive:

    Add to README.md Project Workflow Commands table

    line 261
  26. Very specific:

    Update SKILLS_GUIDE.md if triggers changed

    line 266
  27. Distinctive:

    When regeneration is needed:

    line 272
  28. Distinctive:

    Critical: Run validation before release to prevent broken skills from being published.

    line 282
  29. Distinctive:

    Critical: Run markdown validation to catch parsing errors.

    line 309
  30. Distinctive:

    Column count consistency: - All table rows must have same column count

    line 319
  31. Distinctive:

    After running validation, manually verify:

    line 332
  32. Very specific:

    Never edit the plugin branch by hand.

    line 343
  33. Distinctive:

    After the tag push, confirm the workflow succeeded and the branch's latest commit names the new tag

    line 344

≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
CLAUDE.md

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
  company: https://synergetic.solutions
  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: Always MIT for this project
  • allowed-tools: Space-delimited tool list (only on skills that restrict tools)

Metadata fields (project-specific):

  • author: GitHub profile URL of the skill author
  • company: Optional. URL of the author's company (https://synergetic.solutions on skills authored by @jeffallan); omit for contributed skills unless the contributor supplies one
  • version: Semantic version string (quoted, e.g., "1.0.0")
  • domain: Category from the domain list below
  • triggers: Comma-separated searchable keywords
  • role: specialist | expert | architect | engineer
  • scope: implementation | review | design | system-design | testing | analysis | infrastructure | optimization | architecture
  • output-format: code | document | report | architecture | specification | schema | manifests | analysis | analysis-and-code
  • related-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} is metadata.domain from the frontmatter (default specialized if absent — matches the fallback in site/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.md from 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. syncSkillPages in site/scripts/sync-content.mjs strips the line at build time so the docs site, public markdown mirrors, llms.txt, and llms-full.txt never 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.

Maintainer Credit

Skills authored by @jeffallan (those with metadata.company: https://synergetic.solutions) carry one more line, directly above the Documentation backlink, separated by a blank line. It matches the docs site footer credit:

Maintained by [@jeffallan](https://github.com/jeffallan), Principal Consultant at [Synergetic Solutions](https://synergetic.solutions)

[Documentation](https://jeffallan.github.io/claude-skills/skills/{domain}/{skill-name}/)
  • The Documentation backlink stays the last line
  • Contributed skills do not get this line unless their metadata.company is set to the same URL
  • syncSkillPages strips it at build time alongside the Documentation backlink, so the docs site, markdown mirrors, and llms files never show it (the site footer shows the same credit once per page)

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

  1. Check existing skills for overlap
  2. Write SKILL.md with capability + trigger description (no process steps)
  3. Create reference files for deep content (100+ lines)
  4. Add routing table linking topics to references
  5. Append the canonical Documentation backlink as the last line (see Documentation Backlink above)
  6. Test skill triggers with realistic prompts
  7. Update SKILLS_GUIDE.md if adding new domain

When Modifying Skills

  1. Read the full current skill before editing
  2. Maintain capability + trigger description format (no process steps)
  3. Preserve progressive disclosure structure
  4. Update related cross-references
  5. Verify routing table accuracy

When Accepting Contributions

Every external contribution (issue or PR) gets the gratitude label, whatever its outcome.

For each PR:

  1. Discuss fit with project goals before any merge decision (scope, overlap with existing skills, promotional content), then verify the content
  2. Squash-merge with subject type(scope): title (#N)
    • Conflicted fork PRs: squash locally (git merge --squash), add Co-authored-by: with the contributor's commit email, then close the PR with a comment pointing at the commit
  3. Record it in a separate commit, docs(changelog): record #N <summary> under Unreleased, adding an entry under [Unreleased] → Added/Changed/Fixed that ends with (#N) (append closing #ISSUE when it resolves one)
  4. If skill or reference counts changed, run python scripts/update-docs.py in the same push, otherwise update-docs.py --check fails CI on main
  5. Post-merge corrections go in their own commit with their own ### Changed entry

At release time, credit contributors (including issue reporters) in a ### Contributors section of the version entry:

### Contributors
- @handle — What they contributed (#N)

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:

  1. Update the version field in version.json
  2. Run the update script:
python scripts/update-docs.py

The script will:

  • Compute counts from the filesystem (skills, references, workflows)
  • Update version.json with 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.md in appropriate category
  • Add to decision trees if applicable
  • Run python scripts/update-docs.py to update counts

For new commands:

  • Add to docs/WORKFLOW_COMMANDS.md
  • Add to README.md Project Workflow Commands table
  • Run python scripts/update-docs.py to 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"

8. Plugin Branch

The plugin ships from the plugin branch, not from main. Pushing the vX.Y.Z tag runs .github/workflows/publish-plugin.yml, which rebuilds that branch from scripts/build-plugin-dist.sh (only .claude-plugin/plugin.json, skills/, commands/, references/, README.md, LICENSE). Both the marketplace entry and the Claude plugin directory read from it.

  • Never edit the plugin branch by hand; the next publish overwrites it
  • After the tag push, confirm the workflow succeeded and the branch's latest commit names the new tag
  • A file the plugin needs at runtime must live under one of the shipped paths, or it will be missing from installs

Attribution

Behavioral patterns and process discipline adapted from:

Research documented in: research/superpowers.md

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.