SDD Tasks Plan Template

Use this template when a spec is ready but implementation should happen in small, reviewable slices. It keeps human engineers and AI coding agents tied to the same acceptance criteria.

tasks.md
# Implementation Tasks

Spec:
Design:
Owner:

## Task Rules
- Keep each task reviewable.
- Do not implement behavior outside the spec.
- Attach evidence before marking done.

## Tasks
- [ ] Task 1:
  - Acceptance link:
  - Allowed files:
  - Test command:
  - Evidence:

- [ ] Task 2:
  - Acceptance link:
  - Allowed files:
  - Test command:
  - Evidence:

## Dependency Order
1.
2.
3.

When to use this template

What a filled version looks like

The template becomes useful after it carries a real decision, owner, and evidence. This is the level of specificity to aim for.

- [ ] Add refund idempotency store
  - Acceptance link: AC-2 replay returns existing refund_id
  - Allowed files: services/refunds/*, tests/refunds/*
  - Test command: npm run test -- refunds
  - Evidence: refund_timeout_replay test passes

Review before implementation

Weak vs strong wording

Weak

Implement backend, update frontend, add tests.

Strong

Add the idempotency store first, then provider timeout state, then support UI blocking. Each task names allowed files, the acceptance criterion it satisfies, and the exact test command required before review.

FAQ

Why not put tasks in the issue tracker only?

You can, but keeping a tasks.md beside the spec gives reviewers one artifact chain from intent to evidence.

How small should tasks be?

Small enough that a reviewer can understand the diff, run the verification, and decide whether it satisfies one part of the spec.

Can AI agents own tasks?

Yes, when each task has allowed files, non-goals, and evidence requirements. Broad agent prompts should be split first.

Related resources

Editorial note

This template is written for spec-driven development workflows. The example is illustrative and should be adapted to your domain.

Tip: keep it under /docs/specs/ or /.specs/, then update it in the same pull request as implementation changes. Last updated: May 11, 2026.