End-to-end project planning toolkit: converts requirements into structured phased implementation plans, groups phases into dependency-ordered waves for parallel subagent execution, and decomposes large branches into focused pull requests.
90
90%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Passed
No known issues
A large PR fails reviewers because it mixes concerns — infrastructure sits next to business logic sits next to test cleanup. Reviewers cannot build a mental model of any single change when everything changes at once.
The fix is to group commits by what kind of thing changed, not by when they were written or what ticket they belong to. Each group becomes its own PR targeting the previous one (stacked branches), so changes can be reviewed and merged in order without blocking unrelated work.
Two failure modes to avoid:
The sweet spot is 2–4 PRs where each one can be understood by a reviewer who only knows that domain.
Load Workflow Steps for full commands. Summary: analyse → group → propose (table, wait for approval) → name → stack (cherry-pick) → describe (What/Why) → remind about target branches.
Consider adapting concern labels to the codebase — if there is no infrastructure layer, you may optionally collapse to two groups (application logic + tests).
# Step 1 — read commits and files changed before grouping
git log <base>..<branch> --oneline --reverse
git diff-tree --no-commit-id -r <sha> --name-only❌ NEVER name branches with sequence numbers (wave-1, phase-2, part-1)
WHY: Sequence names lose meaning after any rebase or reorder. A reviewer cannot determine scope without reading the full diff.
# BAD — reviewer cannot tell what changes without reading the diff
feature/PROJ-123-wave-1
feature/PROJ-123-phase-2
# GOOD — scope is clear from the name alone
feature/PROJ-123-add-cdk-stack-and-iam
feature/PROJ-123-add-jwt-handler-and-testsConsequence: Reviewers rubber-stamp because they cannot build a mental model.
❌ NEVER create branches or cherry-pick before the user approves the grouping
WHY: Grouping requires domain knowledge the agent does not have. A misassigned commit means deleting and recreating branches.
Consequence: Wasted cycles cleaning up wrong branches; conflicts from reordering.
❌ NEVER split commits that share a single failing test (broken intermediate state)
WHY: If PR 1 removes a handler and PR 2 adds its replacement, PR 1 alone fails CI.
Consequence: The merge queue blocks. The entire decomposition must restart.
❌ NEVER write MR descriptions as file lists or commit logs
WHY: A reviewer can already read the diff. The What/Why format gives the context that a reviewer without prior knowledge actually needs.
# BAD — no context, reviewer learns nothing
# - Updated auth-stack.ts
# - Added auth-role.ts
# GOOD — answers what changed and why it was necessary
# **What:** Provisions the CDK stack and IAM role the new auth service requires.
# **Why:** Without dedicated infrastructure, the service cannot deploy to any environment.Consequence: Reviewers miss architectural intent and are more likely to approve problematic changes.
❌ NEVER leave cherry-pick conflicts unresolved before reporting completion
WHY: A branch with conflicts is not buildable. The user discovers this only when CI runs.
ALWAYS resolve every conflict and verify the branch compiles before reporting success.
Consequence: The entire decomposition must restart. Partial branches pollute the remote.
Given commits touching infra (CDK, IAM), application logic (handlers + tests), and housekeeping (lock file, Makefile), the grouping table looks like:
| PR | Branch | Concern |
|---|---|---|
| 1 | feature/PROJ-123-add-cdk-stack-and-iam | Infrastructure |
| 2 | feature/PROJ-123-add-handlers-and-tests | Application logic + tests |
| 3 | feature/PROJ-123-housekeeping | Housekeeping |
See Worked Example for the complete walkthrough.