Skip to main content

skill-frontmatter-doctor

Use when authoring or reviewing a SKILL.md or agent .md and you need to detect and fix the four most common frontmatter defects — echoed or truncated triggers, tools written as a YAML array instead of a comma-separated string, a description outside the 1-1024 character bound, and a missing "Use when..." clause.

Zur Installation springen

Quellinformationen

Repository
Tibsfox/gsd-skill-creator
Letzte Quellaktivität
7. Juli 2026 um 04:20
Erkannte Sprache von SKILL.md
Englisch
Sterne
70
Forks
9

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
skill-frontmatter-doctor
description
Use when authoring or reviewing a SKILL.md or agent .md and you need to detect and fix the four most common frontmatter defects — echoed or truncated triggers, tools written as a YAML array instead of a comma-separated string, a description outside the 1-1024 character bound, and a missing "Use when..." clause.
description-frequency
on-demand
user-invocable
true
version
1.0.0
format
2025-10-02T00:00:00.000Z
triggers
["authoring or reviewing a SKILL.md or agent .md for frontmatter defects","fix malformed skill frontmatter, triggers, tools array, or description length"]
updated
2026-07-06T00:00:00.000Z
status
ACTIVE
# Skill Frontmatter Doctor Detect and fix the four highest-frequency defects in skill and agent frontmatter. This is the corpus-wide #1 defect class, and there is no deterministic guard for it — so treat this checklist as the guard. Run the advisory linter first to get a candidate list: ```bash node tools/skill-frontmatter-doctor.mjs ``` It scans `.claude/skills/**/SKILL.md`, `.claude/agents/*.md`, `project-claude/skills/**/SKILL.md` and `project-claude/agents/*.md`, prints a report, and always exits 0 (advisory, not a gate). Use its output to target the fixes below, then verify by re-reading the file. ## The four defect classes ### 1. Echoed or truncated triggers A `triggers:` entry must be a distinct, usable keyword or phrase a user would actually type — not a copy of the description and not a fragment that was cut mid-thought. Recognize a bad trigger when it: - **Echoes the description** — the trigger string is a substring of the `description` (or vice versa). A trigger that just repeats the description adds no routing signal. - **Ends mid-word** — the last token is a partial word (a truncation artifact, e.g. `"...author a new cartri"`). - **Ends at a conjunction or preposition** — trails off on `and`, `or`, `but`, `with`, `for`, `to`, `of`, `the`, `a`, `an` (e.g. `"scaffold a department and"`). - **Ends at an open parenthesis** — an unbalanced `(` signals a clipped phrase (e.g. `"build a content cartridge ("`). Fix: replace with short, self-contained phrases the user would say. Prefer several concrete invocations over one long echo of the description. Example: ```yaml # BAD — echoes the description, one entry, trails off triggers: - "Use when the user asks to author or scaffold a skill and" # GOOD — distinct, concrete, complete triggers: - "fix malformed skill frontmatter" - "lint skill or agent triggers" - "check description length" ``` ### 2. `tools:` as a YAML array (the #1 mistake) Per `docs/OFFICIAL-FORMAT.md`, the `tools` field MUST be a **comma-separated string**, not a YAML sequence. A YAML array silently fails to parse as an allow-list. ```yaml # BAD — YAML array (will not work) tools: ["Read", "Write", "Bash"] # BAD — YAML block sequence (same problem) tools: - Read - Write - Bash # GOOD — comma-separated string tools: Read, Write, Bash ``` Fix: collapse the array/sequence to a single-line string of tool names separated by `, `. Omit the field entirely to inherit all tools. ### 3. Description outside 1-1024 characters The `description` must be a non-empty string of **1 to 1024 characters** inclusive. Too short gives the router nothing to match; over 1024 is rejected. Fix: - **Empty / missing** → write one sentence that names the trigger situation and the outcome. - **Over 1024** → cut to the essential "when + what". Move detail into the skill body, not the frontmatter. ### 4. Missing a "Use when..." clause A good description tells the router *when* to activate, not just what the skill is. It should contain an explicit activation clause — canonically starting with **"Use when..."** (or an equivalent "Use this skill when...", "Activates when..."). ```yaml # BAD — describes the thing, never says when description: A helper for skill frontmatter. # GOOD — leads with the activation condition description: Use when authoring or reviewing a SKILL.md or agent .md and you need to fix the four common frontmatter defects. ``` Fix: prepend a "Use when <situation>" clause describing the concrete condition that should activate the skill. ## Fix loop 1. Run `node tools/skill-frontmatter-doctor.mjs` and read the report. 2. For each flagged file, open it and apply the matching fix above. 3. Re-read the frontmatter to confirm the change landed and the YAML is still valid. 4. Re-run the linter to confirm the finding is gone. ## Self-check This skill's own frontmatter is a worked example of the target state: the `description` opens with "Use when...", stays within 1-1024 characters, and the `triggers:` entries are distinct, complete phrases that are not substrings of the description. Keep it that way when editing.
Auf GitHub ansehen