with one click
plan
// Strategic planning — create implementation plan from brainstorm specs. Tasks, dependencies, acceptance criteria.
// Strategic planning — create implementation plan from brainstorm specs. Tasks, dependencies, acceptance criteria.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | plan |
| description | Strategic planning — create implementation plan from brainstorm specs. Tasks, dependencies, acceptance criteria. |
Turn brainstorm decisions into an actionable implementation plan.
This skill MAY: read specs, read codebase, ask questions, write plan document, update brainstorm checkboxes. This skill MAY NOT: edit code, implement anything, run tests, deploy.
NEVER write code during this skill. This is planning, not implementation.
/unipi:plan specs:<path>(multiple,optional) <string(greedy)>(optional)
specs:<path> — one or more brainstorm specs to plan from (auto-suggested)string(greedy) — optional scope guidance (e.g., "focus on API layer only").unipi/docs/.unipi/docs/ directory.unipi/docs/plans/YYYY-MM-DD-<topic>-plan.md
Committed to current branch.
specs: arg provided, read those spec files.unipi/docs/specs/ and ask user to chooseExit: Spec(s) loaded. Understand what to plan.
string(greedy) provided: use it to scope planning (e.g., "focus on auth only")"Where should this work happen?"
- Main branch — work directly on main (small/medium tasks, low risk)
- New branch — isolated worktree (larger tasks, risky changes)
If "New branch": "What branch name? (e.g.,
feat/auth, or press enter for auto-naming based on spec topic)"
Record the decision:
workbranch: will be empty in plan frontmatterworkbranch: {branch-name} in plan frontmatter (auto-generate feat/{topic} if not provided)Exit: No blockers. Branch strategy decided. Ready to plan.
Structure the plan with heart of gold style:
---
title: "{Topic} — Implementation Plan"
type: plan
date: YYYY-MM-DD
workbranch: {branch-name} # empty string = work on main branch
specs:
- path/to/spec.md
---
# {Topic} — Implementation Plan
## Overview
{Brief summary of what this plan covers}
## Tasks
- unstarted: Task 1 — {Task Name}
- Description: {What needs to be done}
- Dependencies: {None, or list of tasks}
- Acceptance Criteria: {How to verify done}
- Steps:
1. {Concrete step}
2. {Concrete step}
- unstarted: Task 2 — {Task Name}
- Description: ...
- Dependencies: ...
- Acceptance Criteria: ...
- Steps: ...
## Sequencing
{Order of execution, dependency graph if complex}
## Risks
{Potential blockers or concerns}
Tasks use prefixes to track progress:
| Status | Meaning |
|---|---|
unstarted: | Not started |
in-progress: | Being worked on |
completed: | Done and verified |
failed: | Attempted but failed, needs investigation |
awaiting_user: | Needs user action (test, approve, provide input) |
blocked: | Waiting on dependency or external factor |
skipped: | Intentionally not doing (deferred, out of scope) |
After plan is complete:
[x][ ]Example:
## Implementation Checklist
- [x] Set up auth middleware — covered in Task 1
- [x] Create login endpoint — covered in Task 2
- [ ] Add OAuth support — deferred to next plan
- [ ] Rate limiting — out of scope
This creates the link between brainstorm and plan — plan covers some items, others remain for future plans.
Semantics: Spec [x] means "planned" (covered by a plan). It does NOT mean "done". Implementation progress is tracked in the plan file, not the spec.
Self-check before presenting:
/unipi:work sessionDo NOT re-read or re-edit the spec checkboxes — Phase 4 already wrote them.
Present plan summary to user. Then ask what to do next. If ask_user is available, prefer structured handoff options using action: "new_session" so the selected workflow can be queued automatically:
ask_user({
question: "What would you like to do next?",
options: [
{
label: "Proceed to /unipi:work",
description: "Start implementing the plan",
value: "work",
action: "new_session",
prefill: "<work-command>",
},
{
label: "Proceed to /unipi:auto",
description: "Run full pipeline (work → review → merge)",
value: "auto",
action: "new_session",
prefill: "/unipi:auto plan:YYYY-MM-DD-<topic>-plan.md",
},
{ label: "Revise plan", description: "Adjust tasks or scope", value: "revise" },
{ label: "Done for now", description: "Return later", value: "done", action: "end_turn" },
],
allowFreeform: false,
})
Use the correct <work-command>:
/unipi:work worktree:<branch-name> specs:YYYY-MM-DD-<topic>-plan/unipi:work specs:YYYY-MM-DD-<topic>-plan (no worktree arg)Copyable fallback commands when ask_user is unavailable:
/unipi:work worktree:<branch-name> specs:YYYY-MM-DD-<topic>-plan
/unipi:work specs:YYYY-MM-DD-<topic>-plan
/unipi:auto plan:YYYY-MM-DD-<topic>-plan.md
Recommend starting a new session for work if using a worktree; the ask_user launcher handles compact/direct queuing when available.
If user runs /unipi:plan on an existing plan:
completed: tasks