han-release
Cut a Han release: update CHANGELOG.md with the changes since the last release, bump and tag every plugin that changed as…
Break a work-items.md file (produced by /plan-work-items) into independently-grabbable GitHub issues, one per slice, in each slice's target repo. Use when you want to turn a work-items file into GitHub issues, publish work items as issue tickets, or create implementation tickets
Claude Code
$ npx -y skills add testdouble/han --skill work-items-to-issues --agent claude-code
Codex
$ npx skills add testdouble/han --skill work-items-to-issues -a codex -y
Cursor
$ npx skills add testdouble/han --skill work-items-to-issues -a cursor -y
Gemini CLI
$ npx skills add testdouble/han --skill work-items-to-issues -a gemini-cli -y
GitHub Copilot
$ npx skills add testdouble/han --skill work-items-to-issues -a github-copilot -y
OpenCode
$ npx skills add testdouble/han --skill work-items-to-issues -a opencode -y
Windsurf
$ npx skills add testdouble/han --skill work-items-to-issues -a windsurf -y
name: work-items-to-issues
description: >
Break a work-items.md file (produced by /plan-work-items) into independently-grabbable GitHub issues, one per slice,
in each slice's target repo. Use when you want to turn a work-items file into GitHub issues, publish work items as
issue tickets, or create implementation tickets that can be worked on and tracked on GitHub. Does not produce the
work-items file itself — use plan-work-items to break a plan into work items first. Does not review code or post pull
request comments — use post-code-review-to-pr for that.
argument-hint:
"[path to work-items.md] [target repo(s), e.g. org/repo] [--label name (optional)] [--assignee user (optional)]"
allowed-tools:
Read, Write, Edit, Glob, Grep, Bash(gh *), Bash(git *), Bash(find *),
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.
Take an already-broken-down `work-items.md` file (produced by `/plan-work-items`) and publish each slice as a GitHub issue in its target repo.
The breakdown work — drafting slices, assigning symbolic IDs, specifying dependencies, inventorying references — has already been done upstream. This skill's job is to map each slice to its target repo, validate the format, write a per-repo work-items file alongside the source, and run the publish pipeline.
never as a native blocker link.
repair.
`W-N` for every slice) and per-repo prefixes (e.g., `V2-N` backend, `W-N` frontend, `EV-N` events). The publish scripts accept any uppercase prefix.
schema docs, runbooks, ADRs, coding standards. Issues that consume an HTTP endpoint or event payload MUST link the contract section that defines it.
same-target-repo raw URLs. See [references/screenshot-embed-rules.md](./references/screenshot-embed-rules.md).
decision logs, review findings, team findings, facilitation summaries, gap analyses, and anything under an `artifacts/` subfolder of the plan that is not a contract or design reference. Full include/exclude list in [references/reference-artifact-inventory.md](./references/reference-artifact-inventory.md).
If the path is not provided, ask for it. The input is a single `work-items.md` produced by `/plan-work-items`. Read it.
If the user named a target repo (or repos), a label, or an assignee, note them for Steps 2 and 6. By default, issues are created with **no label and no assignee** — only apply a label or assignee when the user explicitly asked for one.
Determine which repo each slice belongs to. Use both signals and reconcile them:
ship to which repo (e.g., "W-1 through W-4 ship to `acme-api`. W-5 through W-9 ship to `acme-web`."). Parse this for the mapping.
reference files in the target repo. Path roots map cleanly: `acme-api/...` → `acme/acme-api`, `acme-web/...` → `acme/acme-web`, `acme-events/...` → `acme/acme-events`. Use this to verify the prose and to assign any slice the prose doesn't cover.
If the prose and the file-path evidence disagree for a slice, surface the conflict to the user before proceeding.
Check the work-items file against the format invariants in [references/issue-template.md](./references/issue-template.md) and [references/work-items-file-format.md](./references/work-items-file-format.md):
headings annotated as `## <SYM-N> (#NNN) — <title>` are valid too).
(under the map from Step 2).
`https://github.com/<org>/<target-repo>/raw/<branch>/.github/issue-assets/<feature-slug>/<SYM-N>/<file>.<ext>` against the target repo's default branch and a real file under `<plan-folder>/ui-designs/`, whose extension is one of the accepted set (`png`, `jpg`, `jpeg`, `gif`, `webp`, `svg`, `pdf`) and is copied into the URL unchanged. `<feature-slug>` is the kebab-cased basename of the plan folder.
Cut a Han release: update CHANGELOG.md with the changes since the last release, bump and tag every plugin that changed as…
Update Han plugin documentation so every skill, agent, guidance doc, index, and cross-reference is current and accurate. On a…
Produces a progressive-disclosure overview of unfamiliar code or a pull request's changes with code-overview and publishes the…
Runs an evidence-based investigation of a bug, failure, or unexpected behavior with investigate and publishes the resulting…
Publishes a local Markdown file to a user-specified Confluence location, creating a new page or updating an existing one through…
Builds a feature specification from scratch with plan-a-feature and publishes it to a user-specified Confluence location, posting…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.