Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when creating or refactoring CLAUDE.md files - enforces best practices for size, structure, and content organization
.claude/skills/serejaris-claude-md-writer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 46% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 62% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 62% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 45% | 0% |
Creates and refactors CLAUDE.md files following official Anthropic best practices (2025).
| Rule | Why | |------|-----| | CLAUDE.md < 200 lines | Loads on EVERY request, costs tokens | | Rules files < 500 lines each | Official recommendation per file | | Critical rules FIRST | Top = highest priority | | Modular rules → .claude/rules/ | Conditional loading, organized | | Use paths: frontmatter | Load rules only for matching files | | No linting rules | Use ESLint/Prettier/Biome instead | | Pointers over copies | Files change, references stay valid |
Claude Code loads memory in this order (higher = higher priority):
| Priority | Type | Location | |----------|------|----------| | Highest | Enterprise | /Library/Application Support/ClaudeCode/CLAUDE.md | | ↓ | Project | ./CLAUDE.md or ./.claude/CLAUDE.md | | ↓ | Rules | ./.claude/rules/*.md (conditional) | | ↓ | User | ~/.claude/CLAUDE.md | | Lowest | Local | ./CLAUDE.local.md (gitignored) |
Use /memory command to see currently loaded files.
Official recommendation for large projects:
| Tier | Location | Loads | Target | |------|----------|-------|--------| | 1. Foundation | CLAUDE.md | Always | < 200 lines | | 2. Component | .claude/rules/{component}/ | When working in component | < 500 lines | | 3. Feature | Co-located with code | When working on feature | As needed |
Example structure:
.claude/
├── CLAUDE.md # Tier 1: always loaded
└── rules/
├── database.md # Tier 2: SQL, migrations
├── api.md # Tier 2: API patterns
└── frontend/ # Tier 2: subdirectory
├── components.md # paths: src/**/*.tsx
├── layout.md # paths: src/pages/**/*.tsx
└── tokens.md # paths: **/*.tsxmarkdown# Project Name One-line description. ## Commands - `npm run dev` - Development - `npm run build` - Production - `npm run test` - Tests ## Architecture | Path | Purpose | |------|---------| | `lib/` | Core logic | | `app/api/` | API routes | ## Key Patterns **Pattern Name**: One-line explanation. ## Database (if applicable) | Table | Key Fields | |-------|------------| ## Modular Docs See `.claude/rules/` for: - `database.md` - queries, schema - `deploy.md` - deployment ## Tech Stack One line: Next.js 15, PostgreSQL, TypeScript
Use YAML frontmatter for file-type-specific rules:
markdown--- paths: "src/api/**/*.ts" --- # API Rules - All endpoints must validate input - Use standard error format
| Pattern | Matches | |---------|---------| | **/*.ts | All .ts files anywhere | | src/**/* | All files under src/ | | *.md | Markdown in project root | | src/components/*.tsx | Components in specific dir |
yaml# Multiple extensions paths: "src/**/*.{ts,tsx}" # Multiple directories paths: "{src,lib}/**/*.ts, tests/**/*.test.ts"
Note: Wrap patterns in quotes for YAML safety.
Rules with paths: only load when working with matching files → saves tokens.
/init for base CLAUDE.md.claude/rules/ for domain-specific docs.claude/rules/:database.md - queries, schema, connectiondeploy.md - deployment processmessaging.md - integrations (Telegram, etc.)@file references — don't duplicate| Content | Location | |---------|----------| | Project description | CLAUDE.md | | Critical constraints | CLAUDE.md (top!) | | Quick start (3 commands) | CLAUDE.md | | Architecture overview | CLAUDE.md | | Key patterns (1-liners) | CLAUDE.md | | SQL queries/schema | .claude/rules/database.md | | Deployment steps | .claude/rules/deploy.md | | API documentation | .claude/rules/api.md | | Git workflow | .claude/rules/git.md | | Personal preferences | CLAUDE.local.md (gitignored) | | Code style rules | .eslintrc / biome.json (NOT docs) |
Reference files instead of duplicating:
markdown@README.md @docs/architecture.md @~/.claude/snippets/common.md
@docs/file.md@~/path/file.mdPersonal project settings (auto-gitignored):
markdown# My Local Settings - Prefer verbose output - Run tests after every change - My worktree location: .trees/
| Mistake | Fix | |---------|-----| | 500+ lines | Split into .claude/rules/ | | SQL examples inline | → rules/database.md | | "Run prettier" rules | Use tool config files | | Full API docs | → rules/api.md | | Deployment instructions | → rules/deploy.md | | Code in CLAUDE.md | Use @file:line references | | Negative rules only | Add alternatives: "Don't X; use Y instead" |
Before finishing:
.claude/rules/ for domain-specific docs?paths: frontmatter for conditional loading?@ references instead of duplication?| Command | Purpose | |---------|---------| | /init | Generate initial CLAUDE.md | | /memory | View loaded memory files |
Official:
Community:
Updated: Jan 2026
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 24,653 | 20,860 | -15% | 1 | 1 | 0% | 3,391 | 4,961 | +46% | 0 | 0 | — |
case-02 | fail→pass | 21,271 | 22,689 | +7% | 1 | 1 | 0% | 2,897 | 4,702 | +62% | 0 | 0 | — |
case-03 | fail→pass | 19,178 | 14,268 | -26% | 1 | 1 | 0% | 2,666 | 3,618 | +36% | 0 | 0 | — |
case-04 | pass→pass | 10,559 | 3,764 | -64% | 1 | 1 | 0% | 1,019 | 2,479 | +143% | 0 | 0 | — |
case-05 | pass→pass | 17,694 | 17,228 | -3% | 1 | 1 | 0% | 2,057 | 3,782 | +84% | 0 | 0 | — |
case-06 | fail→pass | 14,569 | 10,300 | -29% | 1 | 1 | 0% | 1,704 | 2,766 | +62% | 0 | 0 | — |
case-07 | pass→pass | 10,136 | 8,148 | -20% | 1 | 1 | 0% | 1,046 | 2,368 | +126% | 0 | 0 | — |
case-08 | pass→pass | 16,214 | 5,167 | -68% | 1 | 1 | 0% | 1,682 | 2,919 | +74% | 0 | 0 | — |
case-09 | pass→pass | 10,841 | 7,731 | -29% | 1 | 1 | 0% | 824 | 2,283 | +177% | 0 | 0 | — |
case-10 | pass→pass | 11,088 | 10,986 | -1% | 1 | 1 | 0% | 1,762 | 2,866 | +63% | 0 | 0 | — |
case-11 | pass→pass | 6,999 | 6,452 | -8% | 1 | 1 | 0% | 974 | 2,097 | +115% | 0 | 0 | — |
case-12 | pass→pass | 8,511 | 7,926 | -7% | 1 | 1 | 0% | 560 | 2,229 | +298% | 0 | 0 | — |
case-13 | fail→pass | 24,296 | 6,057 | -75% | 1 | 1 | 0% | 1,865 | 2,706 | +45% | 0 | 0 | — |
case-14 | pass→pass | 12,074 | 10,080 | -17% | 1 | 1 | 0% | 1,918 | 2,806 | +46% | 0 | 0 | — |
case-15 | pass→pass | 11,950 | 3,237 | -73% | 1 | 1 | 0% | 988 | 2,410 | +144% | 0 | 0 | — |
case-16 | pass→pass | 10,740 | 8,123 | -24% | 1 | 1 | 0% | 1,657 | 3,223 | +95% | 0 | 0 | — |
case-17 | pass→pass | 14,767 | 11,227 | -24% | 1 | 1 | 0% | 2,599 | 3,756 | +45% | 0 | 0 | — |
case-18 | pass→pass | 16,574 | 10,015 | -40% | 1 | 1 | 0% | 1,841 | 3,395 | +84% | 0 | 0 | — |
case-19 | pass→pass | 12,913 | 6,998 | -46% | 1 | 1 | 0% | 1,134 | 2,153 | +90% | 0 | 0 | — |
case-20 | pass→pass | 16,875 | 6,323 | -63% | 1 | 1 | 0% | 1,652 | 3,143 | +90% | 0 | 0 | — |
case-21 | pass→pass | 10,145 | 7,214 | -29% | 1 | 1 | 0% | 2,024 | 3,403 | +68% | 0 | 0 | — |
case-22 | pass→pass | 8,644 | 8,380 | -3% | 1 | 1 | 0% | 1,607 | 3,334 | +107% | 0 | 0 | — |
case-23 | pass→pass | 12,094 | 5,719 | -53% | 1 | 1 | 0% | 2,141 | 2,958 | +38% | 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. 23 cases were attempted. The headline lift of +22 percentage points is the difference between those two pass rates over the 23 comparable cases.
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.