From groundwork
Generates actionable implementation tasks from product specs, architecture, and design documents in Groundwork projects.
npx claudepluginhub etr/groundwork[filter]# Task Generation Skill
Translates product specs and architecture into actionable implementation tasks.
## Pre-flight: Model Recommendation
**Your current effort level is `{{effort_level}}`.**
Skip this step silently if effort is `high` or higher AND you are Opus (1M context).
If effort is below `high`, you MUST show the recommendation prompt — regardless of model.
If you are not Opus (1M context), you MUST show the recommendation prompt - regardless of effort level.
Otherwise → use `AskUserQuestion`:
If the user selects "Cancel — I'll switch first": output the switching commands ab.../create-tasksBreak an Epic (or all Epics under a PRD) into atomic Task issues and link them back.
/create-tasksCreate the task list and task files for the implemenation plan. DO NOT use a subagent unless you are explicitly prompted to do so.
Translates product specs and architecture into actionable implementation tasks.
Your current effort level is {{effort_level}}.
Skip this step silently if effort is high or higher AND you are Opus (1M context).
If effort is below high, you MUST show the recommendation prompt — regardless of model.
If you are not Opus (1M context), you MUST show the recommendation prompt - regardless of effort level.
Otherwise → use AskUserQuestion:
{
"questions": [{
"question": "Do you want to switch? Task granularity judgment and vertical slicing decisions determine execution success.\n\nTo switch: cancel, run `/model opus[1m]` and `/effort high`, then re-invoke this skill.",
"header": "Recommended: Opus (1M context) at high effort",
"options": [
{ "label": "Continue" },
{ "label": "Cancel — I'll switch first" }
],
"multiSelect": false
}]
}
If the user selects "Cancel — I'll switch first": output the switching commands above and stop. Do not proceed with the skill.
Before loading specs, ensure project context is resolved:
.groundwork.yml exist at the repo root?
{{project_name}} non-empty?
Skill(skill="groundwork:project-selector") to select a project, then restart this skill.{{project_name}}, specs at {{specs_dir}}/..groundwork.yml).AskUserQuestion:
"You're working from
<cwd>(inside [cwd-project]), but the selected Groundwork project is [selected-project] ([selected-project-path]/). What would you like to do?"
- "Switch to [cwd-project]"
- "Stay with [selected-project]" If the user switches, invoke
Skill(skill="groundwork:project-selector").
{{specs_dir}}/ paths will resolve to the correct location.{{specs_dir}}/product_specs.md (PRD with EARS requirements){{specs_dir}}/architecture.md (architecture with decision records){{specs_dir}}/design_system.md (design system with DP/BRD/UXD decisions) - optional{{specs_dir}}/tasks/ directory with per-milestone subdirectories:
specs/tasks/
├── _index.md # Overview, milestone summary, dependency graph
├── M1-core-auth/
│ ├── TASK-001.md
│ ├── TASK-002.md
│ └── TASK-003.md
├── M2-upload/
│ ├── TASK-004.md
│ └── TASK-005.md
└── parking-lot.md # Deferred tasks
Important: When asking questions to the user (milestone validation, task review, scope clarification), always use the AskUserQuestion tool with appropriate options.
Read the input specs (each may be a single file or directory) and extract:
From PRD:
{{specs_dir}}/product_specs.md{{specs_dir}}/product_specs/ (aggregate all .md files)From Architecture:
{{specs_dir}}/architecture.md{{specs_dir}}/architecture/ (aggregate all .md files)From Design System (if exists):
{{specs_dir}}/design_system.mdDetection: Check for file first (takes precedence), then directory. When reading a directory, aggregate all .md files recursively with _index.md first, then numerically-prefixed files, then alphabetically.
If PRD or architecture is missing, prompt user:
"I need both the PRD and architecture to generate tasks.
- PRD missing? Run
/groundwork:design-product- Architecture missing? Run
/groundwork:design-architecture"
If design system exists, incorporate design context into UI/frontend tasks.
Before defining milestones, check if tasks already exist:
{{specs_dir}}/tasks/_index.md or {{specs_dir}}/tasks.mdIf existing tasks found:
If no existing tasks: Proceed to define milestones from scratch.
If adding to existing project: Either add tasks to a user-selected existing milestone directory, or create a new milestone directory continuing the sequence (e.g., M6-feature-name/).
If starting fresh: Establish product milestones - points where the application can be assessed by a user.
Milestone principles:
Example milestone progression:
M1: Core Authentication
→ User can sign up, log in, see empty dashboard
M2: Upload & Verification
→ User can upload images, complete identity verification
M3: Model Training
→ User can initiate training, see progress, view completion
M4: Basic Generation
→ User can generate images with their model
M5: Billing Integration
→ User can subscribe, see quota, pay for overages
Present proposed milestones to user for feedback before generating tasks.
Presentation style:
For major technologies in the architecture, gather implementation guidance before generating tasks.
For each significant technology in the architecture:
Invoke the researcher agent:
Agent(
subagent_type="groundwork:researcher:researcher",
prompt="Research Topic: [technology from architecture]
Research Questions:
- What is the standard project structure?
- What are idiomatic patterns for [component type]?
- What are common implementation mistakes?
- What setup/configuration pitfalls exist?
Project Context: [from PRD]
Architecture Decisions: [relevant DRs]"
)
Use research findings to:
Research Integration: When generating tasks in Step 4, incorporate research findings:
For each milestone, generate tasks using the format specified in the "Required Task Format" section below.
Every task MUST follow this exact format to ensure compatibility with /groundwork:work-on-next-task and other workflows:
### TASK-NNN: [Task Title]
**Milestone:** M[X] - [Milestone Name]
**Component:** [Component from architecture]
**Estimate:** S | M | L | XL
**Goal:**
[One sentence describing the outcome]
**Action Items:**
- [ ] [Action 1]
- [ ] [Action 2]
- [ ] [Action 3]
**Dependencies:**
- Blocked by: [TASK-XXX, TASK-YYY or None]
- Blocks: [TASK-ZZZ or None]
**Acceptance Criteria:**
- [Testable criterion 1]
- [Testable criterion 2]
**Related Requirements:** PRD-XXX-REQ-NNN
**Related Decisions:** DR-NNN, DP-NNN, BRD-NNN, UXD-NNN
**Status:** Not Started | In Progress | Complete | Blocked
| Field | Required | Valid Values |
|---|---|---|
| Task ID | Yes | TASK-NNN (3+ digit number) |
| Milestone | Yes | M[N] - [Name] |
| Component | Yes | From architecture document |
| Estimate | Yes | S, M, L, or XL |
| Goal | Yes | Single sentence |
| Action Items | Yes | Checkbox list |
| Dependencies | Yes | Task IDs or "None" |
| Acceptance Criteria | Yes | Testable statements |
| Related Requirements | Recommended | PRD IDs |
| Related Decisions | Recommended | DR/DP/BRD/UXD IDs |
| Status | Yes | Exactly one of the four values |
**Status:** Not Started - Task hasn't begun**Status:** In Progress - Currently being worked on**Status:** Complete - Task finished and verified**Status:** Blocked - Cannot proceed due to dependenciesImportant: /groundwork:work-on-next-task parses these status values exactly. Any variation will cause parse errors.
Target: 1-3 days of work per task for an experienced developer.
Prefer tasks that deliver working functionality over horizontal layers:
❌ Horizontal (avoid):
✅ Vertical (prefer):
Each criterion must be something that can be verified - checked or tested, not vague.
Good criteria (verifiable):
Bad criteria (vague):
Standard criteria to include:
Create a dependency graph showing:
Format as both:
M1: Auth
├── TASK-001: Cognito setup ─────────────────────┐
├── TASK-002: Auth API (depends: 001) ───────────┼──┐
├── TASK-003: Login UI (depends: 002) ───────────┘ │
└── TASK-004: Session management (depends: 002) ────┘
M2: Upload
├── TASK-005: S3 bucket setup (parallel with M1)
├── TASK-006: Upload API (depends: 002, 005) ────┐
└── TASK-007: Upload UI (depends: 006) ──────────┘
Present the complete task list organized by milestone. Ask:
"Here's the task breakdown for [Milestone X].
- Are the task sizes appropriate for your team?
- Any missing tasks or unnecessary ones?
- Do the dependencies look right?
- Should any tasks be split or combined?"
Iterate until user approves, then write task files to {{specs_dir}}/tasks/.
Output structure:
{{specs_dir}}/tasks/_index.md with overview, milestone summary table, dependency graph, task status table, and critical path{{specs_dir}}/tasks/M{N}-{slug}/ (e.g., M1-core-auth/){{specs_dir}}/tasks/M{N}-{slug}/TASK-{NNN}.md{{specs_dir}}/tasks/parking-lot.md for deferred tasks (if any)Task status table in _index.md (required — used by /groundwork:work-on-next-task to find work without reading every task file):
### Task Status
| # | Task | Milestone | Status | Blocked by |
|---|------|-----------|--------|------------|
| TASK-001 | Auth setup | M1 | Not Started | None |
| TASK-002 | Login UI | M1 | Not Started | TASK-001 |
If adding to existing tasks:
_index.md — add new rows to the status table, add the new milestone to the summary table, extend the dependency graphProgressive presentation:
After user approves the task list and before writing final version:
You MUST call the Skill tool now: Skill(skill="groundwork:task-validation-loop")
Do NOT skip validation or declare the task list complete without running this. It ensures PRD coverage, architecture alignment, and design system compliance.
Wait for validation loop to pass before proceeding.
If validation finds issues:
After writing the tasks document, suggest the next workflow step:
"Task list created and validated with [N] tasks across [M] milestones. PRD coverage: [X]%
Next step: Run
/groundwork:work-on-next-taskto begin implementation, or/groundwork:work-on Nto work on a specific task."
Common task types to ensure coverage:
| Category | Examples |
|---|---|
| Infrastructure | IaC setup, CI/CD pipeline, environments |
| Data | Schema design, migrations, seed data |
| Backend | API endpoints, business logic, integrations |
| Frontend | Components, pages, state management |
| Design System | Token setup, component styling, theme implementation |
| Auth | Identity setup, authorization rules |
| Testing | Unit tests, integration tests, E2E |
| Observability | Logging, metrics, alerts |
| Documentation | API docs, runbooks, README |
| Security | Pen testing, security review, hardening |
When {{specs_dir}}/design_system.md exists, include design-specific tasks:
| Task Type | Related Decisions | Example |
|---|---|---|
| Token setup | DP-NNN | Configure CSS variables/Tailwind theme |
| Color system | BRD-001-005 | Implement brand palette, semantic colors |
| Typography | BRD-006-008 | Font loading, type scale utilities |
| Component styling | BRD-NNN, UXD-NNN | Button variants, form controls |
| Loading states | UXD-003-004 | Skeleton screens, spinners |
| Error handling | UXD-005-006 | Toast system, error boundaries |
| Empty states | UXD-007 | First-run, no-data components |
| Responsive layout | UXD-010-011 | Breakpoint utilities, layout adaptation |
| Motion system | UXD-012 | Animation utilities, reduced motion |
Reference design decisions in task Related Decisions field to ensure traceability.
${CLAUDE_PLUGIN_ROOT}/references/tasks/tasks-template.md - Template for tasks document