Invoked as /agiflow:run-work. In hosts without slash-prompts, this skill is triggered by matching intent and drives AgiFlow via its MCP tools.
Usage:
/agiflow:run-work <work-unit-slug-or-id> - Execute specific work unit
/agiflow:run-work - List and select from available work units
Examples:
/agiflow:run-work DXX-WU-1 (using slug)
/agiflow:run-work 01K8FABMNEJG1XTA9JGHSNFV40 (using ID)
/agiflow:run-work (interactive selection)
Guardrails
- Favor straightforward, minimal implementations first and add complexity only when it is requested or clearly required.
- Keep changes tightly scoped to the requested outcome within the work unit scope.
- A work unit represents a cohesive feature/epic that can be completed in one Claude Code session.
If a work unit slug/id is provided, load it with get_work_unit; otherwise list available work units with list_work_units for selection.
AgiFlow Project Management Guidelines
Follow the shared AgiFlow project-management guidelines in references/agiflow-agents.md — agent assignment, the task status workflow and transitions, work-unit best practices, and the tags strategy apply to this workflow.
Task Status Workflow (per task)
Each task moves individually through: Todo → In Progress → Testing → Review
The work unit stays in_progress until all tasks reach Review or Done.
If any task hits Blocked, consider setting the work unit to blocked too.
IMPORTANT: Planning Status Guard
This skill ONLY executes tasks in "Todo" or later status. Tasks in "Planning" have NOT been groomed and are NOT ready for execution. Use backlog-grooming to promote Planning tasks to Todo first.
Steps
Track these steps as TODOs and complete them one by one.
1. Work Unit Selection & Loading
If work unit slug/id NOT provided:
- Use
list_work_units MCP tool to show available work units:
- Filter by
status: "in_progress" for active work, or work units with tasks in "Todo"
- Do NOT pick up work units where all tasks are still in "Planning" status
- Display: slug, title, type, priority, task count, status
- Ask user to select which work unit to work on.
- Once user selects, proceed with the selected work unit slug/id.
If work unit slug/id IS provided: 4. Use get_work_unit MCP tool with the provided slug/id to retrieve:
- Work unit: title, description, goals, type, priority, status, dates, devInfo
- Tasks: All tasks associated with this work unit (already included in response)
- Note:
get_work_unit returns tasks automatically - no separate list_tasks call needed
- Review the work unit and all its tasks to understand:
- Complete feature scope and deliverables
- Task dependencies and execution order
- Acceptance criteria across all tasks
5b. PLANNING STATUS GUARD (MANDATORY):
- Check all tasks in the work unit
- If ANY task has status "Planning": REFUSE to execute
- Report: "Cannot execute: N task(s) are still in Planning status. Use backlog-grooming to promote them to Todo first."
- List the Planning tasks by title
- STOP execution — do not proceed
2. Start Work Unit Execution
- If work unit status is "planning":
- First verify ALL tasks are in "Todo" or later status (not "Planning")
- If verified, use
update_work_unit MCP tool to set status to "in_progress"
- If any tasks are in "Planning", REFUSE and suggest
backlog-grooming
- Create a TODO list of all tasks in execution order (use TodoWrite tool).
- Document execution plan in work unit via
update_work_unit devInfo:devInfo: {
executionPlan: "Backend API → Frontend UI → Tests → Documentation",
sessionId: "<current-session-id>",
startedAt: "<timestamp>"
}
3. Execute Tasks Sequentially
For each task in the work unit (in dependency order from the tasks array):
- Review task details: title, description, acceptance criteria, assignee
- Use
update_task MCP tool to set status to "In Progress"
- BEFORE editing any code: Use
architect MCP get_file_design_pattern (MANDATORY)
- Implement the task following acceptance criteria
- AFTER editing code: Use
architect MCP review_code_change (MANDATORY)
- Update task
devInfo with implementation notes:devInfo: {
filesChanged: ["path/to/file.ts:42"],
testResults: { passed: true, coverage: "85%" },
notes: "Implementation notes here"
}
- Mark acceptance criteria as checked via
update_task
Testing phase for each task:
Use update_task to move status to "Testing"
Run unit tests, integration tests, type check and lint for affected code
If tests PASS: proceed to move task to "Review"
If tests FAIL:
- Increment
retryCount in devInfo
- If
retryCount >= maxRetries (default: 2): move task to "Blocked", set work unit to "blocked", stop
- If
retryCount < maxRetries: move task back to "Todo", document failure, continue to next task or stop session
Use update_task to set status to "Review" when tests pass
Update your TODO list (mark task as completed)
Between tasks:
- Commit changes with meaningful commit messages
- Run tests to ensure no regressions
- Update work unit progress in devInfo
4. Work Unit Progress Tracking
The work unit tasks array automatically updates as tasks are completed.
- Use
get_work_unit to check current state and task statuses
- Track: How many tasks in Review or Done vs. total?
- Monitor: Are we on track for target date?
- Work unit stays
in_progress until all tasks reach Review or Done
Update work unit devInfo as you progress via update_work_unit:
devInfo: {
executionPlan: "...",
sessionId: "<session-id>",
startedAt: "<timestamp>",
progress: {
completedTasks: 3,
totalTasks: 8,
lastTaskCompleted: "Implement cart API",
currentTask: "Add cart UI component"
},
testResults: {
unitTests: "passing",
integrationTests: "passing",
coverage: "85%"
},
blockers: [] // or list any blockers encountered
}
5. Work Unit Completion
When ALL tasks in work unit are in "Review" or "Done":
- Verify all tasks have status "Review" or "Done"
- Verify all acceptance criteria across all tasks are met
- Run full test suite for the feature
- Review all files changed (use git diff)
Draft a PR description for the work unit (DO NOT create the PR yet - just draft the text):
- Title format:
[WORK-UNIT-SLUG] Work unit title (e.g., [DXX-WU-1] Shopping cart feature)
- Body should include:
- Work unit reference and summary
- List of tasks completed
- Summary of all changes across tasks
- Files modified (use
file.ts:42 format)
- Test results
Use update_work_unit to set status to "completed" and save draft PR text and commit message:
{
status: "completed",
completedAt: new Date(),
devInfo: {
...existing,
draftCommitMessage: "feat(cart): implement shopping cart feature\n\n- Add cart API endpoints\n- Add cart UI components\n- Add integration tests\n\nCloses: DXX-WU-1",
draftPr: {
title: "[DXX-WU-1] Shopping cart feature",
body: "## Summary\n\nImplemented shopping cart feature.\n\n## Tasks Completed\n\n- [DXX-1] Add cart API\n- [DXX-2] Add cart UI\n- [DXX-3] Add cart tests\n\n## Changes\n\n- Added cart endpoints\n- Added cart components\n- Added integration tests\n\n## Files Modified\n\n- src/api/cart.ts:42\n- src/components/Cart.tsx:15\n- tests/cart.test.ts:1\n\n## Test Results\n\nAll tests passing. Coverage: 85%"
},
finalNotes: "All tasks completed. Files changed: [...]. Tests passing.",
completedBy: "<member-id>",
totalDuration: "3.5 hours"
}
}
Note on draftCommitMessage: Write a conventional commit message that will be used for the final git commit. Format: type(scope): description with optional body listing changes.
Create final summary comment documenting:
- Work unit scope and goals achieved
- All files created/modified (use
file.ts:42 format)
- Test coverage and results
- Any follow-up work needed
- Performance or architectural notes
6. Handle Blockers or Scope Changes
If blocked on a task:
- Use
update_task to set task status to "Blocked"
- Use
update_work_unit to set status to "blocked"
- Document blocker in work unit devInfo
- Use
create_task_comment on blocked task with details explaining what human intervention is needed
- Consider creating follow-up tasks for blockers
If scope changes during execution:
- Use
create_task to add new tasks to work unit
- Update work unit description/goals if needed
- Communicate scope change in work unit comments
Common Mistakes to Avoid
- ❌ Starting without reviewing all tasks in work unit (lack of context)
- ❌ Working on tasks in wrong order (missing dependencies)
- ❌ Skipping vibe-lint MCP validation (MANDATORY for every file)
- ❌ Not tracking work unit-level progress in devInfo
- ❌ Completing tasks in isolation without considering work unit goals
- ❌ Not running integration tests between tasks
- ❌ Moving task to "Review" without first going through "Testing"
- ❌ Marking work unit complete when tasks are still in "In Progress" or "Testing"
- ❌ Not documenting scope changes or blockers
- ❌ Forgetting to commit between tasks (losing incremental progress)
- ❌ Not updating work unit status when blocked
- ❌ Setting work unit to "completed" before all tasks reach "Review" or "Done"
- ❌ Executing tasks that are still in "Planning" status (must be promoted to "Todo" via
backlog-grooming first)
Source: hashgraph-online/awesome-codex-plugins → plugins/AgiFlow/ai-plugin/skills/run-work/SKILL.md
1---2name: run-work3description: Execute a work unit end-to-end: sequence tasks by dependency, implement, test between tasks, commit, and track progress. Use to deliver a complete feature in one session. Invoked as /agiflow:run-work <work-unit>. Uses get_work_unit, list_tasks, update_task, get_work_unit_progress.4---5
6
7> Invoked as `/agiflow:run-work`. In hosts without slash-prompts, this skill is triggered by matching intent and drives AgiFlow via its MCP tools.
8
9**Usage**:
10
11- `/agiflow:run-work <work-unit-slug-or-id>` - Execute specific work unit
12- `/agiflow:run-work` - List and select from available work units
13
14**Examples**:
15
16- `/agiflow:run-work DXX-WU-1` (using slug)
17- `/agiflow:run-work 01K8FABMNEJG1XTA9JGHSNFV40` (using ID)
18- `/agiflow:run-work` (interactive selection)
19
20---
21
22**Guardrails**
23
24- Favor straightforward, minimal implementations first and add complexity only when it is requested or clearly required.
25- Keep changes tightly scoped to the requested outcome within the work unit scope.
26- A work unit represents a cohesive feature/epic that can be completed in one Claude Code session.
27
28If a work unit slug/id is provided, load it with `get_work_unit`; otherwise list available work units with `list_work_units` for selection.
29
30---
31
32## AgiFlow Project Management Guidelines
33
34Follow the shared AgiFlow project-management guidelines in [`references/agiflow-agents.md`](../../references/agiflow-agents.md) — agent assignment, the task status workflow and transitions, work-unit best practices, and the tags strategy apply to this workflow.
35
36
37---
38
39**Task Status Workflow (per task)**
40Each task moves individually through: `Todo → In Progress → Testing → Review`
41The work unit stays `in_progress` until all tasks reach `Review` or `Done`.
42If any task hits `Blocked`, consider setting the work unit to `blocked` too.
43
44**IMPORTANT: Planning Status Guard**
45This skill ONLY executes tasks in "Todo" or later status. Tasks in "Planning" have NOT been groomed and are NOT ready for execution. Use `backlog-grooming` to promote Planning tasks to Todo first.
46
47**Steps**
48Track these steps as TODOs and complete them one by one.
49
50## 1. Work Unit Selection & Loading
51
52**If work unit slug/id NOT provided:**
53
541. Use `list_work_units` MCP tool to show available work units:
55 - Filter by `status: "in_progress"` for active work, or work units with tasks in "Todo"
56 - Do NOT pick up work units where all tasks are still in "Planning" status
57 - Display: slug, title, type, priority, task count, status
582. Ask user to select which work unit to work on.
593. Once user selects, proceed with the selected work unit slug/id.
60
61**If work unit slug/id IS provided:** 4. Use `get_work_unit` MCP tool with the provided slug/id to retrieve:
62
63- Work unit: title, description, goals, type, priority, status, dates, devInfo
64- Tasks: All tasks associated with this work unit (already included in response)
65- Note: `get_work_unit` returns tasks automatically - no separate `list_tasks` call needed
66
675. Review the work unit and all its tasks to understand:
68 - Complete feature scope and deliverables
69 - Task dependencies and execution order
70 - Acceptance criteria across all tasks
71
72**5b. PLANNING STATUS GUARD (MANDATORY):**
73
74- Check all tasks in the work unit
75- If ANY task has status "Planning": **REFUSE to execute**
76- Report: "Cannot execute: N task(s) are still in Planning status. Use **backlog-grooming** to promote them to Todo first."
77- List the Planning tasks by title
78- **STOP execution** — do not proceed
79
80## 2. Start Work Unit Execution
81
826. If work unit status is "planning":
83 - First verify ALL tasks are in "Todo" or later status (not "Planning")
84 - If verified, use `update_work_unit` MCP tool to set status to "in_progress"
85 - If any tasks are in "Planning", REFUSE and suggest `backlog-grooming`
867. Create a TODO list of all tasks in execution order (use TodoWrite tool).
878. Document execution plan in work unit via `update_work_unit` devInfo:
88 ```typescript
89 devInfo: {
90 executionPlan: "Backend API → Frontend UI → Tests → Documentation",
91 sessionId: "<current-session-id>",
92 startedAt: "<timestamp>"
93 }
94 ```
95
96## 3. Execute Tasks Sequentially
97
989. For each task in the work unit (in dependency order from the tasks array):
99 - Review task details: title, description, acceptance criteria, assignee
100 - Use `update_task` MCP tool to set status to "In Progress"
101 - **BEFORE editing any code**: Use `architect` MCP `get_file_design_pattern` (MANDATORY)
102 - Implement the task following acceptance criteria
103 - **AFTER editing code**: Use `architect` MCP `review_code_change` (MANDATORY)
104 - Update task `devInfo` with implementation notes:
105 ```typescript
106 devInfo: {
107 filesChanged: ["path/to/file.ts:42"],
108 testResults: { passed: true, coverage: "85%" },
109 notes: "Implementation notes here"
110 }
111 ```
112 - Mark acceptance criteria as checked via `update_task`
113
114 **Testing phase for each task:**
115 - Use `update_task` to move status to "Testing"
116 - Run unit tests, integration tests, type check and lint for affected code
117 - **If tests PASS**: proceed to move task to "Review"
118 - **If tests FAIL**:
119 - Increment `retryCount` in devInfo
120 - If `retryCount >= maxRetries` (default: 2): move task to "Blocked", set work unit to "blocked", stop
121 - If `retryCount < maxRetries`: move task back to "Todo", document failure, continue to next task or stop session
122 - Use `update_task` to set status to "Review" when tests pass
123
124 - Update your TODO list (mark task as completed)
125
12610. Between tasks:
127 - Commit changes with meaningful commit messages
128 - Run tests to ensure no regressions
129 - Update work unit progress in devInfo
130
131## 4. Work Unit Progress Tracking
132
13311. The work unit tasks array automatically updates as tasks are completed.
134 - Use `get_work_unit` to check current state and task statuses
135 - Track: How many tasks in Review or Done vs. total?
136 - Monitor: Are we on track for target date?
137 - Work unit stays `in_progress` until all tasks reach `Review` or `Done`
138
13912. Update work unit `devInfo` as you progress via `update_work_unit`:
140 ```typescript
141 devInfo: {
142 executionPlan: "...",
143 sessionId: "<session-id>",
144 startedAt: "<timestamp>",
145 progress: {
146 completedTasks: 3,
147 totalTasks: 8,
148 lastTaskCompleted: "Implement cart API",
149 currentTask: "Add cart UI component"
150 },
151 testResults: {
152 unitTests: "passing",
153 integrationTests: "passing",
154 coverage: "85%"
155 },
156 blockers: [] // or list any blockers encountered
157 }
158 ```
159
160## 5. Work Unit Completion
161
16213. When ALL tasks in work unit are in "Review" or "Done":
163 - Verify all tasks have status "Review" or "Done"
164 - Verify all acceptance criteria across all tasks are met
165 - Run full test suite for the feature
166 - Review all files changed (use git diff)
167
16814. Draft a PR description for the work unit (DO NOT create the PR yet - just draft the text):
169 - Title format: `[WORK-UNIT-SLUG] Work unit title` (e.g., `[DXX-WU-1] Shopping cart feature`)
170 - Body should include:
171 - Work unit reference and summary
172 - List of tasks completed
173 - Summary of all changes across tasks
174 - Files modified (use `file.ts:42` format)
175 - Test results
176
17715. Use `update_work_unit` to set status to "completed" and save draft PR text and commit message:
178
179 ```typescript
180 {
181 status: "completed",
182 completedAt: new Date(),
183 devInfo: {
184 ...existing,
185 draftCommitMessage: "feat(cart): implement shopping cart feature\n\n- Add cart API endpoints\n- Add cart UI components\n- Add integration tests\n\nCloses: DXX-WU-1",
186 draftPr: {
187 title: "[DXX-WU-1] Shopping cart feature",
188 body: "## Summary\n\nImplemented shopping cart feature.\n\n## Tasks Completed\n\n- [DXX-1] Add cart API\n- [DXX-2] Add cart UI\n- [DXX-3] Add cart tests\n\n## Changes\n\n- Added cart endpoints\n- Added cart components\n- Added integration tests\n\n## Files Modified\n\n- src/api/cart.ts:42\n- src/components/Cart.tsx:15\n- tests/cart.test.ts:1\n\n## Test Results\n\nAll tests passing. Coverage: 85%"
189 },
190 finalNotes: "All tasks completed. Files changed: [...]. Tests passing.",
191 completedBy: "<member-id>",
192 totalDuration: "3.5 hours"
193 }
194 }
195 ```
196
197 **Note on draftCommitMessage**: Write a conventional commit message that will be used for the final git commit. Format: `type(scope): description` with optional body listing changes.
198
19916. Create final summary comment documenting:
200 - Work unit scope and goals achieved
201 - All files created/modified (use `file.ts:42` format)
202 - Test coverage and results
203 - Any follow-up work needed
204 - Performance or architectural notes
205
206## 6. Handle Blockers or Scope Changes
207
20817. If blocked on a task:
209 - Use `update_task` to set task status to "Blocked"
210 - Use `update_work_unit` to set status to "blocked"
211 - Document blocker in work unit devInfo
212 - Use `create_task_comment` on blocked task with details explaining what human intervention is needed
213 - Consider creating follow-up tasks for blockers
214
21518. If scope changes during execution:
216 - Use `create_task` to add new tasks to work unit
217 - Update work unit description/goals if needed
218 - Communicate scope change in work unit comments
219
220**Common Mistakes to Avoid**
221
222- ❌ Starting without reviewing all tasks in work unit (lack of context)
223- ❌ Working on tasks in wrong order (missing dependencies)
224- ❌ Skipping vibe-lint MCP validation (MANDATORY for every file)
225- ❌ Not tracking work unit-level progress in devInfo
226- ❌ Completing tasks in isolation without considering work unit goals
227- ❌ Not running integration tests between tasks
228- ❌ Moving task to "Review" without first going through "Testing"
229- ❌ Marking work unit complete when tasks are still in "In Progress" or "Testing"
230- ❌ Not documenting scope changes or blockers
231- ❌ Forgetting to commit between tasks (losing incremental progress)
232- ❌ Not updating work unit status when blocked
233- ❌ Setting work unit to "completed" before all tasks reach "Review" or "Done"
234- ❌ Executing tasks that are still in "Planning" status (must be promoted to "Todo" via `backlog-grooming` first)
235
236---
237
238**Source:** [`hashgraph-online/awesome-codex-plugins`](https://github.com/hashgraph-online/awesome-codex-plugins) → `plugins/AgiFlow/ai-plugin/skills/run-work/SKILL.md`