From hb
Creates new agent skills with proper structure, progressive disclosure, and bundled resources. Use when asked to 'make a skill for X'.
How this skill is triggered — by the user, by Claude, or both
Slash command
/hb:create-skillThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
1. **Gather requirements** — ask the user (use AskUserQuestion when available; otherwise present numbered options):
ls skills/ and read 1–2 neighbors to match conventions.SKILL.md; split deep material into references/ if it exceeds ~150 lines; add scripts/ only for deterministic helpers.skill-name/
├── SKILL.md # Required. Metadata + instructions.
├── references/ # Optional. Long-form docs the agent reads on demand.
│ └── <topic>.md
├── scripts/ # Optional. Deterministic helpers (.sh, .py) called via Bash.
│ └── helper.sh
└── assets/ # Optional. Files used in output (templates, icons, fonts).
└── template.md
Keep the entry point in SKILL.md. Link from SKILL.md to references/<topic>.md rather than inlining — preserves progressive disclosure.
name + description) — always in context (~100 words). Sole signal for triggering.SKILL.md body — loaded when skill triggers. Keep under ~150 lines; the spec ceiling is ~500.references/, scripts/, assets/) — loaded on demand or executed without loading.---
name: skill-name
description: One sentence what it does. Use when [triggers]. Don't use when [anti-triggers].
---
# Skill Name
[body — steps, reference, or both]
A skill's body is built from two content types that mix freely: steps (ordered actions the agent takes) and reference (definitions, rules, facts consulted on demand). A skill can be all steps, all reference, or both — let the content pick the shape. Don't force Workflow / Rules / Error Handling headings onto a skill that doesn't need them; empty scaffolding sections are no-ops (see Failure Modes).
build, diagnose): number the actions in order. Orchestrators (review, ship) use explicit phases that announce each sub-skill invoked.codebase-design): a flat peer-set of rules under headings is fine, not a smell.Every step ends on a completion criterion — the condition that tells the agent the step is done. Make it:
| Field | Required | Notes |
|---|---|---|
name | yes | kebab-case, matches directory. Avoid version suffixes (-v2, -new) — evolve in place or deprecate |
description | yes | Agent's only signal for when to auto-load a model-invoked skill |
argument-hint | no | One-line hint shown next to the skill name (e.g. '[slug]', '<idea>') |
disable-model-invocation | no | true = user-invoked only (never auto-triggers) — see Description Requirements |
effort | no | Override reasoning effort for the current turn: low / medium / high / xhigh. Match it to task complexity — see Effort Routing |
Avoid compatibility: and allowed-tools: — legacy npx skills CLI fields, not part of the Claude Code plugin spec. model: is documented but ignored at runtime for skills (works for subagents only) — don't set it.
A skill's effort overrides session effort for the turn it fires, then resets. Set it so trivial work runs cheap and hard work runs deep, without the user touching /effort. Only mark a skill when it deviates from the medium default — leave medium skills unmarked to keep frontmatter quiet.
| Effort | Fits | Examples |
|---|---|---|
low | mechanical, single-place edits | prose-fix, lint, commit |
medium | single-file additions, known-cause fixes (implicit default — leave unset) | tdd-adjacent, e2e, source-driven |
high | multi-file features, unknown-cause debugging, refactors, review | build, plan, diagnose, code-review |
xhigh | architecture, migrations, security-sensitive work | architecture-audit, harden |
The description is the only thing the agent sees when deciding which skill to load. It's surfaced in the system prompt alongside every other installed skill — the agent reads descriptions and picks one based on the user's request.
Goal: give the agent just enough to know
Format:
Use when [triggers]Don't use for [anti-triggers]The trigger/anti-trigger sentences exist for model routing. A user-invoked skill (disable-model-invocation: true) never auto-triggers — the user types it — so those clauses are dead weight that still burns context tokens every turn. Keep user-invoked descriptions to one what-it-does sentence (plus a sequencing cross-ref like Use after /spec if it helps). The rules below apply only to model-invoked skills.
Combat under-triggering (model-invoked): Claude tends to under-trigger skills. If a skill is useful but rarely fires, make the description more assertive — list extra phrases the user might say, name file types or contexts explicitly, even add Make sure to use this skill whenever... when warranted. Anti-triggers stay important, but the trigger clause should be generous.
Good:
Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when user mentions PDFs, forms, or document extraction. Don't use for image OCR (use vision skill) or DOCX files.
Bad:
Helps with documents.
The bad example gives the agent no way to distinguish this from any other document skill.
Add scripts/ helpers when:
Scripts save tokens and improve reliability vs. ad-hoc generated code.
Split into references/<topic>.md when:
SKILL.md exceeds ~150 linesDomain organization: when a skill supports multiple variants, split by variant so the agent loads only the relevant one:
cloud-deploy/
├── SKILL.md # workflow + variant selection
└── references/
├── aws.md
├── gcp.md
└── azure.md
Run X, Check Y — not You should run X)ALWAYS/NEVER in caps. Today's models have theory of mind; reasoning lands better than rigid rulesMUST is fine when a hard constraint exists; a wall of caps is a yellow flag — reframe and explaintight, red, deep, surgical) reused across the skill. One word carries distributed meaning in few tokens and doubles as a trigger when it appears in prompts or code. Strengthen a weak word rather than piling on more rulesDon't use for X routes correctly and stays.)Diagnose a misbehaving skill against these — most problems are one of them:
references/) and splitting by variant.be thorough when the agent already is) is a no-op; the fix is a stronger word (relentless), not more rules.Before shipping a new or modified skill:
name: fieldeffort set if the task deviates from the medium default (low for mechanical, high/xhigh for heavy)SKILL.md under ~150 lines (split into references/ if longer)compatibility: or allowed-tools: legacy fields[validate-code](../validate-code/SKILL.md))/<skill-name> (not /hb:) — portable across agents; required for user-invoked skills (disable-model-invocation: true) since they don't auto-triggerAGENTS.md intent → skill mappingnpx claudepluginhub helderberto/agent-skills --plugin hbCreates new agent skills with proper structure, progressive disclosure, and bundled resources. Guides the user through gathering requirements and drafting SKILL.md files.
Guides creation of structured agent skills with progressive disclosure, bundled scripts, and reference files. Use when building a new skill.
Creates and updates AgentSkills with guidance on designing, structuring, and packaging skills including scripts, references, and assets.