DEL B chunk `interview` (+ discover/status/cleanup/help). Fasit written before the run predicted 8 defects and refuted 4 candidates; all 8 confirmed, all 4 refutations held, and three predictions turned out too narrow. - M-BUG-36: `drift --list` reached the command as 0 bytes. drift-cli accepted --output-file but list mode ignored it, and the listing goes to stderr, which the command discards per ux-rules rule 2. Fixing the caller alone would not have helped. - M-BUG-37: feature-gap's "Create backup" step ran fix-cli without --apply. Dry-run is the default, so no backup existed (backupId: null) while the command went on to edit config believing it could roll back. - M-BUG-38: fix-cli told users to recover with scanners/rollback-cli.mjs, which does not exist. Dead reference in the one message read after a bad fix. - M-BUG-21 fourth arm: five templates carried literal [--global]/[--full-machine] inside executable bash blocks. A bracketed placeholder does not start with a dash, so every scanner's arg loop takes it as the scan target. - interview and analyze never said which session they act on; interview could rewind a finished session; cleanup interpolated an unvalidated id into rm -rf (an empty id deletes every session); status advertised a `resume` command that does not exist and documented an `all` argument it never parsed. TDD: 9 red tests first, including a machine sweep for dead /config-audit references and for bracketed flags in bash blocks. Suite 1432 -> 1441/0. Frozen v5.0.0 snapshots untouched; --raw/--json contracts unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UGvA1uUQn2hPBPMaCKK6x3
105 lines
3.7 KiB
Markdown
105 lines
3.7 KiB
Markdown
---
|
|
name: config-audit:analyze
|
|
description: Phase 2 - Generate analysis report with hierarchy map and issue detection
|
|
allowed-tools: Read, Write, Edit, Glob, Grep, Agent
|
|
model: opus
|
|
---
|
|
|
|
# Config-Audit: Analysis (Phase 2)
|
|
|
|
Generate comprehensive analysis report from discovery findings.
|
|
|
|
## Prerequisites
|
|
|
|
- Must have completed Phase 1 (discovery)
|
|
- Findings must exist in `~/.claude/config-audit/sessions/{session-id}/findings/`
|
|
|
|
## Arguments
|
|
|
|
- `$ARGUMENTS` may contain `--raw` to forward to the analyzer agent's instructions; in `--raw` mode the agent renders v5.0.0 verbatim severity prefiks instead of humanized `userActionLanguage` urgency phrasing.
|
|
|
|
## Implementation
|
|
|
|
### Step 1: Resolve the session and verify its state
|
|
|
|
Find the session first — never guess which one `{session-id}` refers to:
|
|
|
|
```
|
|
Glob: ~/.claude/config-audit/sessions/*/state.yaml
|
|
Sort by modification time — the most recently modified session wins
|
|
```
|
|
|
|
Every `{session-id}` below is that session's id. Read its `state.yaml` using the Read tool and verify discovery phase completed. If the Glob returns nothing, or discovery hasn't completed, tell the user: "Discovery hasn't been run yet. Start with `/config-audit discover` or just run `/config-audit` for a full audit."
|
|
|
|
### Step 2: Tell the user what's happening
|
|
|
|
```
|
|
## Analyzing Configuration
|
|
|
|
Reading your scan findings and generating a detailed analysis report...
|
|
This includes hierarchy mapping, conflict detection, and prioritized recommendations.
|
|
```
|
|
|
|
### Step 3: Spawn analyzer agent
|
|
|
|
Tell the user: **"Generating analysis (this takes about 30 seconds)..."**
|
|
|
|
```bash
|
|
RAW_FLAG=""
|
|
if echo "$ARGUMENTS" | grep -q -- "--raw"; then RAW_FLAG="--raw"; fi
|
|
```
|
|
|
|
```
|
|
Agent(subagent_type: "config-audit:analyzer-agent")
|
|
model: sonnet
|
|
prompt: |
|
|
Analyze all findings in: ~/.claude/config-audit/sessions/{session-id}/findings/
|
|
Mode: $RAW_FLAG (empty = humanized; "--raw" = v5.0.0 verbatim severity prefiks)
|
|
Generate comprehensive report covering:
|
|
1. Executive summary with key metrics, grouped by userImpactCategory
|
|
2. Hierarchy map visualization
|
|
3. Conflict detection across config layers
|
|
4. CLAUDE.md quality assessment
|
|
5. Security issues (secrets, permissions)
|
|
6. Top 10 prioritized recommendations — lead each item with the
|
|
finding's userActionLanguage ("Fix this now," "Fix soon,"
|
|
"Fix when convenient," "Optional cleanup," "FYI") rather than
|
|
raw severity. The humanizer already replaced jargon-heavy
|
|
title/description/recommendation strings with plain-language
|
|
equivalents — render them verbatim, do not paraphrase.
|
|
Return the complete report as your final message. Do not write it
|
|
to a file — the orchestrating command saves it to the session directory.
|
|
```
|
|
|
|
### Step 4: Save the report
|
|
|
|
The agent returns the complete report as its final message — the Claude Code
|
|
subagent harness instructs agents not to write report/analysis files themselves,
|
|
so the command must persist it. Write the returned report verbatim (no edits,
|
|
no truncation) to `~/.claude/config-audit/sessions/{session-id}/analysis-report.md`
|
|
using the Write tool. Downstream phases (`plan`, `interview`, `status`) read this file.
|
|
|
|
### Step 5: Present summary
|
|
|
|
After saving the report, show a brief summary:
|
|
|
|
```markdown
|
|
### Analysis Complete
|
|
|
|
Report generated with:
|
|
- {N} conflicts detected
|
|
- {N} optimization opportunities
|
|
- {N} security notes
|
|
- Top recommendation: {first recommendation}
|
|
|
|
Full report: `~/.claude/config-audit/sessions/{session-id}/analysis-report.md`
|
|
|
|
### What's next
|
|
|
|
- **`/config-audit plan`** — Turn findings into a prioritized action plan
|
|
- **`/config-audit fix`** — Auto-fix deterministic issues right away
|
|
```
|
|
|
|
### Step 6: Update state
|
|
|
|
Update `state.yaml` with `current_phase: "analyze"`, `next_phase: "plan"`.
|