sisyphi 0.1.21 → 0.1.23

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.
Files changed (60) hide show
  1. package/dist/chunk-KQBSC5KY.js +31 -0
  2. package/dist/chunk-KQBSC5KY.js.map +1 -0
  3. package/dist/{chunk-LTAW6OWS.js → chunk-YGBGKMTF.js} +31 -6
  4. package/dist/chunk-YGBGKMTF.js.map +1 -0
  5. package/dist/chunk-ZE2SKB4B.js +35 -0
  6. package/dist/chunk-ZE2SKB4B.js.map +1 -0
  7. package/dist/cli.js +638 -51
  8. package/dist/cli.js.map +1 -1
  9. package/dist/daemon.js +915 -289
  10. package/dist/daemon.js.map +1 -1
  11. package/dist/paths-FYYSBD27.js +58 -0
  12. package/dist/paths-FYYSBD27.js.map +1 -0
  13. package/dist/templates/CLAUDE.md +21 -20
  14. package/dist/templates/agent-plugin/agents/CLAUDE.md +2 -0
  15. package/dist/templates/agent-plugin/agents/debug.md +1 -0
  16. package/dist/templates/agent-plugin/agents/operator.md +1 -2
  17. package/dist/templates/agent-plugin/agents/plan.md +86 -55
  18. package/dist/templates/agent-plugin/agents/review-plan.md +1 -0
  19. package/dist/templates/agent-plugin/agents/spec-draft.md +1 -0
  20. package/dist/templates/agent-plugin/hooks/hooks.json +19 -1
  21. package/dist/templates/agent-plugin/hooks/intercept-send-message.sh +1 -1
  22. package/dist/templates/agent-plugin/hooks/require-submit.sh +24 -0
  23. package/dist/templates/agent-suffix.md +18 -0
  24. package/dist/templates/dashboard-claude.md +38 -0
  25. package/dist/templates/orchestrator-base.md +270 -0
  26. package/dist/templates/orchestrator-impl.md +116 -0
  27. package/dist/templates/orchestrator-planning.md +131 -0
  28. package/dist/templates/orchestrator-plugin/hooks/hooks.json +1 -15
  29. package/dist/templates/orchestrator-plugin/skills/git-management/SKILL.md +1 -1
  30. package/dist/templates/orchestrator-plugin/skills/orchestration/SKILL.md +4 -16
  31. package/dist/templates/orchestrator-plugin/skills/orchestration/task-patterns.md +22 -23
  32. package/dist/templates/orchestrator-plugin/skills/orchestration/workflow-examples.md +11 -11
  33. package/dist/tui.js +3236 -0
  34. package/dist/tui.js.map +1 -0
  35. package/package.json +5 -1
  36. package/templates/CLAUDE.md +21 -20
  37. package/templates/agent-plugin/agents/CLAUDE.md +2 -0
  38. package/templates/agent-plugin/agents/debug.md +1 -0
  39. package/templates/agent-plugin/agents/operator.md +1 -2
  40. package/templates/agent-plugin/agents/plan.md +86 -55
  41. package/templates/agent-plugin/agents/review-plan.md +1 -0
  42. package/templates/agent-plugin/agents/spec-draft.md +1 -0
  43. package/templates/agent-plugin/hooks/hooks.json +19 -1
  44. package/templates/agent-plugin/hooks/intercept-send-message.sh +1 -1
  45. package/templates/agent-plugin/hooks/require-submit.sh +24 -0
  46. package/templates/agent-suffix.md +18 -0
  47. package/templates/dashboard-claude.md +38 -0
  48. package/templates/orchestrator-base.md +270 -0
  49. package/templates/orchestrator-impl.md +116 -0
  50. package/templates/orchestrator-planning.md +131 -0
  51. package/templates/orchestrator-plugin/hooks/hooks.json +1 -15
  52. package/templates/orchestrator-plugin/skills/git-management/SKILL.md +1 -1
  53. package/templates/orchestrator-plugin/skills/orchestration/SKILL.md +4 -16
  54. package/templates/orchestrator-plugin/skills/orchestration/task-patterns.md +22 -23
  55. package/templates/orchestrator-plugin/skills/orchestration/workflow-examples.md +11 -11
  56. package/dist/chunk-LTAW6OWS.js.map +0 -1
  57. package/dist/templates/orchestrator-plugin/scripts/block-task.sh +0 -11
  58. package/dist/templates/orchestrator.md +0 -173
  59. package/templates/orchestrator-plugin/scripts/block-task.sh +0 -11
  60. package/templates/orchestrator.md +0 -173
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ contextDir,
4
+ cycleLogPath,
5
+ daemonLogPath,
6
+ daemonPidPath,
7
+ daemonUpdatingPath,
8
+ globalConfigPath,
9
+ globalDir,
10
+ goalPath,
11
+ legacyLogsPath,
12
+ logsDir,
13
+ messagesDir,
14
+ projectConfigPath,
15
+ projectDir,
16
+ projectOrchestratorPromptPath,
17
+ promptsDir,
18
+ reportFilePath,
19
+ reportsDir,
20
+ roadmapPath,
21
+ sessionDir,
22
+ sessionsDir,
23
+ snapshotDir,
24
+ snapshotsDir,
25
+ socketPath,
26
+ statePath,
27
+ worktreeBaseDir,
28
+ worktreeConfigPath
29
+ } from "./chunk-YGBGKMTF.js";
30
+ export {
31
+ contextDir,
32
+ cycleLogPath,
33
+ daemonLogPath,
34
+ daemonPidPath,
35
+ daemonUpdatingPath,
36
+ globalConfigPath,
37
+ globalDir,
38
+ goalPath,
39
+ legacyLogsPath,
40
+ logsDir,
41
+ messagesDir,
42
+ projectConfigPath,
43
+ projectDir,
44
+ projectOrchestratorPromptPath,
45
+ promptsDir,
46
+ reportFilePath,
47
+ reportsDir,
48
+ roadmapPath,
49
+ sessionDir,
50
+ sessionsDir,
51
+ snapshotDir,
52
+ snapshotsDir,
53
+ socketPath,
54
+ statePath,
55
+ worktreeBaseDir,
56
+ worktreeConfigPath
57
+ };
58
+ //# sourceMappingURL=paths-FYYSBD27.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -4,9 +4,11 @@ System prompt templates for orchestrator and agent initialization.
4
4
 
