Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generates or updates docs/code-standards.md by scanning the codebase for actual conventions. Produces an example-rich standards file optimized for LLM consumers, grounded in the project's real patterns. Not for auditing one file's naming, comments, or clarity (use code-clarity-and-docs).
.claude/skills/ryanthedev-code-standards/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 141% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 58% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 13% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 340% | 0% |
Generate or update docs/code-standards.md — a project-specific conventions file optimized for LLM consumers.
LLMs default to training-data averages. Without project-specific guidance, they produce generic code that passes tests but fails review. This skill extracts the patterns that matter: concrete examples, forbidden patterns, and exemplar file pointers.
Check for existing standards file:
1. Look for docs/code-standards.md (or legacy docs/code-patterns.md)
2. If legacy exists: migrate path (rename to docs/code-standards.md)If file exists, read the <!-- base-commit: ... --> header and check staleness:
bashgit rev-list <base-commit>..HEAD --count
| Commits since | Action | |---------------|--------| | 0 | Skip — file is current, return it as-is | | 1–20 | Update — spot-check recent diffs (git diff <base-commit>..HEAD), update changed sections only | | 21+ | Generate — full re-scan, regenerate entire file |
If file exists but has no <!-- base-commit: ... --> header, the sha is unknown, or the repo is not a git repo: treat as Generate.
If file missing, proceed to full Generate.
Search the codebase for conventions. Adapt searches to what the project actually contains — not every section applies to every codebase.
Search strategy per section:
| Section | What to grep/glob for | |---------|----------------------| | Forbidden Patterns | Linter configs, eslint-disable comments, TODO/HACK comments | | Code Examples | Covered by other searches — select best do/don't pairs found | | Error Handling | try/catch, Result types, error classes, .catch() | | Imports & Dependencies | Import statements, barrel files, dependency direction | | Testing Patterns | Test files, helpers, fixtures, mocks | | Naming | Variable/function/file naming across 5+ files | | File Organization | Directory structure, co-location patterns | | Technology Decisions | Package files, config files, framework imports | | Exemplar Files | Well-structured files that demonstrate multiple conventions |
Scan breadth over depth — sample across the codebase rather than exhaustively cataloging one directory.
For Update mode: Only search sections where recent diffs show changes to relevant patterns.
Read the section templates before writing: Read(${CLAUDE_PLUGIN_ROOT}/skills/code-standards/references/section-templates.md)
File format:
markdown<!-- base-commit: [HEAD sha] --> <!-- generated: [YYYY-MM-DD] --> # Code Standards [sections per templates]
Core rules:
Write to docs/code-standards.md. Do NOT commit the file.
After writing, self-check:
Nine sections. Contrastive sections (DO/DON'T) come first — they resist confirmation bias and anchor behavior more reliably than descriptive sections (2603.18740). Not all sections apply to every project — skip where you find no meaningful conventions.
See the templates file for detailed format per section.
| From | To | |------|-----| | plan (codebase scan step) | Returns docs/code-standards.md path | | build-agent (discovery phase) | Reads the file directly |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 1,874 | 5,321 | +184% | 1 | 1 | 0% | 235 | 1,548 | +559% | 0 | 0 | — |
case-02 | fail→fail | 9,046 | 4,287 | -53% | 1 | 1 | 0% | 652 | 1,400 | +115% | 0 | 0 | — |
case-03 | fail→fail | 4,437 | 4,327 | -2% | 1 | 1 | 0% | 193 | 1,498 | +676% | 0 | 0 | — |
case-04 | fail→pass | 4,251 | 3,147 | -26% | 1 | 1 | 0% | 699 | 1,688 | +141% | 0 | 0 | — |
case-21 | pass→fail | 7,078 | 4,320 | -39% | 1 | 1 | 0% | 1,229 | 1,564 | +27% | 0 | 0 | — |
case-05 | pass→pass | 5,661 | 1,635 | -71% | 1 | 1 | 0% | 890 | 1,426 | +60% | 0 | 0 | — |
case-06 | fail→pass | 10,214 | 2,532 | -75% | 1 | 1 | 0% | 1,601 | 1,629 | +2% | 0 | 0 | — |
case-07 | fail→fail | 10,237 | 3,933 | -62% | 1 | 1 | 0% | 1,787 | 1,880 | +5% | 0 | 0 | — |
case-08 | pass→pass | 10,298 | 3,707 | -64% | 1 | 1 | 0% | 1,734 | 1,861 | +7% | 0 | 0 | — |
case-09 | fail→pass | 5,580 | 1,472 | -74% | 1 | 1 | 0% | 926 | 1,466 | +58% | 0 | 0 | — |
case-10 | fail→pass | 11,021 | 4,791 | -57% | 1 | 1 | 0% | 1,759 | 1,994 | +13% | 0 | 0 | — |
case-11 | fail→pass | 3,530 | 3,433 | -3% | 1 | 1 | 0% | 403 | 1,773 | +340% | 0 | 0 | — |
case-12 | pass→fail | 6,532 | 3,453 | -47% | 1 | 1 | 0% | 1,086 | 1,747 | +61% | 0 | 0 | — |
case-13 | pass→pass | 12,336 | 4,179 | -66% | 1 | 1 | 0% | 1,902 | 1,849 | -3% | 0 | 0 | — |
case-14 | fail→pass | 8,433 | 3,292 | -61% | 1 | 1 | 0% | 1,296 | 1,767 | +36% | 0 | 0 | — |
case-15 | fail→pass | 3,354 | 2,725 | -19% | 1 | 1 | 0% | 608 | 1,606 | +164% | 0 | 0 | — |
case-16 | pass→pass | 17,197 | 9,533 | -45% | 1 | 1 | 0% | 2,577 | 2,666 | +3% | 0 | 0 | — |
case-22 | pass→fail | 5,656 | 6,263 | +11% | 1 | 1 | 0% | 878 | 1,429 | +63% | 0 | 0 | — |
case-17 | pass→pass | 12,391 | 5,392 | -56% | 1 | 1 | 0% | 2,000 | 2,058 | +3% | 0 | 0 | — |
case-18 | fail→pass | 8,661 | 1,719 | -80% | 1 | 1 | 0% | 1,334 | 1,444 | +8% | 0 | 0 | — |
case-19 | fail→pass | 10,196 | 6,257 | -39% | 1 | 1 | 0% | 1,485 | 2,126 | +43% | 0 | 0 | — |
case-20 | fail→fail | 15,567 | 14,823 | -5% | 1 | 1 | 0% | 1,435 | 3,159 | +120% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 17 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +27 percentage points is the difference between those two pass rates over the 17 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.