han-release
Cut a Han release: update CHANGELOG.md with the changes since the last release, bump and tag every plugin that changed as {plugin-name}--v{version} so a…
Plans an architecture-driven change to code that already exists: module boundaries, type responsibilities, layering, coupling, and the public surface a revision moves. Produces a buildable change plan that names the types, modules, and methods involved and records the surface
$ npx -y skills add testdouble/han --skill plan-a-change --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/plan-a-changeContext preview
The summary Claude sees to decide when to auto-load this skill.
Plans an architecture-driven change to code that already exists: module boundaries, type responsibilities, layering, coupling, and the public surface a revision moves. Produces a buildable change plan that names the types, modules, and methods involved and records the surface
name: "plan-a-change"
description: >
Plans an architecture-driven change to code that already exists: module boundaries, type responsibilities, layering,
coupling, and the public surface a revision moves. Produces a buildable change plan that names the types, modules, and
methods involved and records the surface delta each change makes. Use when the user wants to plan, scope, or sequence
a restructure, extraction, split, consolidation, responsibility shift, or API revision of existing code, including
"these responsibilities are wrong, plan the fix". Does not assess an area and stop at findings — use
architectural-analysis. Does not specify new behavior — use plan-a-feature. Does not diagnose a bug — use investigate.
Does not write the code — use refactor to restructure it or tdd to build it.
arguments: size
argument-hint: "[size: small | medium | large | dynamic] [what needs to change, optional: source findings path]"
allowed-tools:
Read, Write, Edit, Glob, Grep, Agent, Bash(find *), Bash(git *), Bash(mkdir *),
Bash(bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh")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.
signatures are what the plan is about. A sibling skill forbids them because it specifies behavior a user observes; this one plans a structure an engineer works in, so name the thing. The altitude limit is different in kind: carry the names, the responsibilities, and the contracts between them, and never inline whole file bodies or prescribe line-level edits, BECAUSE the plan is executed after the codebase has moved on and the builder reads the current code at build time.
context to establish why a change is being planned at all. A reported defect is one possible reason among several, and so is a prior findings report; neither is presumed to exist. With no reason recorded there is no evidence test to apply, so the run does not proceed to a plan.
responsibility between parts. Every entry in the surface delta is classified as behavior-preserving or behavior-changing at Step 6, and a behavior-changing entry cannot be committed silently.
renames, or re-scopes carries a statement of what is true after the change, in its own right. Migration guidance is additional and never substitutes for it. Per [surface-delta-rule.md](./references/surface-delta-rule.md).
type's responsibilities across three creates contracts between them: a call signature, a payload shape, an error contract, a lifecycle order. Each is a decision-bearing value the plan carries in concrete form. See [../../references/contract-pinning-rule.md](../../references/contract-pinning-rule.md).
per [../../references/planning-boundary-rule.md](../../references/planning-boundary-rule.md). The scope gate at Step 8 reads that record. Anything the boundary excludes lands in a visible cut list, per [../../references/scope-justification-rule.md](../../references/scope-justification-rule.md).
to each new type, interface, abstraction layer, extension point, configuration seam, and adapter the target state proposes. A new abstraction with one implementation and no named second caller is the signature failure of this skill's domain: it is the easiest thing to justify from taste and the hardest to remove later. Items failing the evidence test land in `## Deferred (YAGNI)` with the reopening trigger named.
[evidence-rule.md](../../references/evidence-rule.md) alongside YAGNI. YAGNI gates whether a part is included; this one characterizes what each claim about the current code rests on.
[../../references/operator-escalation-rule.md](../../references/operator-escalation-rule.md). The Step 1.5 confirmation turn is the one exception, and the one turn that carries more than one ask.
`{folder}/`; `artifacts/change-decision-log.md` and `artifacts/current-state-findings.md` sit beneath it. The plan cites decisions with inline `([D-N](artifacts/change-decision-log.md#...))` links and cites current-state evidence with `([C-N](artifacts/current-state-findings.md#...))` links. Any edit to one file updates the matching cross-reference fi
Han is a suite of AI skills and agents for solo (or small-team) product engineers.
Cut a Han release: update CHANGELOG.md with the changes since the last release, bump and tag every plugin that changed as {plugin-name}--v{version} so a…
Update Han plugin documentation so every skill, agent, guidance doc, index, and cross-reference is current and accurate. On a non-default branch, scopes the…
Produces a progressive-disclosure overview of unfamiliar code or a pull request's changes with code-overview and publishes the resulting overview to a…
Runs an evidence-based investigation of a bug, failure, or unexpected behavior with investigate and publishes the resulting investigation report to a…
Publishes a local Markdown file to a user-specified Confluence location, creating a new page or updating an existing one through the Atlassian MCP server. Use…
Builds a feature specification from scratch with plan-a-feature and publishes it to a user-specified Confluence location, posting the spec as a parent page and…