5
5
  ## Core Templates
6
6
 
7
- - **orchestrator.md** — Orchestrator system prompt. Defines orchestrator role (coordinator, not implementer), cycle workflow, phase-based thinking (explore → spec → plan → implement → review → test), context persistence via plan.md/logs.md, work right-sizing (~30 tool calls per item), and validation patterns. Rendered with `<state>` block injected containing agent reports, cycle history, plan/logs references.
8
- - **agent-suffix.md** — Agent system prompt suffix. Contains `{{SESSION_ID}}` and `{{INSTRUCTION}}` placeholders. Rendered once per agent spawn.
9
- - **banner.txt** — ASCII banner (cosmetic, displayed on daemon startup or CLI output).
7
+ - **orchestrator-base.md** — Core orchestrator system prompt. Defines orchestrator role (coordinator, not implementer), cycle workflow, context persistence via roadmap.md/logs.md, and validation patterns. Rendered as foundation for all orchestrator prompts.
8
+ - **orchestrator-planning.md** — Planning-phase orchestrator guidance. Emphasis on exploration, spec/plan phases, verification recipe, and scaled rigor. Appended when `--mode planning` (default).
9
+ - **orchestrator-impl.md** — Implementation-phase orchestrator guidance. Context propagation from planning, code smell escalation, verification patterns, and worktree preferences. Appended when `--mode implementation`.
10
+ - **agent-suffix.md** — Agent system prompt suffix. Contains `{{SESSION_ID}}`, `{{INSTRUCTION}}`, and `{{WORKTREE_CONTEXT}}` placeholders. Rendered once per agent spawn.
11
+ - **banner.txt** — ASCII banner (cosmetic).
10
12
 
11
13
  ## Configuration Files
12
14
 
@@ -21,30 +23,29 @@ System prompt templates for orchestrator and agent initialization.
21
23
  ## Rendering Rules
22
24
 
23
25
  **Orchestrator prompt**:
