A workflow pattern for AI-assisted development that separates planning from execution, using context isolation to keep each layer focused.
Large tasks overwhelm a single Claude session:
- Context fills with implementation details
- Hard to track overall progress
- Easy to lose sight of the plan while deep in code
- Discovered work gets forgotten or mixed with current task
┌─────────────────────────────────────────────────────────────────┐
│ PLANNING LAYER │
│ /bdplan "Build user auth with JWT" │
│ → Creates epic + task issues with dependencies │
│ → Output: dependency tree, ready tasks │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ ORCHESTRATION LAYER (tmux panel 1) │
│ /bdexec [epic-id] │
│ │
│ Loop: │
│ 1. bd ready → find next unblocked task │
│ 2. Show summary card │
│ 3. /bdissue [task-id] → fork to implementation │
│ 4. Show completion card │
│ 5. Repeat until done │
│ │
│ This context stays CLEAN—only tracks which tasks done/blocked │
└─────────────────────────────────────────────────────────────────┘
↓ (forked) ↓ (parallel)
┌──────────────────────────────┐ ┌─────────────────────────────┐
│ IMPLEMENTATION CONTEXT │ │ TRIAGE CONTEXT │
│ /bdissue task-5 │ │ /bdtriage │
│ │ │ │
│ - Claims issue immediately │ │ - Captures discovered work │
│ - Reads issue details │ │ - Creates new issues │
│ - Implements code │ │ - Sets dependencies │
│ - Makes atomic commits │ │ - Never implements │
│ - Tracks progress (bd cmts) │ │ │
│ - Closes when done │ │ "The login is slow" │
│ │ │ → Creates perf bug issue │
│ Context: FULL (all details) │ │ │
│ Lifetime: ONE TASK │ │ "Add dark mode someday" │
│ │ │ → Creates feature issue │
└──────────────────────────────┘ └─────────────────────────────┘
Takes requirements, outputs a structured plan as beads issues:
/bdplan "Build user authentication with email/password and JWT tokens"What it does:
- Creates an epic issue for the overall feature
- Breaks down into task issues with clear acceptance criteria
- Sets up dependency chains (what blocks what)
- Outputs the dependency tree and first ready tasks
Output example:
Epic: proj-100 "User Authentication System"
├─ proj-101 "Design database schema" (ready)
├─ proj-102 "Implement registration" (blocked by 101)
├─ proj-103 "Password hashing" (blocked by 101)
├─ proj-104 "JWT token utility" (ready)
├─ proj-105 "Login endpoint" (blocked by 102, 104)
└─ proj-106 "Auth middleware" (blocked by 105)
Ready to start: proj-101, proj-104
Loops through ready tasks, dispatching each to /bdissue:
/bdexec proj-100 # Execute all tasks under this epicWhat it does:
- Finds ready work (
bd ready) - Shows a summary card before each task
- Invokes
/bdissue [task-id]in a forked context - Shows completion status
- Repeats until no ready work remains
The key insight: /bdexec stays lightweight. It only tracks:
- Which tasks were attempted
- Which completed vs blocked
- New issues that appeared
All implementation details live in the forked /bdissue contexts.
Example output:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▶ STARTING: proj-101 (P1)
Design database schema for users table
Create migration with email, password_hash, timestamps
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[forked context runs /bdissue proj-101]
✓ DONE: proj-101 — completed
Created users migration, added indexes
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▶ STARTING: proj-104 (P1)
Create JWT token generation utility
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[forked context runs /bdissue proj-104]
✓ DONE: proj-104 — completed
Added JwtService with sign/verify, specs passing
Executes one issue with full implementation context:
/bdissue proj-101Critical first step: Claim immediately
bd update proj-101 --status in_progressWhat it does:
- Claims the issue (
--status in_progress) - Reads full issue details and acceptance criteria
- Implements the work with atomic commits
- Tracks progress via
bd comments add - Closes when done with summary
Handles blockers gracefully:
# Discovered a blocker
bd create "Config schema missing" --priority 0
bd dep add proj-101 proj-107 --type blocks
bd comments add proj-101 "Blocked by proj-107"
bd update proj-101 --status open
# Reports back: "blocked by proj-107"A dedicated context for creating issues without implementing:
/bdtriageBehavior:
- Statements → Issues: "The login is slow" creates a performance bug
- Questions → Research: "Where is auth handled?" gets answered
- Never implements: Only captures work items
Why separate? When you're deep in implementation, you notice things: edge cases, tech debt, ideas. Triage captures these without derailing current work.
For sustained work sessions, run two tmux panels:
┌─────────────────────────────────┬────────────────────────────────┐
│ Panel 1: /bdexec │ Panel 2: /bdtriage │
│ │ │
│ Orchestrating task execution │ Capturing discovered work │
│ - Shows current task progress │ - "Add rate limiting" │
│ - Tracks completion/blockers │ → Creates feature issue │
│ - Auto-advances to next task │ - "That N+1 query is bad" │
│ │ → Creates bug issue │
│ You watch; it executes │ You dictate; it files │
└─────────────────────────────────┴────────────────────────────────┘
Why this works:
/bdexechandles the queue—you don't have to track "what's next"/bdtriagecaptures drive-by observations without switching context- Both feed into the same
bddatabase - New issues from triage may become blockers for exec's current work
The /bdissue command uses context: fork in its frontmatter:
---
context: fork
---This means:
- Full conversation context available (can see what led here)
- Tool calls don't pollute the parent conversation
- When done, only the final summary returns to
/bdexec
Result: /bdexec stays clean. It sees:
✓ DONE: proj-101 — completed
Created users migration, added indexes
Not the 50 tool calls that made that happen.
Good fit:
- Multi-task features (5+ issues)
- Work that will span multiple sessions
- Projects where you want audit trail of decisions
- Teaching scenarios (progress is visible)
Overkill:
- Single-issue bug fixes
- Quick explorations
- Tasks where the full plan is in your head
# Check what's ready
bd ready
# If resuming work on an epic
bd dep tree proj-100
bd ready --epic proj-100 # (if your bd supports this filter)The /bdexec loop handles most things, but watch for:
- Repeated blockers: Same issue keeps blocking? Might need human input
- Scope creep: Triage creating lots of issues? Pause and prioritize
- Test failures:
/bdissueshould stop and report, not push through
# Check state
bd list --status in_progress # Should be empty
bd list --status open # Remaining work
# Sync to git
bd sync
git status
git push| Layer | Command | Context | Purpose |
|---|---|---|---|
| Planning | /bdplan |
Normal | Create structured issue tree |
| Orchestration | /bdexec |
Normal (lightweight) | Loop through ready tasks |
| Implementation | /bdissue |
Forked (isolated) | Execute single task with full detail |
| Capture | /bdtriage |
Normal | File discovered work as issues |
The magic is in the separation: planning happens once, orchestration stays clean, implementation gets full context, and discovered work doesn't get lost.