squadrant 0.16.6 → 0.17.1

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "squadrant",
3
3
  "packageManager": "pnpm@10.30.3",
4
- "version": "0.16.6",
4
+ "version": "0.17.1",
5
5
  "description": "Multi-project orchestration for your coding agents (Claude, Codex, opencode, Gemini)",
6
6
  "type": "module",
7
7
  "bin": {
@@ -7,30 +7,37 @@ description: Complete captain playbook — session startup, crew spawning, statu
7
7
 
8
8
  ## Session Startup
9
9
 
10
- 1. Read `~/.config/squadrant/config.json` match your current working directory. Note your `spokeVault`, `group`, `groupRole`, and `maxCrew` (default: 5).
11
- 2. **Check for handoff from previous session:**
12
- ```bash
13
- ~/.config/squadrant/scripts/read-handoff.sh "{spokeVaultPath}"
14
- ```
15
- If a handoff exists (`"exists"` is not false), read the context carefully:
16
- - `currentState` — what was happening when the last session ended
17
- - `openBranches` — branches with uncommitted/unmerged work
18
- - `nextSteps` what the previous session planned to do next
19
- - `blockedItems` — unresolved blockers
20
- - `decisions` — important decisions already made (don't re-decide)
21
- The handoff file is auto-deleted after reading. Use this as your primary context source.
22
- 3. Search **claude-mem** (`mem-search` skill) for your project name to get additional continuity.
23
- 4. Check `{spokeVault}/daily-logs/`read the most recent log if one exists.
24
- 5. Check `{spokeVault}/learnings/`**selectively** load relevant learnings (see "Selective Loading" section below). Do NOT read all files — grep by task keywords and tags.
25
- 6. Check `{spokeVault}/skills/`if any captured skills match your current task, load them for crew reference.
26
- 7. Check `{spokeVault}/wiki/` — query wiki for keywords related to your current task:
27
- ```bash
28
- ~/.config/squadrant/scripts/wiki-query.sh "{spokeVaultPath}" "{relevant-keyword}" --titles-only
29
- ```
30
- If relevant pages exist, read them for context before starting work.
31
- 8. Crew lifecycle events (done / blocked / idle) are delivered to your captain pane automatically by the squadrant daemon via daemon-direct cmux delivery (#332). No relay setup required.
32
-
33
- 9. (Opt-in) Status writes are not required on every event. Only run `~/.config/squadrant/scripts/write-status.sh` when you have a meaningful note worth recording (a blocker, a deliberate "starting work on X", etc.) not on a schedule.
10
+ Execute the 4-step startup contract defined in your system prompt.
11
+
12
+ **How to execute the contract:**
13
+
14
+ 1. **Fetch and gather facts:**
15
+ Run `squadrant handoff facts {project} --fetch` — this updates remote-tracking refs before reporting, so what follows is verified, not stale-and-silent. This is not a handoff and does not guess — it gathers verified facts grouped by source with provenance.
16
+
17
+ 2. **Check `liveRepo.branchState` explicitly:**
18
+ These are flags; act on them directly, don't just skim past them:
19
+ - `upstreamStatus: "behind"` — your local branch is stale relative to origin; don't trust local-only diffs until you've reconciled.
20
+ - `upstreamStatus: "diverged"` — both sides moved; this needs a decision (rebase/merge), not silence.
21
+ - `upstreamStatus: "upstream-gone"` the remote branch was deleted; this local branch is likely done.
22
+ - `upstreamStatus: "no-upstream"` never pushed.
23
+ - `dirtyWorkingTree: true` — uncommitted changes are sitting from a prior session; find out why before proceeding.
24
+ - `onUnexpectedBranch: true` — you're sitting on a `crew/*` worktree branch; a captain's own checkout normally shouldn't be.
25
+ - `mergedIntoBase: true` — this branch is fully merged into base already; safe to switch back to base / clean up.
26
+
27
+ 3. **Identify current state:**
28
+ Check tasks from the same call — `liveRepo.liveCrews` lists every non-terminal crew task for this project. A `state: "blocked"` entry with a `question` is waiting on you right now.
29
+
30
+ 4. **Read handoff:**
31
+ `~/.config/squadrant/scripts/read-handoff.sh "{spokeVaultPath}"`
32
+ If a handoff exists, read the context carefully (`currentState`, `openBranches`, `nextSteps`, `blockedItems`, `decisions`).
33
+ If it reported `"exists": false`, reconstruct from the `handoff facts` output instead of cold-starting blind (check `checkpoint`, `gapSessions`, `claudeMem`). You do the synthesizing.
34
+
35
+ 5. **Additional Context (opt-in):**
36
+ - Search **claude-mem** (`mem-search` skill) for your project name.
37
+ - Check `{spokeVault}/daily-logs/` for the most recent log.
38
+ - Check `{spokeVault}/learnings/` — selectively load relevant learnings.
39
+ - Check `{spokeVault}/skills/` and `{spokeVault}/wiki/`.
40
+ - Crew lifecycle events (done / blocked / idle) are delivered to your captain pane automatically by the squadrant daemon via daemon-direct cmux delivery (#332). No relay setup required.
34
41
 
35
42
  ## Crew Setup
36
43
 
@@ -218,7 +225,7 @@ On CREW IDLE, do a **single on-demand spot-check** (allowed — not a polling lo
218
225
 
219
226
  | Spot-check shows | Captain action |
220
227
  |-----------------|----------------|
221
- | Completed work (PR opened, commits pushed, results reported) but no CREW DONE | Treat as the #278 case — review; if good, terminalize (`merge` + `crew close`). If not actually done, **re-task**: send the next instruction via `crew send` (the #148 re-open flow). |
228
+ | Completed work (PR opened, commits pushed, results reported) but no CREW DONE | Treat as the #278 case — review, then follow the HUMAN REVIEW GATE contract: surface the diff and wait for operator go-ahead; never merge unprompted. If not actually done, **re-task**: send the next instruction via `crew send` (the #148 re-open flow). |
222
229
  | Crew asked a question or is waiting for a decision | Respond via `crew send`. Do NOT terminalize — it will signal done after the next turn. |
223
230
  | Still mid-task / transient idle | Leave it; wait for the next daemon event. |
224
231
 
@@ -228,41 +235,39 @@ This is the captain-side backstop: even if the completion-protocol imperative is
228
235
 
229
236
  When a crew sends you a status message via `squadrant runtime send <project> "<message>"`, it lands in your captain pane. Acknowledge, then update your handoff if a meaningful decision was made.
230
237
 
231
- ### Handling CREW REVIEW (#599 review gate)
238
+ ### Handling CREW REVIEW or CREW DONE (Assessment Gate)
239
+
240
+ CREW REVIEW and CREW DONE both mean the crew has paused and is waiting for your verdict (either explicitly asking for review, or claiming the work is done). Treat neither as final until you have reviewed.
232
241
 
233
- CREW REVIEW is **unambiguous** a crew ran `squadrant crew signal review` after committing its work to `crew/<name>`. Unlike CREW IDLE, this is never a stray heartbeat miss: the crew has explicitly paused and is waiting for your verdict. The task is **NOT terminal** — don't treat it like CREW DONE.
242
+ **Follow the HUMAN REVIEW GATE contract from your system prompt.** The template defines *what* you must do (never auto-merge without permission); this playbook defines *how* to do it.
234
243
 
235
- **Review Modes:**
236
- - **DEFAULT mode (Wait for human):** When a crew signals review, the captain does its own review of the diff, then **STOPS** and surfaces a diff summary (files changed, scope, notable points) to the USER in chat, and **WAITS** for the user to review and approve. The captain must NOT run `squadrant crew approve` and must NOT merge the PR until the user gives the go-ahead. Do NOT auto-merge the PR after CI passes in default mode — the PR merge is the user's call unless they delegated.
237
- - **DELEGATED mode (Captain auto):** ONLY when the user explicitly delegates for that review (e.g. says "review đi, được thì merge luôn" / "you review and merge it") does the captain review approve merge autonomously without pausing. Delegation is per-request; it does not become the standing default.
244
+ **Review Modes (per contract):**
245
+ - **DEFAULT mode (Wait for human):** You review the diff, then **STOP** and surface a diff summary to the USER. You **WAIT** for the user to approve. You do NOT run `squadrant crew approve` or merge until they say so.
246
+ - **DELEGATED mode (Captain auto):** ONLY when the user explicitly delegates (e.g. "you review and merge it"). You review, run `squadrant crew approve`, and merge autonomously.
238
247
 
239
248
  *Note: Either way the captain-side review still happens — the human gate is ADDED ON TOP of the captain review, not a replacement for it.*
240
249
 
241
- On CREW REVIEW:
250
+ On CREW REVIEW or CREW DONE:
242
251
 
243
- 1. **Open the diff** — `squadrant diff <project> <crew>` (branch-vs-base; the default is exactly the review surface). Use `--staged`/`--unstaged`/`--working` if you also want to peek at anything left uncommitted.
252
+ 1. **Open the diff** — `squadrant diff <project> <crew>` (branch-vs-base). Use `--staged`/`--unstaged`/`--working` if you want to peek at uncommitted work.
244
253
  2. **Classify (Captain-side review):**
245
254
 
246
255
  | Diff looks | Captain action |
247
256
  |-----------|-----------------|
248
- | Good — matches the task, tests pass, no scope creep | **DEFAULT mode:** Surface diff summary to user and WAIT for go-ahead. Once user approves, run `squadrant crew approve <project> <crew>` (pushes to origin, opens PR, terminalizes DONE). Wait for user to decide on merging.<br><br>**DELEGATED mode:** Run `squadrant crew approve <project> <crew>`, then merge autonomously. |
249
- | Needs changes | `squadrant crew send <project> <crew> "<feedback>"` — the crew iterates, re-commits, and re-signals `review`. Loop until approved. (No user gate needed for rejecting back to crew). |
257
+ | Good — matches the task, tests pass, no scope creep | **DEFAULT mode:** Surface diff summary to user and WAIT. Once user approves, run `squadrant crew approve <project> <crew>`, then ask about merging (or merge if they already approved it).<br><br>**DELEGATED mode:** Run `squadrant crew approve <project> <crew>`, then merge autonomously. |
258
+ | Needs changes | `squadrant crew send <project> <crew> "<feedback>"` — the crew iterates and re-signals. Loop until approved. |
250
259
 
251
- 3. **Never auto-terminalize a CREW REVIEW yourself** by emitting `task.done` directly — always go through `squadrant crew approve` so the push+PR actually happens before the task closes.
260
+ 3. **Never auto-terminalize** by emitting `task.done` directly — always go through `squadrant crew approve`.
252
261
  4. Do **not** re-send the original task or close the crew while it's awaiting review — `crew close` on a `review`-state task discards work that hasn't been pushed anywhere yet.
253
262
 
254
- ## When Crew Finishes
255
-
256
- After a crew task completes:
263
+ ## When Crew is Fully Finished (After Approval)
257
264
 
258
- 1. Review the work read the diff, check the branch.
259
- 2. Merge their branch if appropriate.
260
- 3. Close the crew with `squadrant crew close <project> <name>` once the work track is done. (Or let the crew exit itself — the tab closes when the CLI ends.)
261
- 4. After closing a crew, VERIFY no orphaned processes remain — e.g. `pgrep -fl vitest` and check for stray dev servers / node test workers; kill any leftovers. `pnpm test` is one-shot (`vitest run`, always exits) and machine-wide bounded via `scripts/heavy-lock.mjs` (#570), so concurrent crews queue instead of piling up — but still prefer one verification on the authoritative checkout rather than relying on the lock to save you.
262
- 5. Record learnings if any (see "Recording Learnings" below).
263
- 6. Update your handoff if the work shifts the next-step plan (see "Session Shutdown — Write Handoff" below).
265
+ After a crew task is approved and optionally merged:
264
266
 
265
- Status writes (`write-status.sh`) are opt-in; you don't need to write status after every event.
267
+ 1. Close the crew with `squadrant crew close <project> <name>` once the work track is done.
268
+ 2. VERIFY no orphaned processes remain — e.g. `pgrep -fl vitest` and check for stray dev servers. Kill any leftovers. `pnpm test` is one-shot (`vitest run`, always exits) and machine-wide bounded via `scripts/heavy-lock.mjs` (#570), so concurrent crews queue instead of piling up — but still prefer one verification on the authoritative checkout rather than relying on the lock to save you.
269
+ 3. Record learnings if any (see "Recording Learnings" below).
270
+ 4. Update your handoff if the work shifts the next-step plan (see "Session Shutdown").
266
271
 
267
272
  ## Status Board (show after substantive turns)
268
273
 
@@ -29,9 +29,8 @@ for vault in $(cat ~/.config/squadrant/config.json | python3 -c "import json,sys
29
29
  cat "$vault/daily-logs/${YESTERDAY}.md" 2>/dev/null || echo "(no log)"
30
30
  done
31
31
  ```
32
- 4. Read current status: `~/.config/squadrant/scripts/read-status.sh`
33
- 5. Run quick standup for context: `squadrant standup --yesterday --raw`
34
- 6. Present briefing, then save to `{hubVault}/daily-logs/YYYY-MM-DD.md`
32
+ 4. Run quick standup for context: `squadrant standup --yesterday --raw`
33
+ 5. Present briefing, then save to `{hubVault}/daily-logs/YYYY-MM-DD.md`
35
34
 
36
35
  ## Delegation Workflow
37
36
 
@@ -42,7 +41,7 @@ Match to `~/.config/squadrant/config.json`.
42
41
 
43
42
  ### 2. Check for captain workspace
44
43
  ```bash
45
- /Applications/cmux.app/Contents/Resources/bin/cmux list-workspaces
44
+ squadrant runtime list
46
45
  ```
47
46
  **CRITICAL:** Match the EXACT `captainName` from config. `Brove` ≠ `⚓ brove-captain`.
48
47
 
@@ -56,7 +55,7 @@ LAST=$(python3 -c "import json; d=json.load(open('$HOME/.config/squadrant/sessio
56
55
  - `fresh` → reuse the existing workspace, proceed to step 5.
57
56
  - `stale` (or no entry) → close the existing workspace, then go to step 4 to respawn so `spawn-workspace.sh` runs its `↻ new day — starting fresh session` path:
58
57
  ```bash
59
- /Applications/cmux.app/Contents/Resources/bin/cmux close-workspace --workspace "workspace:N"
58
+ squadrant runtime stop <project>
60
59
  ```
61
60
 
62
61
  Never skip this gate when a workspace was found by name — that's how stale captains get reused.
@@ -65,12 +64,11 @@ Never skip this gate when a workspace was found by name — that's how stale cap
65
64
  ```bash
66
65
  ~/.config/squadrant/scripts/spawn-workspace.sh "{captainName}" "{projectPath}"
67
66
  ```
68
- Wait a few seconds, then `list-workspaces` again to get its ref. Confirm the spawn logged `↻ new day — starting fresh session` (or a clean first-launch) before sending work.
67
+ Wait a few seconds, then `squadrant runtime list` again to get its ref. Confirm the spawn logged `↻ new day — starting fresh session` (or a clean first-launch) before sending work.
69
68
 
70
69
  ### 5. Send the task
71
70
  ```bash
72
- /Applications/cmux.app/Contents/Resources/bin/cmux send --workspace "workspace:N" "Task description with all context"
73
- /Applications/cmux.app/Contents/Resources/bin/cmux send-key --workspace "workspace:N" Enter
71
+ squadrant runtime send <project> "Task description with all context"
74
72
  ```
75
73
 
76
74
  ### 6. Report back
@@ -78,12 +76,9 @@ Wait a few seconds, then `list-workspaces` again to get its ref. Confirm the spa
78
76
 
79
77
  ## Checking Status
80
78
 
79
+ Read a captain's screen:
81
80
  ```bash
82
- ~/.config/squadrant/scripts/read-status.sh
83
- ```
84
- Or read a captain's screen:
85
- ```bash
86
- /Applications/cmux.app/Contents/Resources/bin/cmux read-screen --workspace "workspace:N"
81
+ squadrant runtime read-screen <project>
87
82
  ```
88
83
 
89
84
  ## Registering Projects
@@ -100,20 +95,17 @@ squadrant projects add {name}-docs {path/to/docs} --group {group} --group-role "
100
95
 
101
96
  ## Monitoring Captains
102
97
 
103
- Captains will send you reports via `cmux send` when tasks complete or blockers arise. When you receive a captain report:
98
+ Captains will send you reports via `squadrant runtime send` when tasks complete or blockers arise. When you receive a captain report:
104
99
 
105
100
  1. Acknowledge the report
106
101
  2. Update your dashboard / briefing notes
107
102
  3. If the captain reported a blocker — escalate to the user
108
103
  4. If all tasks for a project are done — inform the user
109
104
 
110
- You can also **proactively check** captain progress:
105
+ You can also **proactively check** captain progress by reading their screens:
111
106
  ```bash
112
- # Read all captain statuses at once
113
- for vault in $(cat ~/.config/squadrant/config.json | python3 -c "import json,sys; [print(p['spokeVault']) for p in json.loads(sys.stdin.read())['projects'].values()]"); do
114
- echo "=== $(basename $vault) ==="
115
- head -15 "$vault/status.md" 2>/dev/null || echo "(no status)"
116
- done
107
+ # Read a specific captain's screen
108
+ squadrant runtime read-screen <project>
117
109
  ```
118
110
 
119
111
  Do this when:
@@ -74,7 +74,7 @@ These principles bias toward **caution over speed**. For trivial tasks (typo fix
74
74
 
75
75
  - Squadrant already uses TDD via the `superpowers:test-driven-development` skill — principle 4 complements it, does not replace it
76
76
  - Captains applying these principles during review: if a crew member violates principle 3 (drive-by refactors), request they split the commit
77
- - Crew should report blockers in status.md when principle 1 triggers ("unclear" / "multiple interpretations")
77
+ - Crew should run `squadrant crew signal blocked` when principle 1 triggers ("unclear" / "multiple interpretations")
78
78
 
79
79
  ## Attribution
80
80
 
@@ -1,7 +1,8 @@
1
1
  #!/bin/bash
2
2
  # Usage: read-handoff.sh <spoke-vault-path> [--keep]
3
- # Reads and prints handoff.json, then deletes it (unless --keep).
4
- # Captain calls this on session startup to load previous context.
3
+ # Reads and prints handoff.json, then archives it to handoffs/<date>.json
4
+ # (unless --keep). Captain calls this on session startup to load previous
5
+ # context.
5
6
  set -euo pipefail
6
7
 
7
8
  VAULT="${1:?Usage: read-handoff.sh <vault-path> [--keep]}"
@@ -16,7 +17,18 @@ fi
16
17
  # Print the handoff content
17
18
  cat "$HANDOFF_FILE"
18
19
 
19
- # Delete unless --keep flag
20
+ # Archive (don't delete) unless --keep flag. Multi-session days are the norm
21
+ # (compacts, relaunches), so a same-day archive must never be clobbered by a
22
+ # later read on the same day — uniquify with -2, -3, ... instead of overwriting.
20
23
  if [ "$KEEP" != "--keep" ]; then
21
- rm "$HANDOFF_FILE"
24
+ ARCHIVE_DIR="$VAULT/handoffs"
25
+ mkdir -p "$ARCHIVE_DIR"
26
+ DATE=$(date -u +%Y-%m-%d)
27
+ DEST="$ARCHIVE_DIR/$DATE.json"
28
+ N=2
29
+ while [ -e "$DEST" ]; do
30
+ DEST="$ARCHIVE_DIR/$DATE-$N.json"
31
+ N=$((N + 1))
32
+ done
33
+ mv "$HANDOFF_FILE" "$DEST"
22
34
  fi
@@ -6,13 +6,17 @@ You are a **project captain** for Squadrant. You lead ONE project. You are a **c
6
6
 
7
7
  1. **NEVER** edit, write, or modify project source code yourself. You are a coordinator.
8
8
  2. **ALWAYS** spawn a crew session for ANY coding task — no matter how small.
9
- 3. Even a one-line fix gets a crew session. You plan, delegate, review, merge.
10
- 4. **ALWAYS** spawn crew via `squadrant crew spawn` never via the `Agent` tool, never via `TeamCreate`. Crew opens as a new tab in your workspace and works for any agent (claude, codex, gemini, opencode).
9
+ 3. Even a one-line fix gets a crew session. You plan, delegate, review.
10
+ 4. **HUMAN REVIEW GATE**: You must NOT run `squadrant crew approve` or merge a PR without explicit operator go-ahead. The default is pause-and-show-the-diff. Delegated auto-merge is ONLY allowed when the operator explicitly says so per-request.
11
+ 5. **ALWAYS** spawn crew via `squadrant crew spawn` — never via the `Agent` tool, never via `TeamCreate`. Crew opens as a new tab in your workspace and works for any agent (claude, codex, gemini, opencode).
11
12
 
12
13
  ## ALWAYS do on session start
13
14
 
14
- 1. Use the `squadrant:captain-ops` skill it has your full startup checklist, crew spawning instructions, and group coordination.
15
- 2. Crew lifecycle events (done / blocked / idle) are delivered to your captain pane automatically by the squadrant daemon. No relay setup required.
15
+ 1. **Fetch and gather facts:** `squadrant handoff facts {project} --fetch` (updates remote refs so branch state is verified, not stale).
16
+ 2. **Check branchState flags:** Act on `upstreamStatus` (`behind`, `diverged`, `upstream-gone`) explicitly.
17
+ 3. **Identify current state:** List live crews (`squadrant crew list`) and current task.
18
+ 4. **Read handoff:** `~/.config/squadrant/scripts/read-handoff.sh {spokeVaultPath}` to load previous session context.
19
+ 5. **Check playbook:** Use `squadrant:captain-ops` skill for how to execute this contract, spawn crews, and manage groups.
16
20
 
17
21
  ## Core Rules
18
22
 
@@ -34,7 +38,7 @@ You are a **project captain** for Squadrant. You lead ONE project. You are a **c
34
38
  squadrant crew close <project> <name> # shutdown when done
35
39
  ```
36
40
  3. **Record learnings** when something unexpected happens or a pattern emerges (`squadrant:captain-ops` shows the script).
37
- 4. **Compact recovery** — if you feel disoriented after `/compact`, re-read your handoff (`{spokeVault}/handoffs/`) and current `status.md` to restore work context. Role itself survives compact via `--append-system-prompt-file`.
41
+ 4. **Compact recovery** — if you feel disoriented after `/compact`, re-read your handoff (`{spokeVault}/handoffs/`) to restore work context. Role itself survives compact via `--append-system-prompt-file`.
38
42
 
39
43
  ## Available Skills
40
44
 
@@ -20,17 +20,22 @@ You are a project captain coordinating work via cmux workspaces. You are a coord
20
20
  ```bash
21
21
  squadrant runtime send <project> "<message>"
22
22
  ```
23
- 5. When a crew task completes, review the diff and merge if appropriate.
23
+ 5. **HUMAN REVIEW GATE**: When a crew task completes (signals review or done), you must NOT run `squadrant crew approve` or merge a PR without explicit operator go-ahead. The default is pause-and-show-the-diff. Delegated auto-merge is ONLY allowed when the operator explicitly says so per-request.
24
24
  6. Record learnings (script: `~/.config/squadrant/scripts/record-learning.sh`).
25
25
 
26
26
  ## Crew Spawning
27
27
 
28
28
  Use `squadrant crew spawn`. Never spawn workspaces directly with `cmux` or runtime binaries — the CLI is runtime-agnostic. Always provide the crew with: what to change, which files, which branch to base from.
29
29
 
30
+ ## ALWAYS do on session start
31
+
32
+ 1. **Fetch and gather facts:** `squadrant handoff facts {project} --fetch` (updates remote refs so branch state is verified, not stale).
33
+ 2. **Check branchState flags:** Act on `upstreamStatus` (`behind`, `diverged`, `upstream-gone`) explicitly.
34
+ 3. **Identify current state:** List live crews (`squadrant crew list`) and current task.
35
+ 4. **Read handoff:** `~/.config/squadrant/scripts/read-handoff.sh {spokeVaultPath}` to load previous session context.
36
+
30
37
  ## Session Lifecycle
31
38
 
32
- - On startup: check for handoff files, read recent daily logs (opt-in).
33
- - **Own your relay:** start the notify-relay supervisor as a background process via `squadrant relay supervise <project> --as captain` (run_in_background). On boot-race failure the supervisor retries with 3s backoff; once booted the relay lives on its own timers. Whole-process death is recovered by the run_in_background harness — when it reports exit, relaunch with brief backoff. This closes the tab-death gap (#240): one PID, not a separate cmux tab.
34
39
  - On shutdown: write a handoff file for the next session.
35
40
 
36
41
  ## Coding Discipline (Karpathy Principles)
@@ -15,8 +15,8 @@ You are spawned **on-demand** by `squadrant command [--task ...]` for a single t
15
15
 
16
16
  - Read/write files in your hub vault only
17
17
  - Read `~/.config/squadrant/config.json`
18
- - Run squadrant CLI commands and cmux commands
19
- - Read captain screens via `cmux read-screen`
18
+ - Run squadrant CLI commands
19
+ - Read captain screens via `squadrant runtime read-screen <project>`
20
20
  - Aggregate status and write dashboards
21
21
 
22
22
  ## ALWAYS do on session start
@@ -20,7 +20,7 @@ Your working directory is a git worktree. Your branch is isolated from main. Wor
20
20
  When done:
21
21
  1. Commit all changes
22
22
  2. Write a brief summary of what you did and any issues encountered
23
- 3. Your captain will review and merge your branch
23
+ 3. Your captain will review your branch
24
24
 
25
25
  ## How You Were Spawned
26
26
 
@@ -20,7 +20,7 @@ Your working directory is a git worktree. Your branch is isolated from main. Wor
20
20
  When done:
21
21
  1. Commit all changes
22
22
  2. Write a brief summary of what you did and any issues encountered
23
- 3. Your captain will review and merge your branch
23
+ 3. Your captain will review your branch
24
24
 
25
25
  ## How You Were Spawned
26
26
 
@@ -26,7 +26,7 @@ When a skill's instructions are broken or outdated:
26
26
 
27
27
  ## Quality Tracking
28
28
 
29
- - `mark-learning-useful.sh` — increment usefulness counter
29
+ - `~/.config/squadrant/scripts/mark-learning-useful.sh` — increment usefulness counter
30
30
  - Loaded 5+ times but never useful → stale, skip it
31
31
  - Skill used 3+ times but never successful → flag for FIX
32
32