refactor!: rebrand CCAM to AgentHub
Clean break, no compatibility alias. Renames the product name, the CLI binary (`ccam` -> `agenthub`), the env var prefix (`CCAM_` -> `AGENTHUB_`), the Prometheus metric namespace (`ccam_*` -> `agenthub_*`), the tmux session prefix (`ccam-lane-<id>` -> `agenthub-lane-<id>`), the per-repo runtime profile directory (`.ccam/profile` -> `.agenthub/profile`), the lanes state root (`~/.claude/ccam-lanes` -> `~/.claude/agenthub-lanes`), the bundled plugins (`plugins/ccam*` -> `plugins/agenthub*`) and their slash commands (`/ccam-doctor` -> `/agenthub-doctor`, `/ccam:*` -> `/agenthub:*`). Because there is no alias, an existing install has to be updated by hand: rename its `.ccam/profile` directory and any `CCAM_*` variables, and reinstall the plugin under its new name. Two other name families are deliberately left alone here, since they are not just strings: the `Claude-Code-Monitor` repository/marketplace name, and the `agent-dashboard` npm package plus its `~/.claude/agent-dashboard` runtime directory, which holds the live database and needs a migration rather than a rename. Verified: server 1406/1406, client 459/459, `grep -i ccam` clean across tracked files, `openapi.yaml` regenerated (95 paths, unchanged count).
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
---
|
||||
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.
|
||||
Reference in New Issue
Block a user