Executing Plans
SkillProductivityExecute plan — implement tasks, test, commit on done. Works in worktree or on main branch. Resumable.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Executing Plans skill
What this skill tells your AI
The instructions your AI receives, as published by neuron-mr-white/unipi in packages/workflow/skills/work/SKILL.md and read by ahel’s review.
Load plan, review critically, execute tasks, commit when complete.
Boundaries
This skill MAY: read/write code, read/write .unipi/docs/, run tests, commit, create worktree.
This skill MAY NOT: merge branches, deploy.
Worktree vs Main:
- If
workbranchin plan → work within worktree directory - If
workbranchempty → work directly on main branch (current directory)
Command Format
/unipi:work worktree:<branch>(optional) specs:<path>(multiple,optional) <string(greedy)>(optional)
worktree:<branch>— branch to work on (auto-suggested, agent asks if not provided)specs:<path>— plan(s) to execute (auto-suggested, agent asks if not provided)string(greedy)— scope guidance (e.g., "only task 1 and 2")- Recommended: new session — this command switches pi's internal worktree
Sandbox
- Read/Write: full access within worktree (or project root if on main)
- Write:
.unipi/docs/for progress tracking
Phase 1: Resolve Args
-
Specs:
- If
specs:arg provided, read those plan files - If not, list available plans in
.unipi/docs/plans/and ask user - Can select multiple
- If
-
Read
workbranchfrom plan frontmatter:- If
workbranch:is non-empty → use that branch/worktree- If worktree arg also provided → use worktree arg (override)
- Create worktree if not exists:
git worktree add .unipi/worktrees/{branch} -b {branch} - Work within worktree directory
- If
workbranch:is empty or missing → work on current branch (main)- No worktree creation needed
- Edit files directly in project root
- If neither plan nor args specify branch → ask user:
"Where should this work happen?"
- Current branch (main)
- New worktree (provide branch name)
- If
-
Scope:
- If
string(greedy)provided, use to scope tasks - Otherwise execute all incomplete tasks
- If
Exit: Branch/worktree resolved. Plan(s) loaded. Scope defined.
Phase 2: Review Plan
- Read plan file(s)
- Review critically — identify questions or concerns
- If concerns: raise with user before starting
- Identify task status:
unstarted:(pending),in-progress:(started),completed:(done),failed:(needs investigation),awaiting_user:(needs user action),blocked:(waiting on dependency),skipped:(deferred)
Exit: Plan reviewed, ready to execute.
Ralph Loop Decision
Count the non-completed tasks (unstarted:, in-progress:, failed:). If you have the ralph_start tool available and 3+ non-trivial tasks remain, consider a ralph loop for resilience:
ralph_start({
name: "{plan-topic}",
taskContent: "# {Plan Title}\n\n{overview}\n\n## Goals\n- {goal1}\n- {goal2}\n\n## Checklist\n- [ ] {task1}\n- [ ] {task2}\n- [ ] {task3}",
maxIterations: 50,
itemsPerIteration: 2,
reflectEvery: 5
})
To skip: Just proceed to Phase 3 and execute tasks directly. Ralph is a helper, not a requirement.
Phase 3: Execute Tasks
For each task in order, skip completed:, skipped:, and awaiting_user: tasks:
If unstarted:
- Change
unstarted:toin-progress:in plan - Follow each step exactly (plan has bite-sized steps)
- Run verifications as specified in acceptance criteria
- Change
in-progress:tocompleted:when complete - Update plan file with progress
If in-progress:
- Continue from where it left off
- Follow remaining steps
- Change to
completed:when done
If failed:
- Read failure notes
- Investigate root cause
- Fix and re-verify
- Change to
completed:when fixed, or keepfailed:if still broken
If awaiting_user:
- Remind user what's needed
- Wait for user response
- Resume when user provides input
If blocked:
- Check if blocker is resolved
- If resolved → change to
unstarted:and continue - If still blocked → skip and move to next task
When to Stop and Ask
STOP immediately when:
- Hit blocker (missing dependency, test fails, instruction unclear)
- Plan has critical gaps
- You don't understand an instruction
- Verification fails repeatedly
Ask for clarification rather than guessing.
When to Revisit Earlier Steps
Return to review when:
- Partner updates plan based on feedback
- Fundamental approach needs rethinking
Don't force through blockers — stop and ask.
Phase 4: Commit Progress
After each task or group of tasks:
- Stage changes
- Commit with descriptive message referencing task name
- Continue to next task
Don't wait until end to commit — incremental commits are safer.
Phase 5: Complete
When all tasks are completed::
- Run final verification (tests, lint, build)
- Commit all remaining changes
- If using a ralph loop, emit
COMPLETEand callralph_doneto cleanly exit - Inform user based on branch strategy:
If working in worktree:
"All tasks complete. Worktree:
{branch}. Recommend reviewing before merge."
If ask_user is available, offer an automatic handoff:
ask_user({
question: "Review this work now?",
options: [
{
label: "Proceed to /unipi:review-work",
description: "Review before merge",
value: "review",
action: "new_session",
prefill: "/unipi:review-work plan:<plan-path>",
},
{ label: "Done for now", value: "done", action: "end_turn" },
],
allowFreeform: false,
})
Copyable fallback:
/unipi:review-work plan:<plan-path>
Recommend starting a new session for review; the ask_user launcher can compact/direct queue the command.
If working on main branch:
"All tasks complete. All changes committed directly on main."
If ask_user is available, offer the same review handoff with prefill: "/unipi:review-work plan:<plan-path>". Copyable fallback:
/unipi:review-work plan:<plan-path>
No merge needed — changes already on main.
Resumability
If user runs /unipi:work and plan has completed: or in-progress: tasks:
- Read plan
- Identify first
unstarted:task - Ask user: "Resume from Task N: {name}?"
- Continue from there
If user provides scope string, only execute matching tasks.
Notes
- Agent reads plan on start — finds what's incomplete
- Worktree: changes don't affect main branch until merge (skip for small tasks)
- Main branch: changes committed directly, no merge needed
- Each worktree session is independent — no coordination with other worktrees
Signals
- GitHub stars
- 64
- Forks
- 15
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
work-neuron-mr-white- Source
- github.com/neuron-mr-white/unipi