with one click
planning
Creating plans with 5+ items, phased checkpoints, orchestration
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Creating plans with 5+ items, phased checkpoints, orchestration
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Project orientation, status overview, and skill/agent discovery. Shows metrics, blockers, available skills, agents, and quick-start actions.
Methodology for complex changes spanning 3+ files, vendored code, or cross-crate boundaries. Consult before any multi-file change.
Pick and start the next task from @tasks. Queries status, presents available work, sets up context, and transitions to DOING.
When and how to use visual regression tests and AI-readable screenshots.
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
| auto-generated | true |
| name | planning |
| description | Creating plans with 5+ items, phased checkpoints, orchestration |
The Planning skill helps you create structured, phased plans for work that spans 5+ items. It guides you through decomposition, checkpoint placement, dependency mapping, agent assignment, and orchestration design.
Invoke with /plan.
Before decomposing, understand what you're building:
| Signal | Category | Typical Size |
|---|---|---|
| New user-visible capability | PROJ | 8-30h |
| Something is broken | BUG | 1-8h |
| Code quality, performance, DX | IMP | 4-16h |
If total effort is under ~4h (2-3 items), a flat list of ITEMs with dependencies is sufficient — skip checkpoints.
Break the work into atomic ITEMs following the Task Granularity Guidelines:
Use descriptive titles that make the work clear at a glance:
** ITEM Define search index data types ;; Good: specific
** ITEM Set up search ;; Bad: too vague
** ITEM Implement search index, query API, and UI ;; Bad: too large
Group items into phases by finding natural boundaries. Look for these patterns:
| Signal | Example |
|---|---|
| Sequential dependency | Backend must exist before frontend can call it |
| Domain boundary | Rust modules complete before Svelte components start |
| Risk layer | Core logic verified before edge cases addressed |
| Verification point | Integration tests meaningful only after both sides exist |
| Agent handoff | rust-architect finishes, svelte-developer begins |
Phase 1: Data types, Rust modules, Tauri commands
Phase 2: Svelte components, stores, UI integration
Phase 3: E2E tests, polish, edge cases
Phase 1: Scaffolding, configuration, base types
Phase 2: Core feature implementation
Phase 3: Error handling, performance, documentation
Place a ** CHECKPOINT heading between each phase group. Each checkpoint defines what must be true before proceeding.
** CHECKPOINT Descriptive phase boundary name
:PROPERTIES:
:CUSTOM_ID: CHK-NNN-MM-slug
:CRITERIA: Single sentence defining done for this phase
:VERIFY: Shell command(s) that confirm the checkpoint
:REVIEW_BY: agent-name(s) who should review
:END:
*** Gate Conditions
- [ ] Specific verifiable condition 1
- [ ] Specific verifiable condition 2
- [ ] Specific verifiable condition 3
| Property | Required | Description | Example |
|---|---|---|---|
CUSTOM_ID | Yes | Unique checkpoint ID | CHK-007-01-backend-ready |
CRITERIA | Yes | Single-sentence definition of done | Search index builds and queries return results |
VERIFY | Yes | Shell command(s) to run | cargo test --lib search |
REVIEW_BY | No | Agent(s) who review at this gate | rust-architect, testing-engineer |
CHK-NNN-MM-slug where:
NNN is the parent category number (e.g. 007 for PROJ-007)MM is the sequential checkpoint number within that category (01, 02, …)slug is a short kebab-case descriptionGate conditions should be:
;; Good gate conditions:
- [ ] cargo test passes for search module
- [ ] Tauri command returns results for test corpus
- [ ] No clippy warnings in new code
;; Bad gate conditions:
- [ ] Code looks good
- [ ] Everything works
- [ ] Tests pass
Wire DEPENDS properties between ITEMs to encode execution order.
DEPENDS: B (not both A and B)PROJ-NNN:ITEM-XXX syntaxFor a 2-phase project:
Phase 1: ITEM-070 ──→ ITEM-071
│
── CHECKPOINT ──────┤
│
Phase 2: ITEM-072 (DEPENDS: ITEM-071) ──→ ITEM-073
Match each ITEM to the agent best suited for the work. Consult the Agent Registry for available agents and their expertise.
| Domain | Primary Agent | Secondary |
|---|---|---|
| Rust modules, Tauri commands | rust-architect | svelte-developer |
| Svelte components, stores | svelte-developer | rust-architect |
| E2E tests, test infrastructure | testing-engineer | svelte-developer |
Note where agent responsibility changes at checkpoint boundaries. This is a natural review point:
Define how the plan will be executed, including parallelization and coordination.
Identify which items can run concurrently:
Sequential (dependency chain):
ITEM-070 → ITEM-071 → [CHECKPOINT] → ITEM-072
Parallel (independent within phase):
ITEM-073 ─┐
ITEM-074 ─┤→ [CHECKPOINT]
ITEM-075 ─┘
For each phase, specify:
Define the test strategy per phase:
| Phase | Test Layers | Commands |
|---|---|---|
| Backend | compile, test-rust, clippy | cargo test, cargo clippy |
| Frontend | compile, test-svelte | bun run check, bun vitest |
| Integration | e2e | bun run test:e2e |
| Visual | visual | bun run test:e2e (with screenshots) |
Assemble the org file in the appropriate directory:
@tasks/projects/PROJ-NNN-name.org@tasks/bugfixes/BUG-NNN-name.org@tasks/improvements/IMP-NNN-name.org#+TITLE: Short Project Title
#+STARTUP: overview
* PROJ-NNN Project Title
:PROPERTIES:
:CUSTOM_ID: PROJ-NNN
:GOAL: Clear outcome statement
:END:
;; Phase 1 items
** ITEM First task
:PROPERTIES:
...
:END:
** ITEM Second task
:PROPERTIES:
...
:END:
** CHECKPOINT Phase 1 complete
:PROPERTIES:
...
:END:
;; Phase 2 items
** ITEM Third task
:PROPERTIES:
...
:END:
** CHECKPOINT Phase 2 complete
:PROPERTIES:
...
:END:
Run validation to confirm the plan file is well-formed:
emacsclient -s sakya -e '(prd-validate-all-cli)'
If validation fails, fix the reported issues and re-validate.
A checkpoint is a ** CHECKPOINT heading placed between groups of ITEMs in a category file. It marks a phase boundary with explicit criteria that must be satisfied before proceeding to the next phase.
Checkpoints are a convention, not a validated entity type. The elisp validator silently ignores them because CHECKPOINT is not a TODO keyword and CHK-* IDs don't match the category ID pattern. This means:
| Property | Required | Format | Description |
|---|---|---|---|
CUSTOM_ID | Yes | CHK-NNN-MM-slug | Unique checkpoint identifier |
CRITERIA | Yes | Single sentence | Definition of done for the phase |
VERIFY | Yes | Shell command(s) | Command(s) to confirm the checkpoint |
REVIEW_BY | No | Comma-separated agent names | Who reviews at this gate |
DEPENDS to reference CHK-* IDs — dependencies point to ITEMs only- [ ] syntaxA project with 2 phases and checkpoints:
* PROJ-007 Search Feature
:PROPERTIES:
:CUSTOM_ID: PROJ-007
:GOAL: Full-text search across manuscripts
:END:
** ITEM Create search index module
:PROPERTIES:
:CUSTOM_ID: ITEM-070-search-index
:AGENT: [[file:agents/rust-architect.org::#core][rust-architect:core]]
:EFFORT: 2h
:PRIORITY: #A
:TEST_PLAN: compile, test-rust
:END:
*** Description
Implement a search index using tantivy. Define the schema, indexing pipeline,
and query interface as a Rust module.
*** Acceptance Criteria
- [ ] Search index builds from document corpus
- [ ] Query returns ranked results
- [ ] Module has unit tests
** ITEM Add indexing Tauri command
:PROPERTIES:
:CUSTOM_ID: ITEM-071-index-command
:AGENT: [[file:agents/rust-architect.org::#core][rust-architect:core]]
:EFFORT: 1h
:PRIORITY: #A
:DEPENDS: ITEM-070-search-index
:TEST_PLAN: compile, test-rust
:END:
*** Description
Expose the search index as Tauri commands: index_documents and search_query.
*** Acceptance Criteria
- [ ] Tauri command indexes documents
- [ ] Tauri command returns search results as JSON
- [ ] Integration test exercises the IPC boundary
** CHECKPOINT Backend search ready
:PROPERTIES:
:CUSTOM_ID: CHK-007-01-backend-ready
:CRITERIA: Search index builds and queries return results via Tauri command
:VERIFY: cargo test --lib search
:REVIEW_BY: rust-architect
:END:
*** Gate Conditions
- [ ] cargo test passes for search module
- [ ] Tauri command returns results for test corpus
- [ ] No clippy warnings
** ITEM Create search UI component
:PROPERTIES:
:CUSTOM_ID: ITEM-072-search-ui
:AGENT: [[file:agents/svelte-developer.org::#core][svelte-developer:core]]
:EFFORT: 2h
:PRIORITY: #A
:DEPENDS: ITEM-071-index-command
:TEST_PLAN: compile, test-svelte, e2e
:END:
*** Description
Build the search interface: input field, results list, and navigation to
matching documents. Calls the search_query Tauri command.
*** Acceptance Criteria
- [ ] Search input triggers query on keypress (debounced)
- [ ] Results display with title and context snippet
- [ ] Clicking a result navigates to the document
** CHECKPOINT Search feature complete
:PROPERTIES:
:CUSTOM_ID: CHK-007-02-feature-complete
:CRITERIA: User can search manuscripts and navigate to results
:VERIFY: bun run test:e2e -- --grep search
:REVIEW_BY: svelte-developer, testing-engineer
:END:
*** Gate Conditions
- [ ] E2E test covers search flow
- [ ] Visual regression passes
- [ ] Performance: <200ms for 1000-document corpus