Skill Inventory
Invoke as $skill-inventory.
Use this skill from a control repository that manages downstream repositories and needs to know whether copied local skill roots are current, stale, pinned, unmanaged, or missing their canonical source.
V1 Contract
Report-only — do not modify tracked files.
- Do not run
scripts/pack.sh refresh.
- Do not run delete, cleanup, remove, prune, or reinstall commands.
- Do not edit
.claude/skills/**, .codex/skills/**, .agents/project.json, or any file inside downstream repositories.
- Do not add an apply route in v1. Suggest exact follow-up commands only after the inventory report shows what is needed.
- Only write control-repo artifacts:
tasks/skill-inventory.md, alignment/skill-inventory-{topic}.html, task notes, prompt history, and normal shipping docs.
Process
Read repo instructions first: AGENTS.md, CLAUDE.md, or the local equivalent.
Capture the visible $skill-inventory invocation under prompts/skill-inventory/ before substantive work, following the repo prompt-history convention.
Resolve downstream repos from a manifest before scanning. Default manifest search order:
tasks/downstream-repos.md
tasks/fleet-queue.md
tasks/repo-seeding.md
Require a Markdown table column named Local Path or Path for local checkout paths. Remote-only owner/repo cells are not scannable; ask for a local path instead of guessing.
Run the bundled scanner from this skill directory. Default output is the durable Markdown report:
bash scripts/skill-inventory.sh --out tasks/skill-inventory.md --format markdown
Useful variants:
bash scripts/skill-inventory.sh --manifest tasks/downstream-repos.md --out tasks/skill-inventory.md
bash scripts/skill-inventory.sh --repo ../downstream-app --out -
bash scripts/skill-inventory.sh --format json --out -
The scanner sources the control repo's canonical scripts/skill-links.sh and uses skill_install_status for status classification. Do not reimplement the drift semantics manually.
Review the report and build alignment/skill-inventory-{topic}.html using ALIGNMENT-PAGE.md when producing a durable report. The page must render the report, evidence, assumptions, action hints, and approval gates without context loss.
End with:
- Next work: the most specific inventory follow-up, usually adding missing local paths or reviewing stale rows.
- Recommended next command: usually
$skill-inventory --manifest <path> to rerun after manifest fixes, or $project-fleet --status when no inventory remediation is needed.
Status Categories
Use the exact categories emitted by skill_install_status:
ok: managed copy matches the canonical source content.
stale: canonical source content changed since the managed copy was installed.
unknown: marker exists but lacks source_sha; refresh is needed later to enable deterministic tracking.
missing-source: marker points to a source directory that no longer exists.
pinned: symlinked install, usually to archive/<version>, intentionally frozen.
not-managed: skill directory is not an agentic-skills managed install.
Report Expectations
tasks/skill-inventory.md should include:
- control repo, manifest path, generated timestamp, and report-only notice;
- repo-level totals across Claude and Codex skill roots;
- per-agent rows for
.claude/skills/* and .codex/skills/*;
- installed and canonical version fields when available;
- source path evidence for managed or pinned installs;
- action hints for
stale, unknown, and missing-source, including exact suggested follow-ups such as scripts/pack.sh refresh;
- a clear statement that the scan did not run refresh, delete, cleanup, install, or other mutation commands.
If no local paths are found, the scanner must fail non-destructively and print a manifest template with a Local Path column.
Alignment Page
Follow the shared alignment-page convention via the packaged convention resolver; output path is alignment/skill-inventory-{topic}.html. By default, report results inline and write only this skill's normal durable artifacts; create an alignment page only when explicitly requested or when a concrete clarification/review need cannot be handled cleanly inline.
Default Shipping Contract
Follow the shared shipping contract convention in CLAUDE.md.
1---2name: skill-inventory3description: Inventory downstream repository Claude and Codex skill installs from a control-repo manifest, classify managed local skill-copy drift against canonical agentic-skills sources, and produce report-only Markdown or JSON guidance without refreshing, deleting, or mutating downstream repos.4---5
6# Skill Inventory
7
8Invoke as `$skill-inventory`.
9
10Use this skill from a control repository that manages downstream repositories and needs to know whether copied local skill roots are current, stale, pinned, unmanaged, or missing their canonical source.
11
12## V1 Contract
13
14Report-only — do not modify tracked files.
15
16- Do not run `scripts/pack.sh refresh`.
17- Do not run delete, cleanup, remove, prune, or reinstall commands.
18- Do not edit `.claude/skills/**`, `.codex/skills/**`, `.agents/project.json`, or any file inside downstream repositories.
19- Do not add an apply route in v1. Suggest exact follow-up commands only after the inventory report shows what is needed.
20- Only write control-repo artifacts: `tasks/skill-inventory.md`, `alignment/skill-inventory-{topic}.html`, task notes, prompt history, and normal shipping docs.
21
22## Process
23
241. Read repo instructions first: `AGENTS.md`, `CLAUDE.md`, or the local equivalent.
252. Capture the visible `$skill-inventory` invocation under `prompts/skill-inventory/` before substantive work, following the repo prompt-history convention.
263. Resolve downstream repos from a manifest before scanning. Default manifest search order:
27 - `tasks/downstream-repos.md`
28 - `tasks/fleet-queue.md`
29 - `tasks/repo-seeding.md`
304. Require a Markdown table column named `Local Path` or `Path` for local checkout paths. Remote-only `owner/repo` cells are not scannable; ask for a local path instead of guessing.
315. Run the bundled scanner from this skill directory. Default output is the durable Markdown report:
32
33 ```bash
34 bash scripts/skill-inventory.sh --out tasks/skill-inventory.md --format markdown
35 ```
36
37 Useful variants:
38
39 ```bash
40 bash scripts/skill-inventory.sh --manifest tasks/downstream-repos.md --out tasks/skill-inventory.md
41 bash scripts/skill-inventory.sh --repo ../downstream-app --out -
42 bash scripts/skill-inventory.sh --format json --out -
43 ```
44
456. The scanner sources the control repo's canonical `scripts/skill-links.sh` and uses `skill_install_status` for status classification. Do not reimplement the drift semantics manually.
467. Review the report and build `alignment/skill-inventory-{topic}.html` using `ALIGNMENT-PAGE.md` when producing a durable report. The page must render the report, evidence, assumptions, action hints, and approval gates without context loss.
478. End with:
48 - **Next work:** the most specific inventory follow-up, usually adding missing local paths or reviewing stale rows.
49 - **Recommended next command:** usually `$skill-inventory --manifest <path>` to rerun after manifest fixes, or `$project-fleet --status` when no inventory remediation is needed.
50
51## Status Categories
52
53Use the exact categories emitted by `skill_install_status`:
54
55- `ok`: managed copy matches the canonical source content.
56- `stale`: canonical source content changed since the managed copy was installed.
57- `unknown`: marker exists but lacks `source_sha`; refresh is needed later to enable deterministic tracking.
58- `missing-source`: marker points to a source directory that no longer exists.
59- `pinned`: symlinked install, usually to `archive/<version>`, intentionally frozen.
60- `not-managed`: skill directory is not an agentic-skills managed install.
61
62## Report Expectations
63
64`tasks/skill-inventory.md` should include:
65
66- control repo, manifest path, generated timestamp, and report-only notice;
67- repo-level totals across Claude and Codex skill roots;
68- per-agent rows for `.claude/skills/*` and `.codex/skills/*`;
69- installed and canonical version fields when available;
70- source path evidence for managed or pinned installs;
71- action hints for `stale`, `unknown`, and `missing-source`, including exact suggested follow-ups such as `scripts/pack.sh refresh`;
72- a clear statement that the scan did not run refresh, delete, cleanup, install, or other mutation commands.
73
74If no local paths are found, the scanner must fail non-destructively and print a manifest template with a `Local Path` column.
75
76## Alignment Page
77
78Follow the shared alignment-page convention via the packaged convention resolver; output path is `alignment/skill-inventory-{topic}.html`. By default, report results inline and write only this skill's normal durable artifacts; create an alignment page only when explicitly requested or when a concrete clarification/review need cannot be handled cleanly inline.
79
80## Default Shipping Contract
81
82Follow the shared shipping contract convention in CLAUDE.md.
83