feat(humanizer): update audit/analysis command templates group B [skip-docs]
Wave 5 Step 14. Threads the humanizer vocabulary through the remaining
six audit/analysis command templates and adds a shape test that locks
the structure plus a pair of anchor must-contains.
- commands/drift.md: --raw pass-through; new/resolved/changed-finding
rendering instructions reference userActionLanguage and
relevanceContext rather than raw severity.
- commands/plugin-health.md: --raw pass-through; finding rendering
groups by userImpactCategory and leads with userActionLanguage.
- commands/config-audit.md (router): replaces the 25-line A/B/C/D/F
prose ladder with a humanized stderr-scorecard reference + three
userActionLanguage-grouped "What you can do next" branches; --raw
threaded through both scan-orchestrator and posture invocations.
- commands/discover.md: --raw pass-through; finding-summary rendering
groups by userImpactCategory.
- commands/analyze.md: --raw pass-through; analyzer-agent prompt now
instructs grouping by userImpactCategory and leading with
userActionLanguage; humanized title/description/recommendation
strings rendered verbatim, no paraphrasing.
- commands/status.md: phase-label humanization table — current_phase
machine field name preserved, user-facing labels translated
("Looking at your config files", "Working out what to recommend",
"Asking what you'd like to focus on", "Putting together your action
plan", "Making the changes", "Double-checking everything worked");
--raw preserves verbatim machine field values.
tests/commands/group-b-shape.test.mjs (new, +8 tests, 772 → 780):
- structural: bash block + Read tool + --raw/$ARGUMENTS plumbing
across all 6 files
- findings-renderers: humanized field reference + no grade-prose
- anchor must-contains per plan: config-audit.md ⊇
userImpactCategory|userActionLanguage; drift.md ⊇ --raw|humanized
- status.md: current_phase preserved + ≥3 humanized phase labels
This commit is contained in:
parent
79b6e29073
commit
6f38a6340e
7 changed files with 234 additions and 49 deletions
|
|
@ -82,10 +82,12 @@ This is a silent infrastructure step — do NOT show output to the user.
|
|||
|
||||
Tell the user: **"Running 12 configuration scanners..."**
|
||||
|
||||
Run both scanners and posture in a single Bash command:
|
||||
Run both scanners and posture in a single Bash command. Default mode runs the humanizer, so each finding in `scan-results.json` carries `userImpactCategory`, `userActionLanguage`, and `relevanceContext` alongside the v5.0.0 fields. If the user passed `--raw`, thread it through to both CLIs to get v5.0.0 verbatim output.
|
||||
|
||||
```bash
|
||||
node ${CLAUDE_PLUGIN_ROOT}/scanners/scan-orchestrator.mjs <target-path> --output-file ~/.claude/config-audit/sessions/{session-id}/findings/scan-results.json [--full-machine] [--global] 2>/dev/null; node ${CLAUDE_PLUGIN_ROOT}/scanners/posture.mjs <target-path> --json --output-file ~/.claude/config-audit/sessions/{session-id}/posture.json [--full-machine] [--global] 2>/dev/null; echo $?
|
||||
RAW_FLAG=""
|
||||
if echo "$ARGUMENTS" | grep -q -- "--raw"; then RAW_FLAG="--raw"; fi
|
||||
node ${CLAUDE_PLUGIN_ROOT}/scanners/scan-orchestrator.mjs <target-path> --output-file ~/.claude/config-audit/sessions/{session-id}/findings/scan-results.json [--full-machine] [--global] $RAW_FLAG 2>/dev/null; node ${CLAUDE_PLUGIN_ROOT}/scanners/posture.mjs <target-path> --output-file ~/.claude/config-audit/sessions/{session-id}/posture.json [--full-machine] [--global] $RAW_FLAG 2>/dev/null; echo $?
|
||||
```
|
||||
|
||||
Use `--full-machine` for `full` scope, `--global` for `home` scope. For `repo` and `current`, pass the resolved path directly.
|
||||
|
|
@ -134,19 +136,14 @@ Write to: `~/.claude/config-audit/sessions/{session-id}/state.yaml`
|
|||
|
||||
### Step 6: Display results
|
||||
|
||||
Present results using this template. Replace all placeholders with actual values. **Adapt the summary sentence based on grade.**
|
||||
Present results using this template. The humanizer has already replaced jargon-heavy `title`/`description`/`recommendation` strings on every finding with plain-language equivalents — render them verbatim. Lead urgency phrasing with `userActionLanguage` ("Fix this now", "Fix soon", "Fix when convenient", "Optional cleanup", "FYI") and group "What you can do next" suggestions by that field. Do not re-derive an A/B/C/D/F-to-prose ladder here; the humanized stderr scorecard headline already supplies the grade context, and `userActionLanguage` supplies finding-level urgency.
|
||||
|
||||
```markdown
|
||||
### Results
|
||||
|
||||
**Health: {overallGrade}** | {qualityAreaCount} areas scanned
|
||||
|
||||
{grade-based summary — pick ONE:}
|
||||
- Grade A: "Excellent — your configuration is correct and well-maintained."
|
||||
- Grade B: "Strong — your configuration is solid with minor improvements available."
|
||||
- Grade C: "Decent — your configuration works but has some issues worth addressing."
|
||||
- Grade D: "Needs work — several configuration issues could affect your Claude Code experience."
|
||||
- Grade F: "Significant issues found — addressing these will meaningfully improve your workflow."
|
||||
{Use the headline line from the humanized stderr scorecard — it carries grade-context prose already. Avoid hardcoding a separate per-grade prose ladder.}
|
||||
|
||||
Scanned {files_scanned} files | {real_finding_count} findings ({severity_breakdown})
|
||||
{If test_fixture_count > 0: "({test_fixture_count} additional findings in test fixtures were excluded.)"}
|
||||
|
|
@ -164,26 +161,25 @@ Scanned {files_scanned} files | {real_finding_count} findings ({severity_breakdo
|
|||
| Imports | {grade} | {count} | {status} |
|
||||
| Conflicts | {grade} | {count} | {status} |
|
||||
|
||||
{For the status column, use plain language like: "Well structured", "2 minor issues", "Missing trust levels", "No issues", etc.}
|
||||
{For the status column, use the humanized title from the most-severe finding in that area, or a one-phrase plain-language summary. Findings carry userImpactCategory which already groups by impact bucket — use that vocabulary, not raw scanner names.}
|
||||
|
||||
{If opportunityCount > 0:}
|
||||
{opportunityCount} feature opportunities available — run `/config-audit feature-gap` for context-aware recommendations.
|
||||
|
||||
### What you can do next
|
||||
|
||||
{Include only relevant options based on findings. Explain each one:}
|
||||
Group suggestions by `userActionLanguage` from the humanized findings:
|
||||
|
||||
{If fixable_count > 0:}
|
||||
- **`/config-audit fix`** — Automatically fix {fixable_count} issues. Creates a backup first so you can roll back with one command.
|
||||
{If any finding has userActionLanguage "Fix this now" or "Fix soon":}
|
||||
- **`/config-audit fix`** — auto-fix what's possible (backup created first, one-command rollback). The remaining items go into a prioritized plan.
|
||||
- **`/config-audit plan`** — produce a prioritized action plan for the items that need manual attention.
|
||||
|
||||
{If real findings > fixable_count:}
|
||||
- **`/config-audit plan`** — Get a prioritized action plan for the {remaining} issues that need manual attention.
|
||||
{If most findings are "Fix when convenient" or "Optional cleanup":}
|
||||
- **`/config-audit feature-gap`** — see which features could enhance your setup; pick what you want and implement on the spot.
|
||||
- **`/config-audit fix`** — auto-fix anything deterministic; the rest is genuinely optional.
|
||||
|
||||
{If grade is C or better:}
|
||||
- **`/config-audit feature-gap`** — See which features could help your project, and implement the ones you want on the spot.
|
||||
|
||||
{If grade is D or F:}
|
||||
- **`/config-audit fix`** should be your first step — it handles the most impactful issues automatically.
|
||||
{If only "FYI" findings:}
|
||||
- **`/config-audit feature-gap`** — explore opportunities; nothing is urgent.
|
||||
|
||||
Session saved to: `~/.claude/config-audit/sessions/{session-id}/`
|
||||
```
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue