Skill Doctor
Use ai-skillet's canonical validator for the supported extended skill dialect to audit local catalogs and installed
skill roots, then apply only narrow metadata repairs when requested.
Arguments
--root PATH: Scan this catalog or installed skill root. Repeatable. Default: current working directory.
--format text|json: Select report format. Default: text.
--fix-safe: Create missing agents/openai.yaml files or update mismatched policy.allow_implicit_invocation.
--dependencies-only: Report only malformed or unresolved skill-dependencies declarations. Do not combine with
--fix-safe.
Workflow
Require ai-skillet 0.1.0 or newer on PATH, then run:
ai-skillet doctor
Append each parsed invocation option and its value as separate arguments, preserving quoted values. For example,
--root '/path with spaces' --format json adds two options; use the argument-free form for the defaults.
Use JSON when another command or agent will consume the result:
ai-skillet doctor --root . --format json
Run safe fixes only after reading the findings:
ai-skillet doctor --root . --fix-safe
Re-run without --fix-safe after any manual edits.
For a dependency-only catalog gate, run:
ai-skillet doctor --root . --dependencies-only
Findings
- Treat
error findings as catalog defects that should block publishing or syncing.
- Treat
warning findings as review-required catalog hygiene issues.
- JSON output uses schema version 1 with structured roots, counts, findings, and safe-fix records. Each finding carries
its code, severity, path, line when known, fixability, and message.
- Frontmatter validation accepts the portable Agent Skills fields, Claude Code extensions, and repository extensions as
one supported union. It reports unknown top-level fields; invalid field, item, and metadata-value types; invalid
enumerated values; and
agent or background used without context: fork.
- Explicit
disable-model-invocation: false and user-invocable: true produce redundant-default warnings. Omit those
fields to preserve the same effective defaults.
- Prompt-hygiene warnings are advisory and never auto-fix: stale model pins, oversized unconditional Markdown
references, conflicting requirement/prohibition language, and missing completion evidence.
- Coordination-exemption errors are report-only:
coordination: exempt must be paired with the catalog's canonical
coordination-exempt sentence in ordinary Markdown prose. Inline code, fenced or indented code, blockquotes, and
headed Example or Examples sections do not count as declarations. Neither side is repaired by --fix-safe.
- Dependency errors reject non-array, empty, non-string, duplicate, malformed, incorrectly ordered, self-referential, or
unresolved local declarations. External
ORG/REPO#SKILL identifiers are shape-checked without network access.
- Metadata, OpenAI policy, coordination, resource, README, prompt-hygiene, and CLI-version checks remain available
outside
--dependencies-only.
- Use
path and line from JSON output for precise follow-up edits.
Safe Fix Policy
--fix-safe may only:
- Create a missing
agents/openai.yaml with policy.allow_implicit_invocation derived from SKILL.md.
- Update an existing
allow_implicit_invocation boolean when it disagrees with disable-model-invocation.
Each permitted repair is staged and atomically renamed into place, preserving the target's permissions for updates. A
failed safe fix exits 3 without partially rewriting its target.
--fix-safe does not rewrite frontmatter, descriptions, README rows, references/version.txt, or relative links.
Unknown fields, invalid types or values, cross-field errors, redundant defaults, and coordination declarations are
report-only. Make those edits manually and verify with a fresh audit.
Related Skills
skill-doctor only audits the roots you pass; it does not search for them. To locate skill installs, duplicates, and
cross-references across the machine, use ai-skillet map.
Exit Codes
0: Clean, or all requested safe fixes succeeded and no findings remain.
1: The audit completed and findings remain; report them as review work, not as an operational crash.
2: Invalid arguments or unreadable environment.
3: A requested safe fix failed.
User-Facing Output
Keep --format json byte-valid and undecorated. For human output, lead with ### 🩺 Skill Doctor — ✅ clean,
### 🩺 Skill Doctor — ⚠️ review required, or ### 🩺 Skill Doctor — ⛔ blocked for exit 2/3, then show roots and
error/warning/fix counts in a compact table. List safe fixes separately from remaining findings. For review-required or
blocked outcomes, end with the smallest manual next action; for a clean result, stop after the summary. Keep paths, line
numbers, codes, raw findings, commands, and diagnostics exact.
1---
2argument-hint: "[--root PATH ...] [--format text|json] [--fix-safe] [--dependencies-only]"
3compatibility: Requires ai-skillet 0.1.0+.
4name: skill-doctor
5description:
6 "Use to audit Agent Skills catalogs or installed skill roots for metadata and doc-link issues; optionally apply
7 conservative --fix-safe repairs."
8---
9
10# Skill Doctor
11
12Use ai-skillet's canonical validator for the supported extended skill dialect to audit local catalogs and installed
13skill roots, then apply only narrow metadata repairs when requested.
14
15## Arguments
16
17- `--root PATH`: Scan this catalog or installed skill root. Repeatable. Default: current working directory.
18- `--format text|json`: Select report format. Default: `text`.
19- `--fix-safe`: Create missing `agents/openai.yaml` files or update mismatched `policy.allow_implicit_invocation`.
20- `--dependencies-only`: Report only malformed or unresolved `skill-dependencies` declarations. Do not combine with
21 `--fix-safe`.
22
23## Workflow
24
251. Require `ai-skillet` 0.1.0 or newer on `PATH`, then run:
26
27 ```sh
28 ai-skillet doctor
29 ```
30
31 Append each parsed invocation option and its value as separate arguments, preserving quoted values. For example,
32 `--root '/path with spaces' --format json` adds two options; use the argument-free form for the defaults.
33
342. Use JSON when another command or agent will consume the result:
35
36 ```sh
37 ai-skillet doctor --root . --format json
38 ```
39
403. Run safe fixes only after reading the findings:
41
42 ```sh
43 ai-skillet doctor --root . --fix-safe
44 ```
45
464. Re-run without `--fix-safe` after any manual edits.
47
48For a dependency-only catalog gate, run:
49
50```sh
51ai-skillet doctor --root . --dependencies-only
52```
53
54## Findings
55
56- Treat `error` findings as catalog defects that should block publishing or syncing.
57- Treat `warning` findings as review-required catalog hygiene issues.
58- JSON output uses schema version 1 with structured roots, counts, findings, and safe-fix records. Each finding carries
59 its code, severity, path, line when known, fixability, and message.
60- Frontmatter validation accepts the portable Agent Skills fields, Claude Code extensions, and repository extensions as
61 one supported union. It reports unknown top-level fields; invalid field, item, and metadata-value types; invalid
62 enumerated values; and `agent` or `background` used without `context: fork`.
63- Explicit `disable-model-invocation: false` and `user-invocable: true` produce redundant-default warnings. Omit those
64 fields to preserve the same effective defaults.
65- Prompt-hygiene warnings are advisory and never auto-fix: stale model pins, oversized unconditional Markdown
66 references, conflicting requirement/prohibition language, and missing completion evidence.
67- Coordination-exemption errors are report-only: `coordination: exempt` must be paired with the catalog's canonical
68 `coordination-exempt` sentence in ordinary Markdown prose. Inline code, fenced or indented code, blockquotes, and
69 headed `Example` or `Examples` sections do not count as declarations. Neither side is repaired by `--fix-safe`.
70- Dependency errors reject non-array, empty, non-string, duplicate, malformed, incorrectly ordered, self-referential, or
71 unresolved local declarations. External `ORG/REPO#SKILL` identifiers are shape-checked without network access.
72- Metadata, OpenAI policy, coordination, resource, README, prompt-hygiene, and CLI-version checks remain available
73 outside `--dependencies-only`.
74- Use `path` and `line` from JSON output for precise follow-up edits.
75
76## Safe Fix Policy
77
78`--fix-safe` may only:
79
80- Create a missing `agents/openai.yaml` with `policy.allow_implicit_invocation` derived from `SKILL.md`.
81- Update an existing `allow_implicit_invocation` boolean when it disagrees with `disable-model-invocation`.
82
83Each permitted repair is staged and atomically renamed into place, preserving the target's permissions for updates. A
84failed safe fix exits 3 without partially rewriting its target.
85
86`--fix-safe` does not rewrite frontmatter, descriptions, README rows, `references/version.txt`, or relative links.
87Unknown fields, invalid types or values, cross-field errors, redundant defaults, and coordination declarations are
88report-only. Make those edits manually and verify with a fresh audit.
89
90## Related Skills
91
92- `skill-doctor` only audits the roots you pass; it does not search for them. To locate skill installs, duplicates, and
93 cross-references across the machine, use `ai-skillet map`.
94
95## Exit Codes
96
97- `0`: Clean, or all requested safe fixes succeeded and no findings remain.
98- `1`: The audit completed and findings remain; report them as review work, not as an operational crash.
99- `2`: Invalid arguments or unreadable environment.
100- `3`: A requested safe fix failed.
101
102## User-Facing Output
103
104Keep `--format json` byte-valid and undecorated. For human output, lead with `### 🩺 Skill Doctor — ✅ clean`,
105`### 🩺 Skill Doctor — ⚠️ review required`, or `### 🩺 Skill Doctor — ⛔ blocked` for exit 2/3, then show roots and
106error/warning/fix counts in a compact table. List safe fixes separately from remaining findings. For review-required or
107blocked outcomes, end with the smallest manual next action; for a clean result, stop after the summary. Keep paths, line
108numbers, codes, raw findings, commands, and diagnostics exact.