backlog-grooming · diff
git:20260604.8378e76 to git:20260710.f9e2b31
29 added, 227 removed. Audit A to A.
---
name: backlog-grooming
- description: "Groom Planning tasks: verify readiness, prioritize, promote to Todo, and group into 3-8 task work units. The only gate from Planning to Todo. Invoked as /agiflow:backlog-grooming. Uses list_tasks, update_task, reorder_tasks, batch_create_work_units, list_work_units."
- tags:
- - agiflow
- - mcp
- - grooming
- - work-units
- - prioritization
- metadata:
- mirrors: backend/apis/agiflow-api .../prompts/backlogGrooming.md
- ---
-
- > Invoked as `/agiflow:backlog-grooming`. In hosts without slash-prompts, this skill is triggered by matching intent and drives AgiFlow via its MCP tools.
-
- **Usage**:
-
- - `/agiflow:backlog-grooming` - Groom the planning backlog
- - `/agiflow:backlog-grooming <tag-filter>` - Groom tasks with specific tags
-
- **Examples**:
-
- - `/agiflow:backlog-grooming` (review all planning tasks)
- - `/agiflow:backlog-grooming feature:auth` (groom auth-related tasks only)
-
- ---
-
- **Purpose**
- Prioritize tasks from "Planning" to "Todo", group them into work units, and validate readiness for execution. This is the **ONLY** skill that moves tasks from Planning to Todo — no other workflow should bypass this gate.
-
- **Guardrails**
-
- - ONLY operate on tasks in "Planning" status
- - REFUSE to promote tasks that lack acceptance criteria (minimum 2) — suggest `refine-task` first
- - REFUSE to promote tasks with vague descriptions — suggest `refine-task` first
- - Work units are created ONLY during this skill (not during project-plan or run-work)
- - All promoted tasks must have a clear "done" definition
- - Work-unit dependencies must be explicit at the **work unit level**, not hidden inside mixed task groupings
- - If a task can ship independently, it MUST live in its own standalone path or its own work unit; do NOT mix it into a downstream dependent work unit
-
- ---
-
- ## AgiFlow Project Management Guidelines
-
- Follow 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.
-
-
+ description: Review Agiflow Planning tasks for readiness, prioritize approved work, group related tasks into work units, and promote ready tasks to Todo. Use when grooming a backlog, organizing planned tasks, creating work units, or deciding what should be executed next.
---
- **Steps**
-
- ## 1. Load Planning Backlog
-
- 1. Use `list_tasks` MCP tool with `status: "planning"` to load all tasks awaiting grooming.
- 2. Use `list_work_units` MCP tool to understand existing work unit organization.
- 3. Use `list_members` MCP tool to understand available agents and their capabilities.
-
- If no tasks are in "Planning" status, report: "No tasks to groom. Use **project-plan** to create tasks first."
-
- ## 2. Assess Readiness
-
- 4. For each planning task, check:
-
- | Criterion | Required? | If missing |
- | ---------------------------------- | ----------- | ------------------------------- |
- | Has 2+ acceptance criteria | Yes | Flag — suggest `refine-task` |
- | Description has sufficient context | Yes | Flag — suggest `refine-task` |
- | Priority is set | Yes | Can be set during grooming |
- | Tags are applied | Recommended | Can be set during grooming |
- | Assignee is set | Optional | Can be assigned during grooming |
-
- 5. Categorize tasks:
- - **Ready**: Meets all required criteria — can be promoted
- - **Needs refinement**: Missing acceptance criteria or vague description — suggest `refine-task`
- - **Blocked**: Has unresolved dependencies or unknowns
-
- 6. Present readiness report to user:
- - N tasks ready for promotion
- - M tasks need refinement (list them with reasons)
- - K tasks are blocked (list blockers)
-
- Do NOT promote tasks that need refinement. The user must address them first.
-
- ## 3. Prioritize
-
- 7. For ready tasks, apply prioritization criteria:
-
- | Factor | Weight | How to assess |
- | ---------------------- | ------------ | ------------------------------------------ |
- | **Business value** | High | User-facing > internal tooling > tech debt |
- | **Risk / uncertainty** | High | Higher risk = do sooner to fail fast |
- | **Dependencies** | Must respect | Blockers before dependents |
- | **Effort vs. impact** | Medium | Quick wins first if equal priority |
- | **Tags** | Grouping | Related tags suggest natural batches |
-
- 8. Present ranked priority list to user for confirmation:
- - Rank, title, tags, priority, estimated effort
- - Call out any dependency constraints ("Task A must come before Task B")
- - Highlight quick wins (high impact, low effort)
-
- 9. Get user confirmation on priority order before promoting.
-
- ## 4. Group into Work Units
-
- 10. Analyze ready tasks and identify cohesive groups:
-
- ### GROUP INTO WORK UNIT when:
-
- - 3-8 related tasks that deliver a single cohesive feature
- - Tasks share the same tag prefix (e.g. all `feature:auth` tasks)
- - Tasks can be completed in ONE agent session (2-4 hours)
- - Tasks have clear dependencies and should be executed together
- - All tasks in the work unit share the same upstream dependency story and can merge back to `main` together
-
- ### DO NOT CREATE WORK UNIT when:
-
- - Only 1-2 tasks (leave as standalone)
- - Unrelated tasks (bugs across different areas)
- - Maintenance work (dependency updates, config changes)
- - More than 8 tasks (split into multiple work units)
- - Some tasks are independently executable now, but others are blocked on upstream work — split them into separate work units or leave the smaller independent slice standalone
-
- 11. Use `batch_create_work_units` MCP tool to create all work units at once. Each work unit should have:
-
- - **title**: Clear feature name (e.g., "Authentication Feature")
- - **type**: "feature" (most common), "epic" (multi-feature), "initiative" (business goals)
- - **description**: What this work unit delivers and why
- - **status**: "planning"
- - **priority**: Based on business impact
- - **estimatedEffort**: Story points (Fibonacci: 1, 2, 3, 5, 8, 13)
- - **taskIds**: List of task IDs belonging to this work unit
- - **devInfo**: Include `executionPlan` describing implementation order
-
- Leave standalone tasks (1-2 tasks) ungrouped — they can be executed individually via `run-task`.
-
- ## 5. Cross-Work-Unit Dependency Analysis
-
- **Before promoting ANY tasks, you MUST analyze dependencies across ALL work units — not just the ones you're creating now.**
- **CRITICAL:** Work units merge back to `main` only after the work unit completes. Because of that, dependency management must be explicit at the work-unit level. Do NOT create a work unit that contains both:
-
- - tasks that can start immediately, and
- - tasks that depend on another work unit being completed and merged.
-
- If you find mixed readiness inside a proposed work unit, split it into:
-
- - an independent standalone task or parallel work unit, and
- - a downstream dependent work unit that stays in `Planning` until its upstream work units are completed and merged.
-
- 12. **Load full WU context**: Use `list_work_units` to retrieve ALL existing work units in `planning`, `in_progress`, or `review` status. You need the complete picture, not just the new WUs.
-
- 13. **Identify cross-WU touchpoints**: For each new work unit, check if it shares any of the following with existing or other new WUs:
- - **Shared files/modules**: Two WUs modifying the same source files (high merge conflict risk)
- - **API contracts**: A WU producing an API that another WU consumes
- - **Shared schemas**: Database migrations or model changes that other WUs depend on
- - **Shared UI components**: A WU creating components another WU needs to use
-
- 14. **Determine execution order across WUs**:
-
- | Relationship | Rule |
- | -------------------------------------------------- | ----------------------------------------- |
- | WU-B consumes API/schema/component created by WU-A | WU-A must finish first (upstream) |
- | WU-A and WU-B modify the same core files | Run sequentially — do NOT run in parallel |
- | WU-A and WU-B are fully independent | Can run in parallel |
-
- **Merge-aware rule:** if WU-B needs code from WU-A to exist on `main`, then WU-B is downstream even if one or two tasks inside it look independently executable. Split those tasks out rather than keeping a mixed WU.
-
- 15. **Annotate dependencies in WU descriptions**: For any downstream WU, add to its description:
-
- ```
- **Depends on:** [WU slug/title] — [reason: e.g., "needs the user API endpoints from WU-A"]
- **Cannot start until:** [WU slug] is "completed" and merged back to `main`
- **Merge rule:** this work unit must not be dispatched until all upstream dependencies are merged
- ```
-
- 16. **Apply sequential gating**:
- - **Upstream WUs** (no dependencies): Promote their tasks to "Todo" normally
- - **Downstream WUs** (depend on upstream): Keep all of their tasks in "Planning" — do NOT promote any of them to "Todo" yet
- - **Mixed readiness discovered inside one proposed WU**: do NOT promote only the independent tasks while leaving the rest behind. Split the work into separate WUs or leave the independent slice standalone, then promote only the standalone/upstream unit.
-
- **Promotion rule**: REFUSE to promote tasks that depend on work from an upstream WU that is not yet "completed" and merged. The merge train must be respected.
-
- 17. Present the cross-WU execution plan to the user:
- ```
- Work Unit Execution Order:
- 1. [WU-A slug] — no dependencies, can start immediately
- 2. [WU-B slug] — no dependencies, can run in parallel with WU-A
- 3. [WU-C slug] — depends on WU-A and WU-B being completed and merged; all tasks held in Planning
- ```
-
- ## 6. Promote Tasks: Planning -> Todo
-
- 18. For each approved task (in priority order), respecting the gating rules from Step 5:
-
- - Use `update_task` MCP tool with `status: "todo"`
- - Set `position` for ordering within the Todo column (lower = higher priority)
- - Assign agent if not already assigned
- - Respect dependency order: prerequisite tasks get lower position numbers
- - **Do NOT promote tasks that are gated by an upstream work unit that is not yet completed and merged**
-
- This is the **ONLY** path from Planning to Todo. No other skill should bypass this.
-
- ## 7. Verify
+ # Agiflow Backlog Grooming
- 19. Use `list_tasks` with `status: "todo"` to confirm all promotions.
- 20. Use `list_work_units` to confirm groupings are correct.
- 21. Present summary to user:
+ Treat grooming as the quality gate between Planning and Todo.
- - N tasks promoted from Planning to Todo
- - M work units created (with task counts)
- - K tasks left in Planning (need refinement)
- - J tasks held in Planning (gated by upstream WU dependencies and merge order)
- - Cross-WU execution order
- - Dependency order and execution sequence
- - Agent assignments
+ ## Workflow
- 22. Recommend next steps:
+ 1. Resolve the target project and call `list_project_statuses` to discover its exact status names.
+ 2. Call `list_tasks` for Planning tasks, `list_work_units` for existing active work units, and `list_members` for assignment context.
+ 3. Call `get_task` for tasks whose readiness, dependencies, or acceptance criteria are unclear.
+ 4. Classify every Planning task as:
+ - Ready
+ - Needs refinement
+ - Blocked by a dependency
+ - Duplicate or obsolete
+ 5. Require a clear outcome, sufficient context, and at least two testable acceptance criteria before promotion.
+ 6. Propose a priority order and explain the tradeoffs.
+ 7. Group three to eight cohesive tasks into a work unit only when they deliver one shared capability. Leave one or two related tasks standalone and split groups larger than eight.
+ 8. Review existing work units for shared dependencies and sequencing conflicts.
+ 9. Present the proposed promotions, work units, assignments, and dependency order. Request approval before writing.
+ 10. After approval:
+ - Use `batch_create_work_units` for approved groups.
+ - Use `update_task` to move only ready, ungated tasks to the exact Todo status and set their ordering.
+ 11. Verify with `list_tasks` and `list_work_units`.
- - "Use **run-work** to execute a work unit (implements all its tasks sequentially)."
- - "Use **run-task** to execute standalone tasks individually."
- - "Use **orchestrate** for automated priority-based task dispatch."
- - If downstream WUs are gated: "After [upstream WU] completes and is merged to `main`, run **backlog-grooming** again to promote the held tasks."
+ ## Guardrails
- ---
+ - Never promote a vague task or a task missing testable acceptance criteria.
+ - Never promote a downstream task whose required upstream work is incomplete.
+ - Do not force unrelated work into one work unit.
+ - Do not modify records before the user approves the proposed grooming plan.
+ - Recommend `refine-task` for tasks that fail readiness checks.
- **Common Mistakes to Avoid**
+ ## Response
- - Promoting tasks without acceptance criteria (quality gate violation)
- - Creating work units with >8 tasks (too complex for one session)
- - Grouping unrelated tasks into one work unit (not cohesive)
- - Skipping user confirmation on priority order
- - Not respecting dependency ordering when setting positions
- - Promoting blocked tasks (resolve blockers first)
- - Creating work units during project-plan (that's this skill's job)
- - Promoting dependent WU tasks while the upstream WU is still in progress (causes merge conflicts)
- - Creating WUs in isolation without checking existing WUs for shared file/module touchpoints
- - Mixing independent and downstream-dependent tasks inside one work unit when work units only merge at completion
- - Promoting a subset of tasks from a downstream-dependent work unit instead of splitting that work into separate merge-safe units
- - Not annotating cross-WU dependencies in WU descriptions (next grooming session loses context)
+ Report promoted tasks, created work units, items left in Planning, dependency gates, and the recommended execution order.