feat: self-improve routes artifact-first, CLAUDE.md last#69
Conversation
…ly rules, artifacts-checked output line)
There was a problem hiding this comment.
Now I have all the information needed. Let me produce the final report.
Analysis Summary:
Step 0c diff: 2 files changed (CHANGELOG.md, commands/self-improve.md) — 22 insertions, 3 deletions
Step 4b-i candidates (judgment rules triggered by changed files):
changelog/conventional-prefix-required(agent-auditor) — CHANGELOG.md modifiedchangelog/preamble-frozen(agent-auditor) — CHANGELOG.md modifiedagent-cmd/command-frontmatter(slash-command-auditor) — skipped: applies to file creation, not modificationagent-cmd/command-thin(slash-command-auditor) — commands/self-improve.md substantially changed
Step 4c-sel CLASSIFY:
changelog/conventional-prefix-required→ applicable (CHANGELOG.md modified, check bullet prefix)changelog/preamble-frozen→ applicable (CHANGELOG.md modified, check Unreleased placement)agent-cmd/command-frontmatter→ skipped — "applies_when: any commands/*.md file is created" — modification, not creationagent-cmd/command-thin→ applicable (substantial change to commands/*.md)
Step 4d-sel ADJUDICATE:
changelog/conventional-prefix-required— PASS: new bulletfeat: rewrite /coding:self-improve Step 5 routing...starts withfeat:✓changelog/preamble-frozen— PASS:## Unreleasedplaced correctly after the preamble block (MAJOR/MINOR/PATCH bullets), not inside it ✓agent-cmd/command-thin— PASS: changes add a new routing-table row and a scoring signal (+1 row, -1 signal), all within documentation prose. No inline Bash/Task/agent spawning added. The command remains a documentation-only workflow guide (thin wrapper) ✓
Concerns from Plan:
- Concern 1 (subjective scoring for "could own") — acknowledged design trade-off, not a code defect
- Concern 2 (no enforcement for "which artifacts were checked") — acknowledged documentation-only constraint, not a code defect
- Concern 3 (routing table reorder vs Step 3 repair scoring) — no conflict; Step 3 rates candidates, Step 5 routes fixes, they operate at different phases
- Concern 4 (no test coverage) — correct; this is a documentation-only change, no executable code to test
Step 3a: LICENSE file exists at repo root ✓
{
"verdict": "approve",
"summary": "The routing-table rewrite and new scoring signal in self-improve.md are well-reasoned documentation changes. CHANGELOG.md follows all conventions (correct preamble placement, feat: prefix). No violations found in applicable rules.",
"comments": [],
"concerns_addressed": [
"correctness: routing table reorder verified not to conflict with Step 3 scoring — different phases, no overlap",
"correctness: \"which artifacts were checked\" requirement is acknowledged as documentation-only constraint, not a code defect",
"correctness: subjective scoring risk for \"could own\" is an accepted design trade-off documented in the rule itself",
"tests: behavioral changes are to a documentation-only command guide; no executable code to test"
]
}superseded by new automated review
There was a problem hiding this comment.
Now I have the full picture. Let me compile my review findings based on the diff.
Step 0c diff summary: CHANGELOG.md (+5 lines), commands/self-improve.md (+30/−12 lines) — 2 files, both .md.
Step 4 early-exit check: Changed files are .md only (no .go/.py). They match CHANGELOG.md and commands/**/*.md triggers → judgment rules fire. Proceeding.
Step 4a (mechanical funnel): Changed files are markdown only — no Go/Python ast-grep rules apply. ast-grep/sg is in PATH but the runner would produce zero mechanical findings for .md inputs. Noted as not-applicable.
Step 4b (judgment rules): Active rules triggered by the diff:
changelog/conventional-prefix-required→CHANGELOG.mdchangelog/preamble-frozen→CHANGELOG.mdagent-cmd/command-thin→commands/self-improve.mdagent-cmd/command-frontmatter→commands/self-improve.md
Manual review of the diff:
commands/self-improve.md changes:
allowed-tools: Read, Edit, Glob, Grep— correctly declares Phase 2 (Apply) capabilities. Read for Phase 1 reading; Edit/Glob/Grep for Phase 2 artifact edits.- Worth-it score
−1signal — "Routes to aCLAUDE.mdthough an existing artifact could own it (judged after Step 5 routing)" — correctly annotated as post-routing. - Step 5 routing table — reordered artifact-first (
Misfire OR gap in existing command/agent/skill → that artifact) with CLAUDE.md as last resort (Project convention no artifact can enforce → project's CLAUDE.md,Global habit no artifact could ever own → global CLAUDE.md). Directly addresses the bias toward always proposing new memory rules. Artifacts checked:mandatory output line — correctly placed in Step 6 output template, mandatory when targeting CLAUDE.md.- Phase 2 convention matching — generalized beyond CLAUDE.md to all artifact types with their respective formats.
CHANGELOG.md changes:
## Unreleasedadded withfeat:andfix:bullets — both conventional prefixes correct; section placed after (not inside) the preamble ✓
No issues found.
{
"verdict": "approve",
"summary": "The artifact-first routing rewrite and audit follow-ups are well-reasoned. The routing table now explicitly prioritizes existing artifacts (command/agent/skill repair, runbook, guide) before CLAUDE.md, with a −1 scoring signal for proposals that route to CLAUDE.md when an existing artifact could own the fix. The mandatory 'Artifacts checked:' output line and generalized Phase 2 convention matching are correct. The CHANGELOG entries follow the conventional-prefix format and the preamble is untouched.",
"comments": [],
"concerns_addressed": [
"correctness: new Step 5 routing table artifact-first priority is implemented — misfire/gap in existing artifact routes to that artifact first, CLAUDE.md is last resort with no routing around without external constraint",
"correctness: -1 scoring signal annotated 'judged after Step 5 routing' — applied in Step 3 worth-it scoring after routing decision",
"correctness: mandatory 'Artifacts checked:' line added to Step 6 output template, mandatory when targeting CLAUDE.md",
"correctness: allowed-tools frontmatter (Read, Edit, Glob, Grep) matches Phase 1/2 capabilities — Read for Phase 1, Edit+Glob+Grep for Phase 2 artifact edits",
"tests: no test files changed — plugin-only repo, no Go/Python test suite; testing concern not applicable"
]
}
Summary
/coding:self-improveStep 5 routing: artifact-first, CLAUDE.md last resortWhy
Observed bias: every self-improve run proposes new CLAUDE.md bullets (both proposals in the triggering session routed there and were rejected). Memory files must stay short and precise — fixes belong in the artifact that is loaded when the mistake happens.
🤖 Generated with Claude Code