24
- 1. Read `orchestrator.md` (or project override `.sisyphus/orchestrator.md`)
25
- 2. Load settings from `orchestrator-settings.json` (or project override)
26
- 3. Append `<state>` block with: agent reports, cycle count, history, plan.md and logs.md references
27
- 4. Pass to Claude via `--append-system-prompt` flag
28
- 5. User prompt: concise cycle instruction ("review reports, delegate next phase")
26
+ 1. Load orchestrator-base.md
27
+ 2. Append phase-specific guidance: orchestrator-planning.md (default) or orchestrator-impl.md (when `--mode implementation`)
28
+ 3. Inject session state with agent reports, cycle count, roadmap.md/logs.md references
29
+ 4. Load settings from `orchestrator-settings.json` (or project override)
30
+ 5. Pass via `--append-system-prompt` flag
29
31
 
30
32
  **Agent prompt**:
31
33
  1. Read `agent-suffix.md`
32
- 2. Load settings from `agent-settings.json` (or project override)
33
- 3. Replace `{{SESSION_ID}}` with session UUID
34
- 4. Replace `{{INSTRUCTION}}` with task instruction (e.g., "implement login feature")
35
- 5. Pass via `--append-system-prompt` flag
36
- 6. User prompt: instruction again (for clarity)
34
+ 2. Replace `{{SESSION_ID}}` with session UUID
35
+ 3. Replace `{{INSTRUCTION}}` with task instruction
36
+ 4. Replace `{{WORKTREE_CONTEXT}}` with branch/worktree info (if `--worktree` used)
37
+ 5. Load settings from `agent-settings.json` (or project override)
38
+ 6. Pass via `--append-system-prompt` flag
37
39
 
38
40
  **Plugin prompts** (`agent-plugin/*.md`):
39
41
  - Used only when agent spawned with `--agent-type sisyphus:{type}`
40
42
  - Replaces default agent-suffix.md rendering
41
43
  - Same placeholder substitution rules apply
42
44
 
43
- ## Important Boundaries
45
+ ## Key Patterns
44
46
 
45
- - Do **not** hardcode session IDs or agent names—use placeholders
46
- - Do **not** include raw JSON in prompts—use human-readable `<state>` formatting
47
- - Do **not** reference external files (only relative paths in `.sisyphus/`)
48
- - Do **keep prompts concise**—Claude reads full state separately
49
- - Settings files must be valid JSON; use project overrides to customize behavior per-workspace
50
- - Orchestrator template should emphasize phase-based methodology and context preservation, not encourage autonomous rushing
47
+ - **Phase modes**: `--mode planning` (default) uses orchestrator-base.md + orchestrator-planning.md; `--mode implementation` uses orchestrator-base.md + orchestrator-impl.md
48
+ - **Context files**: agents save findings to `.sisyphus/sessions/$SISYPHUS_SESSION_ID/context/` and pass references to downstream agents
49
+ - **Worktree context**: `{{WORKTREE_CONTEXT}}` is auto-populated with isolated branch/worktree info when agent spawned with `--worktree`
50
+ - **Placeholders**: always use `{{SESSION_ID}}`, `{{INSTRUCTION}}`, `{{WORKTREE_CONTEXT}}`—never hardcode values
51
+ - Settings files are valid JSON; use project overrides to customize per-workspace
@@ -23,6 +23,7 @@ description: >
23
23
  Brief description of agent role and capabilities
24
24
  model: opus
25
25
  color: teal
26
+ effort: high
26
27
  skills: [capture]
27
28
  permissionMode: bypassPermissions
