Use when creating, editing, or evaluating a skill in this collection — writes SKILL.md frontmatter and four sections, generates the Codex adapter, runs the validator, and tunes description triggering. The authoring half of using-skills (which routes/consumes). Triggers on "write a skill", "edit skill", "skill eval", "tune triggers", "写技能", "改技能", "技能评估". Not for routing to an existing skill (use using-skills) or building an MCP server (use mcp-builder if added).
Create, edit, and evaluate skills in this collection. Every skill conforms to the anatomy in
references/skill-anatomy.md and passes scripts/validate-skills.sh. This skill is the authoring
half — using-skills routes work to existing skills; this one makes new ones or fixes existing ones.
When to use
Creating a new skill (new SDLC phase gap, repeated task worth a skill)
Editing an existing skill's frontmatter, steps, or references
Tuning a skill's description triggers (false positives, false negatives, collision with another skill)
Evaluating a skill — does it fire when it should, stay distinct from neighbors, change agent behavior?
Triggers on "write a skill", "edit skill", "skill eval", "tune triggers", "写技能", "改技能", "技能评估"
Not for: routing a task to an existing skill (use using-skills); designing an MCP server (out of scope, see official mcp-builder docs); writing project docs like PRD/README (use spec/oss-polish).
Steps
1. Check the anatomy before writing
Load ${CLAUDE_PLUGIN_ROOT}/references/skill-anatomy.md — the folder layout, frontmatter rules (name + description + optional disable-model-invocation only), the four body sections (When to use / Steps / Verify / References), the **Output:** convention, progressive disclosure (15-150 line SKILL.md, depth in references/), and the description hybrid format (Use when… + Triggers on… + exclusions, ≤1024 chars, no cross-skill phrase collisions).
2. Place the skill and wire the backbone
Phase — pick the phase by output type + consumer, not by method. A skill producing a design artifact for design consumers goes in 03-design even if it reuses research methods (see design-research). Method does not set phase; output and consumers do.
Backbone — every skill links engineering-principles.md. PM-side skills also link product-principles.md; UIUX skills also link design-principles.md. The validator enforces these (see scripts/validate-skills.shpm_skills/uiux_skills lists — add the new skill there if it's PM or UIUX).
3. Write the description for routing, not features
Name actions, not tools. "Use when retrieving real design references" not "Use WebFetch on galleries." The model routes on user intent, not on the tool the skill happens to run.
Hybrid format:Use when [intent]. [One sentence: what]. Triggers on "phrase1", "phrase2", "中文1" — also when user says "[natural cue]". Not for [exclusion] → use [other-skill].
No collision. Quoted trigger phrases must be unique across all skills — the validator's collision check flags any shared phrase. Before finalizing, grep the phrase across skills/.
Keep "Triggers on" literal — the validator requires it; gen-agents-yaml.py cuts the description at that clause for the Codex adapter.
4. Write the four sections
When to use — 2-4 conditions + a **Not for:** boundary naming the adjacent skills (prevents routing collisions). This is load-bearing: every boundary pair in this pack was deliberate.
Steps — numbered, each independently verifiable. Push encyclopedic data into references/<x>.md loaded on demand (progressive disclosure). Reference files over 100 lines get a ## Contents ToC (see the anatomy's progressive-disclosure rule).
Verify — concrete evidence (file exists, no placeholders, count met), not "looks right".
References — engineering-principles.md (+ domain backbone) + skill-specific references/. Every references/ link must resolve (dead-link check).
Output — declare **Output:** <path> only if the skill produces a doc/artifact. Behavior-only skills (implement, tdd, debugging) omit it. Every declared path must appear in docs/skill-outputs.md (validator syncs).
Fix every FAIL before considering the skill done. The validator is the gate — a skill that doesn't
pass doesn't ship.
6. Sync the discovery surface
A new or renamed skill touches: .claude-plugin/plugin.json skills[] (the source), docs/skill-outputs.md
(if the skill produces a doc), AGENTS.md routing table, skills/meta/using-skills/SKILL.md phase list,
skills/meta/using-skills/references/phase-tree.md, and the README.md + README.zh-CN.md catalogs.
The catalog ordering and the research (general/market/tech-selection modes) suffix are human-curated,
so these are maintained by hand — but the validator now enforces them: the presence check fails if a
manifest skill is missing from any of the five routing surfaces, and the dynamic Output scan fails if
a declared **Output: path is missing from docs/skill-outputs.md (no hardcoded dict to update). A rename
is a breaking change (the old invocation name disappears) — bump the version and call it out in the commit.
7. Evaluate — does it actually work?
Three tiers (adapted from established skill-eval practice):
Trigger & routing (free, CI) — does the description fire on the right prompts and not collide? The collision check is the automated subset. For deeper routing eval, write ~3 positive + ~2 negative trigger prompts per skill and check the model routes correctly (defer to a later run, like the Tier 2 framework).
Behavioral (tokens, on demand) — does an agent following the skill satisfy its ## Verify? bash scripts/run-eval.sh --skill <name> runs the skill against real tasks with and without the skill loaded (RED-GREEN baseline) and grades the output. Every skill should have ≥3 cases (2 positive + 1 negative control) in evals/cases/<name>.json before it's trusted. This is the real test; do it before trusting the skill.
If a skill passes structural but fails behavioral, the SKILL.md is wrong even if the validator is green. Fix the skill, not the test.
Verify
scripts/validate-skills.sh green (count, manifest-sync, collision, dead-links, domain-principles, Output-sync)
gen-agents-yaml.py generated the adapter with no drift
Description follows the hybrid format; quoted phrases unique across the pack (grep-confirmed)
At least one behavioral check run against a real task (not just structural green); ≥3 eval cases in evals/cases/<name>.json for skills that gate real work
References
${CLAUDE_PLUGIN_ROOT}/references/engineering-principles.md — discipline for every skill (surface assumptions, verify don't assume, surgical scope).
${CLAUDE_PLUGIN_ROOT}/references/skill-anatomy.md — the anatomy this skill enforces: folder layout, frontmatter, four sections, Output convention, progressive disclosure, description hybrid format, superset-of-official-spec note.
references/eval-tiers.md — the three eval tiers (structural / trigger-routing / behavioral) in detail, with the prompt-template for routing eval.
1---2name: skill-authoring3description: Use when creating, editing, or evaluating a skill in this collection — writes SKILL.md frontmatter and four sections, generates the Codex adapter, runs the validator, and tunes description triggering. The authoring half of using-skills (which routes/consumes). Triggers on "write a skill", "edit skill", "skill eval", "tune triggers", "写技能", "改技能", "技能评估". Not for routing to an existing skill (use using-skills) or building an MCP server (use mcp-builder if added).4---56# Skill Authoring78Create, edit, and evaluate skills in this collection. Every skill conforms to the anatomy in9`references/skill-anatomy.md` and passes `scripts/validate-skills.sh`. This skill is the authoring10half — `using-skills` routes work to existing skills; this one makes new ones or fixes existing ones.1112## When to use1314- Creating a new skill (new SDLC phase gap, repeated task worth a skill)15- Editing an existing skill's frontmatter, steps, or references16- Tuning a skill's description triggers (false positives, false negatives, collision with another skill)17- Evaluating a skill — does it fire when it should, stay distinct from neighbors, change agent behavior?18- Triggers on "write a skill", "edit skill", "skill eval", "tune triggers", "写技能", "改技能", "技能评估"1920**Not for:** routing a task to an existing skill (use `using-skills`); designing an MCP server (out of scope, see official mcp-builder docs); writing project docs like PRD/README (use `spec`/`oss-polish`).2122## Steps2324### 1. Check the anatomy before writing2526Load [${CLAUDE_PLUGIN_ROOT}/references/skill-anatomy.md](${CLAUDE_PLUGIN_ROOT}/references/skill-anatomy.md) — the folder layout, frontmatter rules (name + description + optional disable-model-invocation only), the four body sections (When to use / Steps / Verify / References), the `**Output:**` convention, progressive disclosure (15-150 line SKILL.md, depth in `references/`), and the description hybrid format (`Use when…` + `Triggers on…` + exclusions, ≤1024 chars, no cross-skill phrase collisions).2728### 2. Place the skill and wire the backbone2930- **Phase** — pick the phase by output type + consumer, not by method. A skill producing a design artifact for design consumers goes in 03-design even if it reuses research methods (see `design-research`). Method does not set phase; output and consumers do.31- **Backbone** — every skill links `engineering-principles.md`. PM-side skills also link `product-principles.md`; UIUX skills also link `design-principles.md`. The validator enforces these (see `scripts/validate-skills.sh` `pm_skills`/`uiux_skills` lists — add the new skill there if it's PM or UIUX).32- **Path** — `skills/<phase>/<name>/SKILL.md` (kebab-case name, uppercase SKILL.md).3334### 3. Write the description for routing, not features3536- **Name actions, not tools.** "Use when retrieving real design references" not "Use WebFetch on galleries." The model routes on user intent, not on the tool the skill happens to run.37- **Hybrid format:** `Use when [intent]. [One sentence: what]. Triggers on "phrase1", "phrase2", "中文1" — also when user says "[natural cue]". Not for [exclusion] → use [other-skill].`38- **No collision.** Quoted trigger phrases must be unique across all skills — the validator's collision check flags any shared phrase. Before finalizing, grep the phrase across `skills/`.39- **Keep "Triggers on" literal** — the validator requires it; `gen-agents-yaml.py` cuts the description at that clause for the Codex adapter.4041### 4. Write the four sections4243- **When to use** — 2-4 conditions + a `**Not for:**` boundary naming the adjacent skills (prevents routing collisions). This is load-bearing: every boundary pair in this pack was deliberate.44- **Steps** — numbered, each independently verifiable. Push encyclopedic data into `references/<x>.md` loaded on demand (progressive disclosure). Reference files over 100 lines get a `## Contents` ToC (see the anatomy's progressive-disclosure rule).45- **Verify** — concrete evidence (file exists, no placeholders, count met), not "looks right".46- **References** — `engineering-principles.md` (+ domain backbone) + skill-specific `references/`. Every `references/` link must resolve (dead-link check).47- **Output** — declare `**Output:** <path>` only if the skill produces a doc/artifact. Behavior-only skills (implement, tdd, debugging) omit it. Every declared path must appear in `docs/skill-outputs.md` (validator syncs).4849### 5. Generate the adapter + run the validator5051```bash52python scripts/gen-agents-yaml.py # generate agents/openai.yaml for every skill53bash scripts/validate-skills.sh # schema + manifest-sync + collision + dead-links + domain-principles + Output-sync54```5556Fix every FAIL before considering the skill done. The validator is the gate — a skill that doesn't57pass doesn't ship.5859### 6. Sync the discovery surface6061A new or renamed skill touches: `.claude-plugin/plugin.json` skills[] (the source), `docs/skill-outputs.md`62(if the skill produces a doc), `AGENTS.md` routing table, `skills/meta/using-skills/SKILL.md` phase list,63`skills/meta/using-skills/references/phase-tree.md`, and the `README.md` + `README.zh-CN.md` catalogs.64The catalog ordering and the `research (general/market/tech-selection modes)` suffix are human-curated,65so these are maintained by hand — but the validator now enforces them: the **presence check** fails if a66manifest skill is missing from any of the five routing surfaces, and the **dynamic Output scan** fails if67a declared `**Output:` path is missing from `docs/skill-outputs.md` (no hardcoded dict to update). A rename68is a breaking change (the old invocation name disappears) — bump the version and call it out in the commit.6970### 7. Evaluate — does it actually work?7172Three tiers (adapted from established skill-eval practice):7374- **Structural** (free, CI) — validator green. Already done in Step 5.75- **Trigger & routing** (free, CI) — does the description fire on the right prompts and not collide? The collision check is the automated subset. For deeper routing eval, write ~3 positive + ~2 negative trigger prompts per skill and check the model routes correctly (defer to a later run, like the Tier 2 framework).76- **Behavioral** (tokens, on demand) — does an agent following the skill satisfy its `## Verify`? `bash scripts/run-eval.sh --skill <name>` runs the skill against real tasks with and without the skill loaded (RED-GREEN baseline) and grades the output. Every skill should have ≥3 cases (2 positive + 1 negative control) in `evals/cases/<name>.json` before it's trusted. This is the real test; do it before trusting the skill.7778If a skill passes structural but fails behavioral, the SKILL.md is wrong even if the validator is green. Fix the skill, not the test.7980## Verify8182- [ ] `scripts/validate-skills.sh` green (count, manifest-sync, collision, dead-links, domain-principles, Output-sync)83- [ ] `gen-agents-yaml.py` generated the adapter with no drift84- [ ] Description follows the hybrid format; quoted phrases unique across the pack (grep-confirmed)85- [ ] Four sections present; `**Not for:**` names adjacent skills; `**Output:**` declared iff doc-producing86- [ ] All discovery surface files synced (plugin.json, validator lists, skill-outputs, AGENTS, phase-tree, using-skills, README×2)87- [ ] At least one behavioral check run against a real task (not just structural green); ≥3 eval cases in `evals/cases/<name>.json` for skills that gate real work8889## References9091- [${CLAUDE_PLUGIN_ROOT}/references/engineering-principles.md](${CLAUDE_PLUGIN_ROOT}/references/engineering-principles.md) — discipline for every skill (surface assumptions, verify don't assume, surgical scope).92- [${CLAUDE_PLUGIN_ROOT}/references/skill-anatomy.md](${CLAUDE_PLUGIN_ROOT}/references/skill-anatomy.md) — the anatomy this skill enforces: folder layout, frontmatter, four sections, Output convention, progressive disclosure, description hybrid format, superset-of-official-spec note.93- [references/eval-tiers.md](references/eval-tiers.md) — the three eval tiers (structural / trigger-routing / behavioral) in detail, with the prompt-template for routing eval.
Run npx skillmds@latest add int2t05/skill-authoring in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Use when creating, editing, or evaluating a skill in this collection — writes SKILL.md frontmatter and four sections, generates the Codex adapter, runs the validator, and tunes description triggering. The authoring half of using-skills (which routes/consumes). Triggers on "write a skill", "edit skill", "skill eval", "tune triggers", "写技能", "改技能", "技能评估". Not for routing to an existing skill (use using-skills) or building an MCP server (use mcp-builder if added). It is listed under AI & ML on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
int2t05 (@int2t05) published this skill. Their other Agent Skills are listed on their SkillMD profile.