Releases: testdouble/han
Release list
v4.6.0
han 4.6.0 adds TPP and ZOMBIES next-test selection to /tdd, stops work-items-to-issues from resetting an existing label's color, keeps human-in-the-loop gating off assumptions the plan has already settled, and corrects the permission model documented for context-injection commands. han-coding (2.6.0) gains the new references/test-selection.md reference and wires it into /tdd; han-github (2.2.2) fixes the label-color bug in work-items-to-issues; han-planning (2.0.4) tightens HITL marking in plan-work-items and defines the assumption status vocabulary in plan-implementation's template; and han-plugin-builder (2.0.5) corrects the context-injection command rules and adds two new rules on token locality and point-of-use variation. han-core (2.2.1), han-reporting (2.1.1), han-feedback (2.0.0), han-atlassian (2.2.0), and han-linear (1.0.2) are unchanged.
What's Changed
- feat(tdd): add TPP + ZOMBIES next-test selection to the /tdd skill by @Hyperman012 in #108
- Prevent HITL over-gating on already-verified assumptions by @afrerich in #109
- Don't reset an existing label's color when publishing issues by @afrerich in #116
- docs(plugin-builder): add rule about token locality to skill-building references by @taminomara in #118
- docs(plugin-builder): correct context-injection command permission model by @taminomara in #121
han v4.6.0
The suite-level work is documentation plus the per-plugin version syncs in .claude-plugin/marketplace.json. README.md adds Tamika Nomara and Aaron Frerichs to the core contributors list, along with a link to the repository's full contributor graph. The new docs/research/effective-pull-request-descriptions.md is a standalone research report on what makes a pull request description effective, drafted and then finalized with a validation and readability pass; it is not tied to a plan and changes no skill behavior. The long-form docs docs/skills/han-coding/tdd.md and docs/skills/han-github/work-items-to-issues.md are synced with the test-selection addition and the label-color fix respectively. Contributed by @mxriverlynn.
han-coding v2.6.0
/tdd now answers "which test do I write next" explicitly. The new han-coding/skills/tdd/references/test-selection.md is the canonical reference for the Transformation Priority Premise (TPP) and ZOMBIES heuristics: it carries the fourteen-transformation TPP ranking table (from {} → nil through case) and the ZOMBIES ordering, both resolving to the same answer, that the next test is the one satisfiable by the simplest transformation of the code. The reference frames Robert C. Martin's core principle: as the tests get more specific, the code gets more generic. It is explicit that these are heuristics for choosing what to test next, never a menu for hacking an implementation to green after the test is chosen.
han-coding/skills/tdd/SKILL.md wires the reference in at two points. When ordering the behavior test list, a behavior that expands into several candidate tests (the empty case, the single case, the many case, the boundaries) is ordered simplest-first, Zero then One then Many, so each test forces the smallest generalization of the code, pulling references/test-selection.md when the order is not obvious. When picking the next item, the skill prefers the item whose passing requires the simplest transformation (a test needing only a constant return before one forcing a conditional, and a conditional before a loop), and when every remaining item forces a big leap with no smaller test in between, the skill treats that as a missing test and adds it to the list. The skill's description gains the TPP and ZOMBIES trigger wording. The reference is ported from Dale Stewart's nw-tpp-methodology skill for nWave (nWave-ai/nWave#67) and his write-up "The Next Test". Contributed by @Hyperman012 in #108.
han-github v2.2.2
work-items-to-issues no longer resets an existing label's color and description. han-github/skills/work-items-to-issues/scripts/create-issues.sh previously upserted the label passed via --label <name> with gh label create "$LABEL" --force, and --force overwrites the color and description of a label that already exists; passing an existing enhancement label reset its color from #a2eeef to gh's default. The script now creates the label without --force, and when creation fails because the label already exists, it confirms the label through an exact name match against gh label list and reuses it as-is, leaving its color and description intact. It errors out only when the label can be neither created nor found. han-github/skills/work-items-to-issues/SKILL.md is updated to describe the new behavior. Contributed by @afrerich in #116.
han-planning v2.0.4
Work items no longer get gated on a human when the plan has already settled the question. plan-work-items directs the dispatched han-core:project-manager not to mark a work item HITL merely because the plan labels an assumption unverified. The agent first checks whether the assumption can be settled by reading the code (if it can, it does that and moves on) and whether getting the assumption wrong actually breaks something or merely falls back to a safe default. A work item is HITL only when the assumption cannot be settled from code and getting it wrong causes real breakage; otherwise it is AFK. HITL stays reserved for genuine architectural and design calls.
plan-implementation's references/feature-implementation-plan-template.md defines the status vocabulary for the Assumptions table, so the plans feeding that decision are unambiguous: a status is exactly one of Verified (a source cite settles it, whether a file:line, an ADR, or a standard), Runtime-only (it cannot be known until the code runs), or Open (not yet checked). Each assumption carries one status, an assumption confirmed from source is Verified with no "but unverified at runtime" qualifier attached, and a separate runtime unknown gets its own row. Mixing the two hid a settled fact and made later steps gate on it for no reason. Contributed by @afrerich in #109, with @mxriverlynn and @taminomara.
han-plugin-builder v2.0.5
Three changes to the skill-building references served by the guidance skill.
Context-injection commands: the permission model, corrected
The old rule in han-plugin-builder/skills/guidance/references/skill-building-guidance/context-injection-commands.md ("Keep commands simple, single commands only") claimed that pipes, &&-chains, and redirects fail the loader's prefix match. That is not what the loader does. The rule is now "Keep every command an auto-approvable read-only form", and it describes the real behavior: context injection runs at skill load and never prompts, so a command that is not auto-approvable hard-rejects and stops the skill from loading, and only the first failing command surfaces an error while every command after it is masked. A command auto-approves when every part of it, including each stage of a pipe or chain, is either a built-in read-only command on the loader's fixed allowlist (cat, ls, head, tail, wc, grep, find without dangerous predicates, which, echo, date, and read-only git and gh subcommands) or matched by an explicit Bash() rule in allowed-tools. Pipes and chains are therefore not forbidden. Four constructs are refused every time, and an allowed-tools rule does not rescue them: command substitution $(...), process substitution, subshells and background &, and dangerous sub-forms of otherwise-safe tools (find -exec, find -delete, sed -i), where the danger check overrides the grant. The rule still prefers one flag-driven command over a pipe, because each extra stage is one more part that has to stay on the allowlist. New guidance covers keeping each injected value small: bound the output at the source with -n, --stat, --name-only, or -maxdepth rather than piping into head, since injected output persists in context for the whole run, making | head -N a last resort rather than a ban. The reference also documents the git config --get edge, where the bare git config user.name form is accepted as a lone command but not as part of a chain, and the "What NOT to Use" table is rewritten from "Why It Fails" to "What happens" to match.
Token locality: build a self-sufficient region at the point of use
context-hygiene.md gains the rule "Build a self-sufficient region at the point of use": give each step a region that already carries what it needs, so the model is not left reconstructing which reference applies where. A single instruction applied to the data in front of it is cheap. What is costly is a step that makes the model hold several references at once and route each to a different, overlapping set of targets. A region is self-sufficient when that routing is already resolved. The rule distinguishes a loadable pointer (one references/ file Read and applied uniformly, which is fine) from an in-head reference (three references plus a mapping of which applies where, which should be collapsed before the model sees it). It adds an "in-head join" row to the anti-pattern table and cross-references Multi-Agent Economics.
Point-of-use variation resolution
writing-effective-instructions.md gains the rule "Resolve variation at the point of use": when a step drives several similar items that each take a slightly different set of inputs (dispatching sub-agents with different reference files, or applying rules scoped to different files), do not express the variation as a matrix the model has to join against a separate list, because that forces an in-head jo...
v4.5.1
han 4.5.1 is a maintenance release that guards context-injection commands against absent tools and references, normalizes user-reference wording, and sweeps the operator-facing documentation for readability. han-core (2.2.1) guards the project-discovery, research, and runbook skills and normalizes wording in the research-analyst agent, issue-triage, and research; han-planning (2.0.3) normalizes wording in its references; han-coding (2.5.1) guards six skills and normalizes wording in code-overview and code-review; han-github (2.2.1) guards post-code-review-to-pr and update-pr-description and normalizes its references; han-reporting (2.1.1) normalizes its references; han-linear (1.0.2) normalizes work-items-to-linear and its templates; and han-plugin-builder (2.0.4) guards the guidance skill and finishes the guarding in its command-example references. han-feedback (2.0.0) and han-atlassian (2.2.0) are unchanged.
What's Changed
- fix(skills): guard context-injection commands so absent tools or refs can't abort a skill by @taminomara in #103
- docs(guidance): finish guarding context-injection command examples by @mxriverlynn in #105
- docs: normalize the Claude Code user reference to "user" by @taminomara in #104
- Readability edits across all documentation by @mxriverlynn in #106
han v4.5.1
The suite-level work is documentation plus the per-plugin version syncs in .claude-plugin/marketplace.json. The user normalization reaches the long-form docs under docs/agents/ and docs/skills/han-coding/. A readability sweep applies the suite's Human-Readable Output Standard across docs/ (skill docs, agent docs, how-to guides, templates, and top-level docs such as docs/concepts.md, docs/why-solo-and-small-teams.md, and docs/semantic-versioning.md), README.md, and CONTRIBUTING.md, and syncs the skill and agent docs with the current rosters and dispatchers; it changes no SKILL.md or agent behavior. Contributed by @taminomara in #104 and @mxriverlynn in #106.
han-core v2.2.1
The project-discovery, research, and runbook skills guard their context-injection commands so an absent tool or referenced file cannot abort the skill. Text in the research-analyst agent, the references/, and the issue-triage and research skills normalizes references to "the Claude Code user" to "user". Contributed by @taminomara in #103 and #104.
han-planning v2.0.3
The han-planning/references/ normalize references to "the Claude Code user" to "user". Contributed by @taminomara in #104.
han-coding v2.5.1
The architectural-analysis, code-overview, code-review, refactor, tdd, and test-planning skills guard their context-injection commands so an absent tool or referenced file cannot abort the skill. Text in code-overview, code-review, and the references/ normalizes references to "the Claude Code user" to "user". Contributed by @taminomara in #103 and #104.
han-github v2.2.1
The post-code-review-to-pr and update-pr-description skills guard their context-injection commands so an absent tool or referenced file cannot abort the skill. The references/ normalize references to "the Claude Code user" to "user". Contributed by @taminomara in #103 and #104.
han-reporting v2.1.1
The han-reporting/references/ normalize references to "the Claude Code user" to "user". Contributed by @taminomara in #104.
han-linear v1.0.2
The work-items-to-linear skill and its reference templates normalize references to "the Claude Code user" to "user". Contributed by @taminomara in #104.
han-plugin-builder v2.0.4
The guidance skill guards its context-injection commands so an absent tool or referenced file cannot abort the skill, and the guidance references finish the same guarding for the command examples in context-injection-commands.md and dynamic-project-discovery.md. Contributed by @taminomara in #103 and @mxriverlynn in #105.
Full changelog: https://github.com/testdouble/han/blob/v4.5.1/CHANGELOG.md#v451
Full Changelog: v4.5.0...v4.5.1
v4.5.0
han 4.5.0 lands a shared Human-Readable Output Standard across the suite: a single readability rule plus a dedicated readability-editor agent, wired into the reader-facing synthesis skills so their drafts lead with the main point, use descriptive headings, keep one idea per paragraph, and use short active sentences, while preserving every fact. The canonical writing-voice.md also moved out of docs/ and into plugin references/. The release bumps han-core (2.2.0) with the new agent, the new edit-for-readability skill, and the shared readability-rule.md and writing-voice.md references; han-coding (2.5.0), han-github (2.2.0), and han-reporting (2.1.0) each vendor those two references and wire the standard into their reader-facing skills; and han-plugin-builder (2.0.3) fixes two guidance rules. han-planning (2.0.2), han-feedback (2.0.0), han-atlassian (2.2.0), and han-linear (1.0.1) are unchanged.
What's Changed
- Research: human readable output by @mxriverlynn in #97
- docs: reframe the subagent-dispatch rule as a justified default by @taminomara in #100
- human-readable output standards by @mxriverlynn in #102
Issues closed
- Stale "subagents cannot spawn subagents" rule in agent-building guidance (#99) — opened by @taminomara, fixed in #100 by @taminomara
han v4.5.0
The suite-level work is the readability standard's documentation, the writing-voice.md relocation, the supporting research and plan artifacts, and the per-plugin version syncs in .claude-plugin/marketplace.json.
New docs/readability.md is the operator-facing Human-Readable Output Standard, and new docs/agents/han-core/readability-editor.md and docs/skills/han-core/edit-for-readability.md document the new agent and skill. docs/concepts.md gained a readability section, README.md links the standard from its documentation list, and docs/agents/README.md and docs/skills/README.md register the new entries. A doc sweep brought the reader-facing skill docs across han-coding, han-core, han-github, and han-reporting current with the readability pass and added the readability-editor to their rosters. Contributed by @mxriverlynn in #102.
The canonical writing-voice.md moved from docs/writing-voice.md into han-core/references/writing-voice.md, vendored byte-identical into han-coding/, han-github/, and han-reporting/ references, with live references repointed to the new location. CLAUDE.md gained rules enforcing the guidance and standards.
New docs/research/human-readable-output-standard.md is the research report backing the standard, and the docs/plans/human-readable-output-standard/ folder holds the feature specification and the decision-log and team-findings artifacts. Contributed by @mxriverlynn in #97.
han-core v2.2.0
The new readability-editor agent (han-core/agents/readability-editor.md) rewrites a draft's prose to lead with the main point, use descriptive headings, carry one idea per paragraph, and keep sentences short and active, while preserving every fact. The new edit-for-readability skill (han-core/skills/edit-for-readability/SKILL.md) dispatches that agent against a file, pasted text, or an in-conversation draft. Two new shared references back the standard: han-core/references/readability-rule.md (the canonical readability rule) and han-core/references/writing-voice.md (the canonical voice profile, moved here from docs/).
The readability standard is wired into the six reader-facing han-core skills: architectural-decision-record, gap-analysis, issue-triage, project-documentation, research, and runbook. Contributed by @mxriverlynn in #102.
han-coding v2.5.0
Vendored han-coding/references/readability-rule.md and han-coding/references/writing-voice.md byte-identical from han-core, and wired the readability standard into the four reader-facing han-coding skills: architectural-analysis, code-overview, code-review, and investigate. Contributed by @mxriverlynn in #102.
han-github v2.2.0
Vendored han-github/references/readability-rule.md and han-github/references/writing-voice.md byte-identical from han-core, and wired the readability standard into update-pr-description. Contributed by @mxriverlynn in #102.
han-reporting v2.1.0
Vendored han-reporting/references/readability-rule.md and han-reporting/references/writing-voice.md byte-identical from han-core, and wired the readability standard into html-summary and stakeholder-summary. Contributed by @mxriverlynn in #102.
han-plugin-builder v2.0.3
Guidance fixes in the agent-building references. The subagent-dispatch rule is reframed as a justified default rather than an absolute, and the stale "subagents cannot spawn subagents" rule was corrected, fixing an issue opened by @taminomara (#99). Also removed an em-dash from agent-builder's tool-set step. Contributed by @taminomara in #100.
Full changelog: https://github.com/testdouble/han/blob/v4.5.0/CHANGELOG.md#v450
Full Changelog: v4.4.0...v4.5.0
v4.4.0
han 4.4.0 adds an independent adversarial validation pass to the code-review skill and hardens it against untrusted branch context (han-coding 2.4.0), reworks the project-discovery skill to write a concise section directly into the project's AGENTS.md or CLAUDE.md (han-core 2.1.0), and lands three documentation and frontmatter fixes: a Write permission for post-code-review-to-pr (han-github 2.1.2), missing frontmatter for html-summary (han-reporting 2.0.1), and corrected agent names in the skill-building guidance (han-plugin-builder 2.0.2). han-planning (2.0.2), han-feedback (2.0.0), han-atlassian (2.2.0), and han-linear (1.0.1) are unchanged.
What's Changed
- effective code reviews by @mxriverlynn in #92
- Project discovery: destination file, and simplified output by @mxriverlynn in #93
- Code review effectiveness updates by @mxriverlynn in #94
han v4.4.0
The suite-level work is documentation plus the per-plugin version syncs in .claude-plugin/marketplace.json for this release.
New docs/research/effective-ai-code-reviews.md is a research report validating the claims behind effective AI code reviews, and new docs/how-to/run-an-effective-code-review.md is a how-to guide built on it. Both are surfaced in docs/how-to/README.md, and both back the code-review work in han-coding. Contributed by @mxriverlynn in #92.
A documentation sweep brought the skill and agent docs current with this release: docs/skills/han-coding/code-review.md, docs/skills/han-core/project-discovery.md, docs/skills/han-core/project-documentation.md, docs/agents/han-core/adversarial-validator.md (which now cross-links the new code-review Step 7.4 dispatch), docs/agents/han-core/user-experience-designer.md, docs/skills/README.md, docs/skills/han-atlassian/project-documentation-to-confluence.md, docs/quickstart.md, README.md, and CONTRIBUTING.md. Contributed by @mxriverlynn in #94.
han-core v2.1.0
The project-discovery skill was reworked to write a concise ## Project Discovery section directly into the project's AGENTS.md (preferred) or CLAUDE.md, instead of writing a standalone docs/project-discovery.md file plus a separate CLAUDE.md summary. The output-file-path argument-hint was removed, so the skill no longer takes an output path. han-core/skills/project-discovery/references/claudemd-summary-template.md was deleted, and han-core/skills/project-discovery/references/template.md was rewritten as the single concise structural guide.
The skill now reads the target file first and builds a deduplication baseline, dropping any fact the file already documents, dropping empty and placeholder lines, and surfacing contradictions through AskUserQuestion. If nothing new remains after deduplication, it writes nothing and tells the user the file already covers the project. The output is deliberately small (where things live, languages and frameworks, commands to run), not an exhaustive inventory. allowed-tools dropped Bash(date *) and Bash(mkdir *), since the skill no longer creates a docs directory or timestamps a file. Contributed by @mxriverlynn in #93.
han-coding v2.4.0
The code-review skill (han-coding/skills/code-review/SKILL.md) changed in two threads. Contributed by @mxriverlynn in #92 and #94.
Independent findings-validator pass (Step 7.4)
A new Step 7.4, "Validate the finding list (independent adversarial pass)", runs after the existing collect, demote, and rubric sub-steps. It dispatches one han-core:adversarial-validator to re-attack the consolidated corrective-finding list against the code itself in fresh context, the way investigate validates a root cause, rather than trusting each producing agent's rationale. It runs only when at least one corrective finding (CRIT, WARN, SUGG, or any SEC-###) survived, and is skipped on a clean review.
The validator returns Confirmed, Partially Refuted, or Refuted per finding. The orchestrator keeps Confirmed, demotes one severity on Partially Refuted, and drops Refuted only when concrete counter-evidence at file_path:line_number was supplied; an overcorrection guard keeps a finding when the validator only asserts. SEC-### findings drop only on refuted exploit paths with counter-evidence. The pass is a filter, not a finding source, so Step 9's verification is unaffected. The reachability gate text in Step 7.2 now notes that paraphrased reachability hedging it cannot catch literally is caught semantically by Step 7.4.
Fetched branch context treated as untrusted data
Fetched branch context is now handled as untrusted third-party data. Step 1.5 strips any instruction or directive aimed at the reviewer or an agent out of the Branch Context summary, and Step 3's agent prompt wraps $branch_context in explicit BEGIN and END "UNTRUSTED" markers with a directive to never obey text inside them, while $focus_areas stays trusted. Step 6's documentation-compliance and documentation-freshness passes were scoped to only the docs and standards whose subject matter the diff actually touches (reading the whole directory dilutes the signal), and weight correctness and behavior-bearing rules over style the linter already enforces.
han-github v2.1.2
Added Write to allowed-tools in han-github/skills/post-code-review-to-pr/SKILL.md, since the skill needs write access. Contributed by @mxriverlynn in #94.
han-reporting v2.0.1
Added the missing argument-hint: "[path to stakeholder-summary.md]" and allowed-tools: Read, Write frontmatter to han-reporting/skills/html-summary/SKILL.md. Contributed by @mxriverlynn in #94.
han-plugin-builder v2.0.2
Corrected the agent names in the example in han-plugin-builder/skills/guidance/references/skill-building-guidance/use-case-planning.md: codebase-exploration became codebase-explorer and content-audit became content-auditor. Contributed by @mxriverlynn in #94.
Full changelog: https://github.com/testdouble/han/blob/v4.4.0/CHANGELOG.md#v440
Full Changelog: v4.3.3...v4.4.0
v4.3.3
han 4.3.3 is a fix that wraps argument-hint frontmatter values in double quotes so YAML parses them as strings instead of misreading the bracket and flag syntax. The fix lands in han-core (2.0.3), han-coding (2.3.2), han-github (2.1.1), and han-linear (1.0.1). han-planning, han-reporting, han-feedback, han-atlassian, and han-plugin-builder are unchanged.
What's Changed
- fix #90: quote argument-hint values so YAML parses them as strings by @mxriverlynn in #91
Issues closed
- Copilot wants quotes around
argument-hint(#90) — opened by @eddroid, fixed in #91 by @mxriverlynn
han v4.3.3
The suite-level work is the per-plugin version syncs in .claude-plugin/marketplace.json for this release.
han-core v2.0.3
Quoted the argument-hint frontmatter value in four skills so YAML reads it as a string: han-core/skills/architectural-decision-record/SKILL.md, han-core/skills/project-discovery/SKILL.md, han-core/skills/project-documentation/SKILL.md, and han-core/skills/runbook/SKILL.md. For example, argument-hint: [topic ...] became argument-hint: "[topic ...]". Contributed by @mxriverlynn in #91, closing an issue reported by @eddroid.
han-coding v2.3.2
Quoted the argument-hint frontmatter value in han-coding/skills/coding-standard/SKILL.md so YAML reads it as a string. Contributed by @mxriverlynn in #91.
han-github v2.1.1
Quoted the argument-hint frontmatter value in han-github/skills/post-code-review-to-pr/SKILL.md and han-github/skills/update-pr-description/SKILL.md so YAML reads it as a string. Contributed by @mxriverlynn in #91.
han-linear v1.0.1
Quoted the argument-hint frontmatter value in han-linear/skills/work-items-to-linear/SKILL.md so YAML reads it as a string. Contributed by @mxriverlynn in #91.
Full changelog: https://github.com/testdouble/han/blob/v4.3.3/CHANGELOG.md#v433
Full Changelog: v4.3.2...v4.3.3
v4.3.2
han 4.3.2 re-focuses the code-overview skill around why code exists and adds an adversarial accuracy-validation pass to it (han-coding 2.3.1), and adds two how-to guides plus the research backing one of them to the suite documentation. han-core, han-planning, han-github, han-reporting, han-feedback, han-atlassian, and han-linear are unchanged.
What's Changed
- How to change a plan by @mxriverlynn in #87
- How to: accelerate understanding of unfamiliar code by @mxriverlynn in #88
- Code overview: answering "why" as the most important aspect by @mxriverlynn in #89
han v4.3.2
The suite-level work is documentation. Two how-to guides were added: docs/how-to/revise-a-plan.md covers how to change a plan after the build has started, and docs/how-to/accelerate-understanding-of-unfamiliar-code.md covers getting up to speed on unfamiliar code. Both are surfaced in docs/how-to/README.md and the recipe list in the root README.md. docs/research/llm-accelerated-code-understanding.md was added as the research backing the understanding-acceleration guide. docs/how-to/plan-a-feature.md and docs/skills/README.md got one-line updates, and the research summary dropped a banned word for voice compliance. README.md also got a header fix for the Claude installation section. Contributed by @mxriverlynn in #87 and #88.
han-coding v2.3.1
The code-overview skill (han-coding/skills/code-overview/SKILL.md and han-coding/skills/code-overview/references/overview-template.md) was reworked in two ways.
First, the whole overview is now organized around one question: why does this code exist? The answer is the real problem the code solves or the goal it serves for the business or a user, never the technical mechanics. Code mode leads with a "Why it exists" section and PR mode with a "Why this change exists" section, and every following section (flow, context, where to start) is framed as serving that why. The skill's description frontmatter, its operating constraints, the Step 4 explorer dispatch, the Step 5 rendering order, and the per-section detail rule were all updated to put the why first. The Step 4 dispatch now asks explorers to gather evidence of why the code exists from commit messages, PR and issue intent, comments, naming, and tests, and to say so rather than invent a reason when the why is not stated. Where the why can only be inferred, the overview marks it as inferred and does not assert a business rationale the evidence does not support.
Second, Step 7 (renamed "Validate Accuracy, then Refine for Readability") now dispatches three agents in parallel instead of two: han-core:adversarial-validator joins han-core:information-architect and han-core:junior-developer. The validator re-reads the target, and the diff in PR mode, and challenges every material claim the overview makes, the stated why most of all, for grounding in the actual code and its intent, citing the file, line, or commit that disproves any unsupported, overstated, contradicted, or hallucinated claim. It validates the accuracy of the description only and does not judge the code's quality or raise findings about the code. Accuracy corrections take precedence over readability edits when the skill applies recommendations. docs/skills/han-coding/code-overview.md and docs/agents/han-core/adversarial-validator.md were updated to match, and the adversarial-validator agent doc now names /code-overview as a dispatcher. Contributed by @mxriverlynn in #89.
Full changelog: https://github.com/testdouble/han/blob/v4.3.2/CHANGELOG.md#v432
Full Changelog: v4.3.1...v4.3.2
v4.3.1
han 4.3.1 removes the Claude-specific model overrides from the four planning skills so they run on hosts with their own model namespaces (han-planning 2.0.2), and clarifies the agent-model-selection guidance so the overrides are not reintroduced (han-plugin-builder 2.0.1). han-core, han-coding, han-github, han-reporting, han-feedback, han-atlassian, and han-linear are unchanged.
What's Changed
- Docs/sweep sizing and dispatch fixes by @mxriverlynn in #85
- Remove Claude-specific model overrides from planning skills (#78) by @mxriverlynn in #86
Issues closed
- Han Feedback: han-feedback (2026-06-17) (#78) — opened by @oppegard, fixed in #86 by @mxriverlynn
han v4.3.1
The suite-level work is documentation. The cost sections of the four planning long-form docs (docs/skills/han-planning/plan-a-feature.md, docs/skills/han-planning/plan-implementation.md, docs/skills/han-planning/plan-a-phased-build.md, docs/skills/han-planning/plan-work-items.md) were updated to match the model-override removal below. docs/research/issue-78-model-specifier-portability.md was added as the research backing that change. CLAUDE.md and CONTRIBUTING.md corrected the han-linear layout label and documented han-atlassian and han-linear in the contributor guide.
han-planning v2.0.2
The four planning skills (plan-a-feature, plan-implementation, plan-a-phased-build, plan-work-items) pinned every dispatched sub-agent to model: "sonnet". That tier name is Claude-specific and is not valid on hosts with their own model namespace, so the planning skills failed before useful work began. The blanket "all sub-agents run on sonnet" operating principle and all 11 per-dispatch model overrides across the four SKILL.md files were removed. Each dispatched agent now runs on its own frontmatter tier on Claude Code, or the host default elsewhere. This also restores the deliberate opus promotion of junior-developer, information-architect, and user-experience-designer that the overrides were silently undoing. Implements option O1 from docs/research/issue-78-model-specifier-portability.md. Contributed by @mxriverlynn in #86.
han-plugin-builder v2.0.1
The agent-model-selection.md guidance (han-plugin-builder/skills/guidance/references/agent-building-guidelines/agent-model-selection.md) now clarifies that the "always set model explicitly" rule scopes to agent definition files only, not to skill dispatch, so the planning-skill overrides are not reintroduced. Contributed by @mxriverlynn in #86.
Full changelog: https://github.com/testdouble/han/blob/v4.3.1/CHANGELOG.md#v431
Full Changelog: v4.3.0...v4.3.1
v4.3.0
han 4.3.0 teaches the coding-standard skill to cite code by durable, greppable anchors instead of volatile file:line references (han-coding 2.3.0), and applies a one-line wording fix to gap-analysis (han-core 2.0.2). han-planning, han-github, han-reporting, han-feedback, han-atlassian, han-linear, and han-plugin-builder are unchanged.
What's Changed
- docs: align PR template checklist with the count-free index convention by @taminomara in #81
- docs: fix stale long-form doc paths after the plugin-rename reorg by @taminomara in #80
- feat: coding standard durable references by @taminomara in #79
Issues closed
coding-standardskill generates standards that cite volatile codebase state, so produced standards go stale (#73) — opened by @taminomara, fixed in #79 by @taminomara; thanks to @mxriverlynn
han v4.3.0
The suite-level work is documentation and repo-root config. docs/agents/han-core/concurrency-analyst.md corrected its dispatch claims. docs/concepts.md, docs/quickstart.md, docs/skills/han-coding/coding-standard.md, docs/skills/han-reporting/stakeholder-summary.md, and docs/templates/coverage-rule.md got sizing-aware-list and count-free-index-convention fixes, plus stale long-form doc path corrections left over from the plugin-rename reorg (#80). .github/pull_request_template.md and CONTRIBUTING.md were aligned with the count-free index convention (#81). CLAUDE.md dropped CLAUDE.md itself from the list of places the doc-update skill needs to keep current. .claude-plugin/marketplace.json carries the per-plugin version syncs for this release.
han-coding v2.3.0
The coding-standard skill now generates standards that cite code by durable, greppable anchors instead of file:line references that go stale as the codebase moves. A new reference file han-coding/skills/coding-standard/references/durable-references.md holds the rule: numbered rules for deriving a greppable anchor (Rules 1 and 2, with an escalation path that flags a place for engineer review when it cannot be cleanly anchored), Rule 3 for writing "Applies To" as a membership criterion, and Rule 4 idioms for timeless phrasing.
In han-coding/skills/coding-standard/SKILL.md, the Step 4 han-core:codebase-explorer dispatch prompts now ask for a file path, a line range, and one or more greppable durable anchors per place (following Rules 1 and 2), and flag places that reach escalation for engineer review rather than returning an anchor. The standards/ADRs explorer asks for cross-references as a document path plus a stable section heading, and the merged context block gains a "Flagged candidates" bucket for places that could not be cleanly anchored. Step 6 reads and applies durable-references.md in its authoring mode throughout, writing "Applies To" as a membership criterion (Rule 3) and surfacing any flagged candidate with a recommended resolution instead of emitting a coarse or anchorless reference. The verification step adds a temporal-phrasing scan over the whole document, not just the citations, reframing temporal hits to the timeless property via the Rule 4 idioms and flagging anything that cannot be re-anchored. Index-file entry descriptions now follow Rule 3 as well. The output template han-coding/skills/coding-standard/references/template.md changed its Project-references bullet to pair a file path with a stable anchor. Contributed by @taminomara in #79.
han-core v2.0.2
The han-core/skills/gap-analysis/SKILL.md han-core:junior-developer actor-perspective sweep changed its trailing actor examples from "internal admins, auditors" to "internal services". Wording only, no behavior change.
Full changelog: https://github.com/testdouble/han/blob/v4.3.0/CHANGELOG.md#v430
Full Changelog: v4.2.0...v4.3.0
v4.2.0
han 4.2.0 ships a new code-overview skill (han-coding 2.2.0) and a Confluence-publishing wrapper for it (han-atlassian 2.2.0), simplifies the /update-pr-description output (han-github 2.1.0), and adds a description cross-reference to /project-documentation (han-core 2.0.1). han-planning, han-reporting, han-feedback, han-linear, and han-plugin-builder are unchanged.
What's Changed
- New skill /han-coding:code-overview by @mxriverlynn in #83
- Simplify the update-pr-description skill's output by @mxriverlynn in #84
han v4.2.0
The suite-level work is documentation. New long-form docs docs/skills/han-coding/code-overview.md and docs/skills/han-atlassian/code-overview-to-confluence.md were added for the two new skills, and the code-overview feature specification and its artifacts were filed under docs/plans/code-overview/ (feature-specification.md, artifacts/decision-log.md, artifacts/team-findings.md). A docs sweep applied follow-up edits across docs/: docs/skills/README.md, docs/choosing-a-han-plugin.md, docs/sizing.md, the long-form agent docs for codebase-explorer, information-architect, and junior-developer, and the long-form docs for update-pr-description, code-review, project-documentation, and project-discovery. The top-level CLAUDE.md "When to use which doc" list was greatly reduced (25e05bf), and a docs fix corrected the han-atlassian dependency phrasing and project-discovery scope (dcd260f). .claude-plugin/marketplace.json carries the per-plugin version syncs for this release.
han-coding v2.2.0
New skill: code-overview
A new skill code-overview produces a progressive-disclosure, understand-now overview of unfamiliar code or a pull request's changes: what it does, how it flows, and where to start. It writes the overview to a scratch file and changes no code. Added in han-coding/skills/code-overview/SKILL.md with the output template in han-coding/skills/code-overview/references/overview-template.md. The overview output forbids PR statistics, and a follow-up added an intro paragraph, a readability pass, and PR screenshots. han-coding/skills/code-review/SKILL.md gained a cross-reference pointing to the new skill. Contributed by @mxriverlynn in #83.
han-atlassian v2.2.0
New skill: code-overview-to-confluence
A new skill code-overview-to-confluence runs the core code-overview skill to produce the overview, then publishes it to a user-specified Confluence location through the Atlassian MCP server. Added in han-atlassian/skills/code-overview-to-confluence/SKILL.md. The han-atlassian/.claude-plugin/plugin.json description was updated to list the new skill. Contributed by @mxriverlynn in #83.
han-github v2.1.0
Simplified /update-pr-description output
The update-pr-description skill's generated PR description is now capped at 2-5 short paragraphs. The Summary section is the bolded TL;DR sentence, Behavior changes is its own section, and "What to look at first" appears only when the PR has more than roughly 8-10 files with significant code changes. The "Files of interest", "Test scenario changes", and "How this was tested" sections were dropped, the separate test-applicability step was removed, and han-github/skills/update-pr-description/references/formatting-rules.md was deleted. references/template.md and references/template-conformance.md were reworked to match. This is a backward-compatible refinement of the same skill, not a new capability. Contributed by @mxriverlynn in #84.
han-core v2.0.1
The project-documentation skill description gained a cross-reference clarifying that it does not produce an ephemeral, understand-now overview of code or a PR, pointing to the new code-overview skill instead. Description text only, no behavior change.
Full changelog: https://github.com/testdouble/han/blob/v4.2.0/CHANGELOG.md#v420
Full Changelog: v4.1.0...v4.2.0
v4.1.0
han 4.1.0 ships a new Confluence-publishing skill (han-atlassian 2.1.0) and teaches the /tdd skill to write a passing regression test when the work is a bug fix (han-coding 2.1.0), plus a description cross-reference fix to /plan-a-phased-build (han-planning 2.0.1). han-core, han-github, han-reporting, han-feedback, han-linear, and han-plugin-builder are unchanged.
What's Changed
- TDD Skill: Add failure characterization by @mxriverlynn in #76
- han-atlassian: add investigate-to-confluence skill by @mxriverlynn in #77
Issues closed
- tdd: error characterization tests assert the error is raised instead of asserting correct behavior that fails for the expected reason (#74) — opened by @mxriverlynn, fixed in #76 by @mxriverlynn
- han-atlassian: add an investigate-to-confluence skill that wraps investigate and publishes results to Confluence (#75) — opened by @mxriverlynn, fixed in #77 by @mxriverlynn
han v4.1.0
The suite-level work is documentation. A docs sweep applied follow-up edits across docs/: the long-form agent docs for data-engineer, devops-engineer, on-call-engineer, and user-experience-designer (sibling-agent reciprocity, which agents dispatch them, and operator-facing detail), docs/concepts.md, docs/choosing-a-han-plugin.md, docs/skills/README.md, and the long-form docs for issue-triage, stakeholder-summary, and tdd. The new long-form doc docs/skills/han-atlassian/investigate-to-confluence.md was added for the new skill below, and the /investigate write-up backing the /tdd change was filed at docs/plans/tdd-failure-characterization/investigation.md.
han-atlassian v2.1.0
New skill: investigate-to-confluence
A new skill investigate-to-confluence runs the core /investigate skill to root-cause a bug or unexpected behavior, writes the investigation report to a /tmp/ file (changing no code), shows it for review, then publishes that single report as one Confluence page to a user-specified location through /markdown-to-confluence. Added in han-atlassian/skills/investigate-to-confluence/SKILL.md, contributed by @mxriverlynn in #77.
Declared han-planning and han-coding dependencies
han-atlassian/.claude-plugin/plugin.json now declares han-planning and han-coding alongside han-core. The plugin's wrapper skills run skills from each, so all three are required dependencies; the manifest previously declared only han-core.
han-coding v2.1.0
/tdd writes regression tests for bug fixes
The /tdd skill now distinguishes net-new behavior from a fix to existing broken behavior, and for the fix case it drives the test toward what the code should do (red while the bug is present, green once the fix lands) rather than toward the error the bug currently raises. The change lands at four points in han-coding/skills/tdd/SKILL.md (the Step 1 scope report, the Step 2 test list, the Red-phase pre-run assertion-direction check, and the first-run-pass diagnostic) and is reinforced in three references: bdd-framing.md sharpens the Then clause and adds the anti-pattern of asserting the buggy behavior, failure-modes.md adds a named failure mode for asserting the bug instead of the fix, and tdd-loop.md points its observed-failure gate at the new diagnostic. The carve-out preserves legitimate assertRaises-style tests where raising is the specified desired behavior. Contributed by @mxriverlynn in #76.
han-planning v2.0.1
The /plan-a-phased-build skill description gained a cross-reference clarifying that it does not break a plan into independently-grabbable work items, pointing to /plan-work-items instead. Description text only, no behavior change.
Full changelog: https://github.com/testdouble/han/blob/v4.1.0/CHANGELOG.md#v410
Full Changelog: v4.0.0...v4.1.0