{"id":"8ea9433c-25a8-45c5-ba30-d84bbcb15630","shortId":"K8KqkY","kind":"skill","title":"skill-crafting","tagline":"Create, fix, and validate skills for AI agents. Use when user says 'create a skill', 'build a skill', 'fix my skill', 'skill not working', 'analyze my skill', 'validate skill', 'audit my skills', 'check character budget', 'create a skill from this session', 'turn this into a skil","description":"# Skill Crafting\n\nCreate effective, discoverable skills that work under pressure.\n\n## When to Use\n\n**Creating:**\n- \"Create a skill for X\"\n- \"Build a skill to handle Y\"\n\n**From Session History:**\n- \"Create a skill from this session\"\n- \"Turn what we just did into a skill\"\n- \"Can the database setup we did become a skill?\"\n- \"Could we create a skill from this?\" (evaluate first)\n- \"Should this be a skill?\" (evaluate first)\n\n**Fixing:**\n- \"This skill isn't working\"\n- \"Why isn't this skill triggering?\"\n- \"Skill didn't trigger when it should have\"\n\n**Analyzing:**\n- \"Analyze my skill for issues\"\n- \"Run skill analysis\"\n- \"Check this skill's quality\"\n- \"Audit all my skills\"\n- \"Check character budget across skills\"\n\n## Analyzing a Skill\n\nWhen user asks to analyze a skill:\n\n1. **Run scripts first when available** for mechanical checks:\n   ```bash\n   python3 scripts/analyze-all.py path/to/skill/\n   ```\n\n   If scripts fail because of environment or tooling issues, state the blocker clearly and continue with manual review.\n\n2. **Read the skill files** for qualitative review:\n   - Read SKILL.md\n   - Read REFERENCES.md (if exists)\n   - Read directly linked `references/`, `scripts/`, or `agents/openai.yaml` files when they materially affect behavior\n\n3. **Provide holistic feedback** covering:\n   - Script results (CSO, structure, tokens) or explicit blocker if scripts could not run\n   - Does `allowed-tools` match what the skill needs to do?\n   - Does the analysis cover the files that actually define the skill's behavior?\n   - Is the workflow clear and actionable?\n   - Are references appropriate and sized correctly?\n   - Missing sections or anti-patterns?\n\n4. **Give verdict** with prioritized recommendations\n\n## Validation Scripts\n\n| Script | Purpose | Usage |\n|--------|---------|-------|\n| `analyze-all.py` | Run all checks | `python3 scripts/analyze-all.py path/to/skill/` |\n| `analyze-cso.py` | Check CSO compliance | `python3 scripts/analyze-cso.py path/to/SKILL.md` |\n| `analyze-tokens.py` | Count tokens | `python3 scripts/analyze-tokens.py path/to/SKILL.md` |\n| `analyze-triggers.py` | Find missing triggers | `python3 scripts/analyze-triggers.py path/to/SKILL.md` |\n| `check-char-budget.py` | Check 15K limit | `python3 scripts/check-char-budget.py path/to/skills/` |\n\n**Quick start:**\n```bash\npython3 scripts/analyze-all.py ~/.claude/skills/my-skill/\npython3 scripts/check-char-budget.py ~/.claude/skills/\n```\n\n## Creating from Current Session\n\nWhen user asks to create a skill from the current session:\n\n1. **Reflect on the conversation** — you already have full context\n2. **Assess skill-worthiness** using criteria below\n3. **If worthy**: Generate SKILL.md using methodology in this skill\n4. **If not**: Explain why (one-off, too scattered, etc.)\n\n### Skill-Worthiness Criteria\n\n| Question | ✅ Extract | ❌ Skip |\n|----------|-----------|---------|\n| Will this repeat? | 3+ future uses likely | One-off task |\n| Non-trivial? | Multi-step coordination | Just \"read, edit\" |\n| Domain knowledge? | Captures expertise | Generic actions |\n| Generalizable? | Works across projects | Project-specific |\n\n### Quick Assessment\n\nBefore creating, answer:\n1. **What pattern repeats?** (e.g., \"set up auth with tests\")\n2. **What would break without the skill?** (steps someone might skip)\n3. **Who else would use this?** (just me? team? public?)\n\nIf you can't answer these clearly → probably not skill-worthy.\n\n### For Evaluative Questions\n\nWhen user asks \"could this be a skill?\" or \"any reusable patterns?\":\n\n1. Review what you did in this session\n2. Identify distinct workflow segments (not exploration/debugging)\n3. Apply criteria above\n4. Recommend yes/no with specific reasoning\n5. If partial: suggest which part is worth extracting\n\n## Core Principle\n\n**Writing skills is TDD for documentation.**\n\n1. **RED**: Test without skill → document failures\n2. **GREEN**: Write skill addressing those failures\n3. **REFACTOR**: Close loopholes, improve discovery\n\nIf you didn't see an agent fail without the skill, you don't know if it prevents the right failures.\n\n## Skill Types\n\n| Type | Purpose | Examples |\n|------|---------|----------|\n| **Technique** | Concrete steps to follow | debugging, testing patterns |\n| **Pattern** | Mental models for problems | discovery patterns, workflows |\n| **Reference** | API docs, syntax guides | library documentation |\n\n## Structure\n\n### Minimal Skill (Single File)\n\n```\nskill-name/\n└── SKILL.md\n```\n\n### Multi-File Skill\n\n```\nskill-name/\n├── SKILL.md              # Overview (<500 lines)\n├── references/           # Docs loaded as needed\n│   └── api.md\n├── scripts/              # Executable code\n│   └── helper.py\n└── assets/               # Templates, images\n    └── template.html\n```\n\n### SKILL.md Anatomy\n\n```yaml\n---\nname: skill-name          # required, lowercase + hyphens, <64 chars\ndescription: \"...\"        # required, <1024 chars, trigger clauses only\nallowed-tools: Read Bash(python:*)  # optional, Claude Code extension\ncontext: fork             # optional, Claude Code extension (isolated subagent)\n---\n\n# Skill Name\n\n## When to Use\n[Triggers and symptoms]\n\n## Workflow\n[Core instructions]\n\n## Recovery\n[When things go wrong]\n```\n\n## Claude Search Optimization (CSO)\n\n**The description field determines if your skill gets discovered.**\n\n### Description Rules\n\n1. **Include one or more \"Use when...\" clauses** — focus on triggers\n2. **Include specific symptoms** — exact words users say\n3. **Write in third person** — injected into system prompt\n4. **NEVER summarize the workflow** — causes Claude to skip reading the skill\n\nA short \"what it does\" prefix before the trigger clauses is fine if it improves clarity.\n\n**Good:**\n\n```yaml\ndescription: \"GitHub operations via gh CLI. Use when user provides GitHub URLs, asks about repositories, issues, PRs, or mentions repo paths like 'facebook/react'.\"\n```\n\n**Bad:**\n\n```yaml\ndescription: \"Helps with GitHub\"  # Too vague\ndescription: \"I can help you with GitHub operations\"  # First person\ndescription: \"Runs gh commands to list issues and PRs\"  # Summarizes workflow\n```\n\n### Why No Workflow Summary?\n\nTesting revealed: when descriptions summarize workflow, Claude follows the description instead of reading the full skill. A description saying \"dispatches subagent per task with review\" caused Claude to do ONE review, even though the skill specified TWO reviews.\n\n**Description = When to trigger. SKILL.md = How to execute.**\n\n### Keyword Coverage\n\nInclude words Claude would search for:\n\n- Error messages: \"HTTP 404\", \"rate limited\"\n- Symptoms: \"not working\", \"failed\", \"slow\"\n- Synonyms: \"fetch/get/retrieve\", \"create/build/make\"\n- Tools: Actual commands, library names\n\n## Writing Effective Skills\n\n### Concise is Key\n\nContext window is shared. Every token competes.\n\n**Default assumption: AI is already very smart.**\n\nOnly add context the AI doesn't have:\n\n- ✅ Your company's API endpoints\n- ✅ Non-obvious workflows\n- ✅ Domain-specific edge cases\n- ❌ What PDFs are\n- ❌ How libraries work in general\n\n### Progressive Disclosure\n\nThree-level loading:\n\n1. **Metadata** (name + description) — Always loaded (~100 words)\n2. **SKILL.md body** — Loaded when triggered (<500 lines)\n3. **Bundled resources** — Loaded as needed (unlimited)\n\nKeep SKILL.md lean. Move details to reference files.\n\n### Set Appropriate Freedom\n\n| Freedom | When | Example |\n|---------|------|---------|\n| **High** | Multiple valid approaches | \"Review code for quality\" |\n| **Medium** | Preferred pattern exists | \"Use this template, adapt as needed\" |\n| **Low** | Operations are fragile | \"Run exactly: `python migrate.py --verify`\" |\n\n### Discovery Over Documentation\n\nDon't hardcode what changes. Teach discovery instead.\n\n**Brittle (will break):**\n\n```markdown\ngh issue list --repo owner/repo --state open\n```\n\n**Resilient (stays current):**\n\n```markdown\n1. Run `gh issue --help` to see available commands\n2. Apply discovered syntax to request\n```\n\n## Testing Skills\n\n### Why Test?\n\nSkills that enforce discipline can be rationalized away under pressure. Test to find loopholes.\n\n### Pressure Testing (Simplified)\n\nCreate scenarios that make agents WANT to violate the skill:\n\n```markdown\nYou spent 3 hours implementing a feature. It works.\nIt's 6pm, dinner at 6:30pm. You just realized you forgot TDD.\n\nOptions:\nA) Delete code, start fresh with TDD\nB) Commit now, add tests later\nC) Write tests now (30 min delay)\n\nChoose A, B, or C.\n```\n\n**Combine pressures:** time + sunk cost + exhaustion\n\n### Testing Process\n\n1. **Run WITHOUT skill** — document what agent does wrong\n2. **Write skill** — address those specific failures\n3. **Run WITH skill** — verify compliance\n4. **Find new loopholes** — add counters, re-test\n\n### What to Observe\n\n- Does skill trigger when expected?\n- Are instructions followed under pressure?\n- What rationalizations appear? (\"just this once\", \"spirit not letter\")\n- Where does agent struggle?\n\n## Evaluating Trigger Accuracy\n\nStatic analysis (`analyze-cso.py`) only tells you the description *looks* compliant. To know if it actually triggers, run realistic prompts.\n\n### Quick check (no harness)\n\n1. Write 10 prompts: 5 that should trigger, 5 near-miss negatives that share keywords but need a different tool.\n2. Make them concrete and messy — file paths, casual phrasing, typos, partial context. Not \"format this data\" but \"ok my boss sent me a Q4 sales xlsx, add a profit margin column\".\n3. Open a fresh session per prompt; observe whether the skill is consulted.\n4. Tune the description toward the failing should-trigger prompts. Watch for near-miss negatives that now over-trigger.\n\n### Why near-misses matter most\n\nShould-not-trigger prompts that share keywords (e.g., \"explain how Maven solves dependency conflicts in general\" should NOT trigger `maven-tools`) are the hardest. Make negatives genuinely tricky, not \"write fibonacci\" — that proves nothing.\n\n### When to invest more\n\nFor high-traffic skills, automate it: store the prompts as a JSON eval set, run each through a fresh Claude session, score trigger / no-trigger, then have Claude propose description tweaks based on the failures. Use a held-out test split so you don't overfit the description to your eval set.\n\n## Self-Healing Skills\n\n### When Skill Didn't Trigger\n\n1. Read the skill's description\n2. Check if it includes words the user actually said\n3. Update description with those exact trigger words\n\n### When Skill Caused an Error\n\n1. Identify which instruction failed\n2. Check if command/API changed: `command --help`\n3. Update just that part (don't redesign everything)\n\n### When Code/APIs Changed\n\n1. Find instructions referencing changed parts\n2. Update those specific instructions\n3. Leave working patterns alone\n\n## Anti-Patterns\n\n**Don't:**\n\n- Explain what AI already knows\n- Use inconsistent terminology\n- Summarize workflow in description\n- Offer many options without a default\n- Create README, CHANGELOG files\n- Use Windows-style paths (`scripts\\file.py`)\n\n**Do:**\n\n- Trust AI's existing knowledge\n- Pick one term, stick to it\n- Keep description focused on triggers\n- Provide default with escape hatch\n- Use forward slashes everywhere\n\n## Validation Checklist\n\nBefore deploying:\n\n```\n- [ ] Name: lowercase, hyphens, <64 chars\n- [ ] Description: includes clear \"Use when...\" trigger clauses, no workflow summary\n- [ ] Description: includes specific trigger words\n- [ ] SKILL.md: <500 lines (or split to references)\n- [ ] Paths: forward slashes only\n- [ ] References: one level deep from SKILL.md\n- [ ] Tested: on realistic scenarios\n- [ ] Loopholes: addressed in skill text\n```\n\n## Examples\n\n### Simple Skill\n\n```markdown\n---\nname: commit-messages\ndescription: \"Generate commit messages from git diffs. Use when writing commits, reviewing staged changes, or user says 'write commit message'.\"\n---\n\n# Commit Messages\n\n1. Run `git diff --staged`\n2. Generate message:\n   - Summary under 50 chars\n   - Detailed description\n   - Affected components\n```\n\n### Discovery-Based Skill\n\n```markdown\n---\nname: github-navigator\ndescription: \"GitHub operations via gh CLI. Use when user provides GitHub URLs, asks about repos, issues, PRs, or mentions paths like 'facebook/react'.\"\n---\n\n# GitHub Navigator\n\n## Core Pattern\n\n1. Identify command domain (issues, PRs, files)\n2. Discover usage: `gh <command> --help`\n3. Apply to request\n\nWorks for any gh command. Stays current as CLI evolves.\n```\n\n---\n\n> **License:** MIT\n> **See also:** [REFERENCES.md](REFERENCES.md)","tags":["skill","crafting","agent","skills","arvindand","agent-skills","ai-agents","ai-tools","claude-code","developer-tools","github-copilot","llm"],"capabilities":["skill","source-arvindand","skill-skill-crafting","topic-agent-skills","topic-ai-agents","topic-ai-tools","topic-claude-code","topic-developer-tools","topic-github-copilot","topic-llm","topic-mcp","topic-opencode","topic-skills"],"categories":["agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/arvindand/agent-skills/skill-crafting","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add arvindand/agent-skills","source_repo":"https://github.com/arvindand/agent-skills","install_from":"skills.sh"}},"qualityScore":"0.456","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 12 github stars · SKILL.md body (12,454 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:07:10.859Z","embedding":null,"createdAt":"2026-04-23T13:04:11.674Z","updatedAt":"2026-05-18T19:07:10.859Z","lastSeenAt":"2026-05-18T19:07:10.859Z","tsv":"'/.claude/skills':341 '/.claude/skills/my-skill':338 '1':170,357,442,500,542,713,956,1046,1149,1232,1430,1459,1483,1639,1690 '10':1234 '100':962 '1024':659 '15k':328 '2':201,367,452,508,549,724,964,1055,1158,1253,1436,1464,1489,1644,1697 '3':228,375,406,463,515,556,732,972,1095,1165,1285,1446,1471,1494,1702 '30':1133 '30pm':1108 '4':288,385,519,741,1171,1298 '404':884 '5':525,1236,1240 '50':1649 '500':629,970,1584 '6':1107 '64':655,1566 '6pm':1104 'accuraci':1208 'across':158,432 'action':275,429 'actual':264,896,1223,1444 'adapt':1008 'add':921,1126,1175,1280 'address':553,1161,1605 'affect':226,1653 'agent':11,568,1086,1155,1204 'agents/openai.yaml':221 'ai':10,915,924,1506,1535 'allow':248,665 'allowed-tool':247,664 'alon':1498 'alreadi':363,917,1507 'also':1719 'alway':960 'analysi':145,259,1210 'analyz':28,137,138,160,167 'analyze-all.py':299 'analyze-cso.py':306,1211 'analyze-tokens.py':313 'analyze-triggers.py':319 'anatomi':646 'answer':441,477 'anti':286,1500 'anti-pattern':285,1499 'api':605,931 'api.md':636 'appear':1195 'appli':516,1056,1703 'approach':996 'appropri':278,988 'ask':165,348,490,783,1676 'assess':368,438 'asset':641 'assumpt':914 'audit':33,151 'auth':449 'autom':1371 'avail':175,1053 'away':1072 'b':1123,1138 'bad':794 'base':1399,1657 'bash':179,335,668 'becom':98 'behavior':227,269 'blocker':194,240 'bodi':966 'boss':1273 'break':455,1033 'brittl':1031 'budget':38,157 'build':19,69 'bundl':973 'c':1129,1140 'captur':426 'case':941 'casual':1261 'caus':746,852,1456 'chang':1027,1468,1482,1487,1630 'changelog':1524 'char':656,660,1567,1650 'charact':37,156 'check':36,146,155,178,302,307,327,1229,1437,1465 'check-char-budget.py':326 'checklist':1560 'choos':1136 'clariti':768 'claud':671,677,698,747,833,853,877,1386,1395 'claus':662,720,762,1574 'clear':195,273,479,1570 'cli':776,1669,1714 'close':558 'code':639,672,678,998,1118 'code/apis':1481 'column':1284 'combin':1141 'command':815,897,1054,1469,1692,1710 'command/api':1467 'commit':1124,1615,1619,1627,1635,1637 'commit-messag':1614 'compani':929 'compet':912 'complianc':309,1170 'compliant':1218 'compon':1654 'concis':903 'concret':589,1256 'conflict':1340 'consult':1297 'context':366,674,906,922,1265 'continu':197 'convers':361 'coordin':420 'core':534,691,1688 'correct':281 'cost':1145 'could':101,243,491 'count':314 'counter':1176 'cover':232,260 'coverag':874 'craft':3,51 'creat':4,16,39,52,63,64,78,103,342,350,440,1082,1522 'create/build/make':894 'criteria':373,399,517 'cso':235,308,701 'current':344,355,1044,1712 'data':1269 'databas':94 'debug':593 'deep':1597 'default':913,1521,1551 'defin':265 'delay':1135 'delet':1117 'depend':1339 'deploy':1562 'descript':657,703,711,771,796,802,812,830,836,844,865,959,1216,1301,1397,1416,1435,1448,1515,1546,1568,1578,1617,1652,1664 'detail':983,1651 'determin':705 'didn':130,564,1427 'diff':1623,1642 'differ':1251 'dinner':1105 'direct':216 'disciplin':1068 'disclosur':951 'discov':710,1057,1698 'discover':54 'discoveri':561,601,1020,1029,1656 'discovery-bas':1655 'dispatch':846 'distinct':510 'doc':606,632 'document':541,547,610,1022,1153 'doesn':925 'domain':424,938,1693 'domain-specif':937 'e.g':446,1334 'edg':940 'edit':423 'effect':53,901 'els':465 'endpoint':932 'enforc':1067 'environ':188 'error':881,1458 'escap':1553 'etc':395 'eval':1379,1419 'evalu':108,115,486,1206 'even':858 'everi':910 'everyth':1479 'everywher':1558 'evolv':1715 'exact':728,1016,1451 'exampl':587,992,1609 'execut':638,872 'exhaust':1146 'exist':214,1004,1537 'expect':1187 'expertis':427 'explain':388,1335,1504 'explicit':239 'exploration/debugging':514 'extens':673,679 'extract':401,533 'facebook/react':793,1685 'fail':185,569,890,1304,1463 'failur':548,555,582,1164,1402 'featur':1099 'feedback':231 'fetch/get/retrieve':893 'fibonacci':1358 'field':704 'file':205,222,262,615,622,986,1259,1525,1696 'file.py':1532 'find':320,1077,1172,1484 'fine':764 'first':109,116,173,810 'fix':5,22,117 'focus':721,1547 'follow':592,834,1190 'forgot':1113 'fork':675 'format':1267 'forward':1556,1591 'fragil':1014 'freedom':989,990 'fresh':1120,1288,1385 'full':365,841 'futur':407 'general':949,1342 'generaliz':430 'generat':378,1618,1645 'generic':428 'genuin':1354 'get':709 'gh':775,814,1035,1048,1668,1700,1709 'git':1622,1641 'github':772,781,799,808,1662,1665,1674,1686 'github-navig':1661 'give':289 'go':696 'good':769 'green':550 'guid':608 'handl':73 'har':1231 'hardcod':1025 'hardest':1351 'hatch':1554 'heal':1423 'held':1406 'held-out':1405 'help':797,805,1050,1470,1701 'helper.py':640 'high':993,1368 'high-traff':1367 'histori':77 'holist':230 'hour':1096 'http':883 'hyphen':654,1565 'identifi':509,1460,1691 'imag':643 'implement':1097 'improv':560,767 'includ':714,725,875,1440,1569,1579 'inconsist':1510 'inject':737 'instead':837,1030 'instruct':692,1189,1462,1485,1493 'invest':1364 'isn':120,124 'isol':680 'issu':142,191,786,818,1036,1049,1679,1694 'json':1378 'keep':979,1545 'key':905 'keyword':873,1247,1333 'know':576,1220,1508 'knowledg':425,1538 'later':1128 'lean':981 'leav':1495 'letter':1201 'level':954,1596 'librari':609,898,946 'licens':1716 'like':409,792,1684 'limit':329,886 'line':630,971,1585 'link':217 'list':817,1037 'load':633,955,961,967,975 'look':1217 'loophol':559,1078,1174,1604 'low':1011 'lowercas':653,1564 'make':1085,1254,1352 'mani':1517 'manual':199 'margin':1283 'markdown':1034,1045,1092,1612,1659 'match':250 'materi':225 'matter':1324 'maven':1337,1347 'maven-tool':1346 'mechan':177 'medium':1001 'mental':597 'mention':789,1682 'messag':882,1616,1620,1636,1638,1646 'messi':1258 'metadata':957 'methodolog':381 'might':461 'migrate.py':1018 'min':1134 'minim':612 'miss':282,321,1243,1313,1323 'mit':1717 'model':598 'move':982 'multi':418,621 'multi-fil':620 'multi-step':417 'multipl':994 'name':618,626,648,651,683,899,958,1563,1613,1660 'navig':1663,1687 'near':1242,1312,1322 'near-miss':1241,1311,1321 'need':254,635,977,1010,1249 'negat':1244,1314,1353 'never':742 'new':1173 'no-trigg':1390 'non':415,934 'non-obvi':933 'non-trivi':414 'noth':1361 'observ':1182,1292 'obvious':935 'offer':1516 'ok':1271 'one':391,411,715,856,1540,1595 'one-off':390,410 'open':1041,1286 'oper':773,809,1012,1666 'optim':700 'option':670,676,1115,1518 'over-trigg':1317 'overfit':1414 'overview':628 'owner/repo':1039 'part':530,1475,1488 'partial':527,1264 'path':791,1260,1530,1590,1683 'path/to/skill':182,305 'path/to/skill.md':312,318,325 'path/to/skills':332 'pattern':287,444,499,595,596,602,1003,1497,1501,1689 'pdfs':943 'per':848,1290 'person':736,811 'phrase':1262 'pick':1539 'prefer':1002 'prefix':758 'pressur':59,1074,1079,1142,1192 'prevent':579 'principl':535 'priorit':292 'probabl':480 'problem':600 'process':1148 'profit':1282 'progress':950 'project':433,435 'project-specif':434 'prompt':740,1227,1235,1291,1308,1330,1375 'propos':1396 'prove':1360 'provid':229,780,1550,1673 'prs':787,820,1680,1695 'public':472 'purpos':297,586 'python':669,1017 'python3':180,303,310,316,323,330,336,339 'q4':1277 'qualit':207 'qualiti':150,1000 'question':400,487 'quick':333,437,1228 'rate':885 'ration':1071,1194 're':1178 're-test':1177 'read':202,209,211,215,422,667,750,839,1431 'readm':1523 'realist':1226,1602 'realiz':1111 'reason':524 'recommend':293,520 'recoveri':693 'red':543 'redesign':1478 'refactor':557 'refer':218,277,604,631,985,1589,1594 'referenc':1486 'references.md':212,1720,1721 'reflect':358 'repeat':405,445 'repo':790,1038,1678 'repositori':785 'request':1060,1705 'requir':652,658 'resili':1042 'resourc':974 'result':234 'reusabl':498 'reveal':828 'review':200,208,501,851,857,864,997,1628 'right':581 'rule':712 'run':143,171,245,300,813,1015,1047,1150,1166,1225,1381,1640 'said':1445 'sale':1278 'say':15,731,845,1633 'scatter':394 'scenario':1083,1603 'score':1388 'script':172,184,219,233,242,295,296,637,1531 'scripts/analyze-all.py':181,304,337 'scripts/analyze-cso.py':311 'scripts/analyze-tokens.py':317 'scripts/analyze-triggers.py':324 'scripts/check-char-budget.py':331,340 'search':699,879 'section':283 'see':566,1052,1718 'segment':512 'self':1422 'self-heal':1421 'sent':1274 'session':44,76,83,345,356,507,1289,1387 'set':447,987,1380,1420 'setup':95 'share':909,1246,1332 'short':754 'should-not-trigg':1326 'should-trigg':1305 'simpl':1610 'simplifi':1081 'singl':614 'size':280 'skil':49 'skill':2,8,18,21,24,25,30,32,35,41,50,55,66,71,80,91,100,105,114,119,127,129,140,144,148,154,159,162,169,204,253,267,352,370,384,397,458,483,495,537,546,552,572,583,613,617,623,625,650,682,708,752,842,861,902,1062,1065,1091,1152,1160,1168,1184,1295,1370,1424,1426,1433,1455,1607,1611,1658 'skill-craft':1 'skill-nam':616,624,649 'skill-skill-crafting' 'skill-worthi':369,396,482 'skill.md':210,379,619,627,645,869,965,980,1583,1599 'skip':402,462,749 'slash':1557,1592 'slow':891 'smart':919 'solv':1338 'someon':460 'source-arvindand' 'specif':436,523,726,939,1163,1492,1580 'specifi':862 'spent':1094 'spirit':1199 'split':1409,1587 'stage':1629,1643 'start':334,1119 'state':192,1040 'static':1209 'stay':1043,1711 'step':419,459,590 'stick':1542 'store':1373 'structur':236,611 'struggl':1205 'style':1529 'subag':681,847 'suggest':528 'summar':743,821,831,1512 'summari':826,1577,1647 'sunk':1144 'symptom':689,727,887 'synonym':892 'syntax':607,1058 'system':739 'task':413,849 'tdd':539,1114,1122 'teach':1028 'team':471 'techniqu':588 'tell':1213 'templat':642,1007 'template.html':644 'term':1541 'terminolog':1511 'test':451,544,594,827,1061,1064,1075,1080,1127,1131,1147,1179,1408,1600 'text':1608 'thing':695 'third':735 'though':859 'three':953 'three-level':952 'time':1143 'token':237,315,911 'tool':190,249,666,895,1252,1348 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-tools' 'topic-claude-code' 'topic-developer-tools' 'topic-github-copilot' 'topic-llm' 'topic-mcp' 'topic-opencode' 'topic-skills' 'toward':1302 'traffic':1369 'tricki':1355 'trigger':128,132,322,661,687,723,761,868,969,1185,1207,1224,1239,1307,1319,1329,1345,1389,1392,1429,1452,1549,1573,1581 'trivial':416 'trust':1534 'tune':1299 'turn':45,84 'tweak':1398 'two':863 'type':584,585 'typo':1263 'unlimit':978 'updat':1447,1472,1490 'url':782,1675 'usag':298,1699 'use':12,62,372,380,408,467,686,718,777,1005,1403,1509,1526,1555,1571,1624,1670 'user':14,164,347,489,730,779,1443,1632,1672 'vagu':801 'valid':7,31,294,995,1559 'verdict':290 'verifi':1019,1169 'via':774,1667 'violat':1089 'want':1087 'watch':1309 'whether':1293 'window':907,1528 'windows-styl':1527 'without':456,545,570,1151,1519 'word':729,876,963,1441,1453,1582 'work':27,57,122,431,889,947,1101,1496,1706 'workflow':272,511,603,690,745,822,825,832,936,1513,1576 'worth':532 'worthi':371,377,398,484 'would':454,466,878 'write':536,551,733,900,1130,1159,1233,1357,1626,1634 'wrong':697,1157 'x':68 'xlsx':1279 'y':74 'yaml':647,770,795 'yes/no':521","prices":[{"id":"6d503167-edd4-4370-bf4e-859032406448","listingId":"8ea9433c-25a8-45c5-ba30-d84bbcb15630","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"arvindand","category":"agent-skills","install_from":"skills.sh"},"createdAt":"2026-04-23T13:04:11.674Z"}],"sources":[{"listingId":"8ea9433c-25a8-45c5-ba30-d84bbcb15630","source":"github","sourceId":"arvindand/agent-skills/skill-crafting","sourceUrl":"https://github.com/arvindand/agent-skills/tree/main/skills/skill-crafting","isPrimary":false,"firstSeenAt":"2026-04-23T13:04:11.674Z","lastSeenAt":"2026-05-18T19:07:10.859Z"}],"details":{"listingId":"8ea9433c-25a8-45c5-ba30-d84bbcb15630","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"arvindand","slug":"skill-crafting","github":{"repo":"arvindand/agent-skills","stars":12,"topics":["agent-skills","ai-agents","ai-tools","claude-code","developer-tools","github-copilot","llm","mcp","opencode","skills"],"license":"mit","html_url":"https://github.com/arvindand/agent-skills","pushed_at":"2026-05-12T21:27:46Z","description":"Reusable agent skills for Claude Code, GitHub Copilot, and other AI assistants. Dependency intelligence, GitHub ops, documentation lookup, UI/UX design patterns.","skill_md_sha":"495da2b687ffd0f65aba0ecdbd7caa17b08c5e43","skill_md_path":"skills/skill-crafting/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/arvindand/agent-skills/tree/main/skills/skill-crafting"},"layout":"multi","source":"github","category":"agent-skills","frontmatter":{"name":"skill-crafting","description":"Create, fix, and validate skills for AI agents. Use when user says 'create a skill', 'build a skill', 'fix my skill', 'skill not working', 'analyze my skill', 'validate skill', 'audit my skills', 'check character budget', 'create a skill from this session', 'turn this into a skill', 'make this reusable', 'can this become a skill', 'should this be a skill', or asks for reusable patterns in the session. Use even if the user does not explicitly say 'skill' but is sketching a reusable workflow."},"skills_sh_url":"https://skills.sh/arvindand/agent-skills/skill-crafting"},"updatedAt":"2026-05-18T19:07:10.859Z"}}