| name | start-work |
| description | Start a Sisyphus work session from a Prometheus-generated plan. Manages boulder state, worktree setup, and delegates plan execution. |
Start Work Session
Arguments
/start-work [plan-name] [--worktree <path>]
plan-name (optional): name or partial match of the plan to start
--worktree <path> (optional): absolute path to an existing git worktree to work in
- If specified and valid: sets worktree_path in boulder.json
- If specified but invalid: run
git worktree add <path> <branch> first
- If omitted: work directly in the current project directory (no worktree)
Workflow
-
Find available plans: Search for Prometheus-generated plan files at .sisyphus/plans/
-
Check for active boulder state: Read .sisyphus/boulder.json if it exists
-
Decision logic:
- If
.sisyphus/boulder.json exists AND plan is NOT complete (has unchecked boxes):
- Continue work on existing plan
- If no active plan OR plan is complete:
- List available plan files
- If ONE plan: auto-select it
- If MULTIPLE plans: show list with timestamps, ask user to select
-
Worktree Setup (ONLY when --worktree was explicitly specified):
git worktree list --porcelain - see available worktrees
- Create:
git worktree add <absolute-path> <branch-or-HEAD>
- Update boulder.json to add
"worktree_path": "<absolute-path>"
- All work happens inside that worktree directory
-
Create/Update boulder.json:
{
"active_plan": "/absolute/path/to/plan.md",
"started_at": "ISO_TIMESTAMP",
"plan_name": "plan-name",
"worktree_path": "/absolute/path/to/git/worktree"
}
-
Read the plan file and start executing tasks
Output Format
When listing plans for selection:
Available Work Plans
1. [plan-name-1.md] - Modified: {date} - Progress: 3/10 tasks
2. [plan-name-2.md] - Modified: {date} - Progress: 0/5 tasks
Which plan would you like to work on? (Enter number or plan name)
When resuming existing work:
Resuming Work Session
Active Plan: {plan-name}
Progress: {completed}/{total} tasks
Worktree: {worktree_path}
Reading plan and continuing from last incomplete task...
Task Breakdown (MANDATORY)
After reading the plan file, you MUST decompose every plan task into granular, implementation-level sub-steps and register ALL of them as todos BEFORE starting any work.
How to break down:
- Each plan checkbox item must be split into concrete, actionable sub-tasks
- Sub-tasks should be specific enough that each one touches a clear set of files/functions
- Include: file to modify, what to change, expected behavior, and how to verify
- Do NOT leave any task vague
Example breakdown:
Plan task: - [ ] Add rate limiting to API
Sub-tasks:
- Create
src/middleware/rate-limiter.ts with sliding window algorithm (max 100 req/min per IP)
- Add RateLimiter middleware to
src/app.ts router chain, before auth middleware
- Add rate limit headers to response in
rate-limiter.ts
- Add test: verify 429 response after exceeding limit
- Add test: verify headers are present on normal responses
Worktree Completion
When working in a worktree and ALL plan tasks are complete:
- Commit all remaining changes in the worktree
- Sync
.sisyphus/ state back to main repo before removal
- Switch to the main working directory
- Merge the worktree branch into the current branch
- If merge succeeds, clean up:
git worktree remove <worktree-path>
- Remove the boulder.json state
Critical
- Always update boulder.json BEFORE starting work
- If worktree_path is set in boulder.json, all work happens inside that worktree directory
- Read the FULL plan file before delegating any tasks