Write Atomic Tasks
Quick Start
Transform vague task descriptions into precise, autonomous-execution-ready specifications:
❌ BEFORE (vague):
- [ ] Add error handling
✅ AFTER (precise):
- [ ] Task 1: Add ConnectionError and TimeoutError handling to ClaudeAgentClient.query()
- Retry 3 times with exponential backoff (1s, 2s, 4s)
- Raise AgentConnectionError after retries exhausted
- Location: src/temet_run/agent/client.py:ClaudeAgentClient.query
- Verify: pytest tests/unit/agent/test_client.py passes
Table of Contents
- When to Use This Skill
- What This Skill Does
- The SMART+ Framework
- Task Template
- Precision Checklist
- Forbidden Vague Patterns
- Task Decomposition Rules
- Examples: Vague → Precise Transformation
- Validation Process
- Supporting Files
- Expected Outcomes
- Requirements
- Red Flags to Avoid
1. When to Use This Skill
Explicit Triggers:
- "Write a task for..."
- "Create todo items for..."
- "Break down this feature into tasks"
- "Make this task more precise"
- "How should I write this as a task?"
Implicit Triggers:
- Task description lacks file paths
- No verification command specified
- Vague action verbs ("fix", "add", "update" without specifics)
- Missing success criteria
- Task would require clarifying questions before starting
Debugging/Quality Scenarios:
- Reviewing task list for autonomous execution readiness
- Agent keeps asking clarifying questions about tasks
- Tasks take longer than expected due to ambiguity
- Post-mortem reveals task interpretation issues
2. What This Skill Does
This skill transforms vague task descriptions into precise, autonomous-execution-ready specifications by:
- Applying SMART+ Framework - Ensuring every task is Specific, Measurable, Actionable, Referenced, Testable, with Context
- Adding Critical Metadata - File paths, verification commands, success criteria
- Decomposing Large Work - Breaking complex tasks into 30-minute chunks
- Eliminating Vague Patterns - Replacing forbidden phrases with precise alternatives
- Validating Precision - Checking that tasks answer all 6 precision questions
3. The SMART+ Framework
Every task MUST include these components:
| Component |
Description |
Example |
| Specific |
What exactly to do |
"Add retry logic to ClaudeAgentClient.query()" not "Add retry logic" |
| Measurable |
How to verify completion |
"Tests pass, mypy clean" |
| Actionable |
Clear first step |
"Create file src/temet_run/agent/retry.py" |
| Referenced |
File paths, functions, classes |
"in agent/client.py:ClaudeAgentClient" |
| Testable |
Success criteria |
"3 retries with exponential backoff, circuit breaker after 5 failures" |
| +Context |
Why this matters (optional) |
"Needed for ADR-016 conversation persistence" |
4. Task Template
- [ ] Task N: [ACTION VERB] [SPECIFIC TARGET] [SUCCESS CRITERIA]
Location: [file paths or module names]
Verify: [how to confirm completion]
Complete Example:
- [ ] Task 1: Add ConversationError exception hierarchy to agent/errors.py
- Create: ConversationError(base), MessageError, StateError
- Location: src/temet_run/agent/errors.py
- Verify: mypy passes, errors importable from temet_run.agent
5. Precision Checklist
Before writing a task, verify it answers ALL these questions:
- ✅ WHAT file(s)? → Include full path from project root
- ✅ WHAT function/class? → Name the specific target
- ✅ WHAT action? → Use precise verbs: Create, Add, Modify, Remove, Rename, Extract, Move
- ✅ WHAT inputs/outputs? → Specify types, fields, parameters
- ✅ HOW to verify? → Command to run:
pytest path, mypy src/, uv run temet-run ...
- ✅ WHY doing this? → Link to ADR, issue, or parent task (optional but helpful)
6. Forbidden Vague Patterns
NEVER write tasks containing these vague phrases:
| ❌ Forbidden Pattern |
✅ Precise Alternative |
| "Implement the feature" |
"Implement X method in Y class with Z behavior" |
| "Add tests" |
"Add unit tests for X covering cases A, B, C" |
| "Fix the bug" |
"Fix TypeError in X:line Y caused by Z" |
| "Update the code" |
"Update X function to accept Y parameter" |
| "Handle errors" |
"Add try/except for ConnectionError in X, retry 3 times" |
| "Refactor" |
"Extract X logic from Y into new Z class" |
| "Improve performance" |
"Reduce X function runtime from 500ms to <100ms by caching Y" |
| "Add logging" |
"Add structlog info-level logging to X function for events A, B, C" |
| "Document the code" |
"Add Google-style docstring to X function with Args, Returns, Raises" |
7. Task Decomposition Rules
Large tasks MUST be broken down:
- One concern per task - Don't mix "create model AND write tests AND add CLI"
- Max 30 minutes of work - If longer, split it
- Dependencies explicit - "Task 3 depends on Task 2" or use sub-numbering (2.1, 2.2)
- Verification per task - Each task independently verifiable
Decomposition Example:
## Feature: Add conversation history command
- [ ] Task 1: Create ConversationRepository protocol
Location: src/temet_run/domain/repositories.py
Verify: mypy passes
- [ ] Task 2: Implement JsonlConversationRepository
Location: src/temet_run/infrastructure/repositories/conversation.py
Verify: Unit tests pass (create tests/unit/infrastructure/test_conversation_repo.py)
- [ ] Task 3: Add `history` subcommand to CLI
Location: src/temet_run/main.py (add to agents group)
Verify: `uv run temet-run agents history --help` shows usage
- [ ] Task 4: Integration test for history command
Location: tests/integration/test_cli_history.py
Verify: pytest tests/integration/test_cli_history.py passes
8. Examples: Vague → Precise Transformation
See examples/transformation-examples.md for comprehensive examples covering:
- Error handling tasks
- Data model implementation
- Test writing tasks
- Bug fixes
- Feature additions
- Refactoring work
Inline Example:
❌ VAGUE:
- [ ] Add error handling to the client
✅ PRECISE:
- [ ] Add ConnectionError and TimeoutError handling to ClaudeAgentClient.query()
- Retry 3 times with exponential backoff (1s, 2s, 4s)
- Raise AgentConnectionError after retries exhausted
- Location: src/temet_run/agent/client.py:ClaudeAgentClient.query
- Verify: pytest tests/unit/agent/test_client.py passes
9. Validation Process
To validate a task for precision:
- Read the task description
- Apply the 6-question checklist (Section 5)
- Check for forbidden vague patterns (Section 6)
- Verify SMART+ components present (Section 3)
- Confirm task is <30 minutes of work
Validation Script (if available):
python ~/.claude/skills/write-atomic-tasks/scripts/validate_task.py "task description"
Manual Validation Output:
Task: "Add error handling to the client"
❌ FAILED Precision Check:
- Missing: Specific file path
- Missing: Function/class name
- Missing: Verification command
- Vague pattern: "Add error handling" (see Section 6)
Suggested rewrite:
- [ ] Add ConnectionError handling to ClaudeAgentClient.query()
Location: src/temet_run/agent/client.py:ClaudeAgentClient.query
Verify: pytest tests/unit/agent/test_client.py passes
10. Supporting Files
- examples/transformation-examples.md - 10+ examples of vague → precise transformations
- references/smart-framework-deep-dive.md - Detailed explanation of SMART+ components
- scripts/validate_task.py - Automated task precision validator
- templates/task-template.md - Copy-paste task template with placeholders
11. Expected Outcomes
Successful Task Writing
When tasks are written with this skill:
✅ Agents can execute autonomously - No clarifying questions needed
✅ Clear verification - Unambiguous success/failure determination
✅ Predictable effort - Tasks complete in <30 minutes
✅ Reduced rework - Fewer interpretation errors
✅ Better planning - Accurate time estimates from precise scoping
Before/After Metrics
| Metric |
Before (Vague Tasks) |
After (Precise Tasks) |
| Clarifying questions per task |
2-5 questions |
0 questions |
| Task completion time variance |
±200% |
±20% |
| Rework due to misunderstanding |
30% of tasks |
<5% of tasks |
| Autonomous execution success |
40% |
95% |
| Time spent planning vs doing |
20/80 |
40/60 |
12. Requirements
Knowledge:
- Understanding of SMART goal framework
- Familiarity with project file structure
- Awareness of verification commands (pytest, mypy, etc.)
Tools:
- None (skill is language/framework agnostic)
Environment:
- Works with any task management system
- Compatible with todo.md, Jira, GitHub Issues, etc.
13. Red Flags to Avoid
Red Flags Checklist:
Common Mistakes:
- Too granular - "Add import statement" is usually too small, combine with actual work
- Too high-level - "Implement authentication" needs 10+ subtasks
- Technology assumption - "Add React component" when framework not decided
- Implicit dependencies - "Write tests" assumes code exists, make dependency explicit
Notes
- This skill is framework-agnostic - Works for any programming language or project type
- Precision scales with task complexity - Simple tasks need less metadata than complex ones
- Context determines precision level - Solo developer vs distributed team changes requirements
- Tasks are living documents - Update tasks when requirements change, don't let them drift
- Autonomous execution is the goal - If a task requires synchronous communication, it's not precise enough
1---2name: write-atomic-tasks-23description: Writes precise, autonomous-execution-ready tasks using the SMART+ framework (Specific, Measurable, Actionable, Referenced, Testable, +Context). Transforms vague task descriptions into detailed specifications with file paths, verification commands, and clear success criteria. Use when writing tasks for any agent, creating todos, planning features, decomposing work, or when tasks lack precision. Triggers on "write task", "create todo", "break down feature", "make task precise", "task is vague", or when task descriptions are missing file paths, verification steps, or clear success criteria. Works with todo.md, task lists, project planning documents, and agent instructions.4---56# Write Atomic Tasks78## Quick Start910Transform vague task descriptions into precise, autonomous-execution-ready specifications:1112```markdown13❌ BEFORE (vague):14- [ ] Add error handling1516✅ AFTER (precise):17- [ ] Task 1: Add ConnectionError and TimeoutError handling to ClaudeAgentClient.query()18 - Retry 3 times with exponential backoff (1s, 2s, 4s)19 - Raise AgentConnectionError after retries exhausted20 - Location: src/temet_run/agent/client.py:ClaudeAgentClient.query21 - Verify: pytest tests/unit/agent/test_client.py passes22```2324## Table of Contents25261. When to Use This Skill272. What This Skill Does283. The SMART+ Framework294. Task Template305. Precision Checklist316. Forbidden Vague Patterns327. Task Decomposition Rules338. Examples: Vague → Precise Transformation349. Validation Process3510. Supporting Files3611. Expected Outcomes3712. Requirements3813. Red Flags to Avoid3940## 1. When to Use This Skill4142**Explicit Triggers:**43- "Write a task for..."44- "Create todo items for..."45- "Break down this feature into tasks"46- "Make this task more precise"47- "How should I write this as a task?"4849**Implicit Triggers:**50- Task description lacks file paths51- No verification command specified52- Vague action verbs ("fix", "add", "update" without specifics)53- Missing success criteria54- Task would require clarifying questions before starting5556**Debugging/Quality Scenarios:**57- Reviewing task list for autonomous execution readiness58- Agent keeps asking clarifying questions about tasks59- Tasks take longer than expected due to ambiguity60- Post-mortem reveals task interpretation issues6162## 2. What This Skill Does6364This skill transforms vague task descriptions into precise, autonomous-execution-ready specifications by:65661. **Applying SMART+ Framework** - Ensuring every task is Specific, Measurable, Actionable, Referenced, Testable, with Context672. **Adding Critical Metadata** - File paths, verification commands, success criteria683. **Decomposing Large Work** - Breaking complex tasks into 30-minute chunks694. **Eliminating Vague Patterns** - Replacing forbidden phrases with precise alternatives705. **Validating Precision** - Checking that tasks answer all 6 precision questions7172## 3. The SMART+ Framework7374Every task MUST include these components:7576| Component | Description | Example |77|-----------|-------------|---------|78| **S**pecific | What exactly to do | "Add retry logic to `ClaudeAgentClient.query()`" not "Add retry logic" |79| **M**easurable | How to verify completion | "Tests pass, mypy clean" |80| **A**ctionable | Clear first step | "Create file `src/temet_run/agent/retry.py`" |81| **R**eferenced | File paths, functions, classes | "in `agent/client.py:ClaudeAgentClient`" |82| **T**estable | Success criteria | "3 retries with exponential backoff, circuit breaker after 5 failures" |83| **+Context** | Why this matters (optional) | "Needed for ADR-016 conversation persistence" |8485## 4. Task Template8687```markdown88- [ ] Task N: [ACTION VERB] [SPECIFIC TARGET] [SUCCESS CRITERIA]89 Location: [file paths or module names]90 Verify: [how to confirm completion]91```9293**Complete Example:**94```markdown95- [ ] Task 1: Add ConversationError exception hierarchy to agent/errors.py96 - Create: ConversationError(base), MessageError, StateError97 - Location: src/temet_run/agent/errors.py98 - Verify: mypy passes, errors importable from temet_run.agent99```100101## 5. Precision Checklist102103Before writing a task, verify it answers ALL these questions:1041051. ✅ **WHAT file(s)?** → Include full path from project root1062. ✅ **WHAT function/class?** → Name the specific target1073. ✅ **WHAT action?** → Use precise verbs: Create, Add, Modify, Remove, Rename, Extract, Move1084. ✅ **WHAT inputs/outputs?** → Specify types, fields, parameters1095. ✅ **HOW to verify?** → Command to run: `pytest path`, `mypy src/`, `uv run temet-run ...`1106. ✅ **WHY doing this?** → Link to ADR, issue, or parent task (optional but helpful)111112## 6. Forbidden Vague Patterns113114**NEVER write tasks containing these vague phrases:**115116| ❌ Forbidden Pattern | ✅ Precise Alternative |117|---------------------|------------------------|118| "Implement the feature" | "Implement X method in Y class with Z behavior" |119| "Add tests" | "Add unit tests for X covering cases A, B, C" |120| "Fix the bug" | "Fix TypeError in X:line Y caused by Z" |121| "Update the code" | "Update X function to accept Y parameter" |122| "Handle errors" | "Add try/except for ConnectionError in X, retry 3 times" |123| "Refactor" | "Extract X logic from Y into new Z class" |124| "Improve performance" | "Reduce X function runtime from 500ms to <100ms by caching Y" |125| "Add logging" | "Add structlog info-level logging to X function for events A, B, C" |126| "Document the code" | "Add Google-style docstring to X function with Args, Returns, Raises" |127128## 7. Task Decomposition Rules129130**Large tasks MUST be broken down:**1311321. **One concern per task** - Don't mix "create model AND write tests AND add CLI"1332. **Max 30 minutes of work** - If longer, split it1343. **Dependencies explicit** - "Task 3 depends on Task 2" or use sub-numbering (2.1, 2.2)1354. **Verification per task** - Each task independently verifiable136137**Decomposition Example:**138```markdown139## Feature: Add conversation history command140141- [ ] Task 1: Create ConversationRepository protocol142 Location: src/temet_run/domain/repositories.py143 Verify: mypy passes144145- [ ] Task 2: Implement JsonlConversationRepository146 Location: src/temet_run/infrastructure/repositories/conversation.py147 Verify: Unit tests pass (create tests/unit/infrastructure/test_conversation_repo.py)148149- [ ] Task 3: Add `history` subcommand to CLI150 Location: src/temet_run/main.py (add to agents group)151 Verify: `uv run temet-run agents history --help` shows usage152153- [ ] Task 4: Integration test for history command154 Location: tests/integration/test_cli_history.py155 Verify: pytest tests/integration/test_cli_history.py passes156```157158## 8. Examples: Vague → Precise Transformation159160See `examples/transformation-examples.md` for comprehensive examples covering:161- Error handling tasks162- Data model implementation163- Test writing tasks164- Bug fixes165- Feature additions166- Refactoring work167168**Inline Example:**169170```markdown171❌ VAGUE:172- [ ] Add error handling to the client173174✅ PRECISE:175- [ ] Add ConnectionError and TimeoutError handling to ClaudeAgentClient.query()176 - Retry 3 times with exponential backoff (1s, 2s, 4s)177 - Raise AgentConnectionError after retries exhausted178 - Location: src/temet_run/agent/client.py:ClaudeAgentClient.query179 - Verify: pytest tests/unit/agent/test_client.py passes180```181182## 9. Validation Process183184**To validate a task for precision:**1851861. Read the task description1872. Apply the 6-question checklist (Section 5)1883. Check for forbidden vague patterns (Section 6)1894. Verify SMART+ components present (Section 3)1905. Confirm task is <30 minutes of work191192**Validation Script (if available):**193```bash194python ~/.claude/skills/write-atomic-tasks/scripts/validate_task.py "task description"195```196197**Manual Validation Output:**198```199Task: "Add error handling to the client"200201❌ FAILED Precision Check:202- Missing: Specific file path203- Missing: Function/class name204- Missing: Verification command205- Vague pattern: "Add error handling" (see Section 6)206207Suggested rewrite:208- [ ] Add ConnectionError handling to ClaudeAgentClient.query()209 Location: src/temet_run/agent/client.py:ClaudeAgentClient.query210 Verify: pytest tests/unit/agent/test_client.py passes211```212213## 10. Supporting Files214215- **examples/transformation-examples.md** - 10+ examples of vague → precise transformations216- **references/smart-framework-deep-dive.md** - Detailed explanation of SMART+ components217- **scripts/validate_task.py** - Automated task precision validator218- **templates/task-template.md** - Copy-paste task template with placeholders219220## 11. Expected Outcomes221222### Successful Task Writing223224When tasks are written with this skill:225226✅ **Agents can execute autonomously** - No clarifying questions needed227✅ **Clear verification** - Unambiguous success/failure determination228✅ **Predictable effort** - Tasks complete in <30 minutes229✅ **Reduced rework** - Fewer interpretation errors230✅ **Better planning** - Accurate time estimates from precise scoping231232### Before/After Metrics233234| Metric | Before (Vague Tasks) | After (Precise Tasks) |235|--------|---------------------|----------------------|236| Clarifying questions per task | 2-5 questions | 0 questions |237| Task completion time variance | ±200% | ±20% |238| Rework due to misunderstanding | 30% of tasks | <5% of tasks |239| Autonomous execution success | 40% | 95% |240| Time spent planning vs doing | 20/80 | 40/60 |241242## 12. Requirements243244**Knowledge:**245- Understanding of SMART goal framework246- Familiarity with project file structure247- Awareness of verification commands (pytest, mypy, etc.)248249**Tools:**250- None (skill is language/framework agnostic)251252**Environment:**253- Works with any task management system254- Compatible with todo.md, Jira, GitHub Issues, etc.255256## 13. Red Flags to Avoid257258**Red Flags Checklist:**259260- [ ] ❌ Task description fits on one line but has no metadata261- [ ] ❌ No file path mentioned262- [ ] ❌ Action verb is generic ("fix", "update", "add")263- [ ] ❌ No verification command provided264- [ ] ❌ Success criteria is subjective ("make it better")265- [ ] ❌ Task mixes multiple concerns (AND, THEN, ALSO in description)266- [ ] ❌ Task would take >30 minutes but isn't decomposed267- [ ] ❌ Contains forbidden vague patterns (Section 6)268- [ ] ❌ Missing inputs/outputs specification for data operations269- [ ] ❌ No link to parent task/ADR/issue for context270271**Common Mistakes:**2722731. **Too granular** - "Add import statement" is usually too small, combine with actual work2742. **Too high-level** - "Implement authentication" needs 10+ subtasks2753. **Technology assumption** - "Add React component" when framework not decided2764. **Implicit dependencies** - "Write tests" assumes code exists, make dependency explicit277278## Notes279280- **This skill is framework-agnostic** - Works for any programming language or project type281- **Precision scales with task complexity** - Simple tasks need less metadata than complex ones282- **Context determines precision level** - Solo developer vs distributed team changes requirements283- **Tasks are living documents** - Update tasks when requirements change, don't let them drift284- **Autonomous execution is the goal** - If a task requires synchronous communication, it's not precise enough