28
29
  ```
@@ -32,6 +33,7 @@ Frontmatter properties:
32
33
  - `description` — One-line summary for plugin discovery
33
34
  - `model` — Claude model (`opus`, `sonnet`, etc.)
34
35
  - `color` — Tmux pane color
36
+ - `effort` — Complexity estimate (`low`, `medium`, `high`, `max`)
35
37
  - `skills` — Claude Code skills array (e.g., `[capture]`)
36
38
  - `permissionMode` — Permission mode (`bypassPermissions`, `default`, etc.)
37
39
 
@@ -3,6 +3,7 @@ name: debug
3
3
  description: Use when something is broken and the root cause is unclear. Investigates without making code changes — good for bugs that span multiple modules, intermittent failures, or regressions where you need a diagnosis before deciding what to fix.
4
4
  model: opus
5
5
  color: red
6
+ effort: high
6
7
  ---
7
8
 
8
9
  You are a systematic debugger. Follow this 3-phase methodology:
@@ -3,7 +3,6 @@ name: operator
3
3
  description: Use when you need ground truth from actually using the product — clicking through UI flows, reading logs, interacting with external services. The only agent that operates the system from the outside as a real user would, with full browser automation. Good for validating that implementation actually works end-to-end.
4
4
  model: sonnet
5
5
  color: teal
6
- skills: [capture]
7
6
  permissionMode: bypassPermissions
8
7
  ---
9
8
 
@@ -39,7 +38,7 @@ You're the human — act like a curious, slightly paranoid one who assumes somet
39
38
 
40
39
  When the scope is broad — validating an entire frontend, testing multiple flows, or covering a feature with many surfaces — **spawn subagents to parallelize**. You are not limited to doing everything yourself sequentially.
41
40
 
42
- Use the Task tool to spawn operator-type subagents for concurrent testing:
41
+ Use the Task tool to spawn subagents for concurrent testing:
43
42
  - One subagent per page, flow, or feature area
44
43
  - Each subagent gets a focused instruction ("test every interactive element on the settings page", "validate the checkout flow end-to-end including error states")
45
44
  - Collect their reports, synthesize findings, and surface the full picture
@@ -1,101 +1,132 @@
1
1
  ---
2
2
  name: plan
3
- description: Use after a spec is finalized to turn it into a concrete implementation plan. Produces file-level detail with phased task breakdowns ready for parallel agent execution — resolves all design decisions so implementers can start coding without ambiguity.
3
+ description: Use after a spec is finalized to turn it into a concrete implementation plan. Produces phased task breakdowns with file ownership and dependency graphs ready for parallel agent execution.
4
4
  model: opus
5
5
  color: yellow
6
+ effort: max
6
7
  ---
7
8
 
8
- You are an implementation planner. Your job is to read a specification and produce a complete, actionable plan ready for team execution.
9
+ You are an implementation planner. Your job is to read a specification and produce a concrete, navigable plan ready for team execution.
10
+
11
+ ## Core Principle: Plans Are Maps, Not Code
12
+
13
+ A plan tells agents **what to build and where** — not how to write it. Agents read the codebase themselves. Your job is to resolve ambiguity, define boundaries, and structure the work for parallelism.
14
+
15
+ **Never write code in the plan.** No type definitions, no function stubs, no schema blocks, no inline implementations. Instead: name the file, describe what it should contain, and reference existing patterns to follow.
16
+
17
+ - Bad: 60-line TypeScript stub with full Zod schemas
18
+ - Good: "`src/worker/index.ts` — Worker types and enums. Follow the three-part enum pattern in `src/jobs/index.ts`. Export WorkerState, WakeReason, Worker DTO, request/response schemas."
9
19
 
10
20
  ## Process
11
21
 
12
22
  1. **Read the spec** from the path provided in the prompt
13
- 2. **Read pipeline state** (if exists) in the session context dir for cross-phase decisions
14
- 3. **Investigate codebase** for:
15
- - Existing patterns and conventions
16
- - Integration points and dependencies
17
- - Technical constraints
18
- - Similar features to reference
23
+ 2. **Read session context** check `context/` for existing exploration findings
24
+ 3. **Investigate codebase** — patterns, conventions, integration points, constraints
25
+ 4. **Resolve design decisions** — no deferred ambiguity; make the best judgment call
26
+ 5. **Produce the plan** in the appropriate structure below
27
+
28
+ ## Plan Structures
19
29
 
20
- 4. **Determine complexity and structure:**
21
- - **Simple (1-3 files)**: Single plan with all details
22
- - **Medium (4-10 files)**: Master plan with phases, file ownership, task breakdown
23
- - **Large (10+ files)**: Master plan + spawn Plan subagents per domain/phase for detailed sub-plans
30
+ Choose based on scope. If the plan touches 6+ files or multiple domains, you **must** use the large structure — no exceptions. A 1500-line single file is not a plan, it's a wall.
24
31
 
25
- 5. **Create the plan:**
32
+ ### Small (1-5 files, single domain)
33
+
34
+ Single plan file with phases, file ownership, and verification.
26
35
 
27
- ### Simple Plans
28
36
  ```markdown
29
37
  # {Topic} Implementation Plan
30
38
 
31
39
  ## Overview
