@bradygaster/squad-cli 0.10.0 → 0.11.0

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 (105) hide show
  1. package/CHANGELOG.md +555 -0
  2. package/README.md +6 -6
  3. package/dist/cli/commands/aspire.d.ts +1 -1
  4. package/dist/cli/commands/aspire.js +2 -2
  5. package/dist/cli/commands/aspire.js.map +1 -1
  6. package/dist/cli/commands/build.d.ts.map +1 -1
  7. package/dist/cli/commands/build.js +30 -9
  8. package/dist/cli/commands/build.js.map +1 -1
  9. package/dist/cli/commands/cross-squad.d.ts +15 -2
  10. package/dist/cli/commands/cross-squad.d.ts.map +1 -1
  11. package/dist/cli/commands/cross-squad.js +78 -4
  12. package/dist/cli/commands/cross-squad.js.map +1 -1
  13. package/dist/cli/commands/loop.js +1 -1
  14. package/dist/cli/commands/loop.js.map +1 -1
  15. package/dist/cli/commands/migrate-backend.d.ts.map +1 -1
  16. package/dist/cli/commands/migrate-backend.js +23 -0
  17. package/dist/cli/commands/migrate-backend.js.map +1 -1
  18. package/dist/cli/commands/preset.d.ts +1 -0
  19. package/dist/cli/commands/preset.d.ts.map +1 -1
  20. package/dist/cli/commands/preset.js +60 -3
  21. package/dist/cli/commands/preset.js.map +1 -1
  22. package/dist/cli/commands/skill.d.ts.map +1 -1
  23. package/dist/cli/commands/skill.js +4 -3
  24. package/dist/cli/commands/skill.js.map +1 -1
  25. package/dist/cli/commands/state-mcp.d.ts.map +1 -1
  26. package/dist/cli/commands/state-mcp.js +50 -16
  27. package/dist/cli/commands/state-mcp.js.map +1 -1
  28. package/dist/cli/commands/watch/agent-spawn.d.ts +21 -1
  29. package/dist/cli/commands/watch/agent-spawn.d.ts.map +1 -1
  30. package/dist/cli/commands/watch/agent-spawn.js +38 -5
  31. package/dist/cli/commands/watch/agent-spawn.js.map +1 -1
  32. package/dist/cli/commands/watch/capabilities/decision-hygiene.d.ts.map +1 -1
  33. package/dist/cli/commands/watch/capabilities/decision-hygiene.js +1 -25
  34. package/dist/cli/commands/watch/capabilities/decision-hygiene.js.map +1 -1
  35. package/dist/cli/commands/watch/capabilities/monitor-email.d.ts.map +1 -1
  36. package/dist/cli/commands/watch/capabilities/monitor-email.js +2 -25
  37. package/dist/cli/commands/watch/capabilities/monitor-email.js.map +1 -1
  38. package/dist/cli/commands/watch/capabilities/monitor-teams.d.ts.map +1 -1
  39. package/dist/cli/commands/watch/capabilities/monitor-teams.js +2 -26
  40. package/dist/cli/commands/watch/capabilities/monitor-teams.js.map +1 -1
  41. package/dist/cli/commands/watch/capabilities/retro.d.ts.map +1 -1
  42. package/dist/cli/commands/watch/capabilities/retro.js +1 -25
  43. package/dist/cli/commands/watch/capabilities/retro.js.map +1 -1
  44. package/dist/cli/commands/watch/config.d.ts.map +1 -1
  45. package/dist/cli/commands/watch/config.js +5 -0
  46. package/dist/cli/commands/watch/config.js.map +1 -1
  47. package/dist/cli/commands/watch/index.d.ts.map +1 -1
  48. package/dist/cli/commands/watch/index.js +3 -1
  49. package/dist/cli/commands/watch/index.js.map +1 -1
  50. package/dist/cli/core/cast.d.ts.map +1 -1
  51. package/dist/cli/core/cast.js +84 -0
  52. package/dist/cli/core/cast.js.map +1 -1
  53. package/dist/cli/core/command-help.d.ts.map +1 -1
  54. package/dist/cli/core/command-help.js +25 -12
  55. package/dist/cli/core/command-help.js.map +1 -1
  56. package/dist/cli/core/gh-cli.d.ts +6 -1
  57. package/dist/cli/core/gh-cli.d.ts.map +1 -1
  58. package/dist/cli/core/gh-cli.js +8 -3
  59. package/dist/cli/core/gh-cli.js.map +1 -1
  60. package/dist/cli/core/init.d.ts.map +1 -1
  61. package/dist/cli/core/init.js +82 -3
  62. package/dist/cli/core/init.js.map +1 -1
  63. package/dist/cli/core/mcp-root.d.ts +14 -1
  64. package/dist/cli/core/mcp-root.d.ts.map +1 -1
  65. package/dist/cli/core/mcp-root.js +72 -1
  66. package/dist/cli/core/mcp-root.js.map +1 -1
  67. package/dist/cli/core/mcp-spec.d.ts.map +1 -1
  68. package/dist/cli/core/mcp-spec.js +3 -2
  69. package/dist/cli/core/mcp-spec.js.map +1 -1
  70. package/dist/cli/core/templates.d.ts.map +1 -1
  71. package/dist/cli/core/templates.js +72 -12
  72. package/dist/cli/core/templates.js.map +1 -1
  73. package/dist/cli/core/upgrade.d.ts +26 -0
  74. package/dist/cli/core/upgrade.d.ts.map +1 -1
  75. package/dist/cli/core/upgrade.js +236 -11
  76. package/dist/cli/core/upgrade.js.map +1 -1
  77. package/dist/cli/shell/components/InputPrompt.d.ts.map +1 -1
  78. package/dist/cli/shell/components/InputPrompt.js +17 -9
  79. package/dist/cli/shell/components/InputPrompt.js.map +1 -1
  80. package/dist/cli/shell/index.js +1 -1
  81. package/dist/cli/shell/index.js.map +1 -1
  82. package/dist/cli-entry.js +28 -11
  83. package/dist/cli-entry.js.map +1 -1
  84. package/package.json +10 -9
  85. package/templates/casting-reference.md +18 -0
  86. package/templates/fact-checker-policy.md +104 -0
  87. package/templates/skills/cli-wiring/SKILL.md +2 -2
  88. package/templates/skills/coordinator-init-mode/SKILL.md +83 -0
  89. package/templates/skills/coordinator-response-mode/SKILL.md +97 -0
  90. package/templates/skills/coordinator-source-of-truth/SKILL.md +45 -0
  91. package/templates/skills/cross-squad/SKILL.md +66 -6
  92. package/templates/skills/cross-squad-communication/SKILL.md +399 -0
  93. package/templates/skills/init-mode/SKILL.md +4 -4
  94. package/templates/skills/personal-squad/SKILL.md +3 -2
  95. package/templates/skills/release-process/SKILL.md +2 -2
  96. package/templates/skills/{squad-commands → squad}/SKILL.md +8 -12
  97. package/templates/skills/squad-help/SKILL.md +97 -0
  98. package/templates/skills/squad-version-check/SKILL.md +9 -0
  99. package/templates/skills/tiered-memory/SKILL.md +31 -44
  100. package/templates/spawn-reference.md +57 -2
  101. package/templates/squad.agent.md.template +204 -180
  102. package/templates/workflows/squad-heartbeat.yml +2 -5
  103. package/templates/workflows/squad-issue-assign.yml +3 -7
  104. package/templates/workflows/squad-triage.yml +3 -11
  105. package/templates/workflows/sync-squad-labels.yml +2 -7
