toolkit-awarenesslisted
Install: claude install-skill grimaldost/craft-collection
# Toolkit Awareness
Two jobs: get a **live** picture of what's installed, and reference it well in
prompts and specs. The inventory is generated on demand — nothing
hand-maintained to drift.
## Get the live inventory
Run the scan script; it enumerates skills, commands, agents, and hooks from
user-level (`~/.claude`) and project-level (`<repo>/.claude`) configuration:
```bash
# A skill runs with cwd = the user's project, not the skill dir — use the absolute path.
uv run --no-project -- python "${CLAUDE_PLUGIN_ROOT}/skills/toolkit-awareness/scripts/scan_toolkit.py" # grouped table
uv run --no-project -- python "${CLAUDE_PLUGIN_ROOT}/skills/toolkit-awareness/scripts/scan_toolkit.py" --json # machine-readable
```
The scan also lists **plugin-provided** components via `claude plugin list`
(they live in the plugin cache, not `.claude/`). Without the CLI (another
harness), it still reports the `.claude/` tree and flags plugins as not
enumerated — fall back to a repo's generated `AGENTS.md` index when one
exists, else a directory scan of its `plugins/*/skills/`.
Prefer the scan over memory: a remembered list is wrong the moment something
changes.
`--check-serving <transcript_path>` diffs the hook commands recorded in a
session transcript against every installed `hooks.json` and warns on a mismatch
— the signature of an app-level **frozen plugin snapshot**, where every disk
layer reads "current" but the running session is weeks behind; verify headless
(`claude -p`).