Skip to content
Development
Skill

/plan-work-items

Break a trusted implementation plan (or other provided context) into independently-grabbable, atomic work items, written to a single work-items.md file. Use when the user wants to convert a plan into work items, create implementation tickets or tasks, divide a plan into work

From plugin
han
26747 skills31 agents
Install
$ npx -y skills add testdouble/han --skill plan-work-items --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/plan-work-items

Context preview

The summary Claude sees to decide when to auto-load this skill.

Break a trusted implementation plan (or other provided context) into independently-grabbable, atomic work items, written to a single work-items.md file. Use when the user wants to convert a plan into work items, create implementation tickets or tasks, divide a plan into work

SKILL.md

plan-work-items.SKILL.md
name: "plan-work-items"
description: >
  Break a trusted implementation plan (or other provided context) into independently-grabbable, atomic work items,
  written to a single work-items.md file. Use when the user wants to convert a plan into work items, create
  implementation tickets or tasks, divide a plan into work units, or break the plan down into grabbable pieces. Do not
  use when there is no implementation plan yet or the plan is not yet trusted — use plan-implementation to produce the
  plan or iterative-plan-review to harden it first. Does not sequence work into demoable delivery phases — use
  plan-a-phased-build for that. Does not write code — use tdd to implement a work item.
argument-hint: "[implementation plan path or feature name, optional; output folder, optional]"
allowed-tools:
  Read, Write, Edit, Glob, Grep, Agent, Bash(find *), Bash(mkdir *), Bash(cp *),
  Bash(bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh")

Project Context

  • CLAUDE.md: !`find . -maxdepth 1 -name "CLAUDE.md" -type f`
  • project-discovery.md: !`find . -maxdepth 3 -name "project-discovery.md" -type f`
  • feature-implementation-plan.md: !`find . -maxdepth 5 -name "feature-implementation-plan.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.

Plan Work Items

Break an implementation plan into vertical slices (tracer bullets) and write them as work items to a single `work-items.md` file.

This skill mostly coordinates: reading the boundary this work descends from, locating the plan or context, resolving where the file goes, printing the breakdown, writing the work-items file. It runs autonomously apart from two named turns: the confirmation turn it takes when no boundary record exists, and the single stop for an input only the user can supply. Step 5 is where the judgement comes into play, in dividing up the plan.

Operating Principles

  • **Run autonomously, with two named exceptions.** After the initial request, run end to end without pausing for human

confirmation. When a decision has a reasonable default (where the file goes, how the plan divides), make it, state it, and proceed. Print the work item breakdown for visibility, but never gate on approval to continue. Two situations are exceptions, and they are the only ones:

  • **The confirmation turn**, taken when no boundary record exists, per Step 0.
  • **The single stop**, taken once when an input only the user can supply is missing and its absence degrades the work

items, per [operator-escalation-rule.md](../../references/operator-escalation-rule.md).

Beyond those two, stop only when the skill genuinely cannot continue: there is no plan or context to work from at all. An expected artifact nobody can produce right now is recorded as a gap and does not stop the run.

  • **One work-items file, no repository awareness.** This skill produces exactly one `work-items.md`. Beside it, the run

also writes or updates the boundary record and persists any visual material it receives, per Step 0 and [planning-boundary-rule.md](../../references/planning-boundary-rule.md); those are companion artifacts, not a second breakdown. The skill does not split work by repository, count repositories, or reason about cross-repository integration. The breakdown is driven only by the plan or context it is given.

  • **Save incrementally — never lose work.** Write the work-items file as soon as the title and intro are drafted, then

append each work item as it is finalized. Do not buffer the whole document in conversation memory and write it at the end.

Rules

  • Do NOT modify, annotate, or comment on the source implementation plan or context. It is read-only input. The boundary

record and the visual-material folder are the exception: those the run writes, per Step 0.

  • **Every work item carries a justification.** It is a named field of its own, `**Justification.**`, placed immediately

before the `**References.**` block, never a line of summary prose. It names one of three things: the work-item language it descends from, the visual material the operator attached, or the asked-for work it is a necessity of. A work item that cannot fill it does not go in the breakdown; it goes in the cut list. Full rule in [scope-justification-rule.md](../../references/scope-justification-rule.md).

  • **Unjustifiable work goes in a visible cut list**, in the work-items file and in the closing summary, naming what the

item would have done in plain language and why it was cut. Do not search outward to a linked, sibling, or closed item to find a justification for it.

  • Each work item is a **vertical slice**: a narrow but complete path through the relevant layers (schema, API, UI,

tests) that is demoable or verifiable on its own. Not a layer, not a stub.

  • **Summary and acceptance criteria drive the item; criteria render at the bottom.** Draft each work item's

plain-language summary first and its acceptance criteria immediately after — before any detail — so every remaining block is written in support of a criterion, and detail that supports no criterion is cut. In the rendered work item, the summary opens and the acceptance criteria sit at the bottom, immediately before Depends on. Test expectations live inside the acceptance criteria; there is no separate Tests block.

  • **The summary is plain context, three to five very sho
Read more
Ships withhan

Han is a suite of AI skills and agents for solo (or small-team) product engineers.

Get the whole plugin

Other skills on han.