Skip to main content
ClaudeWave
Skill262 repo starsupdated today

iterative-plan-review

This Claude Code skill audits implementation plans against actual project codebases and reference materials, applying evidence-based review criteria to identify unfounded assumptions, unnecessary complexity, and overlaps with existing code patterns. Use it when planning substantial features or refactors to ground recommendations in concrete codebase evidence rather than speculation, ensuring plans avoid YAGNI violations and distinguish between verified facts, corroborated claims, and unsupported assertions before development begins.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/testdouble/han /tmp/iterative-plan-review && cp -r /tmp/iterative-plan-review/han-planning/skills/iterative-plan-review ~/.claude/skills/iterative-plan-review
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

## Project Context

- CLAUDE.md: !`find . -maxdepth 1 -name "CLAUDE.md" -type f`
- project-discovery.md: !`find . -maxdepth 3 -name "project-discovery.md" -type f`
- personal config directory: !`bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh" 2>/dev/null || echo "$HOME/.claude"`
- project .han/config.md: !`cat .han/config.md 2>/dev/null || echo ""`

As your first action, use the Read tool on `.han/config.md` inside the `personal config directory` path above. A read
that returns no file is no personal configuration: continue silently. When that file or the `project .han/config.md`
probe supplies content, apply it per [config-rule.md](../../references/config-rule.md), which governs precedence
between the two files, relative-path resolution, and what to do with a file that reads but cannot be used.

## Review Approach

- **Source the shared readability standard early.** Invoke `han-communication:readability-guidance` before you edit, and
  apply it to any plan prose this review rewrites. Hold the named audience: the reader of the plan this review refines.
  The frame governs how a fact is said, never whether a required fact appears — keep the evidence citations, file:line
  references, and IDs the plan depends on.
- Read the full plan before challenging — an assumption that looks wrong in isolation may make sense in context.
- Ground challenges in codebase evidence: "The API handler at `src/api/handler.go:47` returns XML, not JSON" is
  actionable; "This assumes the API returns JSON" is not.
- Check overlap against existing code, not just the plan — the most valuable overlap findings are external utilities or
  patterns the codebase already has.
- Ask practical ambiguity questions — "Should this handle concurrent access?" is only useful if there's evidence
  concurrent access actually happens.
- **YAGNI is a first-class review pillar.** Apply the evidence-based YAGNI rule from
  [../../references/yagni-rule.md](../../references/yagni-rule.md) to every plan item the review touches — every
  behavior, plan step, abstraction, configuration knob, runbook, observability hook, infrastructure component, test
  category, ADR clause, or coding-standard line. Items that fail the evidence test or have a strictly simpler version
  available are first-class findings (`Category: YAGNI candidate`), not polish. Resolution paths: cite missing evidence
  and keep, replace with simpler version, or move to the plan's `## Deferred (YAGNI)` section with the reopening trigger
  named. YAGNI candidates are surfaced visibly to the user — never silently dropped, never silently kept. Every plan
  item is ongoing maintenance and a pattern future agents will copy.
- **Evidence quality is a first-class review pillar.** Apply the companion evidence rule from
  [../../references/evidence-rule.md](../../references/evidence-rule.md) alongside the YAGNI gate. YAGNI asks whether a
  plan item has any evidence at all; the evidence rule asks how strong that evidence is. Specifically: name the trust
  class of each citation a plan item rests on (codebase, web, provided); apply the corroboration gate to web-source
  claims that drive a recommendation (single-source web claims get marked and cannot stand alone); and label claims with
  no evidence at any tier as a distinct state rather than treating them as weak evidence. The proximity-to-origin
  principle is a heuristic, not a strict tier list; do not raise findings purely because a plan item cites docs instead
  of running code.
- **The review lives in three cross-referenced files.** The plan file is the primary artifact edited in place and stays
  at the root of `{plan-dir}/`; `review-findings.md` records every finding and how it was resolved, and
  `review-iteration-history.md` records each iteration or round — both companion artifacts live in
  `{plan-dir}/artifacts/` to keep the plan folder uncluttered. The plan gets a standardized `## Review History` section
  at the bottom pointing to the companion files. Inline `(F#)` markers are NOT added to plan sentences — forward
  traceability lives in the findings file's `Changed in plan:` field. (Inline `([T#](...))` markers in spec-aware mode
  remain — they tag load-bearing mechanic-driven spec sentences and are not finding markers.) The findings and iteration
  files (siblings inside `artifacts/`) cross-link through `Raised in round:` / `Findings raised:` fields and both record
  `Changed in plan:` sections. Any edit to one file requires updating the matching fields in the others.

# Iterative Plan Review

## Step 1: Locate the Plan and Set Up Companion Files

Find the plan file from the user's argument. If no path was provided, use `Glob` to find `~/.claude/plans/*.md` — Glob
returns files sorted by modification time, so the first result is the most recent plan. Read the full plan file and
understand its structure, scope, and current state before proceeding.

Resolve project config: read CLAUDE.md's `## Project Discovery` section for language, framework, docs, ADR, and
coding-standards directories; fall back to project-discovery.md; fall back to Glob defaults (`docs/`, `docs/adr/`,
`docs/coding-standards/`). This context informs assumption evaluation and overlap checks in later steps.

### Spec-aware mode detection

After reading the plan file, determine whether it is a `feature-specification.md` produced by (or compatible with)
`han-planning:plan-a-feature`. Engage **spec-aware mode** when either signal holds:

- **Primary signal** — the plan's filename is exactly `feature-specification.md`.
- **Fallback signal** — the file contains the canonical top-level headings of a feature spec: `## Outcome`,
  `## Actors and Triggers`, `## Primary Flow`, and `## Coordinations` (at least three of these four).

When spec-aware mode engages, state one line to the user:

> **Detected feature specification; applying spec-stage rules to this review. Say "general mode" to override if this
> file is not a behavioral spec.**

This confir