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.

跳到安装

来源信息

仓库
Tibsfox/gsd-skill-creator
最近来源活动
2026年7月7日 04:20
检测到的 SKILL.md 语言
英语
星标
70
分支
9

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
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.
在 GitHub 查看