Help a contributor produce a structurally valid, discoverable skill on the first attempt,
before running bun run validate. This page is a practical walkthrough; the authoritative
specification remains docs/engineering/format.md — if anything here and docs/engineering/format.md
ever disagree, docs/engineering/format.md wins, and this page should be corrected to match.
Every HR skill lives in its own directory under skills/. A skill package consists of a
required SKILL.md file and may include supporting material in content/, prompts/, and
examples/. All of this is [Existing], taken from docs/engineering/format.md and confirmed against
.github/skill-template.md and sampled skills such as skills/hr-onboarding/.
skills/hr-your-skill/
├── SKILL.md # required
├── content/ # optional, but if present: no empty dirs, ≥1 .md file
├── prompts/ # optional, same rule
└── examples/ # optional, same rule
- Directory name: lowercase, hyphens only, must start with
hr-. - Directory name must exactly match the
namefield inSKILL.mdfrontmatter.
| Tier | Requirement |
|---|---|
| 🔴 Bare | SKILL.md only |
| 🟡 Partial | SKILL.md + 1–2 non-empty supporting dirs |
| 🟢 Full | SKILL.md + all three supporting dirs, each with at least one .md file |
Subdirectory rule [Existing]: empty supporting directories are strictly forbidden. Any
content/,prompts/, orexamples/directory present on disk must contain at least one.mdfile, or validation fails.
mkdir skills/hr-your-skill-name- Copy the frontmatter and body structure from
.github/skill-template.mdintoskills/hr-your-skill-name/SKILL.md. This template is the canonical source — don't hand-recreate the structure from memory. - Fill in frontmatter:
name: kebab-case, matches the directory name exactlydescription: at least 50 characters, states the HR domain, the target audience, and realistic trigger phrases (for example"write a job description","analyze turnover") — this is the single field that determines whether an assistant ever activates the skillmetadata.author,metadata.version(start new skills at"1.0.0")
- Write the required body sections:
- Supported tasks — a bullet list, 8–12 items required (
bun run validatefails outside this range, it isn't just a suggestion) - Key prompts — 3–6 subtopics required, each with 4–7 numbered prompts
required, using
[placeholders]for variable inputs - Tips — 4–6 bullets required of practical, professional guidance
- Supported tasks — a bullet list, 8–12 items required (
- (Recommended for Full tier) Add
content/*.md,prompts/*.md,examples/*.md:content/*.md— explains concepts in depth (Overview / Main topics / Practical guidance is a typical, not mandatory, shape)prompts/*.md— a focused prompt library for one subtopic, introduction plus a list of reusable promptsexamples/*.md— a realistic end-to-end workflow (Context / Step 1..N / Workflow summary is a typical, not mandatory, shape)
- Run
bun run syncto regenerate.claude-plugin/marketplace.jsonfrom the new frontmatter. - Update the root router so the skill is discoverable. [Existing, CONTRIBUTING.md] Follow
the procedure in
.agents/skills/hr-root-router-maintaining/SKILL.md, which documents the canonical routing sections, exact table row format, and the rule to bump the router's patch version on every change. - Run
bun run validate— must pass with 0 errors before continuing. - Run
bun run matrixandbun run registryto refresh the generated reports. - Open a pull request against
dev(seedocs/engineering/contributing/workflow.md).
- Skill directories:
hr-<kebab-case-domain> content/,prompts/,examples/files: descriptive kebab-case, for exampleemployee-lifecycle.md,behavioral-interview-prompts.md,conducting-an-exit-interview.md
- Write the
descriptionfor activation accuracy first — get this right before filling in the rest of the file. - Keep
SKILL.mdfocused on what to do; push deep explanation intocontent/, prompt collections intoprompts/, and worked scenarios intoexamples/. Avoid duplicating the same material across files — [Existing, docs/engineering/format.md] this is called out explicitly as something to avoid. - Avoid vendor marketing language and time-sensitive facts (specific compliance thresholds, salary figures) that will go stale — [Existing, docs/engineering/format.md].
- Description under 50 characters or missing realistic trigger phrases → weak or no activation by the assistant.
- Creating an empty
content/,prompts/, orexamples/folder "for later" — fails validation immediately. - Forgetting the root router update — the skill exists on disk but is undiscoverable through
the root
SKILL.mdentry point. - Mismatched
namefrontmatter vs. directory name. - Writing prompt libraries inside
content/*.md, or long explanatory prose insideprompts/*.md— [Existing, docs/engineering/format.md] each file type has a distinct purpose and the spec explicitly lists these as things to avoid.
- [Proposed]
docs/engineering/format.mdalready contains a "Quality checklist" at its end; consider linking to it directly from.github/pull_request_template.md's "Validation" section so contributors see it at PR-creation time, not just while reading docs.
- [Unknown] Whether
content/,prompts/, andexamples/file counts have an upper recommended bound (the spec gives ranges for sections insideSKILL.mditself — supported tasks, key prompts, tips — but not for the number of files in the supporting directories). Worth asking the maintainer if very large supporting directories should be split.