config-audit/commands/analyze.md
Kjell Tore Guttormsen b85919f2ec fix(commands): close the promises the command templates could not keep
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
2026-07-31 21:27:07 +02:00

3.7 KiB

name description allowed-tools model
config-audit:analyze Phase 2 - Generate analysis report with hierarchy map and issue detection Read, Write, Edit, Glob, Grep, Agent 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)..."

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:

### 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".