From linear-prism
Guides task boundary decisions when splitting requirements into implementation-ready units. Use when determining task size, dependencies, or design doc scope.
npx claudepluginhub shinpr/claude-code-workflows --plugin linear-prismThis skill uses the workspace's default tool permissions.
Defines criteria for splitting requirements into implementation tasks with explicit Design Doc boundaries and dependency graphs. Used by the task-decomposer-linear agent during decompose and revise modes.
Breaks specs into small, ordered, verifiable tasks with acceptance criteria using vertical slicing and dependency graphs. Use for large tasks, scope estimation, or parallel work.
Decomposes overwhelming development tasks into manageable units respecting cognitive limits, using INVEST criteria, vertical slices, spikes, and dependency strategies. Ideal for epics, estimation blocks, scope creep, or unclear starts.
Decomposes PRD/TRD into value-driven implementation tasks delivering working increments with measurable success criteria, dependencies, risks, and sizing (<2 weeks). Use after TRD/dependency map, before subtasks.
Share bugs, ideas, or general feedback.
Defines criteria for splitting requirements into implementation tasks with explicit Design Doc boundaries and dependency graphs. Used by the task-decomposer-linear agent during decompose and revise modes.
A value-unit task delivers one coherent, verifiable outcome:
Each value-unit task satisfies all of the following:
| Type | When to use | Example |
|---|---|---|
value_unit | Delivers one coherent user-facing or system-facing value | "User can submit review from Word add-in" |
shared_prerequisite | Two or more later tasks depend on the same missing foundation at a shared boundary | "Define shared API contract for review requests" |
adr | A technical decision spans multiple tasks and lacks a recorded resolution | "Select message queue technology for async processing" |
Create a shared_prerequisite task only when ALL conditions hold:
When the split is ambiguous, keep the work inside the first affected value-unit task and record the uncertainty in dependency_notes.
Select when:
Each task delivers one end-to-end feature across all affected layers.
Select when:
Foundation tasks precede dependent feature tasks in the dependency graph.
Select when:
Combine: extract shared foundation as shared_prerequisite, then slice remaining features vertically.
A well-sized task satisfies all of the following:
Indicators:
Indicators:
Estimated file count can inform sizing when concrete enough to assess:
This indicator is unreliable at PRD or early requirement stage. Prefer the primary indicators above.
| Type | Description | Sequencing |
|---|---|---|
| Data dependency | Task B requires a schema, contract, or interface from Task A | A completes before B starts |
| Build dependency | Task B requires compiled output or deployed artifact from Task A | A completes before B starts |
| Knowledge dependency | Task B benefits from insights in Task A but can proceed with assumptions | A recommended before B; B records assumptions if proceeding |
| ADR dependency | Task B implements a design that depends on an unresolved technical decision | ADR task completes before B's Design Doc |
When a task spans multiple services:
affected_services.design_doc_units.dependency_notes (which service boundary must stabilize first).One Design Doc covers one service's scope within one task:
Every task entry uses this fixed field order:
| Field | Required | Description |
|---|---|---|
task_id | Yes | Sequential identifier (T1, T2, ...) |
task_type | Yes | value_unit, shared_prerequisite, or adr |
title | Yes | Imperative phrase describing the deliverable |
goal | Yes | One sentence: what is true after this task completes |
affected_services | Yes | List of service names touched by this task |
design_doc_units | Yes | List of {service, doc_scope} pairs |
depends_on | Yes | List of task_ids (empty list if none) |
dependency_notes | Yes | List of strings explaining each dependency reason |
assumptions | Yes | List of assumptions specific to this task (empty list if none). Each assumption belongs to exactly one task. |
key_decisions | Yes | List of decisions from dialog that constrain this task (empty list if none). Each decision belongs to exactly one task. |