Splits a body of context into a sequence of vertical-slice build phases where each phase is independently demonstrable to a real user and each builds on the previous.
SkillScore32Maintained
Automatic
◆Project Management pack
Last verified 9/26/2026
What it changes
Passed 3 of 9 test cases with the skill, and 2 of 9 without it.
Without skill18%
With skill32%
Checks it passed that the model alone missed
The response creates the scope boundary record under an `artifacts/` subfolder adjacent to the outline.
The response records user-stated goals in the Operator-Stated Scope section of `artifacts/scope-boundary.md`.
The response categorizes explicitly excluded boundary features as scope cuts within the deferred phases section.
and 7 more in the full report
6 fixed1 passed either way12 still failing3 broke
Pass-rate lift
+14 pp
Tokens
+414%
Agent turns
0%
Response time
-33%
Model gemini-3.6-flashMeasured 9/26/2026v37 of 22 cases passed with skill · 9 comparable
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 6 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 6
Prompt
A user invokes the build planner pointing to a source file at `docs/features/subscriptions.md` without specifying a target output directory. Where should the resulting `build-phase-outline.md` and boundary artifacts be placed by default?
What was checked, without and with the skill
Checked
Without skill
With skill
The response defaults to placing `build-phase-outline.md` in the same directory as the source file `docs/features/`.
Passed
Passed
The response creates the scope boundary record under an `artifacts/` subfolder adjacent to the outline.
Missed
Passed
case-18 · gemini-3.6-flash · 9/26/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md419 lines3 filesincludes scripts
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"
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, which governs precedence
between the two files, relative-path resolution, and what to do with a file that reads but cannot be used.
Operating Principles
Plain language is the default surface. The build-phase outline never contains file paths, line numbers, function
or class names, library mechanics, or language primitives. It uses product-level subsystem names ("the events
processing system", "the database"), user-facing UI vocabulary (popover, modal, toast), behavioral verbs (publishes,
retries, expires), and user-observable states. Brand names generalize one level up — "PostgreSQL" → "the database",
"NATS JetStream" → "the events processing system". A non-technical stakeholder must be able to read the document
end-to-end.
Every phase must be demonstrable to a real person. "Demonstrable" means a person can be put in front of the
running result and see something happen end-to-end — not "we shipped a service", but "you can do X and Y happens". If
a phase is not demoable, it is either too small (merge it forward into the next phase that does become demoable) or
too horizontal (it is a layer, not a slice — re-think it as a thinner end-to-end strip).
Every phase builds on the prior. As phases ship, the system becomes progressively more capable. Earlier phases
stay valid; later phases enrich what earlier ones delivered. Never sequence a phase so that it invalidates an earlier
deliverable.
Vertical slices, not horizontal layers. The first feature-shipping phase has every layer of the system involved
end-to-end for one narrow scenario. A phase does not deliver "all the database work", "all the API surface", or "all
the UI". Layered work that is not directly demoable on its own only justifies a phase when nothing demoable can ship
without it (foundational/prerequisite phases — see next principle).
Foundational or prerequisite phases come first only when truly required. If the demoable feature literally cannot
run until a setting, permission model, schema, or configuration foundation exists, that foundation comes first — and
even then the foundation phase must itself be demoable on its own (an admin can edit the new setting page and see the
value persist, for example). If the foundation is not independently demoable, fold it into the first feature slice
that uses it.
Traceability back to source is non-negotiable. Every phase cites the section(s) of the source artifact that drove
it. The reader can always answer "where did this phase come from?" without leaving the document.
The run stays inside the boundary it descends from. Before phasing anything, the skill records the work item's
stated scope and exclusions, plus whatever scope the user stated when invoking it, per
Run a full pull request review and post review comments directly to the current branch's GitHub PR. Requires the gh CLI to be installed and a PR to already exist for the current branch. Use when you want review feedback posted to GitHub as PR comments. For local code review without posting to GitHub, use code-review instead. Does not write or update PR descriptions — use update-pr-description for that.