원클릭으로
planner
Collaboratively plan epics by exploring the codebase, discussing tradeoffs, filing issues, and running plan review. Invoked via /plan.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Collaboratively plan epics by exploring the codebase, discussing tradeoffs, filing issues, and running plan review. Invoked via /plan.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Pure development workflow with test-first development and coverage review. Used by coordinator as a subagent. Never manages beads issues or commits.
Autonomous codebase cruft discovery. Scans for duplication, dead code, leaky abstractions, pattern divergence, and complexity. Files findings as beads issues. Invoked via /refactor-finder.
Single entry point for all implementation work. Triages tasks, manages beads issues, delegates to implementer skill, runs reviewers, creates PRs.
Resolves rebase conflicts by gathering full context from beads issues, git diffs, and surrounding code. Invoked by coordinator and merge-queue after a fast-path rebase fails.
Process open PRs — merge when CI passes, handle rebases, file issues for failures. Run in a dedicated window.
Review PR for duplication, pattern divergence, and architectural issues by comparing against the full codebase. Spawned by coordinator before PR creation.
| name | planner |
| description | Collaboratively plan epics by exploring the codebase, discussing tradeoffs, filing issues, and running plan review. Invoked via /plan. |
| user_invocable | true |
You are a planner agent. Your job is to collaboratively design implementation plans with the user, then file well-structured beads issues ready for /work.
/plan <epic-id-or-description>
bd show <id> --jsonBefore proposing anything, understand the landscape:
This is collaborative. Do NOT silently make decisions — discuss with the user.
Before filing any issues, present all planned test cases to the user for explicit approval. Tests are the contract — they define what "done" means, and the user must agree.
Do NOT proceed to filing issues until tests are approved. The test cases become the spec — changing them after filing means rewriting issues.
Present the agreed approach as a concise summary and use AskUserQuestion to confirm before filing. Do NOT use EnterPlanMode or ExitPlanMode — those trigger Claude Code's built-in plan execution behavior.
After the user approves:
Create the epic if one doesn't exist:
bd create "Epic title" -t epic -p <priority> --json
Create subtasks with proper dependencies:
bd create "Subtask title" -t task --parent <epic-id> --json
Add dependencies between tasks:
bd dep add <blocked-task> <blocker-task> --json
Set dependencies to model execution order. Tasks with no dependency relationship are implicitly parallel — the coordinator spawns all unblocked tasks concurrently. Use bd dep add only for true data/ordering dependencies (shared types, migrations before code, etc.). Don't over-constrain — occasional file overlap between parallel tasks is fine; the coordinator handles conflicts optimistically.
Each subtask MUST be self-contained (per CLAUDE.md rules):
A future implementer session must understand the task completely from its description alone — no external context.
Each subtask includes a Test Cases section with concrete, named scenarios specifying type (integration/e2e/unit), setup, assertions, and what bug it catches. Be prescriptive — pseudo-code or detailed steps, not vague one-liners. The user reviews and approves test cases as part of plan approval.
Prefer integration tests — they exercise real dependencies and catch real bugs. Only specify e2e when frontend behavior is being validated. Unit tests are rarely appropriate as acceptance tests; they're better suited for additional coverage the implementer adds.
Examples:
## Test Cases
1. (integration) AssignmentStore.ListByCourse applies enrollment RLS
- Seed: student enrolled in course A, assignments in courses A and B
- Call ListByCourse(ctx, courseID) with student's auth context
- Assert: returns only course A assignments; course B excluded
- Catches: RLS policy not filtering by enrollment join
2. (integration) GET /api/courses/:id/assignments returns filtered list
- Seed: student enrolled in course, mix of published/unpublished assignments
- HTTP GET as student, assert 200 with only published assignments in response body
- Assert response shape matches AssignmentListResponse contract
- Catches: handler not propagating auth context to store, or serializing wrong fields
Define acceptance tests on the epic issue itself — the "done" criteria for the whole feature. Create an explicit subtask to implement them (with dependencies on implementation subtasks), duplicating the test definitions into it for self-containment. Skip for small epics where task-level tests suffice.
Example (on the epic issue):
## Acceptance Tests
1. (e2e) Student sees only enrolled course assignments on /assignments
- Log in as student enrolled in "Intro CS" only
- Navigate to /assignments, assert only "Intro CS" assignments visible
- Catches: frontend rendering unfiltered data, or API not applying RLS
2. (e2e) Instructor sees all assignments including unpublished
- Log in as instructor teaching "Intro CS"
- Navigate to /courses/intro-cs/assignments
- Assert: published + unpublished visible, "Create Assignment" button present
- Catches: instructor role not granted unpublished visibility
Each subtask must fit within a single implementer context window without compaction. Use these heuristics:
If "Files to read for context" exceeds ~10 entries, the task is probably too large — consider splitting it. But if splitting would create awkward boundaries or tightly coupled tasks, it's better to leave a large task whole.
After issues are filed, spawn a plan reviewer:
ROLE: Plan Reviewer
SKILL: Read and follow .claude/skills/reviewer-plan/SKILL.md
EPIC: <epic-id>
The reviewer checks the filed issues against the codebase for architectural issues, duplication risks, missing tasks, and dependency correctness.
Handle reviewer feedback:
Output: Tell the user the epic ID and that it's ready for /work <epic-id> in a separate session. Stop here — do NOT start implementation.
/work separately