

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
123456# Creating Skills - Meta Guide78## Overview910**Skills are reference guides for proven techniques, patterns, or tools.** Write them to help future Claude instances quickly find and apply effective approaches.1112Skills must be **discoverable** (Claude can find them), **scannable** (quick to evaluate), and **actionable** (clear examples).1314**Core principle**: Default assumption is Claude is already very smart. Only add context Claude doesn't already have.1516## When to Use1718**Create a skill when:**19- Technique wasn't intuitively obvious20- Pattern applies broadly across projects21- You'd reference this again22- Others would benefit2324**Don't create for:**25- One-off solutions specific to single project26- Standard practices well-documented elsewhere27- Project conventions (put those in `.claude/CLAUDE.md` or `.cursor/rules`)2829## Required Structure3031### Frontmatter (YAML)3233```yaml34---35name: skill-name-with-hyphens36description: Use when [triggers/symptoms] - [what it does and how it helps]37tags: relevant-tags38---39```4041**Rules:**42- Only `name` and `description` fields supported (max 1024 chars total)43- Name: letters, numbers, hyphens only (no special chars). Use gerund form (verb + -ing)44- Description: Third person, starts with "Use when..."45- Include BOTH triggering conditions AND what skill does46- Match specificity to task complexity (degrees of freedom)4748### Document Structure4950```markdown51# Skill Name5253## Overview54Core principle in 1-2 sentences. What is this?5556## When to Use57- Bullet list with symptoms and use cases58- When NOT to use5960## Quick Reference61Table or bullets for common operations6263## Implementation64Inline code for simple patterns65Link to separate file for heavy reference (100+ lines)6667## Common Mistakes68What goes wrong + how to fix6970## Real-World Impact (optional)71Concrete results from using this technique72```7374## Degrees of Freedom7576**Match specificity to task complexity:**7778- **High freedom**: Flexible tasks requiring judgment79 - Use broad guidance, principles, examples80 - Let Claude adapt approach to context81 - Example: "Use when designing APIs - provides REST principles and patterns"8283- **Low freedom**: Fragile or critical operations84 - Be explicit about exact steps85 - Include validation checks86 - Example: "Use when deploying to production - follow exact deployment checklist with rollback procedures"8788**Red flag**: If skill tries to constrain Claude too much on creative tasks, reduce specificity. If skill is too vague on critical operations, add explicit steps.8990## Claude Search Optimization (CSO)9192**Critical:** Future Claude reads the description to decide if skill is relevant. Optimize for discovery.9394### Description Best Practices9596```yaml97# ❌ BAD - Too vague, doesn't mention when to use98description: For async testing99100# ❌ BAD - First person (injected into system prompt)101description: I help you with flaky tests102103# ✅ GOOD - Triggers + what it does104description: Use when tests have race conditions or pass/fail inconsistently - replaces arbitrary timeouts with condition polling for reliable async tests105106# ✅ GOOD - Technology-specific with explicit trigger107description: Use when using React Router and handling auth redirects - provides patterns for protected routes and auth state management108```109110### Keyword Coverage111112Use words Claude would search for:113- **Error messages**: "ENOENT", "Cannot read property", "Timeout"114- **Symptoms**: "flaky", "hanging", "race condition", "memory leak"115- **Synonyms**: "cleanup/teardown/afterEach", "timeout/hang/freeze"116- **Tools**: Actual command names, library names, file types117118### Naming Conventions119120**Use gerund form (verb + -ing):**121- ✅ `creating-skills` not `skill-creation`122- ✅ `testing-with-subagents` not `subagent-testing`123- ✅ `debugging-memory-leaks` not `memory-leak-debugging`124- ✅ `processing-pdfs` not `pdf-processor`125- ✅ `analyzing-spreadsheets` not `spreadsheet-analysis`126127**Why gerunds work:**128- Describes the action you're taking129- Active and clear130- Consistent with Anthropic conventions131132**Avoid:**133- ❌ Vague names like "Helper" or "Utils"134- ❌ Passive voice constructions135136## Code Examples137138**One excellent example beats many mediocre ones.**139140### Choose Language by Use Case141142- Testing techniques → TypeScript/JavaScript143- System debugging → Shell/Python144- Data processing → Python145- API calls → TypeScript/JavaScript146147### Good Example Checklist148149- [ ] Complete and runnable150- [ ] Well-commented explaining **WHY** not just what151- [ ] From real scenario (not contrived)152- [ ] Shows pattern clearly153- [ ] Ready to adapt (not generic template)154- [ ] Shows both BAD (❌) and GOOD (✅) approaches155- [ ] Includes realistic context/setup code156157### Example Template158159```typescript160// ✅ GOOD - Clear, complete, ready to adapt161interface RetryOptions {162 maxAttempts: number;163 delayMs: number;164 backoff?: 'linear' | 'exponential';165}166167async function retryOperation<T>(168 operation: () => Promise<T>,169 options: RetryOptions170): Promise<T> {171 const { maxAttempts, delayMs, backoff = 'linear' } = options;172173 for (let attempt = 1; attempt <= maxAttempts; attempt++) {174 try {175 return await operation();176 } catch (error) {177 if (attempt === maxAttempts) throw error;178179 const delay = backoff === 'exponential'180 ? delayMs * Math.pow(2, attempt - 1)181 : delayMs * attempt;182183 await new Promise(resolve => setTimeout(resolve, delay));184 }185 }186187 throw new Error('Unreachable');188}189190// Usage191const data = await retryOperation(192 () => fetchUserData(userId),193 { maxAttempts: 3, delayMs: 1000, backoff: 'exponential' }194);195```196197### Don't198199- ❌ Implement in 5+ languages (you're good at porting)200- ❌ Create fill-in-the-blank templates201- ❌ Write contrived examples202- ❌ Show only code without comments203204## File Organization205206### Self-Contained (Preferred)207208```209typescript-type-safety/210 SKILL.md # Everything inline211```212213**When:** All content fits in ~500 words, no heavy reference needed214215### With Supporting Files216217```218api-integration/219 SKILL.md # Overview + patterns220 retry-helpers.ts # Reusable code221 examples/222 auth-example.ts223 pagination-example.ts224```225226**When:** Reusable tools or multiple complete examples needed227228## Token Efficiency229230Skills load into every conversation. Keep them concise.231232### Target Limits233234- **SKILL.md**: Keep under 500 lines235- Getting-started workflows: <150 words236- Frequently-loaded skills: <200 words total237- Other skills: <500 words238239**Challenge each piece of information**: "Does Claude really need this explanation?"240241### Compression Techniques242243```markdown244# ❌ BAD - Verbose (42 words)245Your human partner asks: "How did we handle authentication errors in React Router before?"246You should respond: "I'll search past conversations for React Router authentication patterns."247Then dispatch a subagent with the search query: "React Router authentication error handling 401"248249# ✅ GOOD - Concise (20 words)250Partner: "How did we handle auth errors in React Router?"251You: Searching...252[Dispatch subagent → synthesis]253```254255**Techniques:**256- Reference tool `--help` instead of documenting all flags257- Cross-reference other skills instead of repeating content258- Show minimal example of pattern259- Eliminate redundancy260- Use progressive disclosure (reference additional files as needed)261262## Common Mistakes263264| Mistake | Why It Fails | Fix |265|---------|--------------|-----|266| Narrative example | "In session 2025-10-03..." | Focus on reusable pattern |267| Multi-language dilution | Same example in 5 languages | One excellent example |268| Generic labels | helper1, helper2, step3 | Use semantic names |269| Missing description triggers | "For testing" | "Use when tests are flaky..." |270| First-person description | "I help you..." | "Use when... - provides..." |271| Offering too many options | 10 different approaches | Focus on one proven approach |272| Time-sensitive information | "As of 2025..." | Keep content evergreen |273274## Workflow Recommendations275276For multi-step processes, include:2772781. **Clear sequential steps**: Break complex tasks into numbered operations2792. **Feedback loops**: Build in verification/validation steps2803. **Error handling**: What to check when things go wrong2814. **Checklists**: For processes with many steps282283**Example structure:**284```markdown285## Workflow2862871. **Preparation**288 - Check prerequisites289 - Validate environment2902912. **Execution**292 - Step 1: [action + expected result]293 - Step 2: [action + expected result]2942953. **Verification**296 - [ ] Check 1 passes297 - [ ] Check 2 passes2982994. **Rollback** (if needed)300 - Steps to undo changes301```302303## Skill Creation Checklist304305**Before writing:**306- [ ] Technique isn't obvious or well-documented elsewhere307- [ ] Pattern applies broadly (not project-specific)308- [ ] I would reference this across multiple projects309310**Frontmatter:**311- [ ] Name uses only letters, numbers, hyphens312- [ ] Description starts with "Use when..."313- [ ] Description includes triggers AND what skill does314- [ ] Description is third person315- [ ] Total frontmatter < 1024 characters316317**Content:**318- [ ] Overview states core principle (1-2 sentences)319- [ ] "When to Use" section with symptoms320- [ ] Quick reference table for common operations321- [ ] One excellent code example (if technique skill)322- [ ] Common mistakes section323- [ ] Keywords throughout for searchability324325**Quality:**326- [ ] Word count appropriate for frequency327- [ ] SKILL.md under 500 lines328- [ ] No narrative storytelling329- [ ] Supporting files only if needed (100+ lines reference)330- [ ] No time-sensitive information331- [ ] Consistent terminology throughout332- [ ] Concrete examples (not templates)333- [ ] Degrees of freedom match task complexity334335## Real-World Impact336337**Good skills:**338- Future Claude finds them quickly (CSO optimization)339- Can be scanned in seconds (quick reference)340- Provide clear actionable examples341- Prevent repeating same research342- Stay under 500 lines (token efficient)343- Match specificity to task needs344345**Bad skills:**346- Get ignored (vague description)347- Take too long to evaluate (no quick reference)348- Leave gaps in understanding (no examples)349- Waste token budget (verbose explanations)350- Over-constrain creative tasks351- Include time-sensitive or obsolete information352353---354355**Remember:** Skills are for future Claude, not current you. Optimize for discovery, scanning, and action.356357**Golden rule:** Default assumption is Claude is already very smart. Only add context Claude doesn't already have.358
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| pr-pm/prpm.cursor/rules/testing-patterns.mdc · 121 | Cursor rules | testlint-formatstyletesting-strategy | 77/100 | 14 days ago | |
| pr-pm/prpm.cursor/rules/beanstalk-deploy.mdc · 121 | Cursor rules | teststyletypes | 62/100 | 14 days ago | |
| pr-pm/prpm.cursor/rules/core-principles.mdc · 121 | Cursor rules | testlint-formatstylearch+6 | 69/100 | 14 days ago | |
| pr-pm/prpm.cursor/rules/creating-agents-md.mdc · 121 | Cursor rules | testlint-formatstylearch+7 | 92/100 | 14 days ago | |
| pr-pm/prpm.cursor/rules/creating-cursor-rules.mdc · 121 | Cursor rules | testlint-formatstylearch+5 | 76/100 | 14 days ago | |
| pr-pm/prpm.cursor/rules/github-actions-testing.mdc · 121 | Cursor rules | setupbuildstylearch+4 | 93/100 | 14 days ago | |
| pr-pm/prpm.cursor/rules/karen-repo-reviewer.mdc · 121 | Cursor rules | archgit | 58/100 | 14 days ago | |
| pr-pm/prpm.cursor/rules/prpm-json-best-practices.mdc · 121 | Cursor rules | setuplint-formatstylearch+5 | 73/100 | 14 days ago | |
| pr-pm/prpm.cursor/rules/self-improve-cursor.mdc · 121 | Cursor rules | setuptestarchdependencies+3 | 69/100 | 14 days ago | |
| pr-pm/prpm.cursor/rules/typescript-type-safety.mdc · 121 | Cursor rules | buildstylearchtypes+2 | 89/100 | 14 days ago | |
| pr-pm/prpm.cursor/rules/typescript-type-specialist.mdc · 121 | Cursor rules | styletypesdo-notagent-behaviour | 65/100 | 14 days ago | |
| pr-pm/prpmAGENTS.md · 121 | AGENTS.md | setupbuildtestlint-format+12 | 84/100 | 14 days ago | |
| pr-pm/prpmCLAUDE.md · 121 | CLAUDE.md | teststylegitapi+2 | 69/100 | 14 days ago | |
| pr-pm/prpm.cursor/rules/creating-kiro-agents.mdc · 121 | Cursor rules | setupbuildteststyle+5 | 76/100 | 14 days ago | |
| pr-pm/prpm.cursor/rules/format-conversion.mdc · 121 | Cursor rules | testlint-formatstyledo-not+1 | 63/100 | 14 days ago |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| hiromaily/go-crypto-wallet.cursor/rules/typescript.mdc · 126 | Cursor rules | setupbuildtestlint-format+6 | 100/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 46 | Cursor rules | testlint-formatstylearch+5 | 100/100 | 14 days ago | |
| Allymahmoud/case-intake-platform.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| dodgecfr/combatfilms-webapp.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| deifos/clipmira-subtitles.cursor/rules/frontend.mdc · 1 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| markstev/mark-starter.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+6 | 99/100 | 14 days ago | |
| langflow-ai/langflow.cursor/rules/docs_development.mdc · 153k | Cursor rules | setupbuildtestlint-format+7 | 97/100 | 14 days ago | |
| bybren-llc/safe-agentic-workflow.cursor/rules/10-backend-python.mdc · 399 | Cursor rules | testlint-formatstylegit+4 | 97/100 | today |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/pr-pm-prpm-cursor-rules-creating-skills)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.