@@ -0,0 +1,97 @@
1
+ ---
2
+ name: "squad-help"
3
+ description: "How to actually use Squad — Squad is a custom Copilot agent (invoked via the task tool with agent_type='Squad'), not a skill. This file explains the right invocation paths for setting up a team, listing squad commands, and initializing Squad in a new project."
4
+ allowedTools: []
5
+ confidence: high
6
+ domain: squad-onboarding
7
+ ---
8
+
9
+ # Skill: squad-help
10
+
11
+ > **Quick reference.** If you're reading this because a user said "use squad" or "squad" or "set up a squad", you're in the right place — read on for the correct invocation paths.
12
+
13
+ ---
14
+
15
+ ## Squad is a custom agent, not a skill
16
+
17
+ The Squad framework registers a **custom Copilot CLI agent** at `.github/agents/squad.agent.md`. The agent is named **`Squad`** and its description is *"Your AI team. Describe what you're building, get a team of specialists that live in your repo."*
18
+
19
+ Copilot CLI agents and skills are different things:
20
+
21
+ | Thing | How to invoke | Example |
22
+ |---|---|---|
23
+ | **Skill** | `skill(name)` tool call or natural-language match | `skill(squad-commands)` |
24
+ | **Agent** | `task` tool with `agent_type=<name>` | `task(name="...", agent_type="Squad", prompt="...")` |
25
+ | **Slash command** | Built-in CLI keyword | `/agent`, `/skills`, `/mcp` |
26
+
27
+ Calling `skill(Squad)` will fail with *"Skill not found: Squad"* because Squad is the agent, not a skill. (`/squad` as a slash command also does not exist — only built-in CLI keywords like `/agent`, `/skills`, `/mcp` are slash commands. There's no way to map a skill name to a slash command without a Copilot CLI feature change.)
28
+
29
+ ---
30
+
31
+ ## How to actually use Squad
32
+
33
+ Pick the path that matches the user's intent:
34
+
35
+ ### A) Invoke the Squad coordinator agent (most common)
36
+
37
+ The Squad coordinator orchestrates a team of specialists. It routes work to the right agent, scaffolds a team if none exists, and enforces handoffs.
38
+
39
+ ```text
40
+ task(
41
+ name="<short-task-name>",
42
+ agent_type="Squad",
43
+ prompt="<what you want the team to do>"
44
+ )
45
+ ```
46
+
47
+ Use this when the user says things like:
48
+ - *"Use Squad to build X"*
49
+ - *"Set up an AI team for this project"*
50
+ - *"Have the Squad coordinator design Y"*
51
+ - *"Spawn Squad"* / *"Squad, help me with ..."*
52
+
53
+ ### B) See what Squad commands exist
54
+
55
+ The `squad-commands` skill is a categorized catalog of common Squad operations. The coordinator presents it as an interactive menu.
56
+
57
+ Trigger by natural-language match: `"squad commands"`, `"what can squad do"`, `"show me squad options"`, `"slash commands"`, `"what commands are available"`.
58
+
59
+ Use this when the user says things like:
60
+ - *"What can Squad do?"*
61
+ - *"Show me the squad commands"*
62
+ - *"squad help"*
63
+
64
+ ### C) Initialize Squad in a fresh project
65
+
66
+ `squad init` is a **shell command**, not a tool call. The user runs it in their terminal in a project that has no `.squad/` directory yet.
67
+
68
+ ```bash
69
+ squad init
70
+ ```
71
+
72
+ Do **not** try to invoke this from inside an existing Copilot session — `.squad/` is already initialized if you're reading this file.
73
+
74
+ ---
75
+
76
+ ## What NOT to do
77
+
78
+ - ❌ Do not call `skill(Squad)`, `skill(squad)`, or `skill(squad-coordinator)` — Squad is not a skill.
79
+ - ❌ Do not type `/squad` expecting a slash command — slash commands are CLI keywords, not skill names. Use `/agent` (browse) or invoke the `Squad` agent via the `task` tool.
80
+ - ❌ Do not call `task(agent_type="Squad", …)` for tiny tasks the current agent can handle directly. Squad is for work that needs orchestration; trivial edits do not.
81
+
82
+ ---
83
+
84
+ ## How this skill was discovered
85
+
86
+ This skill ships from the Squad SDK templates and is wired into `MANIFEST_SKILL_NAMES`. It lives at `.copilot/skills/squad-help/SKILL.md` so the Copilot CLI's `/skills` loader picks it up alongside the other bundled Squad skills.
87
+
88
+ If you removed this skill on purpose, the model will fall back to its own reasoning and may make the lookup mistakes described above.
89
+
90
+ ---
91
+
92
+ ## See also
93
+
94
+ - `.github/agents/squad.agent.md` — the actual Squad coordinator agent
95
+ - `.copilot/skills/squad-commands/SKILL.md` — the command catalog
96
+ - `.copilot/skills/squad-conventions/SKILL.md` — conventions for working on the Squad codebase itself
97
+ - `.copilot/skills/squad-version-check/SKILL.md` — version-stamping mechanics
@@ -1,3 +1,12 @@
1
+ ---
2
+ name: "squad-version-check"
3
+ description: "Internals of how @bradygaster/squad-cli stamps its version, how `squad upgrade` works (what it preserves vs overwrites), and how to probe the npm registry for the latest version from a coordinator prompt."
4
+ allowedTools: []
5
+ confidence: medium
6
+ domain: squad-internals
7
+ source: "Discovered by Data; validated in bradygaster/squad#1173 recon (2026-05-26)."
8
+ ---
9
+
1
10
  # SKILL: Squad CLI Internals — Version Stamping & Upgrade Mechanics
2
11
 
3
12
  **Confidence:** medium
@@ -1,33 +1,35 @@
1
1
  ---
2
2
  name: tiered-memory
3
- description: Three-tier agent memory model (hot/cold/wiki) for 20-55% context reduction per spawn
3
+ description: Three-tier agent memory model (hot/cold/wiki) for context reduction per spawn
4
4
  domain: memory-management, performance
5
- confidence: high
6
- source: earned (production measurements in tamirdresher/tamresearch1, 34-74KB baseline payloads)
5
+ confidence: design (runtime not yet implemented)
6
+ source: design proposal
7
7
  ---
8
8
 
9
9
  # Skill: Tiered Agent Memory
10
10
 
11
+ > **Status (v0.10.0):** This skill describes a **design proposal**, not a shipped runtime. Skill files install via `squad init`/`upgrade`, but the underlying tier scaffolding (`.squad/memory/hot/`, `cold/`, `wiki/`), Scribe promotion logic, and spawn-template tier-aware reads are tracked in [bradygaster/squad#1264](https://github.com/bradygaster/squad/issues/1264). Until those land, agents continue to load full `history.md` + `decisions.md` on every spawn.
12
+
11
13
  ## Overview
12
14
 
13
- Squad agents currently load their full context history on every spawn, resulting in 34–74KB payloads per agent (8,800–18,500 tokens). Measurement shows 82–96% of that context is "old noise" information that is no longer relevant to the current task. The Tiered Agent Memory skill introduces a three-tier memory model that eliminates this bloat, achieving 20–55% context reduction per spawn in production.
15
+ Squad agents today load their full context history on every spawn, which grows unboundedly across sessions. The Tiered Agent Memory model proposes a three-tier separation so agents only load the bytes that are actually relevant to the current task, with older context kept available on demand.
14
16
 
15
17
  ---
16
18
 
17
19
  ## Memory Tiers
18
20
 
19
21
  ### 🔥 Hot Tier — Current Session Context
20
- - **Size target:** ~2–4KB
22
+ - **Size target:** keep small (~2–4KB typical)
21
23
  - **Load policy:** Always loaded. Every spawn includes hot memory by default.
22
24
  - **Contents:** Current task description, active decisions made this session, immediate blockers, last 3–5 actions taken, who you are talking to right now.
23
25
  - **Lifetime:** Current session only. Discarded after session ends (Scribe promotes relevant parts to Cold).
24
26
  - **Purpose:** Provide immediate task context without any latency or load decision.
25
27
 
26
28
  ### ❄️ Cold Tier — Summarized Cross-Session History
27
- - **Size target:** ~8–12KB
29
+ - **Size target:** larger summary, not full transcript (~8–12KB typical)
28
30
  - **Load policy:** Load on demand. Include only when the task explicitly needs history.
29
31
  - **Contents:** Summarized past sessions (compressed by Scribe), cross-session decisions, recurring patterns, unresolved issues from prior work.
30
- - **Lifetime:** 30 days rolling window. After 30 days, Scribe promotes to Wiki tier.
32
+ - **Lifetime:** Rolling window (default proposal: 30 days). Eligible entries are then promoted to Wiki.
31
33
  - **Purpose:** Answer "what have we tried before?" and "what was decided?" without replaying full transcripts.
32
34
  - **How to include:** Pass `--include-cold` in spawn template or add `## Cold Memory` section.
33
35
 
@@ -89,49 +91,34 @@ See: .squad/memory/wiki/{topic}.md
89
91
 
90
92
  ---
91
93
 
92
- ## Measurement Data
93
-
94
- Baseline measurements from tamirdresher/tamresearch1 production runs (June 2025):
95
-
96
- | Agent | Total Context | Old Noise % | Hot-Only Size | Savings |
97
- |-------|--------------|-------------|---------------|---------|
98
- | Picard (Lead) | 74KB / 18.5K tokens | 96% | ~3KB | 55% |
99
- | Scribe | 52KB / 13K tokens | 91% | ~4KB | 48% |
100
- | Data | 43KB / 10.7K tokens | 88% | ~3.5KB | 42% |
101
- | Ralph | 38KB / 9.5K tokens | 85% | ~3KB | 38% |
102
- | Worf | 34KB / 8.5K tokens | 82% | ~3KB | 20% |
103
-
104
- **Average savings: 20–55% per spawn** with Hot-only loading. Cold + Wiki on-demand adds ~2–8KB when needed, still well below current baselines.
105
-
106
- ---
107
-
108
- ## Integration with Scribe Agent
94
+ ## Integration with Scribe Agent (design — not yet implemented)
109
95
 
110
- Scribe is the memory coordinator for this system. It automates tier promotion:
96
+ Scribe is the proposed memory coordinator for this system. Once the runtime lands, Scribe will:
111
97
 
112
- 1. **End of session:** Scribe compresses Hot → Cold summary (keeps ~10% of session verbosity)
113
- 2. **After 30 days:** Scribe promotes Cold → Wiki for decisions/facts that aged into stable knowledge
114
- 3. **On-demand wiki writes:** Any agent can request Scribe to write a wiki entry mid-session using `scribe:wiki-write`
98
+ 1. **End of session:** Compress Hot → Cold summary (target: ~10% of session verbosity)
99
+ 2. **Aged cold entries:** Promote Cold → Wiki for decisions/facts that aged into stable knowledge
100
+ 3. **On-demand wiki writes:** Any agent can request Scribe to write a wiki entry mid-session
115
101
 
116
- See Scribe charter: `.squad/agents/scribe/charter.md`
102
+ Until then, see the Scribe charter for current behavior: `.squad/agents/scribe/charter.md`
117
103
 
118
104
  ---
119
105
 
120
- ## Implementation Checklist
106
+ ## Implementation Checklist (tracked in #1264)
121
107
 
122
108
  - [ ] Scribe writes Hot context file at session start (`.squad/memory/hot/{agent}.md`)
123
109
  - [ ] Scribe compresses and writes Cold summary at session end
124
110
  - [ ] Spawn templates default to Hot-only
125
111
  - [ ] Coordinators add `--include-cold` / `--include-wiki` flags as needed
126
112
  - [ ] Wiki entries stored in `.squad/memory/wiki/`
127
- - [ ] Cold entries stored in `.squad/memory/cold/` with 30-day TTL
113
+ - [ ] Cold entries stored in `.squad/memory/cold/` with rolling TTL
128
114
 
129
115
  ---
130
116
 
131
117
  ## References
132
118
 
133
- - Upstream issue: bradygaster/squad#600
134
- - Production data: tamirdresher/tamresearch1 (June 2025)
119
+ - Tracking issue: [bradygaster/squad#1264](https://github.com/bradygaster/squad/issues/1264) — installation gap + runtime status
120
+ - Original design spike: [bradygaster/squad#686](https://github.com/bradygaster/squad/issues/686) — tiered memory implementation plan
121
+ - Related: [bradygaster/squad#600](https://github.com/bradygaster/squad/issues/600) — context payload growth
135
122
 
136
123
  ---
137
124
 
@@ -162,7 +149,7 @@ Use this template when spawning any Squad agent. By default it loads **Hot tier
162
149
 
163
150
  ### 🔥 Hot (always included)
164
151
 
165
- > Paste current session context here (2–4KB max):
152
+ > Paste current session context here (~2–4KB target):
166
153
 
167
154
  ```
168
155
  Current task: {task_description}
@@ -178,12 +165,12 @@ Talking to: {current_interlocutor}
178
165
 
179
166
  > Load on demand. Do not inline unless specifically needed.
180
167
 
181
- Summarized cross-session history is at:
168
+ Summarized cross-session history is at:
182
169
  `.squad/memory/cold/{agent-name}.md`
183
170
 
184
171
  Include when:
185
172
  - Resuming interrupted work
186
- - Debugging a recurring issue
173
+ - Debugging a recurring issue
187
174
  - "What have we tried before?"
188
175
 
189
176
  **To load cold memory, add this section and fetch the file before spawning:**
@@ -218,17 +205,17 @@ Include when:
218
205
  ## Escalation
219
206
 
220
207
  If blocked or uncertain:
221
- - Architecture questions → @picard
222
- - Security concerns → @worf
223
- - Infrastructure/deployment → @belanna
224
- - Memory/history questions → @scribe
208
+ - Architecture questions → @picard
209
+ - Security concerns → @worf
210
+ - Infrastructure/deployment → @belanna
211
+ - Memory/history questions → @scribe
225
212
 
226
213
  ---
227
214
 
228
215
  ## Notes
229
216
 
230
- - Hot tier is always included and should stay under 4KB
231
- - Cold adds ~8–12KB; only include when history is relevant
217
+ - Hot tier is always included; keep it focused
218
+ - Cold adds a summary; only include when history is relevant
232
219
  - Wiki adds variable size; only include specific relevant docs
233
- - See `skills/tiered-memory/SKILL.md` for full tier reference
234
- - See `docs/tiered-memory-guide.md` for wiring instructions
220
+ - Runtime backing is tracked in [bradygaster/squad#1264](https://github.com/bradygaster/squad/issues/1264) — until those changes land, this skill is design-only and agents continue to load full history.md + decisions.md on every spawn
221
+
@@ -2,7 +2,62 @@
2
2
 
3
3
  ### How to Spawn an Agent
4
4
 
5
- **You MUST dispatch every agent spawn** via the platform's tool (`task` on CLI, `runSubagent` on VS Code):
5
+ **You MUST dispatch every agent spawn** via the platform's tool:
6
+ - **CLI:** `task` tool
7
+ - **VS Code:** `runSubagent` tool
8
+ - **Copilot App:** `create_session` tool (when available — see Sub-Sessions below)
9
+
10
+ **Platform detection (run once at session start):**
11
+ - `create_session` tool exists → **App mode** → sub-sessions for commit-producing work
12
+ - `runSubagent` tool exists → **VS Code mode** → subagents
13
+ - `task` tool exists → **CLI mode** → task tool
14
+ - None available → **work inline** (last resort fallback)
15
+
16
+ ---
17
+
18
+ ### Sub-Sessions (Copilot App Mode)
19
+
20
+ When `create_session` is available, spawn commit-producing agents as **sub-sessions** instead of tasks. Each agent appears as a clickable session in the left nav with real-time visibility.
21
+
22
+ **When to use sub-sessions vs task:**
23
+ - **Sub-session** (`create_session`): Agent produces commits, needs worktree isolation, or benefits from persistent session visibility
24
+ - **Task** (`task` tool): Pure analysis, coordination, read-only research, or quick one-shot work
25
+
26
+ **Sub-session parameters:**
27
+ - **`name`**: `"{Name} {verb}ing {noun}"` — 40-char max, sentence case (e.g., "EECOM refactoring auth", "Flight reviewing arch")
28
+ - **`coordinate_with_creator`**: `true` (always — enables cross-session messaging)
29
+ - **`notify_on_idle`**: `"once"` (coordinator gets notified when agent finishes)
30
+ - **`kickoff.prompt`**: The full agent prompt (same as task prompt below)
31
+ - **`kickoff.mode`**: `"autopilot"` (agents work autonomously)
32
+ - **`kickoff.model`**: `"{resolved_model}"`
33
+
34
+ **Constraints:**
35
+ - **Max depth:** 1 — no sub-sub-sessions. If an agent needs to delegate, it uses `task` tool.
36
+ - **Concurrency cap:** Maximum 4-5 simultaneous sub-sessions. Queue additional spawns.
37
+ - **Fallback:** If `create_session` fails, degrade gracefully to `task` tool for that agent.
38
+
39
+ **Sub-session template:**
40
+ ```
41
+ create_session({
42
+ name: "{Name} {verb}ing {noun}",
43
+ coordinate_with_creator: true,
44
+ notify_on_idle: "once",
45
+ kickoff: {
46
+ prompt: "{full agent prompt — see template below}",
47
+ mode: "autopilot",
48
+ model: "{resolved_model}",
49
+ reasoning_effort: "{resolved_effort}"
50
+ }
51
+ })
52
+ ```
53
+
54
+ **Result collection:** When `notify_on_idle` fires, the coordinator receives the session result via cross-session notification. No polling required.
55
+
56
+ ---
57
+
58
+ ### Task Tool Spawn (CLI Mode)
59
+
60
+ Standard spawn via `task` tool — used in CLI, or as fallback when `create_session` is unavailable:
6
61
 
7
62
  - **`agent_type`**: `"general-purpose"` (always — this gives agents full tool access)
8
63
  - **`mode`**: `"background"` (default) or `"sync"` — use `"background"` for all parallelizable work; use `"sync"` only when the result is needed before the next step can proceed
@@ -81,7 +136,7 @@ prompt: |
81
136
  Read `decisions.md` with `squad_state_read` when state tools are available; otherwise fall back to `.squad/decisions.md`.
82
137
  If .squad/identity/wisdom.md exists, read it before starting work.
83
138
  If .squad/identity/now.md exists, read it at spawn time.
84
- Check project skill directories (.squad/skills/, .copilot/skills/, .github/skills/, .claude/skills/, .agents/skills/) for any SKILL.md the coordinator attached to your prompt.
139
+ Check project skill directories (.squad/skills/, .github/skills/, .copilot/skills/, .claude/skills/, .agents/skills/) for any SKILL.md the coordinator attached to your prompt.
85
140
  Read any relevant SKILL.md files before working.
86
141
 
87
142
  ⚠️ WORK FRESHNESS: When determining what to work on: