[{"data":1,"prerenderedAt":1706},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Fclaude-code-skills-guide":204,"\u002Fblog\u002Fclaude-code-skills-guide-surround":1701},[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200],{"title":5,"path":6,"stem":7},"You do not have time to not have tests","\u002Fblog\u002Fyou-do-not-have-time-to-not-have-tests","2.blog\u002F20211217.you-do-not-have-time-to-not-have-tests",{"title":9,"path":10,"stem":11},"Migrate Vue 2 with Vuetify and Jest to Vite and Vitest","\u002Fblog\u002Fmigrate-vue-2-with-vuetify-and-jest-to-vite-and-vitest","2.blog\u002F20220109.migrate-vue-2-with-vuetify-and-jest-to-vite-and-vitest",{"title":13,"path":14,"stem":15},"I am a Dark Matter Developer","\u002Fblog\u002Fi-am-a-dark-matter-developer","2.blog\u002F20220626.i-am-a-dark-matter-developer",{"title":17,"path":18,"stem":19},"Why using Conventional commits is useful","\u002Fblog\u002Fusing-conventional-commits","2.blog\u002F20240623.using-conventional-commits",{"title":21,"path":22,"stem":23},"Why you should make a toolbox repository","\u002Fblog\u002Fwhy-you-should-make-a-toolbox-repository","2.blog\u002F20240630.Why-you-should-make-a-toolbox-repository",{"title":25,"path":26,"stem":27},"Apache Airflow Part 1 - Why and Goals for a near Serverless ELT","\u002Fblog\u002Fapache-airflow-part-1-why-and-goals","2.blog\u002F20240710.apache-airflow-part-1-why-and-goals",{"title":29,"path":30,"stem":31},"Oh My Zsh on your server","\u002Fblog\u002Foh-my-zsh-on-your-server","2.blog\u002F20240711.oh-my-zsh-on-your-server",{"title":33,"path":34,"stem":35},"Fire tablet and YouTube Kids","\u002Fblog\u002Ffire-tablet-and-youtube-kids","2.blog\u002F20240714.fire-tablet-and-youtube-kids",{"title":37,"path":38,"stem":39},"Using Ollama and Continue as a GitHub Copilot Alternative","\u002Fblog\u002Fusing-ollama-and-continue-as-github-copilot-alternative","2.blog\u002F20240723.using-ollama-and-continue-as-github-copilot-alternative",{"title":41,"path":42,"stem":43},"Debugging Local Packages Made Easy with pnpm","\u002Fblog\u002Fdebugging-local-packages-with-pnpm-link","2.blog\u002F20250422.debugging local-packages-with-pnpm-link",{"title":45,"path":46,"stem":47},"Two Weeks with Cloudflare AI and Tools","\u002Fblog\u002Ftwo-weeks-with-cloudflare-ai-and-tools","2.blog\u002F20250509.two-weeks-with-cloudflare-aI-and-tools",{"title":49,"path":50,"stem":51},"Adding Prompts to VS Code - How I Learned to Stop Worrying and Love AI Context","\u002Fblog\u002Fadding-prompts-to-vscode","2.blog\u002F20250528.adding-prompts-to-vscode",{"title":53,"path":54,"stem":55},"My Best Practices","\u002Fblog\u002Fmy-best-practicies","2.blog\u002F20250607.my-best-practicies",{"title":57,"path":58,"stem":59},"Creating my own CLI Tool - Towles Tool","\u002Fblog\u002Ftowles-tool","2.blog\u002F20250607.towles-tool",{"title":61,"path":62,"stem":63},"Software Development Best Practices & ITIL","\u002Fblog\u002Fsoftware-engineering-and-itil-best-practices","2.blog\u002F20250612.software-engineering-and-itil-best-practices",{"title":65,"path":66,"stem":67},"Voice to Text","\u002Fblog\u002Fvoice-to-text","2.blog\u002F20250622.voice-to-text",{"title":69,"path":70,"stem":71},"Setting Up ComfyUI - A Better Alternative to Fooocus","\u002Fblog\u002Fcomfy-ui-setup","2.blog\u002F20250628.comfy-ui-setup",{"title":73,"path":74,"stem":75},"Voice to System","\u002Fblog\u002Fvoice-to-system","2.blog\u002F20250705.voice-to-system",{"title":77,"path":78,"stem":79},"Tips for Claude Code","\u002Fblog\u002Ftips-for-claude-code","2.blog\u002F20250713.tips-for-claude-code",{"title":81,"path":82,"stem":83},"Review That AI Code: Why I Read Every Line Generated Code","\u002Fblog\u002Freview-that-ai-code","2.blog\u002F20250720.review-that-ai-code",{"title":85,"path":86,"stem":87},"My Context Engineering Journey: From Dev Scripts to AI Collaboration","\u002Fblog\u002F20250803-1.my-context-engineering-journey","2.blog\u002F20250803-1.my-context-engineering-journey",{"title":89,"path":90,"stem":91},"Context Engineering at Scale: Enterprise Lessons and the Future of Development","\u002Fblog\u002F20250803-2.context-engineering-at-scale","2.blog\u002F20250803-2.context-engineering-at-scale",{"title":93,"path":94,"stem":95},"Check That Your Tools and Linters Do Not Burn Tokens","\u002Fblog\u002Fcheck-that-your-tools-and-linters-do-not-burn-tokens","2.blog\u002F20250806.check-that-your-tools-and-linters-do-not-burn-tokens",{"title":97,"path":98,"stem":99},"Markdown + AI: The Communication Protocol That Changes Everything","\u002Fblog\u002Fmarkdown-plus-ai-the-communication-protocol-that-changes-everything","2.blog\u002F20250814.markdown-plus-ai-the-communication-protocol-that-changes-everything",{"title":101,"path":102,"stem":103},"Finally: Type-Safe AI in Production (And Why I'm Here For It)","\u002Fblog\u002Ffinally-type-safe-ai-in-production-and-why-im-here-for-it","2.blog\u002F20250819.finally-type-safe-ai-in-production-and-why-im-here-for-it",{"title":105,"path":106,"stem":107},"Dotfiles: Masterpiece or Late Stage Picasso?","\u002Fblog\u002Fdotfiles-masterpiece-or-late-stage-picasso","2.blog\u002F20250822.dotfiles-masterpiece-or-late-stage-picasso",{"title":109,"path":110,"stem":111},"Beyond API Wrappers: Building State-Driven MCP Servers for Long-Horizon Agent Orchestration","\u002Fblog\u002Fbeyond-api-wrappers-mcp-servers","2.blog\u002F20250907.beyond-api-wrappers-mcp-servers",{"title":113,"path":114,"stem":115},"Why Vertical Integration Wins: A Software Engineer's Case for Owning Your Stack","\u002Fblog\u002Fwhy-i-bought-tesla-model-3-vertical-integration","2.blog\u002F20250928.why-i-bought-tesla-model-3-vertical-integration",{"title":117,"path":118,"stem":119},"The Min-Maxer's Trifecta: Building Tools for the Game You Actually Play","\u002Fblog\u002Fmin-maxer-trifecta","2.blog\u002F20251004.min-maxer-trifecta",{"title":121,"path":122,"stem":123},"Read The Source: Learning by Cutting Out The Middleman and RTFM","\u002Fblog\u002Fread-the-source","2.blog\u002F20251010.read-the-source",{"title":125,"path":126,"stem":127},"The Exponential Shift: Why AI Progress Feels Different Now","\u002Fblog\u002Fthe-exponential-shift","2.blog\u002F20251015.the-exponential-shift",{"title":129,"path":130,"stem":131},"Plan Mode for Your Problems, Edit Mode for Claude's","\u002Fblog\u002Fplan-mode-problems-edit-mode-solutions","2.blog\u002F20251019.plan-mode-problems-edit-mode-solutions",{"title":133,"path":134,"stem":135},"AWS Aurora DSQL Looked Perfect Until I Needed the Connection String","\u002Fblog\u002Faws-aurora-dsql-postgres-serverless-authentication","2.blog\u002F20251028.aws-aurora-dsql-postgres-serverless-authentication",{"title":137,"path":138,"stem":139},"Switchback: Browser History for Your Thoughts","\u002Fblog\u002Fswitchback-second-order-reasoning","2.blog\u002F20251205.switchback-second-order-reasoning",{"title":141,"path":142,"stem":143},"AI Pairing: Notes to Self","\u002Fblog\u002Fai-pairing-notes-to-self","2.blog\u002F20251216.ai-pairing-notes-to-self",{"title":145,"path":146,"stem":147},"I've Been Sleeping on Zellij","\u002Fblog\u002Fsleeping-on-zellij","2.blog\u002F20251229.sleeping-on-zellij",{"title":149,"path":150,"stem":151},"Implementing a Ralph Wiggum Loop: The Secret is Session Markers","\u002Fblog\u002Fimplementing-ralph-wiggum-loop-for-autonomous-ai-coding","2.blog\u002F20260114.implementing-ralph-wiggum-loop-for-autonomous-ai-coding",{"title":153,"path":154,"stem":155},"Goodhart's Law Ate My Context Window","\u002Fblog\u002Fgoodharts-law-ate-my-context-window","2.blog\u002F20260119.goodharts-law-ate-my-context-window",{"title":157,"path":158,"stem":159},"Claude Code's Hidden Multi-Agent System Is Real","\u002Fblog\u002Fclaude-code-hidden-multi-agent-system","2.blog\u002F20260124.claude-code-hidden-multi-agent-system",{"title":161,"path":162,"stem":163},"Free Printable Math Sheets for Kids — Number Chart, Skip Counting, Multiplication, and More","\u002Fblog\u002Ffree-printable-number-chart-and-coin-sheets","2.blog\u002F20260214.free-printable-number-chart-and-coin-sheets",{"title":165,"path":166,"stem":167},"We Are Near the End of the Exponential","\u002Fblog\u002Fnear-the-end-of-the-exponential","2.blog\u002F20260214.near-the-end-of-the-exponential",{"title":169,"path":170,"stem":171},"Free Printable Language Arts Sheets for Kids — Sight Words, Parts of Speech, Homophones, and More","\u002Fblog\u002Ffree-printable-sight-words-and-grammar-sheets","2.blog\u002F20260215.free-printable-sight-words-and-grammar-sheets",{"title":173,"path":174,"stem":175},"Interactive Code Execution with Artifacts","\u002Fblog\u002Finteractive-code-execution-with-artifacts","2.blog\u002F20260215.interactive-code-execution-with-artifacts",{"title":177,"path":178,"stem":179},"Free Printable Telling Time Worksheet for Kids — Clock Reference & Practice Sheet","\u002Fblog\u002Ffree-printable-telling-time-worksheet","2.blog\u002F20260216.free-printable-telling-time-worksheet",{"title":181,"path":182,"stem":183},"Claude Code Skills: Teaching AI Your Playbook","\u002Fblog\u002Fclaude-code-skills-guide","2.blog\u002F20260221.claude-code-skills-guide",{"title":185,"path":186,"stem":187},"Building a Multi-Agent Loan Approval System with Human-in-the-Loop","\u002Fblog\u002Fmulti-agent-loan-approval-human-in-the-loop","2.blog\u002F20260225.multi-agent-loan-approval-human-in-the-loop",{"title":189,"path":190,"stem":191},"The Inception of AI Infrastructure: Bottlenecks All the Way Down","\u002Fblog\u002Fbiggest-bottleneck-scaling-ai-compute","2.blog\u002F20260313.biggest-bottleneck-scaling-ai-compute",{"title":193,"path":194,"stem":195},"What I Tell Teams About Claude Code","\u002Fblog\u002Fwhat-i-tell-teams-about-claude-code","2.blog\u002F20260314.what-i-tell-teams-about-claude-code",{"title":197,"path":198,"stem":199},"The Hardest Part of AI Isn't the AI","\u002Fblog\u002Fthe-hardest-part-of-ai-isnt-the-ai","2.blog\u002F20260327.the-hardest-part-of-ai-isnt-the-ai",{"title":201,"path":202,"stem":203},"Claude Code Hooks: The Capability I Left on the Table","\u002Fblog\u002Fclaude-code-hooks-capability-left-on-the-table","2.blog\u002F20260401.claude-code-hooks-capability-left-on-the-table",{"id":205,"title":181,"authors":206,"badge":212,"body":214,"date":1691,"description":1692,"extension":1693,"image":1694,"meta":1697,"navigation":407,"path":182,"seo":1698,"status":1699,"stem":183,"__hash__":1700},"posts\u002F2.blog\u002F20260221.claude-code-skills-guide.md",[207],{"name":208,"to":209,"avatar":210},"Chris Towles","https:\u002F\u002Ftwitter.com\u002FChris_Towles",{"src":211},"\u002Fimages\u002Fctowles-profile-512x512.png",{"label":213},"AI Tools",{"type":215,"value":216,"toc":1655},"minimark",[217,221,229,240,252,257,265,272,277,280,302,313,328,332,335,338,344,348,355,500,514,520,526,529,533,536,544,547,592,596,602,686,693,697,704,710,714,740,744,750,883,888,913,917,920,1161,1165,1168,1263,1266,1270,1273,1277,1280,1286,1290,1293,1298,1302,1309,1314,1318,1321,1354,1357,1361,1372,1375,1395,1399,1419,1423,1426,1446,1450,1459,1468,1477,1481,1509,1513,1522,1526,1529,1535,1552,1565,1571,1580,1589,1593,1596,1622,1626,1640,1646,1651],[218,219,220],"p",{},"LLMs are impressive generalists. Ask Claude how to deploy a service and you'll get a solid, textbook answer — run tests, build artifacts, deploy, monitor. All correct. All useless if your team deploys by running integration tests against staging, getting sign-off from the on-call engineer, and canarying at 10% traffic for 30 minutes before full rollout.",[218,222,223,224,228],{},"The gap isn't intelligence. It's ",[225,226,227],"em",{},"your"," knowledge. The conventions, processes, and hard-won lessons that exist in your team's heads and nowhere else.",[218,230,231,232,239],{},"That's exactly what ",[233,234,238],"a",{"href":235,"rel":236},"https:\u002F\u002Fwww.anthropic.com\u002Fnews\u002Fskills",[237],"nofollow","Skills"," solve.",[241,242,243],"blockquote",{},[218,244,245,246,251],{},"If you want the deep dive, Anthropic published a 32-page guide: ",[233,247,250],{"href":248,"rel":249},"https:\u002F\u002Fresources.anthropic.com\u002Fhubfs\u002FThe-Complete-Guide-to-Building-Skill-for-Claude.pdf",[237],"The Complete Guide to Building Skills for Claude (PDF)",". It covers everything from architecture to distribution. This post distills the key concepts and adds a hands-on demo, but the official guide is worth reading cover to cover.",[253,254,256],"h2",{"id":255},"what-are-skills","What Are Skills?",[218,258,259,260,264],{},"A skill is a folder with a markdown file (",[261,262,263],"code",{},"SKILL.md",") that tells Claude how to do something specific. That's it. Optionally, you add scripts, templates, or reference docs alongside it. When Claude encounters a task that matches a skill's description, it loads the instructions and follows your playbook instead of improvising.",[218,266,267,268,271],{},"Think of it like writing an onboarding guide for a new hire. You don't teach them \"what programming is\" — they already know that. You teach them ",[225,269,270],{},"how your team does things",": the deploy checklist, the PR review process, the naming conventions that aren't written down anywhere.",[273,274,276],"h3",{"id":275},"skills-vs-claudemd-vs-mcp","Skills vs CLAUDE.md vs MCP",[218,278,279],{},"These three pieces work together but serve different purposes:",[281,282,283,291,297],"ul",{},[284,285,286,290],"li",{},[287,288,289],"strong",{},"CLAUDE.md"," is identity and broad context — \"this is a Nuxt 4 monorepo, here's our project structure, here are the commands\"",[284,292,293,296],{},[287,294,295],{},"MCP"," is connectivity — giving Claude access to external tools and services",[284,298,299,301],{},[287,300,238],{}," are procedural knowledge — step-by-step instructions for specific tasks",[218,303,304,305,308,309,312],{},"The official guide nails the analogy: ",[287,306,307],{},"MCP gives Claude the professional kitchen"," — access to tools, ingredients, and equipment. ",[287,310,311],{},"Skills give it the recipes"," — step-by-step instructions for creating something valuable. You need both. A kitchen without recipes produces inconsistent results. Recipes without a kitchen are just theory.",[218,314,315,316,319,320,323,324,327],{},"CLAUDE.md tells Claude ",[225,317,318],{},"where it is",". MCP tells Claude ",[225,321,322],{},"what it can reach",". Skills tell Claude ",[225,325,326],{},"how to do the job your way",".",[253,329,331],{"id":330},"try-it-before-and-after","Try It: Before and After",[218,333,334],{},"The best way to understand skills is to experience the difference. This interactive demo lets you write a skill with your own team's process and see how it changes Claude's response.",[336,337],"skill-demo",{},[218,339,340,341,343],{},"That's the entire concept. You encoded knowledge Claude didn't have, and now it responds with ",[225,342,227],{}," process instead of a generic one.",[253,345,347],{"id":346},"progressive-disclosure-how-skills-stay-lean","Progressive Disclosure: How Skills Stay Lean",[218,349,350,351,354],{},"The biggest question with skills is context cost. If Claude loads every skill's full instructions at startup, you'd burn through the context window before writing a line of code. Anthropic's solution is what the guide calls ",[287,352,353],{},"progressive disclosure"," — a three-level loading system:",[356,357,362],"pre",{"className":358,"code":359,"language":360,"meta":361,"style":361},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","flowchart TB\n    subgraph L1[\"Level 1 — Always Loaded\"]\n        direction LR\n        F1[\"name: deploy-checklist\"]\n        F2[\"description: Production deploy process...\"]\n    end\n\n    subgraph L2[\"Level 2 — Loaded on Match\"]\n        B[\"Full SKILL.md body\\nInstructions, examples, error handling\"]\n    end\n\n    subgraph L3[\"Level 3 — Loaded on Demand\"]\n        R1[\"references\u002Frunbook.md\"]\n        R2[\"scripts\u002Fcheck-env.sh\"]\n        R3[\"assets\u002Ftemplate.yaml\"]\n    end\n\n    L1 -->|\"Task matches\\ndescription\"| L2\n    L2 -->|\"Instructions reference\\nadditional files\"| L3\n\n    style L1 fill:#0c4a6e,stroke:#38bdf8,color:#e0f2fe\n    style L2 fill:#1e3a5f,stroke:#38bdf8,color:#e0f2fe\n    style L3 fill:#27272a,stroke:#52525b,color:#a1a1aa\n","mermaid","",[261,363,364,372,378,384,390,396,402,409,415,421,426,431,437,443,449,455,460,465,471,477,482,488,494],{"__ignoreMap":361},[365,366,369],"span",{"class":367,"line":368},"line",1,[365,370,371],{},"flowchart TB\n",[365,373,375],{"class":367,"line":374},2,[365,376,377],{},"    subgraph L1[\"Level 1 — Always Loaded\"]\n",[365,379,381],{"class":367,"line":380},3,[365,382,383],{},"        direction LR\n",[365,385,387],{"class":367,"line":386},4,[365,388,389],{},"        F1[\"name: deploy-checklist\"]\n",[365,391,393],{"class":367,"line":392},5,[365,394,395],{},"        F2[\"description: Production deploy process...\"]\n",[365,397,399],{"class":367,"line":398},6,[365,400,401],{},"    end\n",[365,403,405],{"class":367,"line":404},7,[365,406,408],{"emptyLinePlaceholder":407},true,"\n",[365,410,412],{"class":367,"line":411},8,[365,413,414],{},"    subgraph L2[\"Level 2 — Loaded on Match\"]\n",[365,416,418],{"class":367,"line":417},9,[365,419,420],{},"        B[\"Full SKILL.md body\\nInstructions, examples, error handling\"]\n",[365,422,424],{"class":367,"line":423},10,[365,425,401],{},[365,427,429],{"class":367,"line":428},11,[365,430,408],{"emptyLinePlaceholder":407},[365,432,434],{"class":367,"line":433},12,[365,435,436],{},"    subgraph L3[\"Level 3 — Loaded on Demand\"]\n",[365,438,440],{"class":367,"line":439},13,[365,441,442],{},"        R1[\"references\u002Frunbook.md\"]\n",[365,444,446],{"class":367,"line":445},14,[365,447,448],{},"        R2[\"scripts\u002Fcheck-env.sh\"]\n",[365,450,452],{"class":367,"line":451},15,[365,453,454],{},"        R3[\"assets\u002Ftemplate.yaml\"]\n",[365,456,458],{"class":367,"line":457},16,[365,459,401],{},[365,461,463],{"class":367,"line":462},17,[365,464,408],{"emptyLinePlaceholder":407},[365,466,468],{"class":367,"line":467},18,[365,469,470],{},"    L1 -->|\"Task matches\\ndescription\"| L2\n",[365,472,474],{"class":367,"line":473},19,[365,475,476],{},"    L2 -->|\"Instructions reference\\nadditional files\"| L3\n",[365,478,480],{"class":367,"line":479},20,[365,481,408],{"emptyLinePlaceholder":407},[365,483,485],{"class":367,"line":484},21,[365,486,487],{},"    style L1 fill:#0c4a6e,stroke:#38bdf8,color:#e0f2fe\n",[365,489,491],{"class":367,"line":490},22,[365,492,493],{},"    style L2 fill:#1e3a5f,stroke:#38bdf8,color:#e0f2fe\n",[365,495,497],{"class":367,"line":496},23,[365,498,499],{},"    style L3 fill:#27272a,stroke:#52525b,color:#a1a1aa\n",[218,501,502,505,506,509,510,513],{},[287,503,504],{},"Level 1: Frontmatter only."," At startup, Claude loads just the ",[261,507,508],{},"name"," and ",[261,511,512],{},"description"," from every installed skill's YAML frontmatter. This costs roughly 50-100 tokens per skill — cheap enough to have dozens of skills available without impacting performance.",[218,515,516,519],{},[287,517,518],{},"Level 2: Full SKILL.md."," When Claude determines a skill matches the current task, it reads the complete SKILL.md body into context — instructions, examples, error handling, all of it.",[218,521,522,525],{},[287,523,524],{},"Level 3: Referenced files."," For complex skills, additional files in the skill directory — reference docs, API patterns, templates — are only loaded when the SKILL.md instructions explicitly reference them.",[218,527,528],{},"The guide reports that for complex project creation, this system reduced clarification questions from 15 to 2 and cut token consumption from 12,000 to 6,000. That's the difference between a skill that front-loads everything and one that progressively discloses only what's needed.",[273,530,532],{"id":531},"discovery-locations","Discovery Locations",[218,534,535],{},"When Claude Code starts, it scans for skills in multiple locations:",[356,537,542],{"className":538,"code":540,"language":541},[539],"language-text","~\u002F.claude\u002Fskills\u002F          ← your global skills (personal workflows)\n.claude\u002Fskills\u002F            ← project skills (team workflows, checked into git)\nplugins                    ← plugin-provided skills (from the marketplace)\n","text",[261,543,540],{"__ignoreMap":361},[218,545,546],{},"A few details worth knowing:",[281,548,549,559,573,583],{},[284,550,551,554,555,558],{},[287,552,553],{},"Context budget",": skill descriptions share 2% of the context window (fallback of 16k characters). Run ",[261,556,557],{},"\u002Fcontext"," in Claude Code to check if any skills got excluded.",[284,560,561,564,565,568,569,572],{},[287,562,563],{},"Monorepo support",": if you're working in ",[261,566,567],{},"packages\u002Ffrontend\u002F",", Claude also discovers skills from ",[261,570,571],{},"packages\u002Ffrontend\u002F.claude\u002Fskills\u002F",". Each package can have its own skills.",[284,574,575,578,579,582],{},[287,576,577],{},"Live reload",": skills in directories added via ",[261,580,581],{},"--add-dir"," are watched for changes. Edit a skill mid-session, and Claude picks it up without restarting.",[284,584,585,588,589,327],{},[287,586,587],{},"Invocation",": Claude auto-matches skills to tasks, but you can also invoke them explicitly with ",[261,590,591],{},"\u002Fskill-name",[273,593,595],{"id":594},"what-happens-when-a-skill-triggers","What Happens When a Skill Triggers",[218,597,598,599,601],{},"When Claude decides a skill is relevant (or you invoke one with ",[261,600,591],{},"), the execution flow maps directly to the progressive disclosure levels:",[356,603,605],{"className":358,"code":604,"language":360,"meta":361,"style":361},"sequenceDiagram\n    participant U as You\n    participant C as Claude Code\n    participant FS as File System\n\n    U->>C: \"Deploy this to production\"\n    Note over C: Level 1: Check loaded descriptions\n    C->>C: Match task → deploy-checklist\n    Note over C: Level 2: Load full instructions\n    C->>FS: Read deploy-checklist\u002FSKILL.md\n    FS-->>C: Instructions + frontmatter\n    C->>C: Expand instructions into context\n    Note over C: Level 3: Load referenced files\n    C->>FS: Read scripts\u002Fcheck-env.sh\n    FS-->>C: Validation script\n    C->>U: Response follows YOUR process\n",[261,606,607,612,617,622,627,631,636,641,646,651,656,661,666,671,676,681],{"__ignoreMap":361},[365,608,609],{"class":367,"line":368},[365,610,611],{},"sequenceDiagram\n",[365,613,614],{"class":367,"line":374},[365,615,616],{},"    participant U as You\n",[365,618,619],{"class":367,"line":380},[365,620,621],{},"    participant C as Claude Code\n",[365,623,624],{"class":367,"line":386},[365,625,626],{},"    participant FS as File System\n",[365,628,629],{"class":367,"line":392},[365,630,408],{"emptyLinePlaceholder":407},[365,632,633],{"class":367,"line":398},[365,634,635],{},"    U->>C: \"Deploy this to production\"\n",[365,637,638],{"class":367,"line":404},[365,639,640],{},"    Note over C: Level 1: Check loaded descriptions\n",[365,642,643],{"class":367,"line":411},[365,644,645],{},"    C->>C: Match task → deploy-checklist\n",[365,647,648],{"class":367,"line":417},[365,649,650],{},"    Note over C: Level 2: Load full instructions\n",[365,652,653],{"class":367,"line":423},[365,654,655],{},"    C->>FS: Read deploy-checklist\u002FSKILL.md\n",[365,657,658],{"class":367,"line":428},[365,659,660],{},"    FS-->>C: Instructions + frontmatter\n",[365,662,663],{"class":367,"line":433},[365,664,665],{},"    C->>C: Expand instructions into context\n",[365,667,668],{"class":367,"line":439},[365,669,670],{},"    Note over C: Level 3: Load referenced files\n",[365,672,673],{"class":367,"line":445},[365,674,675],{},"    C->>FS: Read scripts\u002Fcheck-env.sh\n",[365,677,678],{"class":367,"line":451},[365,679,680],{},"    FS-->>C: Validation script\n",[365,682,683],{"class":367,"line":457},[365,684,685],{},"    C->>U: Response follows YOUR process\n",[218,687,688,689,692],{},"This is fundamentally different from tools. A tool executes and returns results. A skill ",[225,690,691],{},"prepares"," Claude to solve the problem using your approach. The instructions become part of Claude's working context, shaping how it thinks about the task.",[253,694,696],{"id":695},"anatomy-of-a-skill","Anatomy of a Skill",[218,698,699,700,703],{},"Every skill lives in its own directory under ",[261,701,702],{},".claude\u002Fskills\u002F",":",[356,705,708],{"className":706,"code":707,"language":541},[539],".claude\u002Fskills\u002F\n└── deploy-checklist\u002F\n    ├── SKILL.md              ← required: instructions\n    ├── scripts\u002F\n    │   └── check-env.sh      ← optional: executable scripts\n    └── references\u002F\n        └── runbook.md        ← optional: detailed docs\n",[261,709,707],{"__ignoreMap":361},[273,711,713],{"id":712},"folder-and-naming-rules","Folder and Naming Rules",[281,715,716,731,734],{},[284,717,718,719,722,723,726,727,730],{},"Folder names must be ",[287,720,721],{},"kebab-case"," (",[261,724,725],{},"deploy-checklist",", not ",[261,728,729],{},"DeployChecklist",")",[284,732,733],{},"No spaces, capitals, or underscores",[284,735,736,737,739],{},"The ",[261,738,508],{}," field in frontmatter should match the folder name",[273,741,743],{"id":742},"skillmd-frontmatter","SKILL.md Frontmatter",[218,745,746,747,749],{},"The YAML block at the top of ",[261,748,263],{}," is what Claude reads at Level 1. There are two required fields and several optional ones:",[356,751,755],{"className":752,"code":753,"language":754,"meta":361,"style":361},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\n# Required\nname: deploy-checklist\ndescription: >\n  Production deployment process and pre-deploy verification.\n  Use when deploying services, releasing to production, or\n  running pre-deploy checks. Trigger on \"deploy\", \"release\",\n  \"ship it\".\n\n# Optional\nlicense: MIT\ncompatibility: claude-code\nmetadata:\n  author: your-team\n  version: 1.0.0\n  mcp-server: deployment-tools\n---\n","yaml",[261,756,757,763,769,781,791,796,801,806,811,815,820,830,840,848,858,869,879],{"__ignoreMap":361},[365,758,759],{"class":367,"line":368},[365,760,762],{"class":761},"sBMFI","---\n",[365,764,765],{"class":367,"line":374},[365,766,768],{"class":767},"sHwdD","# Required\n",[365,770,771,774,777],{"class":367,"line":380},[365,772,508],{"class":773},"swJcz",[365,775,703],{"class":776},"sMK4o",[365,778,780],{"class":779},"sfazB"," deploy-checklist\n",[365,782,783,785,787],{"class":367,"line":386},[365,784,512],{"class":773},[365,786,703],{"class":776},[365,788,790],{"class":789},"s7zQu"," >\n",[365,792,793],{"class":367,"line":392},[365,794,795],{"class":779},"  Production deployment process and pre-deploy verification.\n",[365,797,798],{"class":367,"line":398},[365,799,800],{"class":779},"  Use when deploying services, releasing to production, or\n",[365,802,803],{"class":367,"line":404},[365,804,805],{"class":779},"  running pre-deploy checks. Trigger on \"deploy\", \"release\",\n",[365,807,808],{"class":367,"line":411},[365,809,810],{"class":779},"  \"ship it\".\n",[365,812,813],{"class":367,"line":417},[365,814,408],{"emptyLinePlaceholder":407},[365,816,817],{"class":367,"line":423},[365,818,819],{"class":767},"# Optional\n",[365,821,822,825,827],{"class":367,"line":428},[365,823,824],{"class":773},"license",[365,826,703],{"class":776},[365,828,829],{"class":779}," MIT\n",[365,831,832,835,837],{"class":367,"line":433},[365,833,834],{"class":773},"compatibility",[365,836,703],{"class":776},[365,838,839],{"class":779}," claude-code\n",[365,841,842,845],{"class":367,"line":439},[365,843,844],{"class":773},"metadata",[365,846,847],{"class":776},":\n",[365,849,850,853,855],{"class":367,"line":445},[365,851,852],{"class":773},"  author",[365,854,703],{"class":776},[365,856,857],{"class":779}," your-team\n",[365,859,860,863,865],{"class":367,"line":451},[365,861,862],{"class":773},"  version",[365,864,703],{"class":776},[365,866,868],{"class":867},"sbssI"," 1.0.0\n",[365,870,871,874,876],{"class":367,"line":457},[365,872,873],{"class":773},"  mcp-server",[365,875,703],{"class":776},[365,877,878],{"class":779}," deployment-tools\n",[365,880,881],{"class":367,"line":462},[365,882,762],{"class":761},[218,884,736,885,887],{},[261,886,512],{}," field is the most important thing you'll write. It's the Level 1 content — what Claude reads to decide whether this skill is relevant. Be specific about what the skill does AND when it should trigger. Include the phrases users would actually say.",[218,889,890,893,894,897,898,901,902,904,905,908,909,912],{},[287,891,892],{},"Security note",": XML angle brackets (",[261,895,896],{},"\u003C"," ",[261,899,900],{},">",") are forbidden in frontmatter. The ",[261,903,508],{}," field can't start with ",[261,906,907],{},"claude"," or ",[261,910,911],{},"anthropic"," (reserved).",[273,914,916],{"id":915},"a-complete-example","A Complete Example",[218,918,919],{},"Here's a deploy-checklist skill:",[356,921,923],{"className":752,"code":922,"language":754,"meta":361,"style":361},"---\nname: deploy-checklist\ndescription: Production deployment process and pre-deploy verification.\n  Use when deploying services, releasing to production, or running\n  pre-deploy checks. Trigger on \"deploy\", \"release\", \"ship it\".\n---\n\n# Production Deploy Checklist\n\n## Pre-deploy Verification\n\n1. Run the full integration suite:\n   ```bash\n   pnpm test:integration\n   ```\n2. Confirm staging smoke tests passed in CI\n3. Verify the on-call engineer is available in #ops\n\n## Deploy Process\n\n1. Deploy to canary (10% traffic):\n   ```bash\n   pnpm deploy:canary\n   ```\n2. Monitor error rates in Datadog for 30 minutes\n3. If error rate \u003C 0.1%, proceed to full rollout:\n   ```bash\n   pnpm deploy:full\n   ```\n4. Post deploy confirmation in #releases\n\n## Rollback\n\nIf error rate exceeds 0.5% at any stage:\n\n```bash\npnpm deploy:rollback\n```\n\nNotify #ops immediately.\n",[261,924,925,929,937,946,951,956,960,964,969,973,978,982,989,998,1003,1008,1013,1021,1025,1030,1034,1041,1047,1052,1057,1063,1071,1078,1084,1089,1098,1103,1109,1114,1122,1127,1135,1141,1147,1152],{"__ignoreMap":361},[365,926,927],{"class":367,"line":368},[365,928,762],{"class":761},[365,930,931,933,935],{"class":367,"line":374},[365,932,508],{"class":773},[365,934,703],{"class":776},[365,936,780],{"class":779},[365,938,939,941,943],{"class":367,"line":380},[365,940,512],{"class":773},[365,942,703],{"class":776},[365,944,945],{"class":779}," Production deployment process and pre-deploy verification.\n",[365,947,948],{"class":367,"line":386},[365,949,950],{"class":779},"  Use when deploying services, releasing to production, or running\n",[365,952,953],{"class":367,"line":392},[365,954,955],{"class":779},"  pre-deploy checks. Trigger on \"deploy\", \"release\", \"ship it\".\n",[365,957,958],{"class":367,"line":398},[365,959,762],{"class":761},[365,961,962],{"class":367,"line":404},[365,963,408],{"emptyLinePlaceholder":407},[365,965,966],{"class":367,"line":411},[365,967,968],{"class":767},"# Production Deploy Checklist\n",[365,970,971],{"class":367,"line":417},[365,972,408],{"emptyLinePlaceholder":407},[365,974,975],{"class":367,"line":423},[365,976,977],{"class":767},"## Pre-deploy Verification\n",[365,979,980],{"class":367,"line":428},[365,981,408],{"emptyLinePlaceholder":407},[365,983,984,987],{"class":367,"line":433},[365,985,986],{"class":773},"1. Run the full integration suite",[365,988,847],{"class":776},[365,990,991,995],{"class":367,"line":439},[365,992,994],{"class":993},"sTEyZ","   ```",[365,996,997],{"class":779},"bash\n",[365,999,1000],{"class":367,"line":445},[365,1001,1002],{"class":779},"   pnpm test:integration\n",[365,1004,1005],{"class":367,"line":451},[365,1006,1007],{"class":993},"   ```\n",[365,1009,1010],{"class":367,"line":457},[365,1011,1012],{"class":779},"2. Confirm staging smoke tests passed in CI\n",[365,1014,1015,1018],{"class":367,"line":462},[365,1016,1017],{"class":779},"3. Verify the on-call engineer is available in",[365,1019,1020],{"class":767}," #ops\n",[365,1022,1023],{"class":367,"line":467},[365,1024,408],{"emptyLinePlaceholder":407},[365,1026,1027],{"class":367,"line":473},[365,1028,1029],{"class":767},"## Deploy Process\n",[365,1031,1032],{"class":367,"line":479},[365,1033,408],{"emptyLinePlaceholder":407},[365,1035,1036,1039],{"class":367,"line":484},[365,1037,1038],{"class":773},"1. Deploy to canary (10% traffic)",[365,1040,847],{"class":776},[365,1042,1043,1045],{"class":367,"line":490},[365,1044,994],{"class":993},[365,1046,997],{"class":779},[365,1048,1049],{"class":367,"line":496},[365,1050,1051],{"class":779},"   pnpm deploy:canary\n",[365,1053,1055],{"class":367,"line":1054},24,[365,1056,1007],{"class":993},[365,1058,1060],{"class":367,"line":1059},25,[365,1061,1062],{"class":779},"2. Monitor error rates in Datadog for 30 minutes\n",[365,1064,1066,1069],{"class":367,"line":1065},26,[365,1067,1068],{"class":773},"3. If error rate \u003C 0.1%, proceed to full rollout",[365,1070,847],{"class":776},[365,1072,1074,1076],{"class":367,"line":1073},27,[365,1075,994],{"class":993},[365,1077,997],{"class":779},[365,1079,1081],{"class":367,"line":1080},28,[365,1082,1083],{"class":779},"   pnpm deploy:full\n",[365,1085,1087],{"class":367,"line":1086},29,[365,1088,1007],{"class":993},[365,1090,1092,1095],{"class":367,"line":1091},30,[365,1093,1094],{"class":779},"4. Post deploy confirmation in",[365,1096,1097],{"class":767}," #releases\n",[365,1099,1101],{"class":367,"line":1100},31,[365,1102,408],{"emptyLinePlaceholder":407},[365,1104,1106],{"class":367,"line":1105},32,[365,1107,1108],{"class":767},"## Rollback\n",[365,1110,1112],{"class":367,"line":1111},33,[365,1113,408],{"emptyLinePlaceholder":407},[365,1115,1117,1120],{"class":367,"line":1116},34,[365,1118,1119],{"class":773},"If error rate exceeds 0.5% at any stage",[365,1121,847],{"class":776},[365,1123,1125],{"class":367,"line":1124},35,[365,1126,408],{"emptyLinePlaceholder":407},[365,1128,1130,1133],{"class":367,"line":1129},36,[365,1131,1132],{"class":993},"```",[365,1134,997],{"class":779},[365,1136,1138],{"class":367,"line":1137},37,[365,1139,1140],{"class":779},"pnpm deploy:rollback\n",[365,1142,1144],{"class":367,"line":1143},38,[365,1145,1146],{"class":993},"```\n",[365,1148,1150],{"class":367,"line":1149},39,[365,1151,408],{"emptyLinePlaceholder":407},[365,1153,1155,1158],{"class":367,"line":1154},40,[365,1156,1157],{"class":779},"Notify",[365,1159,1160],{"class":767}," #ops immediately.\n",[273,1162,1164],{"id":1163},"a-minimal-skill","A Minimal Skill",[218,1166,1167],{},"Skills don't have to be complex. Here's a useful one in 8 lines:",[356,1169,1171],{"className":752,"code":1170,"language":754,"meta":361,"style":361},"---\nname: pr-template\ndescription: Pull request creation with our team's template and conventions.\n  Use when creating PRs, opening pull requests, or preparing code for review.\n---\n\n# PR Conventions\n\n- Title format: `[JIRA-123] Brief description` (under 70 chars)\n- Always include a \"Test Plan\" section with manual verification steps\n- Tag the `platform` team for infra changes, `frontend` for UI changes\n- Screenshots required for any visual changes\n",[261,1172,1173,1177,1186,1195,1200,1204,1208,1213,1217,1242,1249,1256],{"__ignoreMap":361},[365,1174,1175],{"class":367,"line":368},[365,1176,762],{"class":761},[365,1178,1179,1181,1183],{"class":367,"line":374},[365,1180,508],{"class":773},[365,1182,703],{"class":776},[365,1184,1185],{"class":779}," pr-template\n",[365,1187,1188,1190,1192],{"class":367,"line":380},[365,1189,512],{"class":773},[365,1191,703],{"class":776},[365,1193,1194],{"class":779}," Pull request creation with our team's template and conventions.\n",[365,1196,1197],{"class":367,"line":386},[365,1198,1199],{"class":779},"  Use when creating PRs, opening pull requests, or preparing code for review.\n",[365,1201,1202],{"class":367,"line":392},[365,1203,762],{"class":761},[365,1205,1206],{"class":367,"line":398},[365,1207,408],{"emptyLinePlaceholder":407},[365,1209,1210],{"class":367,"line":404},[365,1211,1212],{"class":767},"# PR Conventions\n",[365,1214,1215],{"class":367,"line":411},[365,1216,408],{"emptyLinePlaceholder":407},[365,1218,1219,1222,1225,1227,1230,1233,1236,1239],{"class":367,"line":417},[365,1220,1221],{"class":776},"-",[365,1223,1224],{"class":773}," Title format",[365,1226,703],{"class":776},[365,1228,1229],{"class":993}," `",[365,1231,1232],{"class":776},"[",[365,1234,1235],{"class":779},"JIRA-123",[365,1237,1238],{"class":776},"]",[365,1240,1241],{"class":779}," Brief description` (under 70 chars)\n",[365,1243,1244,1246],{"class":367,"line":423},[365,1245,1221],{"class":776},[365,1247,1248],{"class":779}," Always include a \"Test Plan\" section with manual verification steps\n",[365,1250,1251,1253],{"class":367,"line":428},[365,1252,1221],{"class":776},[365,1254,1255],{"class":779}," Tag the `platform` team for infra changes, `frontend` for UI changes\n",[365,1257,1258,1260],{"class":367,"line":433},[365,1259,1221],{"class":776},[365,1261,1262],{"class":779}," Screenshots required for any visual changes\n",[218,1264,1265],{},"That's a complete, useful skill. No scripts, no templates, no references. Just the knowledge that makes your team's PRs consistent.",[253,1267,1269],{"id":1268},"three-patterns-for-skills","Three Patterns for Skills",[218,1271,1272],{},"The official guide identifies three primary patterns. Knowing which one you're building helps you scope it correctly.",[273,1274,1276],{"id":1275},"_1-document-asset-creation","1. Document & Asset Creation",[218,1278,1279],{},"Skills that produce consistent output — presentations, designs, reports, code scaffolds — following your exact standards. These work with Claude's built-in capabilities, no MCP required.",[218,1281,1282,1285],{},[287,1283,1284],{},"Example",": a skill that generates your team's architecture decision records (ADRs) with the right template, naming convention, and approval sections.",[273,1287,1289],{"id":1288},"_2-workflow-automation","2. Workflow Automation",[218,1291,1292],{},"Multi-step processes that need consistent methodology. These often coordinate several actions in sequence and may use MCP servers for external service access.",[218,1294,1295,1297],{},[287,1296,1284],{},": a sprint planning skill that fetches project status, analyzes velocity, suggests priorities, and creates tasks in your project management tool.",[273,1299,1301],{"id":1300},"_3-mcp-enhancement","3. MCP Enhancement",[218,1303,1304,1305,1308],{},"Layer expertise onto tool access. Your MCP server provides the connection to a service. The skill adds the ",[225,1306,1307],{},"how"," — the workflows, error handling, and domain knowledge your team has built over years.",[218,1310,1311,1313],{},[287,1312,1284],{},": you have an MCP server for your database. The skill adds knowledge about your team's migration conventions, naming standards, and rollback procedures.",[253,1315,1317],{"id":1316},"five-design-patterns","Five Design Patterns",[218,1319,1320],{},"Beyond the three use cases, the guide codifies recurring architectural patterns for skill internals:",[1322,1323,1324,1330,1336,1342,1348],"ol",{},[284,1325,1326,1329],{},[287,1327,1328],{},"Sequential Workflow"," — Ordered multi-step processes (onboarding, deployment, compliance checks)",[284,1331,1332,1335],{},[287,1333,1334],{},"Multi-MCP Coordination"," — Workflows spanning multiple services (design handoff from Figma to Linear to Slack)",[284,1337,1338,1341],{},[287,1339,1340],{},"Iterative Refinement"," — Output that improves through validation loops (report generation with quality checks)",[284,1343,1344,1347],{},[287,1345,1346],{},"Context-Aware Selection"," — Same outcome, different tools based on file type, size, or context",[284,1349,1350,1353],{},[287,1351,1352],{},"Domain Intelligence"," — Embedded specialized knowledge beyond tool access (financial compliance rules, security protocols)",[218,1355,1356],{},"Most real skills combine 2-3 of these. A deploy-checklist is sequential workflow + domain intelligence. A design-handoff skill is multi-MCP coordination + iterative refinement.",[253,1358,1360],{"id":1359},"testing-your-skills","Testing Your Skills",[218,1362,1363,1364,1367,1368,1371],{},"The guide is emphatic about one thing: ",[287,1365,1366],{},"don't use vague instructions like \"double check your work.\""," Use programmatic validation instead. Include scripts in the ",[261,1369,1370],{},"scripts\u002F"," folder and tell Claude to run them.",[218,1373,1374],{},"Three levels of testing, depending on how critical the skill is:",[1322,1376,1377,1383,1389],{},[284,1378,1379,1382],{},[287,1380,1381],{},"Manual testing in Claude.ai"," — Run queries and observe behavior. Fast iteration, no setup. Good for prototyping.",[284,1384,1385,1388],{},[287,1386,1387],{},"Scripted testing in Claude Code"," — Automate test cases for repeatable validation. Good for team skills that need to work consistently.",[284,1390,1391,1394],{},[287,1392,1393],{},"Programmatic testing via the Skills API"," — Build evaluation suites that run systematically against defined test sets. Good for skills you distribute externally.",[273,1396,1398],{"id":1397},"what-to-test","What to Test",[281,1400,1401,1407,1413],{},[284,1402,1403,1406],{},[287,1404,1405],{},"Triggering"," — does the skill load when it should? Does it stay quiet when it shouldn't?",[284,1408,1409,1412],{},[287,1410,1411],{},"Functional correctness"," — does it produce the right output?",[284,1414,1415,1418],{},[287,1416,1417],{},"Performance"," — is it measurably better than no skill?",[273,1420,1422],{"id":1421},"kpis-worth-tracking","KPIs Worth Tracking",[218,1424,1425],{},"The guide suggests three metrics:",[281,1427,1428,1434,1440],{},[284,1429,1430,1433],{},[287,1431,1432],{},"Skill Trigger Rate"," — target 90%+ accuracy on relevant queries. If your deploy skill only triggers 60% of the time when someone says \"ship it,\" your description needs work.",[284,1435,1436,1439],{},[287,1437,1438],{},"API Call Success Rate"," — target zero failed API calls per workflow. Especially relevant for MCP-enhanced skills.",[284,1441,1442,1445],{},[287,1443,1444],{},"Token Efficiency"," — measure context reduction vs. putting everything in CLAUDE.md. The whole point of progressive disclosure is using fewer tokens for the same quality.",[253,1447,1449],{"id":1448},"recommended-skills-to-get-started","Recommended Skills to Get Started",[218,1451,1452,1453,1458],{},"The ecosystem has grown fast since Anthropic ",[233,1454,1457],{"href":1455,"rel":1456},"https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fequipping-agents-for-the-real-world-with-agent-skills",[237],"open-sourced the Agent Skills standard"," in December 2025. Here are good starting points:",[273,1460,1462,1463],{"id":1461},"official-anthropicsskills","Official: ",[233,1464,1467],{"href":1465,"rel":1466},"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills",[237],"anthropics\u002Fskills",[218,1469,1470,1471,1476],{},"Anthropic's own repository has 50+ skills across categories like document processing, development tools, and data analysis. You can install them as plugins directly in Claude Code. The ",[233,1472,1475],{"href":1473,"rel":1474},"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002FSKILL.md",[237],"skill-creator"," skill is particularly useful — it's a skill for building skills. The guide estimates 15-30 minutes to build and test your first working skill using it.",[273,1478,1480],{"id":1479},"community","Community",[281,1482,1483,1499],{},[284,1484,1485,1492,1493,1498],{},[287,1486,1487],{},[233,1488,1491],{"href":1489,"rel":1490},"https:\u002F\u002Fgithub.com\u002Ftravisvn\u002Fawesome-claude-skills",[237],"travisvn\u002Fawesome-claude-skills"," — curated list including ",[233,1494,1497],{"href":1495,"rel":1496},"https:\u002F\u002Fgithub.com\u002Fobra\u002Fsuperpowers",[237],"obra\u002Fsuperpowers",", a collection of 20+ battle-tested skills for TDD, debugging, and collaboration patterns",[284,1500,1501,1508],{},[287,1502,1503],{},[233,1504,1507],{"href":1505,"rel":1506},"https:\u002F\u002Fskillsmp.com",[237],"skillsmp.com"," — marketplace with thousands of community-created skills",[273,1510,1512],{"id":1511},"cross-platform","Cross-Platform",[218,1514,1515,1516,1521],{},"The Agent Skills format is now an ",[233,1517,1520],{"href":1518,"rel":1519},"https:\u002F\u002Fagentskills.io",[237],"open standard",". The same SKILL.md files work across Claude Code, Claude.ai, the API, OpenAI's Codex CLI, VS Code, and Cursor. Write once, use everywhere.",[253,1523,1525],{"id":1524},"build-your-own","Build Your Own",[218,1527,1528],{},"The best skills encode knowledge that's unique to your team. Here's how to think about what to build:",[218,1530,1531,1534],{},[287,1532,1533],{},"Ask yourself",": what do you explain to every new team member? That's a skill.",[281,1536,1537,1540,1543,1546,1549],{},[284,1538,1539],{},"How you structure database migrations",[284,1541,1542],{},"Your team's error handling conventions",[284,1544,1545],{},"The process for incident response",[284,1547,1548],{},"How you name things (files, branches, variables)",[284,1550,1551],{},"Your code review checklist",[218,1553,1554,1557,1558,1560,1561,1564],{},[287,1555,1556],{},"Keep it focused",". One skill, one concern. A skill that tries to cover \"all of our engineering practices\" will be too large for the context window and too vague to be useful. A skill that covers \"how we write database migrations\" is perfect. The guide recommends keeping ",[261,1559,263],{}," under 5,000 words — if you exceed that, offload detail to ",[261,1562,1563],{},"references\u002F"," or split into a \"skill pack.\"",[218,1566,1567,1570],{},[287,1568,1569],{},"Write descriptions that trigger correctly",". Include both what the skill does and the actual phrases users would say. \"Analyzes Figma designs and generates handoff docs. Use when uploading .fig files or asking for 'design specs' or 'component documentation'\" is much better than \"Figma design helper.\"",[218,1572,1573,1576,1577,1579],{},[287,1574,1575],{},"Use programmatic validation, not vibes",". Instead of telling Claude to \"verify the output looks correct,\" include a script in ",[261,1578,1370],{}," that actually checks it. Claude is good at running scripts. It's less good at judging its own work.",[218,1581,1582,1585,1586,1588],{},[287,1583,1584],{},"Move references out of SKILL.md",". Keep the main file focused on instructions. Detailed documentation, API specs, and schema definitions go in a ",[261,1587,1563],{}," subdirectory. Claude reads them only when needed (Level 3).",[273,1590,1592],{"id":1591},"common-pitfalls","Common Pitfalls",[218,1594,1595],{},"The guide calls out several mistakes worth avoiding:",[281,1597,1598,1604,1610,1616],{},[284,1599,1600,1603],{},[287,1601,1602],{},"Vague descriptions"," that never trigger or trigger on everything",[284,1605,1606,1609],{},[287,1607,1608],{},"Instructions buried in verbose content"," — Claude works better with concise, direct instructions",[284,1611,1612,1615],{},[287,1613,1614],{},"Missing error handling"," for MCP calls — always tell Claude what to do when an API call fails",[284,1617,1618,1621],{},[287,1619,1620],{},"Trying to do too much"," in one skill — split it into a skill pack instead",[253,1623,1625],{"id":1624},"whats-next","What's Next",[218,1627,1628,1629,1633,1634,1639],{},"Skills are still early but moving fast. The ",[233,1630,1632],{"href":248,"rel":1631},[237],"official guide (PDF)"," and the ",[233,1635,1638],{"href":1636,"rel":1637},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fskills",[237],"Claude Code docs"," are the best sources of truth. But the core idea is durable: the most effective way to work with AI isn't better prompting, it's giving it the knowledge it needs upfront.",[218,1641,1642,1643,1645],{},"Your team's expertise shouldn't live only in people's heads. Write it down as a SKILL.md, drop it in ",[261,1644,702],{},", and let Claude work the way your team works.",[218,1647,1648],{},[225,1649,1650],{},"What workflow will you teach Claude first?",[1652,1653,1654],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":361,"searchDepth":374,"depth":374,"links":1656},[1657,1660,1661,1665,1671,1676,1677,1681,1687,1690],{"id":255,"depth":374,"text":256,"children":1658},[1659],{"id":275,"depth":380,"text":276},{"id":330,"depth":374,"text":331},{"id":346,"depth":374,"text":347,"children":1662},[1663,1664],{"id":531,"depth":380,"text":532},{"id":594,"depth":380,"text":595},{"id":695,"depth":374,"text":696,"children":1666},[1667,1668,1669,1670],{"id":712,"depth":380,"text":713},{"id":742,"depth":380,"text":743},{"id":915,"depth":380,"text":916},{"id":1163,"depth":380,"text":1164},{"id":1268,"depth":374,"text":1269,"children":1672},[1673,1674,1675],{"id":1275,"depth":380,"text":1276},{"id":1288,"depth":380,"text":1289},{"id":1300,"depth":380,"text":1301},{"id":1316,"depth":374,"text":1317},{"id":1359,"depth":374,"text":1360,"children":1678},[1679,1680],{"id":1397,"depth":380,"text":1398},{"id":1421,"depth":380,"text":1422},{"id":1448,"depth":374,"text":1449,"children":1682},[1683,1685,1686],{"id":1461,"depth":380,"text":1684},"Official: anthropics\u002Fskills",{"id":1479,"depth":380,"text":1480},{"id":1511,"depth":380,"text":1512},{"id":1524,"depth":374,"text":1525,"children":1688},[1689],{"id":1591,"depth":380,"text":1592},{"id":1624,"depth":374,"text":1625},"2026-02-21","Skills are how you give Claude your team's specific knowledge — processes, conventions, and expertise that no foundation model ships with. Here's how they work, how discovery happens, and how to build your own.","md",{"src":1695,"alt":1696},"\u002Fimages\u002Fblog\u002Ftodo-place-holder-image.png","A developer dragging a SKILL.md file into a glowing folder structure",{},{"title":181,"description":1692},"published","1rJuPJEpxBNwdN4bYghxIRR4Mv-H2g0R1lva5mYoXwQ",[1702,1704],{"title":177,"path":178,"stem":179,"description":1703,"status":1699,"children":-1},"Free printable PDF worksheet for kids learning to tell time — analog clock reference with hour and minute hands, common times, and 12 practice clocks. Download, print, and learn.",{"title":185,"path":186,"stem":187,"description":1705,"status":1699,"children":-1},"A demo of multi-agent AI orchestration where three specialized reviewers analyze loan applications independently, stream results in real-time via SSE, and a human makes the final call.",1775479423580]