config-audit — Claude Code skill: audit your config
Walks your ~/.claude setup and reports what has piled up: skills, subagents, hooks, duplicates and risky shell commands.
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill config-audit -a claude-codeWhat config-audit does
The skill queries the Agent Monitor Config Explorer API at http://localhost:4820 and turns the answers into a report. It pulls from /api/cc-config/overview, /skills, /agents, /commands, /hooks and /settings, so there is no manual counting.
A one-line verdict opens the report: CLEAN, SPRAWL DETECTED or RISKY HOOKS. Then comes a table of every surface split into user and project counts, a list of name collisions where a project entry shadows a user one, and groups of entries whose descriptions cover the same job. Hooks get their own table. Anything with type: "command" is flagged, and entries calling curl, wget, http or nc, or running without a timeout, are escalated with the raw command printed for review.
The dashboard has to be up already. When http://localhost:4820 does not answer, the skill says so and points you at npm start from the repo root. Cleanup advice covers mutable surfaces only — skills, agents, commands, output-styles and CLAUDE.md. Plugins, MCP servers and settings.json are read-only here because the running CLI writes to them, so the report names the file to edit by hand instead.
What it helps with
- count skills and subagents per user and project scope
- spot a project skill that shadows a user-level one of the same name
- find hooks that reach the network through
curlorwget - tell which surfaces the API can clean up and which need a manual file edit
- get a one-line verdict on the whole configuration
Example prompts for the agent
- Run a full audit of my Claude configuration
- Audit hooks only — show me which ones run shell commands without a timeout
- Audit the skills for the project at
?cwd=/home/me/work/api
How to install config-audit
1Skills CLI (Vercel)
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill config-audit -a claude-code2Manually: put the files in place
~/.claude/skills/config-audit/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/config-audit/
1Skills CLI (Vercel)
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill config-audit -a codex2Manually: put the files in place
.agents/skills/config-audit/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill config-audit -a cursor2Manually: put the files in place
.cursor/skills/config-audit/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install hoangsonww/Claude-Code-Agent-Monitor config-audit2Manually: put the files in place
.github/skills/config-audit/SKILL.md1Skills CLI (Vercel)
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill config-audit -a gemini-cli2Platform CLI
gemini skills install https://github.com/hoangsonww/Claude-Code-Agent-Monitor --path plugins/ccam-config/skills/config-auditManually: put the files in place
.devin/skills/config-audit/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill config-audit -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about config-audit
How do I install config-audit in Claude Code?
Run npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill config-audit -a claude-code. The skill lands at ~/.claude/skills/config-audit/SKILL.md.
What does config-audit do?
It reads your configuration through the Config Explorer API and reports per-surface counts, duplicate skills and subagents, hooks that run shell commands, and which surfaces are mutable.
Does it need the dashboard running?
Yes, it talks to http://localhost:4820. If nothing answers there, start the server with npm start from the repo root.
Source text
SKILL.md · MIT
---
name: config-audit
description: >
Run a full audit of the user's Claude Code configuration via the Agent
Monitor Config Explorer API: counts per surface (user vs project),
duplicate or overlapping skills and subagents, hooks that run shell
commands, and which surfaces are read-only vs mutable. Reads
/api/cc-config/overview, /skills, /agents, /commands, /hooks, and /settings.
Use when reviewing your Claude Code setup for sprawl, duplication, or risk.
---
# Config Audit
Produce a complete, data-backed audit of how the user's `~/.claude`
configuration has grown, what overlaps, and what is risky — all read through
the Agent Monitor dashboard at `http://localhost:4820`.
## Input
The user provides: **$ARGUMENTS**
This may be:
- empty or "full" — audit every surface (default).
- "skills" / "agents" / "commands" / "hooks" / "settings" — scope the audit to
one surface only.
- a project path passed as `?cwd=` — to audit a project other than the
dashboard server's own working directory.
## Data Sources
| Endpoint | Returns |
|----------|---------|
| `GET /api/cc-config/overview` | `roots` + `counts` for every surface, split `{user,project}` where applicable (skills, agents, commands, outputStyles, plugins, mcpServers, hooks, memory, settingsFiles) |
| `GET /api/cc-config/skills` | `{ items:[{ scope, name, file, size, mtime, frontmatter, preview }] }` |
| `GET /api/cc-config/agents` | `{ items:[{ scope, name, file, size, mtime, frontmatter, preview }] }` |
| `GET /api/cc-config/commands` | `{ items:[{ scope, name, file, size, mtime, frontmatter, preview }] }` |
| `GET /api/cc-config/hooks` | `{ items:[{ scope, file, exists, hooks:{ <Event>:[{matcher,type,command,timeout}] } }] }` |
| `GET /api/cc-config/settings` | `{ items:[{ scope, file, exists, data(redacted), raw_size }] }` |
## Report Sections
### 1. Surface inventory (user vs project)
From `/overview` `counts`, print a table: one row per surface with `user`,
`project`, and `total` columns. Cover skills, agents, commands, output-styles,
plugins (with enabled/disabled), marketplaces, MCP servers, hooks
(user/project/project-local), memory, and settings files. Echo the resolved
`roots` so the user knows which `claudeHome`/project was inspected.
### 2. Duplicate & overlapping skills + agents
Fetch `/skills` and `/agents`. Detect:
- **Name collisions across scope** — same `name` at both user and project
scope (project shadows user). List both `file` paths.
- **Near-duplicates** — entries whose `frontmatter.description` / `preview`
describe the same job. Group them and recommend keeping one.
### 3. Hooks that run shell commands
Flatten `/hooks` to `(scope, file, Event, matcher, type, command, timeout)`.
Flag every `type: "command"` entry. Within those, escalate ones that contain
network egress (`curl`, `wget`, `http`, `nc`) or run unbounded with no
`timeout`. Print the raw `command` so the user can review it.
### 4. Read-only vs mutable surfaces
State which surfaces the Config Explorer can mutate (skills, agents, commands,
output-styles, user/project CLAUDE.md, and per-project `auto-memory` files via
`PUT`/`DELETE /api/cc-config/file`) versus those that are read-only by design
(plugins, MCP servers, settings.json and its in-file hooks — written
concurrently by the running CLI). Direct cleanup suggestions only at mutable
surfaces; for read-only ones, name the source `file` to edit by hand.
## Output
- A one-line verdict first: CLEAN / SPRAWL DETECTED / RISKY HOOKS.
- Section 1 as a Markdown table (`Surface | User | Project | Total`).
- Section 2 as grouped lists with `file` paths.
- Section 3 as a table (`Scope | Event | Matcher | Command | Risk`).
- Sizes in KB; any cost in USD to 4 decimals; use ▲/▼ for scope deltas.
- Cite only fields the API returned — never fabricate counts or commands.
- If the dashboard is unreachable at `http://localhost:4820`, say so and tell
the user to start it with `npm start` from the repo root.
© hoangsonww · MIT · hoangsonww/Claude-Code-Agent-Monitor