| Signal | Scope | Reason |
|---|---|---|
| It's a craft skill — review, git, testing, design principles | ~/.claude/skills/ | These apply to every project. Universal quality bars benefit from being always-on. |
| It references a specific library, API, or file path | [project]/.claude/skills/ | e.g. lib/ai.ts, Twilio webhooks, Stripe plan IDs. Would be noise — or wrong — anywhere else. |
| It contains a client's brand colours, domain rules, or business logic | [project]/.claude/skills/ | Client-specific context must stay in the client repo, not leak into all sessions. |
| Its trigger phrases are generic ("add a feature", "design this API") | [project]/.claude/skills/ | Broad triggers cause false positives on unrelated work. Keep scoped to where the context is valid. |
| It encodes a process you run on every engagement | ~/.claude/skills/ | e.g. PR review process, commit message format. These should be consistent everywhere. |
| It was built for one client but proved useful on others | ~/.claude/skills/ | Graduate it. Remove or neutralise the client-specific parts first. |
name and description
required
name is the slug — lowercase, hyphenated, matches the folder name. description is the most important field: it's what Claude Code uses for trigger matching. Write it as a sentence starting with "Use this skill when…" and include 2–4 example trigger phrases in single quotes. Specific phrases beat vague ones — 'review this PR' is better than 'review'.
~/.claude/skills/. Project-specific goes to [project]/.claude/skills/. Default to project-scoped when unsure — you can always promote it later.payment-webhooks is better than payments. Avoid generic slugs like coding or api — they'll conflict with everything.description field first, as it drives trigger matching. Then write the 7 sections. Focus on Process and Guardrails — these are what determine whether the skill actually works. Save to the correct scope location under the slug folder.description trigger phrases if it doesn't fire — this is the most common failure mode.SKILL.md in ~/Claude/skills/<slug>/. Include: title, category, icon, description (one sentence), triggers (2–4 phrases), checks-label, checks (4 maximum — curate ruthlessly), version. This is the portal display card.feat: add <slug> skill, push to gilesparnell/Claude. The GitHub Action regenerates the portal pages automatically. Check the Actions tab to confirm the run succeeded, then verify the card appears on the Skills page.description field drives trigger matching. "Use when coding" is useless. "Use when the user says 'review this PR', 'adversarial review', or 'prepare for review'" is precise. If a skill never fires, the description is why.~/.claude/skills/. SaaS-specific patterns, client brand rules, and stack-specific skills must stay in the project repo.~/Claude/skills/ are portal display stubs — frontmatter only. Claude Code does not read them at runtime. If a skill isn't working, check that the runtime SKILL.md exists in the correct scope location, not just the portal stub.