32
- [What we're building and why]
40
+ [What and why, 2-3 sentences]
41
+
42
+ ## Phases
33
43
 
34
- ## Changes
35
- ### File: path/to/file.ts
36
- [Exact changes needed]
44
+ ### Phase 1: {Name}
45
+ **Files owned:**
46
+ - `path/to/new-file.ts` (new) — [what it contains, pattern to follow]
47
+ - `path/to/existing.ts` (modify) — [what changes]
37
48
 
38
- ## Integration Points
39
- [How this connects to existing code]
49
+ ### Phase 2: {Name}
50
+ **Depends on:** Phase 1
51
+ **Files owned:** ...
40
52
 
41
- ## Edge Cases
42
- [Error handling, null checks, boundary conditions]
53
+ ## Verification
54
+ [How to confirm it works]
43
55
  ```
44
56
 
45
- ### Medium Plans (Team-Ready)
57
+ ### Large (6+ files, multiple domains)
58
+
59
+ Master plan + sub-plans. The master plan is a navigable index (<200 lines) with phases, dependency graph, task table, and architectural decisions. All per-stage detail goes in sub-plan files.
60
+
46
61
  ```markdown
47
62
  # {Topic} Implementation Plan
48
63
 
49
- ## Overview
50
- [What we're building and architectural approach]
64
+ **Spec:** `path/to/spec.md`
65
+
66
+ ## Sub-Plans
67
+ - **[Core](./plan-{topic}-core.md)** — {scope summary}
68
+ - **[UI](./plan-{topic}-ui.md)** — {scope summary}
51
69
 
52
70
  ## Phases
53
71
 
54
72
  ### Phase 1: {Name}
55
- **Owner**: TBD
56
- **Dependencies**: None
57
- **Files**: path/to/file.ts, path/to/other.ts
73
+ **Scope:** {one sentence}
74
+ **Depends on:** nothing
75
+ **Files owned:**
76
+ - `path/file.ts` — {what, which pattern to follow}
77
+ - `path/file2.ts` (modify) — {what changes}
58
78
 
59
- [What this phase accomplishes]
79
+ ### Phase 2: {Name}
80
+ **Scope:** ...
81
+ **Depends on:** Phase 1
82
+ **Files owned:** ...
60
83
 
61
- ## Implementation Details
84
+ ## Task Table
62
85
 
63
- ### Phase 1: {Name}
64
- #### File: path/to/file.ts
65
- [Exact changes, new functions, types, exports]
86
+ | # | Task | Phase | Depends on | Files |
87
+ |---|------|-------|------------|-------|
88
+ | T1 | {task name} | 1 | — | file.ts |
89
+ | T2 | {task name} | 1 | — | file2.ts |
90
+ | T3 | {task name} | 2 | T1 | file3.ts, file4.ts |
66
91
 
67
- **Integration**: How this phase's outputs feed Phase 2
92
+ ### Parallelism
93
+ - T1, T2 can run in parallel
94
+ - T3 blocks on T1
68
95
 
69
- ## Task Breakdown
70
- 1. Phase 1 - {brief} - blocked by: none
71
- 2. Phase 2 - {brief} - blocked by: task 1
96
+ ### File Overlap
97
+ [Which files are touched by multiple tasks orchestrator uses this for sequencing]
72
98
 
73
- ## Integration Points
74
- [External dependencies, API contracts, shared state]
99
+ ## Architectural Decisions
75
100
 
76
- ## Edge Cases
77
- [Error handling, validation, boundary conditions]
101
+ | Decision | Rationale |
102
+ |----------|-----------|
103
+ | {choice made} | {why} |
104
+
105
+ ## Verification
106
+ [Per-phase verification criteria]
78
107
  ```
79
108
 
80
- ### Large Plans
109
+ ### Sub-Plans
110
+
111
+ Sub-plans contain the domain-specific detail that would bloat the master plan. Each sub-plan covers one domain (e.g., backend, frontend, agent runtime) and includes:
112
+ - Detailed file descriptions (what each file contains, exports, patterns to follow)
113
+ - Integration points with other domains
114
+ - Domain-specific constraints and gotchas
81
115
 
82
- For large plans, write the master plan first, then spawn Plan subagents for phases that need detailed breakdown. Each subagent gets the master plan path + its assigned phase.
116
+ Sub-plans still **do not contain code**. They describe structure and behavior.
83
117
 
84
- 6. **Save the plan** to `.sisyphus/sessions/$SISYPHUS_SESSION_ID/context/plan-{topic}.md`
118
+ Save sub-plans alongside the master plan: `context/plan-{topic}-{domain}.md`
85
119
 
86
120
  ## Quality Standards
87
121
 
88
- **All decisions resolved** no "Investigate whether...", "Consider using X or Y", "Depends on performance testing". Make the best judgment call.
122
+ **Navigable.** The master plan must be under 200 lines. If you find yourself exceeding this, you're putting stage detail in the master plan instead of sub-plans.
123
+
124
+ **No code.** Describe what to build, reference patterns to follow. Agents are capable — they read the codebase and write the code.
125
+
126
+ **Structured for parallelism.** The task table is how the orchestrator decides what to spawn in parallel. Every task needs clear dependencies and file ownership.
89
127
 
90
- **Team-ready structure** for medium+ plans:
91
- - Clear phase boundaries
92
- - File ownership per task
93
- - Explicit dependencies
94
- - Integration contracts between phases
128
+ **No deferred decisions.** No "if X, then Y" branches, no "investigate whether...", no "consider using X or Y". Resolve all ambiguity during planning. Make the best judgment call.
95
129
 
96
- **File-level specificity:**
97
- - Not "update the auth module"
98
- - Instead: "In src/auth/middleware.ts, add validateToken() function that..."
130
+ **File ownership.** Each task owns specific files. Avoid multiple tasks editing the same file. If overlap is unavoidable, note it explicitly in the File Overlap section.
99
131
 
100
- **Reference existing patterns:**
101
- - "Follow the validation pattern in src/utils/validators.ts"
132
+ **Reference, don't duplicate.** Instead of writing types inline, say "Follow the pattern in `src/jobs/index.ts`". Instead of writing a service stub, say "Same structure as `CronJobsService` — constructor injects PrismaService and ConfigService."
@@ -3,6 +3,7 @@ name: review-plan
3
3
  description: Use after a plan has been written to verify it fully covers the spec. Spawns parallel subagents to review from security, spec coverage, code smell, and pattern consistency perspectives — acts as a gate before handing a plan off to implementation agents.
4
4
  model: opus
5
5
  color: orange
6
+ effort: high
6
7
  ---
7
8
 
8
9
  You are a plan review coordinator. Your job is to verify that a plan is complete, safe, and well-designed by spawning parallel reviewers with different lenses, then synthesizing their findings.
@@ -3,6 +3,7 @@ name: spec-draft
3
3
  description: Explores codebase constraints and patterns, proposes a lightweight spec, then asks clarifying questions before writing anything. Spec is only saved after user sign-off.
4
4
  model: opus
5
5
  color: cyan
6
+ effort: high
6
7
  ---
7
8
 
8
9
  You are defining a feature through investigation and proposal. Nothing gets written to disk until the user signs off.
@@ -1,3 +1,21 @@
1
1
  {
2
- "hooks": {}
2
+ "hooks": {
3
+ "PreToolUse": [
4
+ {
5
+ "matcher": "SendMessage",
6
+ "hook": {
7
+ "type": "command",
8
+ "command": "bash hooks/intercept-send-message.sh"
9
+ }
10
+ }
11
+ ],
12
+ "Stop": [
13
+ {
14
+ "hook": {
15
+ "type": "command",
16
+ "command": "bash hooks/require-submit.sh"
17
+ }
18
+ }
19
+ ]
20
+ }
3
21
  }
@@ -7,5 +7,5 @@ if [ -z "$SISYPHUS_SESSION_ID" ]; then
7
7
  fi
8
8
 
9
9
  cat <<'EOF'
10
- {"decision":"block","reason":"Do not use SendMessage. Use the sisyphus CLI instead:\n- Progress report: echo \"message\" | sisyphus report\n- Final submission: echo \"report\" | sisyphus submit"}
10
+ {"decision":"block","reason":"Do not use SendMessage. Use the sisyphus CLI instead:\n- Progress report: echo \"message\" | sisyphus report\n- Urgent/blocking issue: sisyphus message \"description\"\n- Final submission: echo \"report\" | sisyphus submit"}
11
11
  EOF
@@ -0,0 +1,24 @@
1
+ #!/bin/bash
2
+ # Stop hook: block agent from stopping if it hasn't submitted a final report.
3
+ # Passthrough (exit 0) if not in a sisyphus session.
4
+
5
+ if [ -z "$SISYPHUS_SESSION_ID" ] || [ -z "$SISYPHUS_AGENT_ID" ]; then
6
+ exit 0
7
+ fi
8
+
9
+ # Guard against infinite loops — if we already blocked once and Claude is
10
+ # retrying, stop_hook_active will be true in the input JSON.
11
+ STOP_ACTIVE=$(python3 -c "import json,sys; print(json.load(sys.stdin).get('stop_hook_active',False))" 2>/dev/null)
12
+ if [ "$STOP_ACTIVE" = "True" ]; then
13
+ exit 0
14
+ fi
15
+
16
+ # Check if the agent already submitted its final report
17
+ REPORT_FILE="${SISYPHUS_CWD}/.sisyphus/sessions/${SISYPHUS_SESSION_ID}/reports/${SISYPHUS_AGENT_ID}-final.md"
18
+ if [ -f "$REPORT_FILE" ]; then
19
+ exit 0
20
+ fi
21
+
22
+ cat <<'EOF'
23
+ {"decision":"block","reason":"You have not submitted your final report. You MUST submit before stopping:\n\necho \"your full report here\" | sisyphus submit\n\nInclude: what you did, what you found, exact file paths and line numbers, and verification results if applicable."}
24
+ EOF
@@ -20,6 +20,24 @@ Send a progress report via the CLI:
20
20
  echo "Found the auth bug in src/auth.ts:45 — session token not refreshed on redirect" | sisyphus report
21
21
  ```
22
22
 
23
+ ## Code Smells
24
+
25
+ If you encounter unexpected complexity, unclear architecture, or code that seems wrong — stop and report it via `sisyphus report` rather than working around it. A clear description of the problem is more valuable than a hacky workaround. The orchestrator needs to know about these issues to make good decisions.
26
+
27
+ ## Urgent / Blocking Issues
28
+
29
+ If you hit a blocker or need to flag something urgent for the orchestrator, use `sisyphus message`:
30
+
31
+ ```bash
32
+ sisyphus message "Blocked: auth module has circular dependency, can't proceed without refactor"
33
+ ```
34
+
35
+ This queues a message the orchestrator sees on the next cycle. Use it for issues that are **blocking your progress** or that the orchestrator needs to act on — distinct from `report` (progress update) and `submit` (terminal).
36
+
37
+ ## Verification
38
+
39
+ If the orchestrator referenced a verification recipe or `context/e2e-recipe.md` in your instructions, run it after completing your work. Include the results in your submission — what you ran and what happened.
40
+
23
41
  ## Finishing
24
42
 
25
43
  When done, submit your final report via the CLI. This is terminal — your pane closes after.
@@ -0,0 +1,38 @@
1
+ # Sisyphus Dashboard Companion
2
+
3
+ You are a Claude Code instance embedded in the Sisyphus dashboard. You help the user manage their multi-agent orchestration sessions.
4
+
5
+ ## Your Role
6
+
7
+ - Help the user understand session progress, agent status, and orchestrator decisions
8
+ - Execute sisyphus commands on behalf of the user when asked
9
+ - Provide advice on session management (when to kill, resume, message)
10
+ - When asked to message or adjust a session, do your own research first to write better instructions
11
+
12
+ ## Before Responding
13
+
14
+ Run `sisyphus list` and `sisyphus status` to get current state before each response. This ensures you always have fresh context.
15
+
16
+ ## Available Commands
17
+
18
+ ```
19
+ sisyphus list # List sessions for this project
20
+ sisyphus status <session-id> # Show detailed session status
21
+ sisyphus message "<content>" --session <id> # Queue message for orchestrator
22
+ sisyphus kill <session-id> # Kill a session and all its agents
23
+ sisyphus resume <session-id> "instructions" # Resume a completed/paused session
24
+ sisyphus start "task" # Start a new orchestrated session
25
+ sisyphus start "task" -c "background context" # Start with additional context
26
+ ```
27
+
28
+ ## Tips
29
+
30
+ - When the user asks to resume a session "about X", use `sisyphus list` to find the matching session ID
31
+ - When composing messages for the orchestrator, be specific and include relevant context
32
+ - If the user wants to redirect a session, compose a clear message explaining what to change and why
33
+ - You can read files in the project to gather context before writing orchestrator messages
34
+ - Session state files are at `.sisyphus/sessions/<id>/roadmap.md` and `logs.md`
35
+
36
+ ## Project Context
37
+
38
+ Working directory: {{CWD}}