agentleFS
etretr/groundwork/skills/create-tasks/SKILL.md

create-tasks

Skill45 starsChanged 4 days agoMITView on GitHub

Generate implementation tasks from architecture document. Usage /groundwork:create-tasks

7 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

49 rules. 0 are common, 32 are distinctive, and 17 are very specific to this project.

  • 0

    Common

    Most of the 7 edited versions we read keep these.

  • 32

    Distinctive

    This author's own choices. Worth a look.

  • 17

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    If effort is low or medium (i.e.

    line 17
  2. Distinctive:

    If you are not Opus (1M context), you MUST show the recommendation prompt - regardless of effort level.

    line 18
  3. Distinctive:

    If the user selects "Cancel — I'll switch first": output the switching commands above and stop.

    line 36
  4. Very specific:

    If yes → Is {{project_name}} non-empty?

    line 43
  5. Very specific:

    If empty → Invoke Skill(skill="groundwork:select-project") to select a project, then restart this skill.

    line 44
  6. Very specific:

    If set → Project is {{project_name}}, specs at {{specs_dir}}/.

    line 45
  7. Distinctive:

    If no → Continue (single-project repo).

    line 46
  8. Distinctive:

    If CWD is the repo root → fine, proceed.

    line 49
  9. Very specific:

    Check which project's path CWD falls inside (compare against all projects in .groundwork.yml).

    line 50
  10. Distinctive:

    If CWD is inside the selected project's path → fine, proceed.

    line 51
  11. Very specific:

    If CWD is inside a different project's path → warn via AskUserQuestion:

    line 52
  12. Very specific:

    If the user switches, invoke Skill(skill="groundwork:select-project").

    line 56
  13. Distinctive:

    If CWD doesn't match any project → proceed without warning (shared directory).

    line 57
  14. Distinctive:

    Load Context: - Read PRD and architecture

    line 82
  15. Very specific:

    Important: When asking questions to the user (milestone validation, task review, scope clarification), always use the AskUserQuestion tool …

    line 88
  16. Distinctive:

    Read the input specs (each may be a single file or directory) and extract:

    line 92
  17. Distinctive:

    Use for: Design-related tasks, component styling tasks, accessibility requirements

    line 107
  18. Very specific:

    Detection: Check for file first (takes precedence), then directory.

    line 109
  19. Distinctive:

    If PRD or architecture is missing, prompt user:

    line 111
  20. Distinctive:

    If design system exists, incorporate design context into UI/frontend tasks.

    line 116
  21. Distinctive:

    Before defining milestones, check if tasks already exist:

    line 120
  22. Very specific:

    Check for {{specs_dir}}/tasks/_index.md or {{specs_dir}}/tasks.md

    line 122
  23. Distinctive:

    If found, read to understand existing milestones, task numbering, and status

    line 123
  24. Distinctive:

    Ask: "Should this new work be added to an existing milestone, or should I create a new milestone M6?"

    line 130
  25. Distinctive:

    Use multiple-choice questions to validate milestone scope (e.g., "Should M1 include: A) just signup, B) signup + login, C) full auth flow?")

    line 168
  26. Distinctive:

    Use research findings to:

    line 192
  27. Distinctive:

    Add specific action items based on best practices

    line 194
  28. Distinctive:

    Add "setup correctly" tasks for technologies with gotchas

    line 196
  29. Distinctive:

    When generating tasks in Step 4, incorporate research findings:

    line 199
  30. Distinctive:

    Add explicit setup/configuration tasks when research reveals gotchas

    line 202
  31. Distinctive:

    Use recommended project structure to inform task boundaries

    line 203
  32. Very specific:

    Every task MUST follow this exact format to ensure compatibility with /groundwork:work-on-next-task and other workflows:

    line 211
  33. Very specific:

    Prefer tasks that deliver working functionality over horizontal layers (the thin vertical slice principle — …

    line 277
  34. Distinctive:

    Only create tasks for committed scope, not speculative features

    line 297
  35. Distinctive:

    If unsure whether a task is needed, defer it to a future milestone

    line 299
  36. Distinctive:

    Ask: "Is this task essential for the milestone, or is it gold-plating?"

    line 300
  37. Distinctive:

    Always end with: "Typecheck passes"

    line 320
  38. Distinctive:

    Create a dependency graph showing:

    line 325
  39. Very specific:

    Create or update {{specs_dir}}/tasks/_index.md with overview, milestone summary table, dependency graph, task status table, and critical …

    line 360
  40. Very specific:

    Write one file per task: {{specs_dir}}/tasks/M{N}-{slug}/TASK-{NNN}.md

    line 362
  41. Very specific:

    Write or update {{specs_dir}}/tasks/parking-lot.md for deferred tasks (if any)

    line 364
  42. Very specific:

    Update _index.md — add new rows to the status table, add the new milestone to the summary table, extend the dependency graph

    line 377
  43. Distinctive:

    Do NOT regenerate or modify existing milestone directories or task files

    line 379
  44. Distinctive:

    Wait for approval on each milestone before presenting the next

    line 383
  45. Distinctive:

    After user approves the task list and before writing final version:

    line 388
  46. Distinctive:

    Do NOT skip validation or declare the task list complete without running this.

    line 392
  47. Distinctive:

    If validation finds issues:

    line 396
  48. Distinctive:

    After writing the tasks document, suggest the next workflow step:

    line 403
  49. Very specific:

    When {{specs_dir}}/design_system.md exists, include design-specific tasks:

    line 429

“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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, xhigh, or max (the scale is low < medium < high < xhigh < max, so xhigh and max are already above high) AND you are Opus (1M context). If effort is low or medium (i.e. 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.

Step 0: Resolve Project Context

Before loading specs, ensure project context is resolved:

  1. Monorepo check: Does .groundwork.yml exist at the repo root?
    • If yes → Is {{project_name}} non-empty?
      • If empty → Invoke Skill(skill="groundwork:select-project") to select a project, then restart this skill.
      • If set → Project is {{project_name}}, specs at {{specs_dir}}/.
    • If no → Continue (single-project repo).
  2. CWD mismatch check (monorepo only):
    • Skip if not in monorepo mode or if the project was just selected in item 1 above.
    • If CWD is the repo root → fine, proceed.
    • Check which project's path CWD falls inside (compare against all projects in .groundwork.yml).
    • If CWD is inside the selected project's path → fine, proceed.
    • If CWD is inside a different project's path → warn via 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:select-project").
    • If CWD doesn't match any project → proceed without warning (shared directory).
  3. Proceed with the resolved project context. All {{specs_dir}}/ paths will resolve to the correct location.

File Locations

  • Input:
    • {{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
  • Output: {{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

Workflow Overview

  1. Load Context - Read PRD and architecture
  2. Identify Milestones - Define testable product milestones
  3. Generate Tasks - Break down into implementable tasks
  4. Map Dependencies - Establish task ordering
  5. Review & Refine - Iterate with user on task breakdown

Important: When asking questions to the user (milestone validation, task review, scope clarification), always use the AskUserQuestion tool with appropriate options.

Step 1: Load Context

Read the input specs (each may be a single file or directory) and extract:

From PRD:

  • Single file: {{specs_dir}}/product_specs.md
  • Directory: {{specs_dir}}/product_specs/ (aggregate all .md files)
  • Extract: Feature list with EARS requirements, Non-functional requirements, Release strategy (Alpha → Beta → GA)

From Architecture:

  • Single file: {{specs_dir}}/architecture.md
  • Directory: {{specs_dir}}/architecture/ (aggregate all .md files)
  • Extract: Component list and responsibilities, Technology choices, Decision records (understand constraints)

From Design System (if exists):

  • Single file: {{specs_dir}}/design_system.md
  • Extract: Design principles (DP-NNN), Brand decisions (BRD-NNN), UX patterns (UXD-NNN)
  • Use for: Design-related tasks, component styling tasks, accessibility requirements

Detection: 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.

Step 2: Check Existing Tasks and Milestones

Before defining milestones, check if tasks already exist:

  1. Check for {{specs_dir}}/tasks/_index.md or {{specs_dir}}/tasks.md
  2. If found, read to understand existing milestones, task numbering, and status

If existing tasks found:

  • List existing milestones and their status (complete, in progress, not started)
  • Determine the highest task number (e.g., TASK-047) so new tasks continue the sequence
  • Determine the highest milestone number (e.g., M5) so new milestones continue the sequence
  • Present to user: "Found existing milestones M1-M5 with 47 tasks. New tasks will be added as TASK-048+."
  • Ask: "Should this new work be added to an existing milestone, or should I create a new milestone M6?"

If no existing tasks: Proceed to define milestones from scratch.

Step 2b: Define Milestones

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:

  • Vertically sliced - Each milestone delivers user-visible value
  • Testable - Clear criteria for "done"
  • Incremental - Build on previous milestones
  • Aligned with release strategy - Map to Alpha/Beta/GA phases

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:

  • Present milestones one at a time, confirm understanding before continuing
  • Use multiple-choice questions to validate milestone scope (e.g., "Should M1 include: A) just signup, B) signup + login, C) full auth flow?")

Step 3: Research Implementation Patterns

For major technologies in the architecture, gather implementation guidance before generating tasks.

For each significant technology in the architecture:

  1. 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]"
    )
  2. Use research findings to:
    • Inform task granularity (patterns suggest natural boundaries)
    • Add specific action items based on best practices
    • Include pitfall-avoiding acceptance criteria
    • Add "setup correctly" tasks for technologies with gotchas

Research Integration: When generating tasks in Step 4, incorporate research findings:

  • Reference idiomatic patterns in action items
  • Include pitfall-prevention in acceptance criteria
  • Add explicit setup/configuration tasks when research reveals gotchas
  • Use recommended project structure to inform task boundaries

Step 4: Generate Tasks

For each milestone, generate tasks using the format specified in the "Required Task Format" section below.

Required Task Format

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

Format Requirements

FieldRequiredValid Values
Task IDYesTASK-NNN (3+ digit number)
MilestoneYesM[N] - [Name]
ComponentYesFrom architecture document
EstimateYesS, M, L, or XL
GoalYesSingle sentence
Action ItemsYesCheckbox list
DependenciesYesTask IDs or "None"
Acceptance CriteriaYesTestable statements
Related RequirementsRecommendedPRD IDs
Related DecisionsRecommendedDR/DP/BRD/UXD IDs
StatusYesExactly one of the four values

Status 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 dependencies

Important: /groundwork:work-on-next-task parses these status values exactly. Any variation will cause parse errors.

Task Generation Principles

Granularity

  • Too big: "Implement authentication" (weeks of work, unclear scope)
  • Too small: "Create login button component" (not meaningful alone)
  • Right size: "Implement Cognito integration with magic link flow" (days, clear scope)

Target: 1-3 days of work per task for an experienced developer.

Vertical Slicing

Prefer tasks that deliver working functionality over horizontal layers (the thin vertical slice principle — ${CLAUDE_PLUGIN_ROOT}/references/engineering-principles.md):

❌ Horizontal (avoid):

  • TASK-001: Create all database schemas
  • TASK-002: Create all API endpoints
  • TASK-003: Create all UI components

✅ Vertical (prefer):

  • TASK-001: User signup flow (DB + API + UI)
  • TASK-002: User login flow (DB + API + UI)
  • TASK-003: Profile management (DB + API + UI)

Decomposition is the planning side of slicing. Each sliced task is then built the same way — flag-first, end-to-end, test-committed per slice; see [[vertical-slice]].

Dependency Minimization

  • Identify true dependencies vs. nice-to-haves
  • Parallelize where possible
  • Flag critical path tasks

YAGNI for Tasks

  • Only create tasks for committed scope, not speculative features
  • Challenge tasks that exist "just in case" or "for later"
  • If unsure whether a task is needed, defer it to a future milestone
  • Ask: "Is this task essential for the milestone, or is it gold-plating?"

Acceptance Criteria

Each criterion must be something that can be verified - checked or tested, not vague.

Good criteria (verifiable):

  • "Add status column to tasks table with default 'pending'"
  • "Filter dropdown has options: All, Active, Completed"
  • "Clicking delete shows confirmation dialog"
  • "Typecheck passes"
  • "Tests pass"

Bad criteria (vague):

  • "Works correctly"
  • "User can do X easily"
  • "Good UX"
  • "Handles edge cases"

Standard criteria to include:

  • Always end with: "Typecheck passes"
  • For stories with testable logic, also include: "Tests pass"

Step 5: Map Dependencies

Create a dependency graph showing:

  • Which tasks can run in parallel
  • Critical path (longest chain of dependencies)
  • Milestone boundaries

Format as both:

  1. List view - Dependencies noted on each task
  2. Graph view - ASCII diagram showing parallel tracks
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) ──────────┘

Step 6: Review & Refine

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:

  1. Create or update {{specs_dir}}/tasks/_index.md with overview, milestone summary table, dependency graph, task status table, and critical path
  2. For each new milestone, create a directory: {{specs_dir}}/tasks/M{N}-{slug}/ (e.g., M1-core-auth/)
  3. Write one file per task: {{specs_dir}}/tasks/M{N}-{slug}/TASK-{NNN}.md
  4. Each task file is self-contained — includes all fields from the Required Task Format
  5. Write or update {{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:

  • Update _index.md — add new rows to the status table, add the new milestone to the summary table, extend the dependency graph
  • Continue task numbering from the highest existing task number
  • Do NOT regenerate or modify existing milestone directories or task files

Progressive presentation:

  • Present tasks one milestone at a time
  • Wait for approval on each milestone before presenting the next
  • This catches scope creep early and keeps stakeholders engaged

Step 7: Validate Task List

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:

  • The loop will automatically fix task list problems
  • You may be asked for input on scope decisions
  • Once all agents approve, continue to Step 8

Step 8: Suggest Next Step

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-task to begin implementation, or /groundwork:work-on N to work on a specific task."

Task Categories

Common task types to ensure coverage:

CategoryExamples
InfrastructureIaC setup, CI/CD pipeline, environments
DataSchema design, migrations, seed data
BackendAPI endpoints, business logic, integrations
FrontendComponents, pages, state management
Design SystemToken setup, component styling, theme implementation
AuthIdentity setup, authorization rules
TestingUnit tests, integration tests, E2E
ObservabilityLogging, metrics, alerts
DocumentationAPI docs, runbooks, README
SecurityPen testing, security review, hardening

Design System Tasks

When {{specs_dir}}/design_system.md exists, include design-specific tasks:

Task TypeRelated DecisionsExample
Token setupDP-NNNConfigure CSS variables/Tailwind theme
Color systemBRD-001-005Implement brand palette, semantic colors
TypographyBRD-006-008Font loading, type scale utilities
Component stylingBRD-NNN, UXD-NNNButton variants, form controls
Loading statesUXD-003-004Skeleton screens, spinners
Error handlingUXD-005-006Toast system, error boundaries
Empty statesUXD-007First-run, no-data components
Responsive layoutUXD-010-011Breakpoint utilities, layout adaptation
Motion systemUXD-012Animation utilities, reduced motion

Reference design decisions in task Related Decisions field to ensure traceability.

Reference Files

  • ${CLAUDE_PLUGIN_ROOT}/references/tasks/tasks-template.md - Template for tasks document

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.