sisyphi 1.1.18 → 1.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +195 -75
- package/dist/chunk-36VJ7ZBD.js +1898 -0
- package/dist/chunk-36VJ7ZBD.js.map +1 -0
- package/dist/{chunk-C2XKXERJ.js → chunk-M6Z3KHOH.js} +159 -46
- package/dist/chunk-M6Z3KHOH.js.map +1 -0
- package/dist/chunk-O4ZHSQ5R.js +544 -0
- package/dist/chunk-O4ZHSQ5R.js.map +1 -0
- package/dist/chunk-P2HHTIPM.js +478 -0
- package/dist/chunk-P2HHTIPM.js.map +1 -0
- package/dist/{chunk-TMBAVPHH.js → chunk-PNDCVKBN.js} +73 -1
- package/dist/chunk-PNDCVKBN.js.map +1 -0
- package/dist/chunk-SVGIQ2G4.js +1076 -0
- package/dist/chunk-SVGIQ2G4.js.map +1 -0
- package/dist/cli.js +4405 -892
- package/dist/cli.js.map +1 -1
- package/dist/daemon.js +4340 -1990
- package/dist/daemon.js.map +1 -1
- package/dist/{paths-XRDEEJ5R.js → paths-JXFLR5BN.js} +38 -2
- package/dist/single-ask-6G4BIVY2.js +132 -0
- package/dist/single-ask-6G4BIVY2.js.map +1 -0
- package/dist/templates/CLAUDE.md +1 -56
- package/dist/templates/agent-plugin/agents/CLAUDE.md +2 -65
- package/dist/templates/agent-plugin/agents/debug.md +43 -6
- package/dist/templates/agent-plugin/agents/debug.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/explore.md +28 -1
- package/dist/templates/agent-plugin/agents/explore.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/implementor.md +94 -0
- package/dist/templates/agent-plugin/agents/implementor.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/operator.md +43 -1
- package/dist/templates/agent-plugin/agents/operator.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/plan/sub-planner.md +75 -0
- package/dist/templates/agent-plugin/agents/plan.md +176 -86
- package/dist/templates/agent-plugin/agents/plan.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/problem/adversarial.md +26 -0
- package/dist/templates/agent-plugin/agents/problem/contrarian.md +26 -0
- package/dist/templates/agent-plugin/agents/problem/first-principles.md +26 -0
- package/dist/templates/agent-plugin/agents/problem/precedent.md +25 -0
- package/dist/templates/agent-plugin/agents/problem/simplifier.md +26 -0
- package/dist/templates/agent-plugin/agents/problem/systems-thinker.md +26 -0
- package/dist/templates/agent-plugin/agents/problem/time-traveler.md +26 -0
- package/dist/templates/agent-plugin/agents/problem/user-empathy.md +26 -0
- package/dist/templates/agent-plugin/agents/problem.md +334 -79
- package/dist/templates/agent-plugin/agents/problem.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/research-lead/CLAUDE.md +26 -0
- package/dist/templates/agent-plugin/agents/research-lead/critic.md +61 -0
- package/dist/templates/agent-plugin/agents/research-lead/researcher.md +60 -0
- package/dist/templates/agent-plugin/agents/research-lead.md +184 -0
- package/dist/templates/agent-plugin/agents/research-lead.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/review/CLAUDE.md +3 -29
- package/dist/templates/agent-plugin/agents/review/compliance.md +14 -3
- package/dist/templates/agent-plugin/agents/review/efficiency.md +15 -4
- package/dist/templates/agent-plugin/agents/review/quality.md +20 -6
- package/dist/templates/agent-plugin/agents/review/reuse.md +17 -5
- package/dist/templates/agent-plugin/agents/review/security.md +10 -3
- package/dist/templates/agent-plugin/agents/review/tests.md +58 -0
- package/dist/templates/agent-plugin/agents/review-plan/CLAUDE.md +28 -0
- package/dist/templates/agent-plugin/agents/review-plan/code-smells.md +4 -2
- package/dist/templates/agent-plugin/agents/review-plan/pattern-consistency.md +4 -2
- package/dist/templates/agent-plugin/agents/review-plan/requirements-coverage.md +3 -1
- package/dist/templates/agent-plugin/agents/review-plan/security.md +5 -2
- package/dist/templates/agent-plugin/agents/review-plan.md +52 -5
- package/dist/templates/agent-plugin/agents/review-plan.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/review.md +89 -16
- package/dist/templates/agent-plugin/agents/review.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/spec/engineer.md +175 -0
- package/dist/templates/agent-plugin/agents/spec/requirements-writer.md +149 -0
- package/dist/templates/agent-plugin/agents/spec.md +444 -0
- package/dist/templates/agent-plugin/agents/spec.settings.json +57 -0
- package/dist/templates/agent-plugin/agents/test-spec.md +58 -2
- package/dist/templates/agent-plugin/agents/test-spec.settings.json +57 -0
- package/dist/templates/agent-plugin/hooks/CLAUDE.md +9 -57
- package/dist/templates/agent-plugin/hooks/ask-background-guard.sh +57 -0
- package/dist/templates/agent-plugin/hooks/intercept-send-message.sh +1 -1
- package/dist/templates/agent-plugin/hooks/plan-user-prompt.sh +8 -7
- package/dist/templates/agent-plugin/hooks/plan-validate.sh +97 -0
- package/dist/templates/agent-plugin/hooks/plan-write-path.sh +55 -0
- package/dist/templates/agent-plugin/hooks/problem-user-prompt.sh +26 -0
- package/dist/templates/agent-plugin/hooks/register-bg-task.sh +37 -0
- package/dist/templates/agent-plugin/hooks/require-submit.sh +51 -42
- package/dist/templates/agent-plugin/hooks/review-user-prompt.sh +6 -2
- package/dist/templates/agent-plugin/hooks/spec-user-prompt.sh +43 -0
- package/dist/templates/agent-plugin/skills/humanloop/SKILL.md +147 -0
- package/dist/templates/agent-plugin/skills/perspective-fanout/SKILL.md +115 -0
- package/dist/templates/agent-plugin/skills/problem-document/SKILL.md +105 -0
- package/dist/templates/agent-plugin/skills/problem-plateau-breakers/SKILL.md +83 -0
- package/dist/templates/agent-suffix.md +7 -4
- package/dist/templates/baleia.lua +42 -0
- package/dist/templates/companion-plugin/hooks/user-prompt-context.sh +1 -1
- package/dist/templates/dashboard-claude.md +7 -3
- package/dist/templates/orchestrator-base.md +89 -52
- package/dist/templates/orchestrator-completion.md +47 -24
- package/dist/templates/orchestrator-discovery.md +183 -0
- package/dist/templates/orchestrator-impl.md +47 -18
- package/dist/templates/orchestrator-planning.md +109 -20
- package/dist/templates/orchestrator-plugin/commands/sisyphus/scratch.md +19 -0
- package/dist/templates/orchestrator-plugin/commands/sisyphus/spec.md +11 -0
- package/dist/templates/orchestrator-plugin/commands/sisyphus/strategize.md +5 -5
- package/dist/templates/orchestrator-plugin/hooks/hooks.json +0 -10
- package/dist/templates/orchestrator-plugin/skills/humanloop/SKILL.md +149 -0
- package/dist/templates/orchestrator-plugin/skills/orchestration/CLAUDE.md +1 -0
- package/dist/templates/orchestrator-plugin/skills/orchestration/SKILL.md +2 -1
- package/dist/templates/orchestrator-plugin/skills/orchestration/strategy.md +160 -0
- package/dist/templates/orchestrator-plugin/skills/orchestration/task-patterns.md +26 -28
- package/dist/templates/orchestrator-plugin/skills/orchestration/workflow-examples.md +133 -25
- package/dist/templates/orchestrator-settings.json +55 -0
- package/dist/templates/orchestrator-validation.md +17 -14
- package/dist/templates/sisyphus-init.lua +30 -0
- package/dist/templates/sisyphus-tmux-plugin/hooks/hooks.json +54 -0
- package/dist/templates/sisyphus-tmux-plugin/hooks/tmux-state.sh +19 -0
- package/dist/templates/termrender-haiku-system.md +82 -0
- package/dist/templates/whip-animation.sh +345 -0
- package/dist/tui.js +3242 -2189
- package/dist/tui.js.map +1 -1
- package/native/SisyphusNotify/main.swift +15 -5
- package/package.json +8 -6
- package/templates/CLAUDE.md +1 -56
- package/templates/agent-plugin/agents/CLAUDE.md +2 -65
- package/templates/agent-plugin/agents/debug.md +43 -6
- package/templates/agent-plugin/agents/debug.settings.json +57 -0
- package/templates/agent-plugin/agents/explore.md +28 -1
- package/templates/agent-plugin/agents/explore.settings.json +57 -0
- package/templates/agent-plugin/agents/implementor.md +94 -0
- package/templates/agent-plugin/agents/implementor.settings.json +57 -0
- package/templates/agent-plugin/agents/operator.md +43 -1
- package/templates/agent-plugin/agents/operator.settings.json +57 -0
- package/templates/agent-plugin/agents/plan/sub-planner.md +75 -0
- package/templates/agent-plugin/agents/plan.md +176 -86
- package/templates/agent-plugin/agents/plan.settings.json +57 -0
- package/templates/agent-plugin/agents/problem/adversarial.md +26 -0
- package/templates/agent-plugin/agents/problem/contrarian.md +26 -0
- package/templates/agent-plugin/agents/problem/first-principles.md +26 -0
- package/templates/agent-plugin/agents/problem/precedent.md +25 -0
- package/templates/agent-plugin/agents/problem/simplifier.md +26 -0
- package/templates/agent-plugin/agents/problem/systems-thinker.md +26 -0
- package/templates/agent-plugin/agents/problem/time-traveler.md +26 -0
- package/templates/agent-plugin/agents/problem/user-empathy.md +26 -0
- package/templates/agent-plugin/agents/problem.md +334 -79
- package/templates/agent-plugin/agents/problem.settings.json +57 -0
- package/templates/agent-plugin/agents/research-lead/CLAUDE.md +26 -0
- package/templates/agent-plugin/agents/research-lead/critic.md +61 -0
- package/templates/agent-plugin/agents/research-lead/researcher.md +60 -0
- package/templates/agent-plugin/agents/research-lead.md +184 -0
- package/templates/agent-plugin/agents/research-lead.settings.json +57 -0
- package/templates/agent-plugin/agents/review/CLAUDE.md +3 -29
- package/templates/agent-plugin/agents/review/compliance.md +14 -3
- package/templates/agent-plugin/agents/review/efficiency.md +15 -4
- package/templates/agent-plugin/agents/review/quality.md +20 -6
- package/templates/agent-plugin/agents/review/reuse.md +17 -5
- package/templates/agent-plugin/agents/review/security.md +10 -3
- package/templates/agent-plugin/agents/review/tests.md +58 -0
- package/templates/agent-plugin/agents/review-plan/CLAUDE.md +28 -0
- package/templates/agent-plugin/agents/review-plan/code-smells.md +4 -2
- package/templates/agent-plugin/agents/review-plan/pattern-consistency.md +4 -2
- package/templates/agent-plugin/agents/review-plan/requirements-coverage.md +3 -1
- package/templates/agent-plugin/agents/review-plan/security.md +5 -2
- package/templates/agent-plugin/agents/review-plan.md +52 -5
- package/templates/agent-plugin/agents/review-plan.settings.json +57 -0
- package/templates/agent-plugin/agents/review.md +89 -16
- package/templates/agent-plugin/agents/review.settings.json +57 -0
- package/templates/agent-plugin/agents/spec/engineer.md +175 -0
- package/templates/agent-plugin/agents/spec/requirements-writer.md +149 -0
- package/templates/agent-plugin/agents/spec.md +444 -0
- package/templates/agent-plugin/agents/spec.settings.json +57 -0
- package/templates/agent-plugin/agents/test-spec.md +58 -2
- package/templates/agent-plugin/agents/test-spec.settings.json +57 -0
- package/templates/agent-plugin/hooks/CLAUDE.md +9 -57
- package/templates/agent-plugin/hooks/ask-background-guard.sh +57 -0
- package/templates/agent-plugin/hooks/intercept-send-message.sh +1 -1
- package/templates/agent-plugin/hooks/plan-user-prompt.sh +8 -7
- package/templates/agent-plugin/hooks/plan-validate.sh +97 -0
- package/templates/agent-plugin/hooks/plan-write-path.sh +55 -0
- package/templates/agent-plugin/hooks/problem-user-prompt.sh +26 -0
- package/templates/agent-plugin/hooks/register-bg-task.sh +37 -0
- package/templates/agent-plugin/hooks/require-submit.sh +51 -42
- package/templates/agent-plugin/hooks/review-user-prompt.sh +6 -2
- package/templates/agent-plugin/hooks/spec-user-prompt.sh +43 -0
- package/templates/agent-plugin/skills/humanloop/SKILL.md +147 -0
- package/templates/agent-plugin/skills/perspective-fanout/SKILL.md +115 -0
- package/templates/agent-plugin/skills/problem-document/SKILL.md +105 -0
- package/templates/agent-plugin/skills/problem-plateau-breakers/SKILL.md +83 -0
- package/templates/agent-suffix.md +7 -4
- package/templates/baleia.lua +42 -0
- package/templates/companion-plugin/hooks/user-prompt-context.sh +1 -1
- package/templates/dashboard-claude.md +7 -3
- package/templates/orchestrator-base.md +89 -52
- package/templates/orchestrator-completion.md +47 -24
- package/templates/orchestrator-discovery.md +183 -0
- package/templates/orchestrator-impl.md +47 -18
- package/templates/orchestrator-planning.md +109 -20
- package/templates/orchestrator-plugin/commands/sisyphus/scratch.md +19 -0
- package/templates/orchestrator-plugin/commands/sisyphus/spec.md +11 -0
- package/templates/orchestrator-plugin/commands/sisyphus/strategize.md +5 -5
- package/templates/orchestrator-plugin/hooks/hooks.json +0 -10
- package/templates/orchestrator-plugin/skills/humanloop/SKILL.md +149 -0
- package/templates/orchestrator-plugin/skills/orchestration/CLAUDE.md +1 -0
- package/templates/orchestrator-plugin/skills/orchestration/SKILL.md +2 -1
- package/templates/orchestrator-plugin/skills/orchestration/strategy.md +160 -0
- package/templates/orchestrator-plugin/skills/orchestration/task-patterns.md +26 -28
- package/templates/orchestrator-plugin/skills/orchestration/workflow-examples.md +133 -25
- package/templates/orchestrator-settings.json +55 -0
- package/templates/orchestrator-validation.md +17 -14
- package/templates/sisyphus-init.lua +30 -0
- package/templates/sisyphus-tmux-plugin/hooks/hooks.json +54 -0
- package/templates/sisyphus-tmux-plugin/hooks/tmux-state.sh +19 -0
- package/templates/termrender-haiku-system.md +82 -0
- package/templates/whip-animation.sh +345 -0
- package/dist/chunk-22ZGZTGY.js +0 -67
- package/dist/chunk-22ZGZTGY.js.map +0 -1
- package/dist/chunk-6PJVJEYQ.js +0 -46
- package/dist/chunk-6PJVJEYQ.js.map +0 -1
- package/dist/chunk-C2XKXERJ.js.map +0 -1
- package/dist/chunk-TMBAVPHH.js.map +0 -1
- package/dist/chunk-V36NXMHP.js +0 -299
- package/dist/chunk-V36NXMHP.js.map +0 -1
- package/dist/templates/agent-plugin/agents/design.md +0 -134
- package/dist/templates/agent-plugin/agents/requirements.md +0 -138
- package/dist/templates/begin.md +0 -22
- package/dist/templates/nvim-tutorial.txt +0 -68
- package/dist/templates/orchestrator-plugin/commands/sisyphus/design.md +0 -13
- package/dist/templates/orchestrator-plugin/commands/sisyphus/requirements.md +0 -13
- package/dist/templates/orchestrator-plugin/hooks/idle-notify.sh +0 -71
- package/dist/templates/orchestrator-strategy.md +0 -238
- package/templates/agent-plugin/agents/design.md +0 -134
- package/templates/agent-plugin/agents/requirements.md +0 -138
- package/templates/begin.md +0 -22
- package/templates/nvim-tutorial.txt +0 -68
- package/templates/orchestrator-plugin/commands/sisyphus/design.md +0 -13
- package/templates/orchestrator-plugin/commands/sisyphus/requirements.md +0 -13
- package/templates/orchestrator-plugin/hooks/idle-notify.sh +0 -71
- package/templates/orchestrator-strategy.md +0 -238
- /package/dist/{paths-XRDEEJ5R.js.map → paths-JXFLR5BN.js.map} +0 -0
|
@@ -15,15 +15,12 @@ Maximize parallelism **within your development cycle, not by skipping parts of i
|
|
|
15
15
|
|
|
16
16
|
If the plan has stages that share no file dependencies, run them in parallel from the start. The development cycle for each stage:
|
|
17
17
|
|
|
18
|
-
1. **Detail-plan it** — expand the outline into specific file changes. If complex, spawn a
|
|
18
|
+
1. **Detail-plan it** — expand the outline into specific file changes. If complex, spawn a `sisyphus:spec` agent first to align design + requirements.
|
|
19
19
|
2. **Implement it** — spawn agents with self-contained instructions.
|
|
20
20
|
3. **Critique and refine it** — spawn review agents, fix what they find.
|
|
21
21
|
4. **Validate it** — verify the stage actually works end-to-end.
|
|
22
22
|
|
|
23
|
-
Not every stage needs every step
|
|
24
|
-
- Types/interfaces → implementation only (consumers surface type errors)
|
|
25
|
-
- Core business logic → implementation + critique minimum
|
|
26
|
-
- Integration/critical path → full loop including validation
|
|
23
|
+
Not every stage needs every step — use the rigor calibration table above to decide.
|
|
27
24
|
|
|
28
25
|
**When multiple stages have completed without any critique or validation, stop implementing and catch up on verification.** Don't let unverified work compound.
|
|
29
26
|
|
|
@@ -93,29 +90,41 @@ When you see these reports, investigate before pushing forward. If the smell sug
|
|
|
93
90
|
|
|
94
91
|
<critique-refinement>
|
|
95
92
|
|
|
96
|
-
## Critique
|
|
93
|
+
## Critique Pass
|
|
97
94
|
|
|
98
95
|
After implementation agents report, assess whether the stage needs critique before advancing. The failure mode is not "sometimes skipping review" — it's implementing six stages in a row without any.
|
|
99
96
|
|
|
100
|
-
When a stage warrants critique, spawn review
|
|
101
|
-
- **Code reuse** — existing utilities, helpers, patterns the new code duplicates
|
|
102
|
-
- **Code quality** — hacky patterns, redundant state, parameter sprawl, copy-paste, leaky abstractions
|
|
103
|
-
- **Efficiency** — redundant computations, N+1 patterns, missed concurrency, unbounded data structures
|
|
97
|
+
When a stage warrants critique, spawn a `sisyphus:review` agent. It will run parallel sub-reviewers across the relevant dimensions (reuse, quality, efficiency, and security/compliance when appropriate), validate their findings, and return a single consolidated report. Give it the full diff and relevant context files. It reports problems — it does not fix.
|
|
104
98
|
|
|
105
|
-
|
|
99
|
+
A clean report ("No concerns") is a valid and common outcome. When you get one, advance. Do not spawn another reviewer to double-check — one careful pass is the contract.
|
|
106
100
|
|
|
107
|
-
## Refine
|
|
101
|
+
## Refine Pass
|
|
108
102
|
|
|
109
103
|
Aggregate reviewer findings. Spawn fix agents and **point them at the review report** — don't rewrite findings as line-by-line instructions. You triage (skip false positives, note architectural constraints) — they implement.
|
|
110
104
|
|
|
111
105
|
```bash
|
|
112
|
-
sisyphus spawn --name "fix-review-issues" --agent-type sisyphus:implement \
|
|
106
|
+
sisyphus agent spawn --name "fix-review-issues" --agent-type sisyphus:implement \
|
|
113
107
|
"Fix the issues in reports/agent-003-final.md. Skip item #5 (false positive). Run type-check after."
|
|
114
108
|
```
|
|
115
109
|
|
|
116
110
|
Fix agents should use `/simplify` to review their own changes before reporting.
|
|
117
111
|
|
|
118
|
-
|
|
112
|
+
## One Review Pass Per Stage
|
|
113
|
+
|
|
114
|
+
**Do not spawn a second review after fix agents land.** The review pass runs once per stage. After fixes, verify they landed by reading the fix agents' reports and checking that type-check / tests pass — not by spawning another reviewer to re-scan the same surface.
|
|
115
|
+
|
|
116
|
+
This is a deliberate choice, not an oversight. Re-reviewing has two failure modes that compound:
|
|
117
|
+
|
|
118
|
+
1. A fresh reviewer scanning edited code will anchor on the new code and produce fresh findings, most of which are noise — the tier structure has no "nit" category and the model feels implicit pressure to return something.
|
|
119
|
+
2. When fix agents do introduce real regressions, they typically show up in validation (type-check failures, test failures, e2e failures) rather than in static review. Validation catches the real problems; re-review mostly catches phantoms.
|
|
120
|
+
|
|
121
|
+
If the fix agent's own report flags that it hit unexpected complexity or introduced something it wasn't comfortable with, address that specifically — read the code, decide, don't spawn another reviewer. If the single review pass surfaces findings that suggest an architectural problem rather than code-level issues, backtrack to planning instead of patching:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
sisyphus orch yield --mode planning --prompt "Review surfaced architectural issue: [summary]. Needs replan, not fixes."
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Real regressions from fix agents are caught by e2e validation (next step), not by a second review pass.
|
|
119
128
|
|
|
120
129
|
</critique-refinement>
|
|
121
130
|
|
|
@@ -134,10 +143,18 @@ If the project lacks validation tooling, **create it** — a smoke-test script,
|
|
|
134
143
|
|
|
135
144
|
**Don't advance past a validated stage until validation passes.** If it fails, log failures, spawn fix agents, re-validate.
|
|
136
145
|
|
|
137
|
-
|
|
146
|
+
**Phase-scoped plans:** if the current plan only covers one phase of a multi-phase feature (the plan-lead convention when `strategy.md` has multiple phases), yield back to planning after this phase's validation passes — not to validation mode. Plan files live under `context/{plan-lead-agent-id}/`; use the paths the plan lead reported when dispatching implement agents.
|
|
138
147
|
|
|
139
148
|
```bash
|
|
140
|
-
sisyphus yield --mode
|
|
149
|
+
sisyphus orch yield --mode planning --prompt "Phase N validated. Plan phase N+1 per strategy.md."
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
The next cycle's plan lead incorporates what you learned here before committing phase N+1 to paper.
|
|
153
|
+
|
|
154
|
+
When all implementation phases are complete (the final phase has been planned, implemented, and stage-validated), transition to validation mode for the comprehensive final pass:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
sisyphus orch yield --mode validation --prompt "All stages implemented — validate against context/e2e-recipe.md"
|
|
141
158
|
```
|
|
142
159
|
|
|
143
160
|
Validation mode shifts the orchestrator's entire focus to proving the feature works. Stage-level validation during implementation catches issues early; the final validation pass proves the whole thing holds together.
|
|
@@ -149,7 +166,7 @@ Validation mode shifts the orchestrator's entire focus to proving the feature wo
|
|
|
149
166
|
If the approach is wrong mid-implementation, don't keep pushing. Return to planning:
|
|
150
167
|
|
|
151
168
|
```bash
|
|
152
|
-
sisyphus yield --mode planning --prompt "
|
|
169
|
+
sisyphus orch yield --mode planning --prompt "Discovered X mid-implementation — approach needs rework. See cycle log and roadmap.md."
|
|
153
170
|
```
|
|
154
171
|
|
|
155
172
|
Concrete triggers:
|
|
@@ -157,6 +174,18 @@ Concrete triggers:
|
|
|
157
174
|
- An agent discovers a dependency that changes the approach
|
|
158
175
|
- Fix agents keep patching the same area across cycles
|
|
159
176
|
|
|
160
|
-
|
|
177
|
+
Update roadmap.md to reflect you're back in an earlier phase. Log the discovery before yielding.
|
|
161
178
|
|
|
162
179
|
</returning-to-planning>
|
|
180
|
+
|
|
181
|
+
<impl-cli>
|
|
182
|
+
|
|
183
|
+
## Implementation CLI
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
sisyphus session task "revised goal" # update the session goal mid-flight
|
|
187
|
+
sisyphus agent restart <agentId> # respawn a failed/killed agent in a new pane
|
|
188
|
+
sisyphus session rollback <sessionId> <cycle> # rewind state to a prior cycle boundary
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
</impl-cli>
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: planning
|
|
3
|
-
description: Deep exploration,
|
|
3
|
+
description: Deep exploration, spec alignment and detailed roadmap creation. Use after discovery is complete and before implementation begins.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Planning Phase
|
|
7
7
|
|
|
8
8
|
<planning-workflow>
|
|
9
9
|
|
|
10
|
-
The natural sequence: **context →
|
|
10
|
+
The natural sequence: **context → spec → roadmap refinement → detailed planning.** Context documents come first because they feed everything downstream — spec leads, planners, and implementers all benefit from not having to re-explore the codebase. After the spec is aligned, revisit the roadmap — that's when you actually understand scope well enough to flesh out phases honestly.
|
|
11
11
|
|
|
12
12
|
</planning-workflow>
|
|
13
13
|
|
|
@@ -22,25 +22,49 @@ Use explore agents to build understanding before making decisions. Each agent sa
|
|
|
22
22
|
|
|
23
23
|
</exploration>
|
|
24
24
|
|
|
25
|
-
<
|
|
25
|
+
<spec-alignment>
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
<!--EFFORT:LOW-->
|
|
28
|
+
**Skip spec.** Treat the user's request as the requirements. If something's ambiguous, ask the user in-band — don't spawn `sisyphus:spec` or `sisyphus:problem`. Move directly into plan delegation below.
|
|
29
|
+
<!--/EFFORT-->
|
|
28
30
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
- Have agents review for feasibility (can this actually work given the codebase?)
|
|
32
|
-
- Seek user alignment on the high-level approach
|
|
33
|
-
- **Fold new knowledge into authoritative documents.** When reviews, exploration, or user feedback resolve questions or change the understanding, update the requirements and design documents directly — they are the single source of truth. Delete resolved questions from their listing sections, then update the topical sections where those answers belong so the document reads as settled fact. Don't create correction files, addendum files, or decision logs alongside them. Don't annotate questions with answers — remove the questions entirely and weave the answers into the body. Plan agents should read clean, current documents — not reconcile contradictions or skip over resolved questions.
|
|
31
|
+
<!--EFFORT:MEDIUM-->
|
|
32
|
+
Spec is the combined product discovery + technical design stage. Spawning a spec agent hands off both to a specialist that collaborates with the user directly: exploring the codebase, asking informed questions, drafting a design, writing EARS requirements with TUI review, and deepening the design with what was learned.
|
|
34
33
|
|
|
35
|
-
|
|
34
|
+
**Spawn `sisyphus:spec` only when the goal has multiple valid framings or the design space is genuinely open.** Single-feature work within a known subsystem rarely needs a spec session — the implementation plan and TUI review cover the design questions. If you're unsure, ask the user in-band before spawning.
|
|
36
35
|
|
|
37
|
-
|
|
36
|
+
**Spec refinement is iterative.** When a spec is spawned, the process doesn't end when documents are saved:
|
|
37
|
+
- Have agents review requirements for feasibility (can this actually work given the codebase?)
|
|
38
|
+
- **Fold new knowledge into authoritative documents.** When reviews, exploration, or user feedback resolve questions or change the understanding, update requirements and design documents directly — they are the single source of truth. Delete resolved questions from their listing sections, then update the topical sections where those answers belong so the document reads as settled fact. Don't create correction files, addendum files, or decision logs alongside them.
|
|
39
|
+
<!--/EFFORT-->
|
|
40
|
+
|
|
41
|
+
<!--EFFORT:HIGH,XHIGH-->
|
|
42
|
+
Spec is the combined product discovery + technical design stage. Spawning a spec agent hands off both to a specialist that collaborates with the user directly: exploring the codebase, asking informed questions, drafting a design, writing EARS requirements with TUI review, and deepening the design with what was learned.
|
|
43
|
+
|
|
44
|
+
**When to spawn a spec agent:**
|
|
45
|
+
- Any feature that adds or changes user-visible behavior
|
|
46
|
+
- Any task where you're making assumptions about what "done" looks like
|
|
47
|
+
- When exploration revealed ambiguity, trade-offs, or multiple valid interpretations
|
|
48
|
+
|
|
49
|
+
**When you can skip spec:**
|
|
50
|
+
- Pure bug fixes with clear reproduction steps
|
|
51
|
+
- Mechanical refactors with no behavioral change (rename, extract, move)
|
|
52
|
+
- Tasks where the user has already provided explicit, detailed acceptance criteria in their starting prompt
|
|
53
|
+
|
|
54
|
+
If you're unsure, spawn the spec agent. The cost of a short spec conversation is low. The cost of building the wrong thing is an entire wasted implementation cycle.
|
|
55
|
+
|
|
56
|
+
**Spec refinement is iterative.** The spec agent works with the user, but the process doesn't end when documents are saved:
|
|
57
|
+
- Have agents review requirements for feasibility (can this actually work given the codebase?)
|
|
58
|
+
- **Fold new knowledge into authoritative documents.** When reviews, exploration, or user feedback resolve questions or change the understanding, update requirements and design documents directly — they are the single source of truth. Delete resolved questions from their listing sections, then update the topical sections where those answers belong so the document reads as settled fact. Don't create correction files, addendum files, or decision logs alongside them.
|
|
59
|
+
<!--/EFFORT-->
|
|
60
|
+
|
|
61
|
+
</spec-alignment>
|
|
38
62
|
|
|
39
63
|
<plan-delegation>
|
|
40
64
|
|
|
41
|
-
Once you have context docs and aligned requirements
|
|
65
|
+
Once you have context docs and aligned spec outputs (requirements + design), revisit the roadmap — this is the first point where you understand real scope. Roadmap refinement means updating the four canonical sections: current stage, exit criteria, active context references, and next steps. Decisions from exploration and spec work fold into context documents — not the roadmap.
|
|
42
66
|
|
|
43
|
-
Spawn **one plan lead** per feature. Point it at inputs (requirements, design, context docs) — not a pre-made structure. The plan lead handles its own decomposition: it assesses scope, delegates sub-plans if needed, runs adversarial reviews, and delivers a synthesized master plan. **Delegate outcomes, not implementations** — tell the plan lead what needs planning and why, not how to structure the plan.
|
|
67
|
+
Spawn **one plan lead** per feature (or per phase — see phase-scoped planning below). Point it at inputs (requirements, design, context docs) — not a pre-made structure. The plan lead handles its own decomposition: it assesses scope, delegates sub-plans if needed, runs adversarial reviews, and delivers a synthesized master plan. **Delegate outcomes, not implementations** — tell the plan lead what needs planning and why, not how to structure the plan.
|
|
44
68
|
|
|
45
69
|
**Don't split planning yourself.** If the orchestrator pre-splits into "backend plan agent" and "frontend plan agent," the plan lead's synthesis step — resolving cross-domain conflicts, finding gaps, stress-testing edge cases — never happens.
|
|
46
70
|
|
|
@@ -48,16 +72,67 @@ Spawn **one plan lead** per feature. Point it at inputs (requirements, design, c
|
|
|
48
72
|
|
|
49
73
|
</plan-delegation>
|
|
50
74
|
|
|
75
|
+
<plan-review-and-test-spec>
|
|
76
|
+
|
|
77
|
+
<!--EFFORT:LOW-->
|
|
78
|
+
**Skip plan review and test-spec.** The plan agent's output is taken at face value — implementation flows directly from plan to implement. If the plan turns out to be wrong, the implement-cycle's review catches it.
|
|
79
|
+
<!--/EFFORT-->
|
|
80
|
+
|
|
81
|
+
<!--EFFORT:MEDIUM-->
|
|
82
|
+
After the plan lead delivers:
|
|
83
|
+
|
|
84
|
+
- Spawn `sisyphus:review-plan` only when the plan covers multi-domain integration. For single-domain plans, the implementation cycle's review catches issues without a dedicated review pass.
|
|
85
|
+
- Spawn `sisyphus:test-spec` **only when the user's initial prompt or goal.md explicitly requested tests** (e.g. "with tests", "TDD", "include unit tests", "test coverage"). Silence is a "no" — do not proactively ask, do not infer from feature risk. Reviews and validation cover correctness without a test-spec.
|
|
86
|
+
|
|
87
|
+
If neither applies, transition straight to implementation.
|
|
88
|
+
<!--/EFFORT-->
|
|
89
|
+
|
|
90
|
+
<!--EFFORT:HIGH,XHIGH-->
|
|
91
|
+
After the plan lead delivers, `sisyphus:review-plan` runs alongside the planning cycle as an adversarial review of the plan against the requirements and design. Spawn it after the plan is drafted; feed findings back to the plan lead. Address review findings before transitioning to implementation.
|
|
92
|
+
|
|
93
|
+
Spawn `sisyphus:test-spec` **only when the user's initial prompt or goal.md explicitly requested tests** (e.g. "with tests", "TDD", "include unit tests", "test coverage"). Silence is a "no" — do not proactively ask, do not infer from feature risk. When test-spec is justified, spawn it **in parallel with the high-level plan**, not after implementation — post-implementation test-spec silently describes what the code does rather than what it should do. Its output then feeds the implementation phase as a verification target.
|
|
94
|
+
<!--/EFFORT-->
|
|
95
|
+
|
|
96
|
+
</plan-review-and-test-spec>
|
|
97
|
+
|
|
98
|
+
<phase-scoped-planning>
|
|
99
|
+
|
|
100
|
+
## Plan One Phase at a Time for Multi-Phase Features
|
|
101
|
+
|
|
102
|
+
Count the implementation phases in `strategy.md`.
|
|
103
|
+
|
|
104
|
+
- **One phase:** spawn the plan lead with the full feature scope.
|
|
105
|
+
- **More than one phase:** spawn the plan lead for the next phase only. What you learn implementing Phase N informs Phase N+1 before it's committed to paper.
|
|
106
|
+
|
|
107
|
+
The cycle shape:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
plan phase 1 → implement phase 1 → validate phase 1 → plan phase 2 → implement phase 2 → validate phase 2 → ...
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
After a phase's implementation passes e2e validation, yield back to planning mode for the next phase:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
sisyphus orch yield --mode planning --prompt "Phase N validated. Plan phase N+1 per strategy.md."
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
When spawning the phase-scoped plan lead, name in the prompt:
|
|
120
|
+
- Which phase from `strategy.md` is in scope
|
|
121
|
+
- Which design document or phase-section applies
|
|
122
|
+
- That later phases are out of scope
|
|
123
|
+
|
|
124
|
+
Plans save under the plan lead's own subdirectory: `context/{plan-lead-agent-id}/plan-{topic}.md` (or `plan-phase-N-{topic}.md` when the phase identifier helps discoverability). Sub-plans share the same subdir. The plan lead reports the exact paths in its submission — use those verbatim; don't reconstruct them.
|
|
125
|
+
|
|
126
|
+
</phase-scoped-planning>
|
|
127
|
+
|
|
51
128
|
<progressive-development>
|
|
52
129
|
|
|
53
130
|
Not all tasks need the same process depth.
|
|
54
131
|
|
|
55
132
|
- **Small task** (1-3 files, single domain): Skip phases — roadmap is a short checklist (diagnose, fix, validate). Single plan agent, single implement agent.
|
|
56
|
-
- **Large task** (3+ stages, multiple domains): Full phased development. The roadmap tracks phases
|
|
133
|
+
- **Large task** (3+ stages, multiple domains): Full phased development. The roadmap tracks phases; each phase is planned, implemented, and validated before the next is planned (see phase-scoped planning above).
|
|
57
134
|
|
|
58
|
-
Signs you need phased development: multiple unfamiliar subsystems, the task spans different concerns (backend, frontend, IPC), or the
|
|
59
|
-
|
|
60
|
-
Implementation stages are context artifacts — saved to `context/plan-stage-N-*.md`. Detail-plan one stage at a time; what you learn implementing stage N informs stage N+1.
|
|
135
|
+
Signs you need phased development: multiple unfamiliar subsystems, the task spans different concerns (backend, frontend, IPC), or the spec has more than 3 distinct work areas.
|
|
61
136
|
|
|
62
137
|
</progressive-development>
|
|
63
138
|
|
|
@@ -65,18 +140,32 @@ Implementation stages are context artifacts — saved to `context/plan-stage-N-*
|
|
|
65
140
|
|
|
66
141
|
Before implementation begins, determine how to concretely verify the change works end-to-end. This is the single most common failure mode: agents report success but nothing actually works.
|
|
67
142
|
|
|
68
|
-
If you cannot determine a concrete verification method, **ask the user
|
|
143
|
+
If you cannot determine a concrete verification method, **ask the user via `sisyphus ask`**. Propose 2-4 candidate verification approaches as options (not an open-ended question). Do not proceed to implementation without a verification plan.
|
|
144
|
+
|
|
145
|
+
Before authoring the deck, **read the `humanloop` skill** for option-design guidance and submission flow. Ground options in this feature's actual surface (manual UI? integration test? log inspection? metric delta?) — not generic placeholders. `sisyphus ask -h` covers CLI syntax.
|
|
69
146
|
|
|
70
147
|
Write the recipe to `context/e2e-recipe.md` with setup steps, exact commands or interactions to verify, and what success looks like. Make it executable, not aspirational. Implementation agents and validation agents both reference this file.
|
|
71
148
|
|
|
72
149
|
</verification-planning>
|
|
73
150
|
|
|
151
|
+
<planning-cli>
|
|
152
|
+
|
|
153
|
+
## Planning CLI
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
sisyphus admin requirements --export --session-id <id> # render requirements.json → requirements.md (no LLM tokens)
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
The requirements export renders a `requirements.json` to markdown without consuming LLM tokens.
|
|
160
|
+
|
|
161
|
+
</planning-cli>
|
|
162
|
+
|
|
74
163
|
<transition>
|
|
75
164
|
|
|
76
165
|
When you have enough understanding, a reviewed plan, and a verification recipe — transition explicitly:
|
|
77
166
|
|
|
78
167
|
```bash
|
|
79
|
-
sisyphus yield --mode implementation --prompt "Begin implementation — see roadmap.md and context/plan-
|
|
168
|
+
sisyphus orch yield --mode implementation --prompt "Begin implementation — see roadmap.md and the plan file path the plan lead reported (under context/{plan-lead-agent-id}/)."
|
|
80
169
|
```
|
|
81
170
|
|
|
82
171
|
The `--mode implementation` flag loads implementation-phase guidance for the next cycle.
|
|
@@ -84,7 +173,7 @@ The `--mode implementation` flag loads implementation-phase guidance for the nex
|
|
|
84
173
|
After implementation is complete, transition to validation mode to prove the feature works:
|
|
85
174
|
|
|
86
175
|
```bash
|
|
87
|
-
sisyphus yield --mode validation --prompt "Implementation complete — validate against context/e2e-recipe.md"
|
|
176
|
+
sisyphus orch yield --mode validation --prompt "Implementation complete — validate against context/e2e-recipe.md"
|
|
88
177
|
```
|
|
89
178
|
|
|
90
179
|
</transition>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Open a standalone Claude Code session outside sisyphus for ad-hoc work
|
|
3
|
+
argument-hint: <prompt for the scratch session>
|
|
4
|
+
---
|
|
5
|
+
# Scratch Session
|
|
6
|
+
|
|
7
|
+
**Input:** $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
The user wants to spin up a standalone Claude Code session — outside sisyphus orchestration — for something that came up during this session. This is not an agent; it's an independent session the user controls.
|
|
10
|
+
|
|
11
|
+
Run the following in bash:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
sisyphus admin scratch "$ARGUMENTS"
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
This opens a new tmux window in the home session with `claude --dangerously-skip-permissions`. Do not track it, wait for it, or reference it in the roadmap. It's fire-and-forget.
|
|
18
|
+
|
|
19
|
+
Pass the session a reference to relevant context files and any other additional context that would be helpful for it to complete its task.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run a full spec session — interactive product/engineering conversation that produces an aligned design and EARS requirements
|
|
3
|
+
argument-hint: <topic or description>
|
|
4
|
+
---
|
|
5
|
+
# Spec
|
|
6
|
+
**Input:** $ARGUMENTS
|
|
7
|
+
|
|
8
|
+
The user wants a full spec — design + EARS requirements — produced through a single interactive session.
|
|
9
|
+
Spawn a `sisyphus:spec` agent to lead this. It is interactive and runs a three-stage flow: shape (engineer drafts a high-level design), requirements (single req-writer dispatch for the full design with TUI review), deepen (engineer refines design with what was learned).
|
|
10
|
+
Output: `context/design.md` + `context/design.json` + `context/requirements.json` + `context/requirements.md`. The lead generates `requirements.md` via a pure-code script — no LLM tokens for formatting.
|
|
11
|
+
The `sisyphus:spec` agent fully replaces the old `sisyphus:requirements` and `sisyphus:design` commands. Do not spawn either of those (they no longer exist). If the strategy currently lists separate requirements/design stages, collapse them into a single spec stage before spawning.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Redirect session strategy — reactivate if completed, then respawn in
|
|
2
|
+
description: Redirect session strategy — reactivate if completed, then respawn in discovery mode
|
|
3
3
|
argument-hint: <new direction or focus>
|
|
4
4
|
---
|
|
5
5
|
# Strategize
|
|
@@ -10,10 +10,10 @@ The user wants to redirect this session's strategy.
|
|
|
10
10
|
|
|
11
11
|
## Steps
|
|
12
12
|
|
|
13
|
-
1. If the session is completed (`sisyphus status`), reactivate it with `sisyphus continue`.
|
|
14
|
-
2.
|
|
15
|
-
3. Yield to
|
|
13
|
+
1. If the session is completed (`sisyphus status`), reactivate it with `sisyphus session continue`.
|
|
14
|
+
2. Invoke the **strategy skill** to annotate `strategy.md` with the pivot — what changed, new focus, which existing artifacts still apply. Don't rewrite the whole strategy.
|
|
15
|
+
3. Yield to discovery mode:
|
|
16
16
|
```bash
|
|
17
|
-
sisyphus yield --mode
|
|
17
|
+
sisyphus orch yield --mode discovery --prompt "<concise description of the new direction>"
|
|
18
18
|
```
|
|
19
19
|
This respawns a fresh orchestrator that will re-evaluate the goal, stages, and approach.
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: humanloop
|
|
3
|
+
description: >
|
|
4
|
+
Read before calling `sisyphus ask`. Triggers when surfacing multiple questions or decisions to the user, presenting work for review/sign-off, or proposing concrete alternatives. Covers when a deck beats chat, how to design options as real forks the user can pick between, how to bundle related questions into one deck, and how to invoke synchronously so the orchestrator's process blocks until the user answers.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Talking to the user via decks
|
|
8
|
+
|
|
9
|
+
`sisyphus ask` posts a structured deck of questions to the user's dashboard inbox. They walk through it on their own time and you read structured JSON back. Use it instead of dumping a wall of questions into chat.
|
|
10
|
+
|
|
11
|
+
This skill covers **what to put in a deck** and **how to invoke it**. Run `sisyphus ask -h` for the CLI shape (file path, `--session`, the `poll` and `peek` subcommands).
|
|
12
|
+
|
|
13
|
+
## Reach for a deck when
|
|
14
|
+
|
|
15
|
+
- You have **2+ questions** to surface in one beat (bundle them into one deck).
|
|
16
|
+
- You're presenting **work for review or sign-off** (a design, a plan, a completion summary).
|
|
17
|
+
- You're choosing between **concrete alternatives** the user must pick.
|
|
18
|
+
- The work will sit while the user thinks. Decks survive across cycles; chat does not.
|
|
19
|
+
|
|
20
|
+
## Skip the deck when
|
|
21
|
+
|
|
22
|
+
- It's a single, low-stakes question whose answer barely changes downstream work — just ask in chat.
|
|
23
|
+
- You can settle the question yourself by reading code or running a tool. **Default to investigating before asking.**
|
|
24
|
+
- The user is actively conversing with you — converting a live exchange into a deck adds friction.
|
|
25
|
+
|
|
26
|
+
## How to invoke
|
|
27
|
+
|
|
28
|
+
**Run `sisyphus ask` in the foreground — let the Bash tool block.** The CLI waits internally for the user to resolve the deck (potentially 10+ minutes). Your pane stays alive in tmux for the duration; the daemon will not respawn you while a tool call is in flight. When the user answers, the bash returns stdout and you parse it inline.
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
result=$(sisyphus ask "$deck")
|
|
32
|
+
choice=$(echo "$result" | jq -r '.responses[0].selectedOptionId')
|
|
33
|
+
notes=$(echo "$result" | jq -r '.responses[0].freetext // ""')
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Do not `run_in_background` and yield** — yielding kills your pane and any backgrounded bash with it; the next cycle's fresh orchestrator can only peek the on-disk deck (`sisyphus ask peek`) and yield again, producing a polling loop. The daemon now refuses `sisyphus orch yield` while a deck owned by orchestrator is pending; the supported pattern is foreground.
|
|
37
|
+
|
|
38
|
+
Stdout on completion is one line of JSON: `{responses: [{id, selectedOptionId?, freetext?}, ...], completedAt}`. Branch on each response by its interaction `id`.
|
|
39
|
+
|
|
40
|
+
If you respawn mid-wait and find a pending deck on disk (e.g. after a daemon restart that orphaned the prior bash), block on it with `sisyphus ask poll <askId>` to re-attach. `sisyphus ask peek <askId>` is non-blocking and reserved for respawn-recovery diagnostics. See `sisyphus ask -h`.
|
|
41
|
+
|
|
42
|
+
## Designing interactions
|
|
43
|
+
|
|
44
|
+
### Each option is a concrete path forward
|
|
45
|
+
|
|
46
|
+
The user picks an option to commit to a direction. Each option should name a real path with its tradeoffs spelled out, grounded in *this* codebase. Sign-off decks branch differently per option ("looks good", "minor fixes", "moderate fixes", "scope rework" each route the orchestrator somewhere different). Decision decks present mutually exclusive directions with named consequences.
|
|
47
|
+
|
|
48
|
+
<example type="good">
|
|
49
|
+
```
|
|
50
|
+
title: "Session store backend?"
|
|
51
|
+
subtitle: "Auth needs persistent sessions across restarts"
|
|
52
|
+
kind: decision
|
|
53
|
+
options:
|
|
54
|
+
in-memory: "In-memory map — simplest. Loses sessions on restart; single-process only."
|
|
55
|
+
redis: "Redis — survives restart, supports horizontal scale. New ops dependency."
|
|
56
|
+
postgres: "Reuse existing Postgres — no new infra; ~10ms read latency vs Redis ~1ms."
|
|
57
|
+
defer: "Ship in-memory now, migrate later if scale becomes real."
|
|
58
|
+
allowFreetext: true
|
|
59
|
+
freetextLabel: "Different framing — describe it"
|
|
60
|
+
```
|
|
61
|
+
</example>
|
|
62
|
+
|
|
63
|
+
<example type="bad">
|
|
64
|
+
```
|
|
65
|
+
title: "Happy with this design?"
|
|
66
|
+
options:
|
|
67
|
+
1. Yes
|
|
68
|
+
2. No, start over
|
|
69
|
+
3. Maybe, with comments
|
|
70
|
+
4. (no option, just freetext)
|
|
71
|
+
```
|
|
72
|
+
"Happy?" names a feeling, not a fork. Options 3 and 4 both collapse to freetext, forcing the user to invent the actual decision. Rewrite as specific decisions about specific elements of the design.
|
|
73
|
+
</example>
|
|
74
|
+
|
|
75
|
+
### Use `allowFreetext: true` as a safety valve, not the primary input
|
|
76
|
+
|
|
77
|
+
Freetext catches "anything else?" — opinions or context the options didn't anticipate. When freetext IS the answer you want, write a chat message instead.
|
|
78
|
+
|
|
79
|
+
<example type="bad">
|
|
80
|
+
```
|
|
81
|
+
title: "Approve?"
|
|
82
|
+
options:
|
|
83
|
+
1. Approve
|
|
84
|
+
2. Reject
|
|
85
|
+
3. Comment
|
|
86
|
+
allowFreetext: true
|
|
87
|
+
```
|
|
88
|
+
A freetext form wearing option clothing. Either name what "reject" actually routes to (back to design? abandon? try a different framing?), or drop the deck and ask in chat.
|
|
89
|
+
</example>
|
|
90
|
+
|
|
91
|
+
### Bound option count to 2–4
|
|
92
|
+
|
|
93
|
+
Above four, options become too granular for the user to weigh; below two, you've collapsed into a yes/no that's faster to ask in chat.
|
|
94
|
+
|
|
95
|
+
### Ground options in what you've already gathered
|
|
96
|
+
|
|
97
|
+
Each option label should reference specifics from the codebase, plan, or exploration you just did — file names, framework constraints, prior decisions. When you can't fill in specifics, investigate before asking.
|
|
98
|
+
|
|
99
|
+
### One concern per interaction
|
|
100
|
+
|
|
101
|
+
When two questions interact, give them separate `id` / `title` / `options` inside the same deck (see Bundling below). One interaction asks one thing.
|
|
102
|
+
|
|
103
|
+
## `kind` — display hint
|
|
104
|
+
|
|
105
|
+
| kind | use for |
|
|
106
|
+
|---|---|
|
|
107
|
+
| `decision` | fork in the road; user picks a path forward |
|
|
108
|
+
| `validation` | sign-off on completed work |
|
|
109
|
+
| `notify` | FYI; user acknowledges |
|
|
110
|
+
| `context` | surfacing background that needs a response |
|
|
111
|
+
| `error` | something went wrong; user picks a recovery |
|
|
112
|
+
|
|
113
|
+
The dashboard uses `kind` for inbox icons and sort weight. Mis-tagging trains the user to ignore the icons. Pick the closest fit.
|
|
114
|
+
|
|
115
|
+
## Bundling
|
|
116
|
+
|
|
117
|
+
If you'd otherwise submit two decks in the same beat, merge them. One deck with multiple `interactions` is one context switch for the user; two decks is two.
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
deck="$SISYPHUS_SESSION_DIR/context/.ask-$(date +%s).json"
|
|
121
|
+
cat > "$deck" <<'EOF'
|
|
122
|
+
{
|
|
123
|
+
"title": "Phase 2 sign-off + follow-on decisions",
|
|
124
|
+
"interactions": [
|
|
125
|
+
{
|
|
126
|
+
"id": "approve-phase-2",
|
|
127
|
+
"title": "Phase 2 looks good?",
|
|
128
|
+
"kind": "validation",
|
|
129
|
+
"options": [...]
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"id": "phase-3-scope",
|
|
133
|
+
"title": "Phase 3 scope?",
|
|
134
|
+
"kind": "decision",
|
|
135
|
+
"options": [...]
|
|
136
|
+
}
|
|
137
|
+
]
|
|
138
|
+
}
|
|
139
|
+
EOF
|
|
140
|
+
# Then invoke `sisyphus ask "$deck"` synchronously (foreground bash) — blocks until answered.
|
|
141
|
+
# Each interaction returns its own selectedOptionId / freetext in output.responses[], indexed by id.
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Submission notes
|
|
145
|
+
|
|
146
|
+
- The deck is validated at submit (precise errors — trust them).
|
|
147
|
+
- `bodyPath` lets an interaction point at a markdown file (e.g. a completion summary) instead of inlining the markdown in JSON.
|
|
148
|
+
- On completion, stdout is one line of JSON: `{responses, completedAt}`. Parse `responses[]` and dispatch on each interaction's `id`.
|
|
149
|
+
- See `sisyphus ask -h` for the full CLI surface.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
- `sisyphus orch yield --mode discovery`, `--mode validation`, etc. must be explicit at mode-transition cycles. Omitting silently defaults to `implementation` mode, skipping guardrails the subsequent cycle expects.
|
|
@@ -22,7 +22,8 @@ How to structure sisyphus sessions for common task types. This skill helps the o
|
|
|
22
22
|
|
|
23
23
|
## Agent Types
|
|
24
24
|
|
|
25
|
-
Available agent types are listed under **Available Agent Types** in your prompt. Use `--agent-type` with `sisyphus spawn`.
|
|
25
|
+
Available agent types are listed under **Available Agent Types** in your prompt. Use `--agent-type` with `sisyphus agent spawn`.
|
|
26
26
|
|
|
27
27
|
For task breakdown patterns per workflow type, see [task-patterns.md](task-patterns.md).
|
|
28
28
|
For end-to-end workflow examples, see [workflow-examples.md](workflow-examples.md).
|
|
29
|
+
For strategy.md authoring — stage patterns, process shapes, format — see [strategy.md](strategy.md).
|