This skill should be used when the user asks to "break down this initiative", "decompose into tasks", "create tasks from initiative", "how to size tasks", "when to decompose", "vertical slices",...
This skill guides the process of breaking higher-level work into actionable lower-level items.
Vision: "Make X a better experience"
ā
Initiative: "Reduce page load time by 50%"
ā
Tasks: "Profile slow queries", "Add caching layer", "Optimize images"
Each level breaks work above it into concrete, actionable pieces at appropriate scope.
Decompose ahead of capacity, not upfront:
Avoid: Decomposing everything upfront (waterfall). Have work ready when capacity frees up, not entire project planned before starting.
Initiatives have an explicit "decompose" phase:
discovery ā design ā ready ā decompose ā active ā completed
The decompose phase creates a visible buffer:
Don't skip to decompose early. Premature decomposition leads to tasks that solve wrong problems, rework when design changes, wasted effort.
Size by scope and impact, not implementation time:
If a task has meaningful subtasks, it should probably be an initiative.
If it doesn't change what system can do, it might just be a task.
Break by user-visible functionality:
Initiative: "User authentication"
āāā Task: "Login flow"
āāā Task: "Registration flow"
āāā Task: "Password reset"
āāā Task: "Session management"
Each task delivers something user can see/use.
Break by technical component:
Initiative: "User authentication"
āāā Task: "Database schema"
āāā Task: "API endpoints"
āāā Task: "Frontend components"
āāā Task: "Integration tests"
Creates dependencies between tasks. Prefer vertical slices.
Break by unknowns:
Initiative: "ML recommendation engine"
āāā Task: "Spike: Evaluate model options" (high uncertainty)
āāā Task: "Build training pipeline" (after spike)
āāā Task: "Integration with product" (low uncertainty)
Address risky/uncertain work first to fail fast.
Break by deliverable checkpoints:
Initiative: "Platform migration"
āāā Task: "Phase 1: Read path on new platform"
āāā Task: "Phase 2: Write path on new platform"
āāā Task: "Phase 3: Deprecate old platform"
āāā Task: "Phase 4: Cleanup"
Each milestone independently valuable and deployable.
Decomposition is the single biggest source of invented shorthand: you draft five tasks in a message, call them "Task 1" through "Task 5", and those labels outlive the message.
While the tasks are still proposals, name them by full title in quotes and say they aren't created yet:
Proposed (not yet created): "Login flow", "Registration flow", "Password reset", "Session management".
Do not assign an interim ID ā not T1, not "task A", not a placeholder short code to be swapped later. Numbers in a list are for the user to answer against in that message ("re: 3, split it"); they are not identifiers and don't survive into the next message, a document, or a commit.
The moment you call create_document, the tool result gives you the real short code. From then on the task's name is that short code, and the working title is just its title. Never predict what a short code will be ā the counter is Metis's, not yours.
A slice is a shape, not a name. "Vertical slice" describes how the work was cut, the way "horizontal layer" and "risk-first" do. It is not an identifier. Labelling the cuts "Slice 1" through "Slice 5" while drafting, and then writing those labels into the initiative's Implementation Plan, leaves the plan referring to five entities that exist nowhere -- no short code, no phase, nothing that can be completed. A slice becomes a task; its name is that task's short code.
The same applies to sequencing. "Phase 1 tasks", "the first batch", "the DB workstream" are entities nothing in Metis holds; they die with the conversation while people keep referring to them. Express ordering as a dependency between short codes and record it in the initiative's implementation plan.
The implementation plan is written in short codes. Every item in it names a real task, or a quoted title for a task not yet created. Never write a short code into the plan that you have not just created or just read back -- a plan citing PROJ-T-0012 for a task that was never created is worse than a vague one, because it looks like it resolves.
See the metis-vocabulary skill for the full rules.
Good decomposition - each child item:
ste100-writing skill.Bad decomposition smells:
| Mistake | Problem | Fix |
|---|---|---|
| Decomposing too early | Tasks solve wrong problem | Stay in discovery/design until approach clear |
| Decomposing too late | Initiative active with no tasks | Decompose before moving to active |
| Wrong granularity | Tasks that are initiatives or vice versa | Apply scope heuristics |
| Missing alignment | Tasks don't contribute to initiative | Each task needs obvious connection to parent |
Once the tasks exist, run one bounded review over them as a set with the grill-decomposition skill (/grill-decomposition PROJ-I-0001). It checks slice boundaries, ordering, verifiable acceptance criteria, and scope leaks, and writes the answers into the task documents. Do this before the initiative moves to active. If the review keeps surfacing design questions, that is a signal to go back to grill-initiative, not to press on.
For detailed decomposition patterns and examples:
references/decomposition-patterns.md - Complete pattern catalog with examples