@bradygaster/squad-cli 0.9.6-insider.3 → 0.10.0-insider.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.
Files changed (144) hide show
  1. package/CHANGELOG.md +555 -0
  2. package/README.md +5 -5
  3. package/dist/cli/commands/build.js +3 -3
  4. package/dist/cli/commands/build.js.map +1 -1
  5. package/dist/cli/commands/copilot-bridge.d.ts.map +1 -1
  6. package/dist/cli/commands/copilot-bridge.js +5 -1
  7. package/dist/cli/commands/copilot-bridge.js.map +1 -1
  8. package/dist/cli/commands/cross-squad.d.ts +15 -2
  9. package/dist/cli/commands/cross-squad.d.ts.map +1 -1
  10. package/dist/cli/commands/cross-squad.js +78 -4
  11. package/dist/cli/commands/cross-squad.js.map +1 -1
  12. package/dist/cli/commands/doctor.d.ts +6 -0
  13. package/dist/cli/commands/doctor.d.ts.map +1 -1
  14. package/dist/cli/commands/doctor.js +92 -6
  15. package/dist/cli/commands/doctor.js.map +1 -1
  16. package/dist/cli/commands/install-hooks.d.ts.map +1 -1
  17. package/dist/cli/commands/install-hooks.js +50 -5
  18. package/dist/cli/commands/install-hooks.js.map +1 -1
  19. package/dist/cli/commands/loop.d.ts.map +1 -1
  20. package/dist/cli/commands/loop.js +7 -5
  21. package/dist/cli/commands/loop.js.map +1 -1
  22. package/dist/cli/commands/migrate-backend.d.ts +36 -5
  23. package/dist/cli/commands/migrate-backend.d.ts.map +1 -1
  24. package/dist/cli/commands/migrate-backend.js +250 -40
  25. package/dist/cli/commands/migrate-backend.js.map +1 -1
  26. package/dist/cli/commands/notes.d.ts +27 -0
  27. package/dist/cli/commands/notes.d.ts.map +1 -0
  28. package/dist/cli/commands/notes.js +222 -0
  29. package/dist/cli/commands/notes.js.map +1 -0
  30. package/dist/cli/commands/plugin.js +3 -3
  31. package/dist/cli/commands/plugin.js.map +1 -1
  32. package/dist/cli/commands/skill.d.ts +31 -0
  33. package/dist/cli/commands/skill.d.ts.map +1 -0
  34. package/dist/cli/commands/skill.js +498 -0
  35. package/dist/cli/commands/skill.js.map +1 -0
  36. package/dist/cli/commands/start.d.ts.map +1 -1
  37. package/dist/cli/commands/start.js +9 -1
  38. package/dist/cli/commands/start.js.map +1 -1
  39. package/dist/cli/commands/state-mcp.d.ts.map +1 -1
  40. package/dist/cli/commands/state-mcp.js +6 -0
  41. package/dist/cli/commands/state-mcp.js.map +1 -1
  42. package/dist/cli/commands/watch/agent-spawn.d.ts +62 -0
  43. package/dist/cli/commands/watch/agent-spawn.d.ts.map +1 -0
  44. package/dist/cli/commands/watch/agent-spawn.js +127 -0
  45. package/dist/cli/commands/watch/agent-spawn.js.map +1 -0
  46. package/dist/cli/commands/watch/capabilities/decision-hygiene.d.ts.map +1 -1
  47. package/dist/cli/commands/watch/capabilities/decision-hygiene.js +2 -1
  48. package/dist/cli/commands/watch/capabilities/decision-hygiene.js.map +1 -1
  49. package/dist/cli/commands/watch/capabilities/execute.d.ts.map +1 -1
  50. package/dist/cli/commands/watch/capabilities/execute.js +2 -1
  51. package/dist/cli/commands/watch/capabilities/execute.js.map +1 -1
  52. package/dist/cli/commands/watch/capabilities/index.d.ts.map +1 -1
  53. package/dist/cli/commands/watch/capabilities/index.js +2 -0
  54. package/dist/cli/commands/watch/capabilities/index.js.map +1 -1
  55. package/dist/cli/commands/watch/capabilities/monitor-email.d.ts.map +1 -1
  56. package/dist/cli/commands/watch/capabilities/monitor-email.js +2 -1
  57. package/dist/cli/commands/watch/capabilities/monitor-email.js.map +1 -1
  58. package/dist/cli/commands/watch/capabilities/monitor-teams.d.ts.map +1 -1
  59. package/dist/cli/commands/watch/capabilities/monitor-teams.js +2 -1
  60. package/dist/cli/commands/watch/capabilities/monitor-teams.js.map +1 -1
  61. package/dist/cli/commands/watch/capabilities/notes-promote.d.ts +11 -0
  62. package/dist/cli/commands/watch/capabilities/notes-promote.d.ts.map +1 -0
  63. package/dist/cli/commands/watch/capabilities/notes-promote.js +124 -0
  64. package/dist/cli/commands/watch/capabilities/notes-promote.js.map +1 -0
  65. package/dist/cli/commands/watch/capabilities/retro.d.ts.map +1 -1
  66. package/dist/cli/commands/watch/capabilities/retro.js +2 -1
  67. package/dist/cli/commands/watch/capabilities/retro.js.map +1 -1
  68. package/dist/cli/commands/watch/capabilities/wave-dispatch.d.ts.map +1 -1
  69. package/dist/cli/commands/watch/capabilities/wave-dispatch.js +2 -1
  70. package/dist/cli/commands/watch/capabilities/wave-dispatch.js.map +1 -1
  71. package/dist/cli/commands/watch/index.d.ts.map +1 -1
  72. package/dist/cli/commands/watch/index.js +7 -6
  73. package/dist/cli/commands/watch/index.js.map +1 -1
  74. package/dist/cli/core/cast.d.ts.map +1 -1
  75. package/dist/cli/core/cast.js +84 -0
  76. package/dist/cli/core/cast.js.map +1 -1
  77. package/dist/cli/core/command-help.d.ts +44 -0
  78. package/dist/cli/core/command-help.d.ts.map +1 -0
  79. package/dist/cli/core/command-help.js +401 -0
  80. package/dist/cli/core/command-help.js.map +1 -0
  81. package/dist/cli/core/copilot-invocation.d.ts +57 -0
  82. package/dist/cli/core/copilot-invocation.d.ts.map +1 -0
  83. package/dist/cli/core/copilot-invocation.js +84 -0
  84. package/dist/cli/core/copilot-invocation.js.map +1 -0
  85. package/dist/cli/core/effective-squad-dir.d.ts +33 -0
  86. package/dist/cli/core/effective-squad-dir.d.ts.map +1 -0
  87. package/dist/cli/core/effective-squad-dir.js +37 -0
  88. package/dist/cli/core/effective-squad-dir.js.map +1 -0
  89. package/dist/cli/core/init.d.ts.map +1 -1
  90. package/dist/cli/core/init.js +117 -0
  91. package/dist/cli/core/init.js.map +1 -1
  92. package/dist/cli/core/mcp-root.d.ts +73 -0
  93. package/dist/cli/core/mcp-root.d.ts.map +1 -0
  94. package/dist/cli/core/mcp-root.js +195 -0
  95. package/dist/cli/core/mcp-root.js.map +1 -0
  96. package/dist/cli/core/mcp-spec.d.ts +48 -0
  97. package/dist/cli/core/mcp-spec.d.ts.map +1 -0
  98. package/dist/cli/core/mcp-spec.js +62 -0
  99. package/dist/cli/core/mcp-spec.js.map +1 -0
  100. package/dist/cli/core/npm-registry.d.ts +25 -0
  101. package/dist/cli/core/npm-registry.d.ts.map +1 -0
  102. package/dist/cli/core/npm-registry.js +65 -0
  103. package/dist/cli/core/npm-registry.js.map +1 -0
  104. package/dist/cli/core/templates.d.ts.map +1 -1
  105. package/dist/cli/core/templates.js +77 -30
  106. package/dist/cli/core/templates.js.map +1 -1
  107. package/dist/cli/core/upgrade.d.ts +28 -0
  108. package/dist/cli/core/upgrade.d.ts.map +1 -1
  109. package/dist/cli/core/upgrade.js +249 -18
  110. package/dist/cli/core/upgrade.js.map +1 -1
  111. package/dist/cli/shell/coordinator.d.ts.map +1 -1
  112. package/dist/cli/shell/coordinator.js +9 -3
  113. package/dist/cli/shell/coordinator.js.map +1 -1
  114. package/dist/cli/shell/index.d.ts.map +1 -1
  115. package/dist/cli/shell/index.js +12 -6
  116. package/dist/cli/shell/index.js.map +1 -1
  117. package/dist/cli/shell/lifecycle.d.ts.map +1 -1
  118. package/dist/cli/shell/lifecycle.js +12 -7
  119. package/dist/cli/shell/lifecycle.js.map +1 -1
  120. package/dist/cli/shell/session-store.d.ts +4 -4
  121. package/dist/cli/shell/session-store.d.ts.map +1 -1
  122. package/dist/cli/shell/session-store.js +11 -11
  123. package/dist/cli/shell/session-store.js.map +1 -1
  124. package/dist/cli-entry.js +125 -46
  125. package/dist/cli-entry.js.map +1 -1
  126. package/package.json +4 -3
  127. package/scripts/patch-esm-imports.mjs +3 -1
  128. package/templates/after-agent-reference.md +2 -2
  129. package/templates/fact-checker-policy.md +104 -0
  130. package/templates/scribe-charter.md +1 -1
  131. package/templates/skills/cross-squad/SKILL.md +66 -6
  132. package/templates/skills/cross-squad-communication/SKILL.md +399 -0
  133. package/templates/skills/fact-checking/SKILL.md +61 -0
  134. package/templates/skills/release-process/SKILL.md +2 -2
  135. package/templates/skills/{squad-commands → squad}/SKILL.md +6 -10
  136. package/templates/skills/squad-help/SKILL.md +97 -0
  137. package/templates/skills/squad-version-check/SKILL.md +9 -0
  138. package/templates/skills/tiered-memory/SKILL.md +31 -44
  139. package/templates/spawn-reference.md +1 -2
  140. package/templates/squad.agent.md.template +141 -18
  141. package/templates/workflow-wiring-appendix-a-code-reviewer.md +131 -0
  142. package/templates/workflow-wiring-appendix-b-documenter.md +140 -0
  143. package/templates/workflow-wiring-guide.md +276 -0
  144. package/templates/workflows/squad-heartbeat.yml +167 -167
package/CHANGELOG.md ADDED
@@ -0,0 +1,555 @@
1
+ # @bradygaster/squad-cli
2
+
3
+ ## 0.10.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 6a72634: Add routing.md to squad export/import functionality
8
+
9
+ The routing.md file is now included when exporting and importing Squad configurations.
10
+ This preserves the full routing context (tables, comments, principles) alongside the
11
+ structured routing rules that were already exported.
12
+
13
+ - 6e72c8a: feat: APM integration — squad skill publish/install + apm.yml in init
14
+
15
+ Implements #824. Adds `squad skill publish/install/list` commands and generates `apm.yml` on `squad init`.
16
+
17
+ - 53eddac: Ship 8 built-in skills with squad init/upgrade (#788)
18
+
19
+ New skills distributed automatically on `squad init` and `squad upgrade`:
20
+
21
+ - **error-recovery** — graceful failure handling patterns
22
+ - **secret-handling** — credential safety and secrets management
23
+ - **git-workflow** — branch management and commit conventions
24
+ - **session-recovery** — checkpoint and recovery patterns
25
+ - **reviewer-protocol** — code review gate patterns
26
+ - **test-discipline** — test-first discipline and coverage
27
+ - **agent-collaboration** — multi-agent handoff patterns
28
+ - **squad-conventions** — (already shipped, now part of curated set)
29
+
30
+ All skills are squad-owned (`overwriteOnUpgrade: true`) and update on upgrade.
31
+
32
+ - 7f9a878: Add cleanup watch capability for stale file housekeeping (#791)
33
+
34
+ - New `cleanup` capability in the `housekeeping` phase
35
+ - Clears `.squad/.scratch/` (all ephemeral temp files)
36
+ - Archives orchestration-log and session-log entries older than 30 days
37
+ - Warns about stale decision inbox files (>7 days)
38
+ - Configurable: `everyNRounds` (default: 10), `maxAgeDays` (default: 30)
39
+ - 12 new tests
40
+
41
+ - 5826555: Cross-squad orchestration — discovery, delegation, and manifest (#316). Adds manifest schema, `squad discover` / `squad delegate` commands, and runtime module for coordinating work across multiple Squad instances.
42
+ - 9c3156a: feat: add error-recovery skill for standard agent failure recovery patterns
43
+ - 37def62: Add external state storage — move .squad/ out of the working tree (#792)
44
+
45
+ - New `stateLocation: 'external'` option in `.squad/config.json`
46
+ - `resolveExternalStateDir()` resolves state under the platform-specific global Squad directory (`resolveGlobalSquadPath()`)
47
+ - `deriveProjectKey()` generates a stable key from the repo path (cross-platform)
48
+ - `resolveSquadPaths()` honors external state location
49
+ - `squad externalize` moves state out, `squad internalize` moves it back
50
+ - State survives branch switches, invisible to `git status`, never pollutes PRs
51
+ - Thin `.squad/config.json` marker stays in repo (gitignored)
52
+ - Path traversal protection on projectKey
53
+ - 12 new tests
54
+
55
+ - 9a53769: Add fact-checker as a built-in agent role (#789)
56
+
57
+ - New `fact-checker` role in the engineering role catalog (emoji: 🔍, category: quality)
58
+ - Charter template at `templates/fact-checker-charter.md` with verification methodology
59
+ - Added to `AGENT_TEMPLATES` for init scaffolding
60
+ - Template manifest entry for init/upgrade distribution
61
+ - Routing patterns: fact-check, verify, validate, audit, double-check, hallucination, devil's advocate
62
+
63
+ - 5996db4: Add /fleet hybrid dispatch mode for squad watch --execute (#775) — enables parallel issue analysis via Copilot CLI /fleet, 2.9x faster than sequential dispatch for read-heavy work
64
+ - 7f9a878: feat(sdk): git-notes + orphan-branch state backends for .squad/
65
+
66
+ Adds git-native state storage backends as alternatives to the local (disk)
67
+ approach:
68
+
69
+ - **orphan-branch** (`squad-state`): Dedicated orphan branch with no common
70
+ ancestor. State files never appear in main.
71
+ - **two-layer** (notes + orphan): Git notes as best-effort commit annotations
72
+ plus orphan branch for durable state. Recommended for teams.
73
+
74
+ Configure via `.squad/config.json`: `{ "stateBackend": "two-layer" }` or
75
+ the `--state-backend` CLI flag.
76
+
77
+ - f8347d8: iter-9: inject `--yolo --additional-mcp-config @.mcp.json` in all non-interactive copilot spawns; fix path regression from `.copilot/mcp-config.json` (iter-7) to `.mcp.json` (iter-8 canonical location); add fallback warning when `.mcp.json` is absent; add `--yolo` deduplication guard; document Copilot CLI 1.0.59+ folder-trust security gate
78
+ - 87e9381: feat: add iterative-retrieval skill for structured max-3-cycle agent spawning
79
+ - efb56ac: feat(cli): Add `squad loop` command — prompt-driven continuous work loop
80
+
81
+ New `squad loop` command reads a `loop.md` file and runs it as a continuous work loop.
82
+ No GitHub issues required — the prompt is the work driver. Includes `--init` to scaffold
83
+ a boilerplate loop file, frontmatter validation, and composable capability flags.
84
+
85
+ - 8d49066: feat: Machine capability discovery and `needs:*` label-based issue routing
86
+
87
+ Added capability filtering to Ralph's watch command. Issues with `needs:*` labels
88
+ (e.g., `needs:gpu`, `needs:browser`) are only processed by Ralph instances whose
89
+ machine has those capabilities declared in `machine-capabilities.json`.
90
+
91
+ This enables multi-machine Squad deployments where different machines handle
92
+ different types of work based on their available tooling.
93
+
94
+ Closes #514
95
+
96
+ - 900d2e4: Add `squad init --mcp-frontmatter` to write MCP server config into the Squad agent frontmatter instead of `.copilot/mcp-config.json` for compatible agent harnesses.
97
+ - a9c06b0: feat: add notification-routing skill for pub-sub channel routing
98
+ - 32d2a23: Enable persistent Ralph — heartbeat cron + healthCheck timer
99
+
100
+ - Enable cron schedule in squad-heartbeat.yml (all 5 sync locations)
101
+ - Enable RalphMonitor healthCheck timer (previously commented out pre-migration)
102
+ - Add platform detection tests for getRalphScanCommands (GitHub/ADO/Planner)
103
+ - Add healthCheck timer tests with fake timers (start/stop/interval/stale detection)
104
+
105
+ - 7f9a878: Add `--notify-level` to control watch round reporting noise (#803)
106
+
107
+ - `--notify-level important` (default): only print rounds with actual work items
108
+ - `--notify-level all`: print every round including empty (old behavior)
109
+ - `--notify-level none`: suppress all round output
110
+ - Add machine name (`os.hostname()`) and repo name to round headers for attribution
111
+ (shown in round headers when the board has items, and in "Board is clear" message)
112
+ - Configurable via `.squad/config.json` watch section: `"notifyLevel": "important"`
113
+ - Empty rounds silenced by default — no more "Round 160, Round 161" spam
114
+
115
+ - 6a01eef: Add Rai as Squad's third built-in agent — a Responsible AI (RAI) reviewer
116
+
117
+ - Rai is always on the roster (like Scribe and Ralph), exempt from casting
118
+ - Traffic light verdict model: 🟢 Green (proceed), 🟡 Yellow (advisory), 🔴 Red (blocking)
119
+ - Background mode by default — only blocks on critical RAI violations
120
+ - Phase 1 high-signal checks: credentials, injection, harmful content, bias, PII
121
+ - New templates: Rai-charter.md, rai-policy.md
122
+ - New `.squad/rai/` directory with policy.md and audit-trail.md
123
+ - Tiered opt-out model (cannot disable critical checks)
124
+
125
+ - 9083085: feat: add reflect skill for in-session learning capture and mistake prevention
126
+ - 7beb854: Add `--repo` and `--branch` flags to `squad export` and `squad import` commands, enabling users to push/pull Squad configuration directly to/from a GitHub repository via the GitHub Contents API.
127
+ - aa91ba4: Add retro enforcement skill with Test-RetroOverdue and ceremonies template update.
128
+
129
+ - New skill: retro-enforcement - coordinator integration pattern for automated retro cadence enforcement
130
+ - Action items tracked as GitHub Issues (not markdown checklists)
131
+ - Production data: 0% to 100% completion rate after switching formats
132
+ - Test-RetroOverdue PowerShell function detects overdue retros and blocks work queue
133
+ - Ceremonies template updated with enforcement-aware retrospective definition
134
+
135
+ - f090b3a: Add `squad upgrade --self` to upgrade the CLI package itself (#798)
136
+
137
+ - `squad upgrade --self` → installs `@bradygaster/squad-cli@latest` (stable)
138
+ - `squad upgrade --self --insider` → installs `@bradygaster/squad-cli@insider` (prerelease)
139
+ - After self-upgrade, automatically continues with repo upgrade to apply new templates
140
+ - Detects package manager (npm/pnpm/yarn) from npm_config_user_agent
141
+ - Clear error on permission denied (suggests sudo or npx)
142
+ - Help text updated with new flags
143
+
144
+ - 88ab159: feat: session init update check with extensible session-init reference
145
+
146
+ Adds a Session Init block to squad.agent.md that runs Step 1 (Update Check)
147
+ at session start. When a newer @bradygaster/squad-cli version exists for the
148
+ user's channel (latest/insider/preview), appends a notice to the greeting.
149
+ Respects SQUAD_NO_UPDATE_CHECK=1 kill switch.
150
+
151
+ Adds `.squad-templates/session-init-reference.md` with the full update-check
152
+ procedure (channel detection, hybrid cache strategy, greeting format) and
153
+ registers it in TEMPLATE_MANIFEST so `squad upgrade` keeps it current.
154
+
155
+ Also adds squad-version-check SKILL.md to .copilot/skills with internals
156
+ knowledge about version stamping and the npm registry probe mechanism.
157
+
158
+ Also fixes pre-existing CI failures: adds Commit step to scribe-charter.md
159
+ and adds CURRENT_DATETIME substitution guidance to spawn-reference.md.
160
+
161
+ - fe1e7e8: Squad coordinator now scans all 5 project skill directories: Copilot CLI's 3
162
+ official project paths — `.github/skills/`, `.claude/skills/`, `.agents/skills/`
163
+ (per https://docs.github.com/en/copilot/how-tos/copilot-cli/customize-copilot/add-skills)
164
+ — plus Squad's existing conventions `.squad/skills/` and `.copilot/skills/`.
165
+ Precedence: `.squad/skills/` > `.copilot/skills/` > `.github/skills/` >
166
+ `.claude/skills/` > `.agents/skills/` (dedup by directory name). Personal
167
+ paths (`~/.copilot/skills/`, `~/.agents/skills/`) are deliberately excluded
168
+ from explicit routing — Copilot CLI injects them ambiently. This closes a gap
169
+ where skills placed in `.github/skills/` (a common location alongside other
170
+ `.github/` tooling) were loaded by Copilot CLI but invisible to Squad's
171
+ coordinator-attached skill-aware routing.
172
+ - eb17e15: feat: add squad-commands skill for in-chat command discovery
173
+
174
+ Adds a categorized menu skill (`skills/squad-commands/SKILL.md`) that the
175
+ coordinator reads when the user asks "squad commands", "help", or "what can
176
+ squad do". Also adds a routing row and greeting tip in squad.agent.md, and
177
+ registers the template in TEMPLATE_MANIFEST with overwriteOnUpgrade=true.
178
+
179
+ Also fixes pre-existing CI failures: adds Commit step to scribe-charter.md
180
+ and adds CURRENT_DATETIME substitution guidance to spawn-reference.md.
181
+
182
+ - ef30286: feat: add SQUAD_HOME env var and preset system
183
+
184
+ - Add `SQUAD_HOME` environment variable support for a roaming squad root directory
185
+ - Add preset system for reusable agent configurations (list, show, apply, init)
186
+ - Ship a default built-in preset with 5 agents (lead, reviewer, devrel, security, docs)
187
+ - Add `squad preset` CLI command with list, show, apply, and init subcommands
188
+ - Resolves #1038
189
+
190
+ - 5720705: Generic, provider-agnostic scheduler for Squad (#296) — unified schedule.json manifest with LocalPolling and GitHubActions provider adapters, CLI commands (list, run, init, status), schema validation, and cron/interval trigger evaluation.
191
+ - e11b5d3: feat: add tiered-memory skill for hot/cold/wiki agent context management
192
+ - bf597cb: feat(watch): circuit breaker integration for rate limit protection (#515)
193
+
194
+ Adds GitHub API rate limit protection to Ralph's watch command via
195
+ the Predictive Circuit Breaker from PR #518.
196
+
197
+ **What changed (additive patch — existing flow untouched):**
198
+
199
+ - `gh-cli.ts`: Added `ghRateLimitCheck()` and `isRateLimitError()` helpers
200
+ - `watch.ts`: Added `CircuitBreakerState` type + persistence helpers
201
+ - `watch.ts`: Added `executeRound()` wrapper that gates the existing
202
+ `runCheck()` call through pre-flight quota checks
203
+ - `watch.ts`: Added `roundInProgress` flag to prevent overlapping rounds
204
+
205
+ **Circuit breaker state machine:**
206
+
207
+ - CLOSED → OPEN: When traffic light is red or predictor says exhaustion imminent
208
+ - OPEN → HALF-OPEN: After cooldown expires (exponential: 2m → 4m → 8m → ... → 30m cap)
209
+ - HALF-OPEN → CLOSED: After 2 consecutive successful rounds
210
+ - HALF-OPEN → OPEN: On rate limit error during probe
211
+
212
+ State persists to `.squad/ralph-circuit-breaker.json` across restarts.
213
+
214
+ **Tests:** 16 new tests covering state transitions, race condition guard,
215
+ predictive integration, and `isRateLimitError` detection.
216
+
217
+ - 7f9a878: feat(watch): health check — show running watch instance status (#808)
218
+
219
+ Adds `squad watch --health` to display the status of a running watch
220
+ instance: PID, uptime, auth account, capabilities, and auth drift
221
+ detection. Writes `.squad/.watch-pid.json` at startup for instance
222
+ tracking. Detects and cleans up stale PID files from crashed instances.
223
+
224
+ - a22e087: Add --verbose flag to squad watch for debugging empty boards and silent failures (#781)
225
+
226
+ ### Patch Changes
227
+
228
+ - 9451e66: Add deprecation warnings for tunnel, rc, and REPL commands. The interactive shell (no-args), `squad start`, `squad start --tunnel`, `squad rc`, and `squad rc-tunnel` now emit yellow deprecation notices pointing users to the GitHub Copilot CLI. No behavior changes — all commands still work.
229
+ - f0c02c9: docs: add fork contribution workflow to CONTRIBUTING.md
230
+
231
+ Closes five gaps discovered during PR #217:
232
+
233
+ - Fork-first setup instructions (fork → clone → upstream remote)
234
+ - PR must target `dev` branch, not `main` (`gh pr create --base dev`)
235
+ - Changeset is a required step in the PR process checklist
236
+ - `bradygaster/dev` now correctly described as the PR target for all contributions
237
+ - New "Keeping Your Fork in Sync" section with rebase-on-upstream/dev instructions
238
+
239
+ - 7a5b180: Add user-facing documentation for state backends (local, orphan-branch, two-layer)
240
+ - 36eed05: Fix hardcoded "Brady" in template files — LLMs now use actual git username instead of example name (closes #977)
241
+ - d8c1382: Fix changelog-gate CI to accept .changeset/ files as alternative to direct CHANGELOG.md edits
242
+ - 8c33f9f: fix: bump CLI version to 0.9.7-preview; align E2E skill and policy gate with CONTRIBUTING.md
243
+
244
+ The insider publish workflow stamped `@bradygaster/squad-cli` at `0.9.6-build.4`,
245
+ which violates the prerelease version policy gate. Per CONTRIBUTING.md, the correct
246
+ local dev version is `{next-version}-preview`.
247
+
248
+ - `packages/squad-cli/package.json`: `0.9.6-build.4` → `0.9.7-preview`
249
+ - All 4 copies of `e2e-template-testing/SKILL.md` (root `templates/`,
250
+ `packages/squad-sdk/templates/`, `packages/squad-cli/templates/`,
251
+ `.squad-templates/`):
252
+ - **Build commands** aligned with CONTRIBUTING.md (lines 253–256): use workspace
253
+ flags `npm run build -w packages/squad-sdk && npm run build -w packages/squad-cli`
254
+ and `npm link -w packages/squad-cli` instead of shell `cd` + bare `npm run build`
255
+ - **Version verify text** updated to version-agnostic `x.y.z-preview` placeholder
256
+ with an explicit note that the `-preview` suffix is required, linking to
257
+ CONTRIBUTING.md for the full local dev setup
258
+ - `.github/workflows/squad-ci.yml` — Prerelease Version Guard: relaxed regex from
259
+ `/-/` (any hyphen) to `/-/ && not /^\d+\.\d+\.\d+-preview$/` so the CONTRIBUTING.md-
260
+ sanctioned `-preview` suffix is allowed while all other prerelease tags (e.g.
261
+ `-build.4`, `-alpha`, `-beta`) are still blocked
262
+
263
+ - 490adf3: fix: context overflow sentinel and coordinator size reduction (retroactive for #1035)
264
+
265
+ `squad.agent.md` was ~95.8KB and could be silently dropped from context in long sessions, degrading the coordinator to vanilla Copilot with no safety rails.
266
+
267
+ Changes shipped in PR #1035 (merged without changeset):
268
+
269
+ - **Canary sentinel** — `SQUAD_COORDINATOR_CANARY_a8f3` token appended to `squad.agent.md`; `copilot-instructions.md` checks for it and warns if the coordinator was dropped from context
270
+ - **Coordinator slimming** — `squad.agent.md` reduced ~42% (95.8KB → ~55KB) by extracting to on-demand reference files: `spawn-reference.md`, `after-agent-reference.md`, `model-selection-reference.md`, `ralph-reference.md`, `worktree-reference.md`, `client-compatibility-reference.md`
271
+ - **Scribe charter extraction** — Scribe's inline section moved from `squad.agent.md` to a standalone `scribe-charter.md`
272
+ - **E2E skill overhaul** — Fast-fail rules, PII protection, anti-skip enforcement, live progress tracking comment (updated per step), duration tracking, Windows encoding fix, `--allow-all-tools` documentation, progressive verdicting, agent run time budget
273
+ - **Build fix** — CLI dep changed from `@bradygaster/squad-sdk: >=0.9.0` to `>=0.9.0-0` so npm workspace resolution uses the local prerelease package instead of a stale published version
274
+
275
+ All 4 template locations synced: `.squad-templates/`, `templates/`, `packages/squad-cli/templates/`, `packages/squad-sdk/templates/`.
276
+
277
+ Closes #1017
278
+
279
+ - e5f4ca5: Fix coordinator and Scribe templates so spawned agents receive and write the resolved current datetime instead of placeholder text.
280
+ - 8c807d1: fix(cli): revert detect-squad-dir to zero-dependency bootstrap
281
+
282
+ The StorageProvider refactor (26047dc5) accidentally converted this bootstrap utility from raw node:fs to FSStorageProvider. This file runs before the SDK is loaded and must not depend on @bradygaster/squad-sdk. Adds regression guard test.
283
+
284
+ - 67b3578: fix: restore CI green on dev — 25 regression fixes + 6 test corrections
285
+
286
+ Commit `4ecc244` ("feat: Squad Remote Control") rewrote `cli-entry.ts` and
287
+ silently dropped multiple P0 bug fixes. Commit `72ffcb1` ("unified status
288
+ display") introduced a TUI regression in AgentPanel. This changeset restores
289
+ all dropped behaviour and corrects test expectations that never matched the
290
+ implementation.
291
+
292
+ **Implementation regressions fixed (cli-entry.ts):**
293
+
294
+ - Bare semver output: `squad --version` now prints `0.x.y` not `squad 0.x.y`
295
+ - Whitespace args guard: `squad` / `squad ` shows brief help and exits 0
296
+ - `NODE_NO_WARNINGS=1` set before first import to suppress ExperimentalWarning
297
+ - `squad doctor` hint restored in unknown-command error messages
298
+ - Help lines that exceeded 80 chars wrapped to continuation lines
299
+
300
+ **Implementation regressions fixed (shell/index.ts):**
301
+
302
+ - First-run (no `.squad/`) on non-TTY now outputs a welcome/get-started message
303
+ instead of a TTY error, matching E2E test expectations
304
+
305
+ **Implementation regressions fixed (AgentPanel.tsx):**
306
+
307
+ - Completion flash correctly shows `✓ Done`; was showing `✓ [IDLE]` because
308
+ the status-label condition was not gated on the flash state
309
+
310
+ **Test corrections (expectations that never matched implementation):**
311
+
312
+ - `repl-ux.test.ts`: `toContain('ready')` → `toContain('[idle]')`
313
+ - `human-journeys.test.ts`: `Scaffold ready` → `Your team is ready`;
314
+ `copilot session` → `squad`
315
+ - `cli/init.test.ts` + `repl-ux-fixes.test.ts`: wrong gitattributes path fixed
316
+ - `ux-gates.test.ts`: two aspirational grouped-help tests replaced with `it.todo`
317
+ - `first-run-gating.test.ts`: banner spacer regex updated to match current source form
318
+ - `consult-command.feature`: expected text updated to match current CLI output
319
+ - `status-extended.feature`: exit code corrected (`1` → `0`) for non-squad dir
320
+ - `docs-build.test.ts`: `beforeAll` hook given explicit 30 s timeout to avoid
321
+ flaky timeout failures under parallel test execution
322
+ - `journey-next-day.test.ts`: added `tick(50)` between session saves to prevent
323
+ race condition when both sessions receive the same `lastActiveAt` timestamp
324
+
325
+ - 2f807d6: Fix squad doctor and upgrade for insiders installs: add .squad/casting/ to ENSURE_DIRECTORIES, scaffold casting defaults from templates with permission-safe fallback, and clarify ESM warnings for global installs.
326
+ - e3b880f: Fix export/import producing blank decisions.md and team.md files. Export now includes these files in the manifest, and import restores their content.
327
+ - 0d124b9: Fix runtime commands to correctly resolve externalized state paths
328
+ - 42c9dd3: Fix 5 bugs: dotted repo names, icon spacing, board owner, charter passing, missing playbooks
329
+ - f8ea328: fix: `/init` with no args now accepts follow-up message as cast prompt, and `createTeam` correctly creates `team.md`/`routing.md` in fresh projects
330
+
331
+ Two related bugs in the TUI init flow:
332
+
333
+ 1. After `/init` (no args) showed guidance text, the user's follow-up message hit the "No Squad team found" guard instead of starting team casting. Fixed by tracking `awaitingInitPrompt` state in `App.tsx` and bypassing the team-file guard in `handleDispatch` when `skipCastConfirmation` is explicitly set.
334
+
335
+ 2. After confirming a team proposal, `createTeam` silently skipped creating `team.md` and `routing.md` in a fresh project (no `.squad/` directory), causing the coordinator to immediately say "no team yet" after showing "Team hired!". Fixed with else-branches that create both files from scratch when they don't exist.
336
+
337
+ - bdfa21a: fix(nap): account for separator newlines in decision archival budget
338
+
339
+ The budget calculation in archiveDecisions() did not account for the newline
340
+ separators added during content reassembly. This caused the final recentContent
341
+ to exceed DECISION_THRESHOLD even after archival. Fix adds reassemblyOverhead
342
+ and per-entry separator bytes to the budget calculation.
343
+
344
+ Closes #123
345
+
346
+ - 6f9d965: fix(cli): wire --team-root / SQUAD_TEAM_ROOT into squad resolution for nap, status, and cost commands (#734)
347
+
348
+ Commands that resolve .squad/ now respect the SQUAD_TEAM_ROOT env var (set by --team-root flag),
349
+ fixing subprocess invocations (e.g. Copilot CLI bang commands) where process.cwd() differs from
350
+ the interactive shell. Also improves the nap error message to show the searched directory.
351
+
352
+ - 7b52e29: fix: CLI no longer bails when configured is false; starts onboarding session instead (#843)
353
+ - 00c8aea: fix(coordinator): resolve externalized state, teamRoot, stale work, and cleanup loops
354
+
355
+ Fixes 4 P1 coordinator bugs where squad.agent.md would incorrectly enter Init Mode
356
+ in satellite/externalized repos (#1116, #1127), agents would work on stale/closed items
357
+ (#1125), and spawned agents would loop infinitely in post-work cleanup (#1067).
358
+
359
+ - 70a3781: Fix permission handler to use `approve-once` instead of deprecated `approved` kind, aligning with Copilot CLI v1.0.54+ permission contract
360
+ - 1d3c3ea: Fix post-init message to recommend `copilot --agent squad` instead of deprecated `squad` command (closes #1034, closes #1007)
361
+ - 457f12f: docs: point README migration guide links to the published docs site
362
+ - 490adf3: fix(ci): fix multiple CI test failures introduced by PR #1035 coordinator slimming
363
+
364
+ PR #1035 extracted Scribe and spawn-template content out of `squad.agent.md` into
365
+ standalone reference files but did not update the CI tests. Two tests failed:
366
+
367
+ **`test/ci/scribe-template.test.ts`** — was reading from `squad.agent.md` with anchors
368
+ that no longer exist. Fixed to read from `scribe-charter.md` with:
369
+
370
+ - Number- and format-agnostic end-marker in `extractScribeTaskBlock`
371
+ - Numbered-line assertions (verify phrases appear on actual `\d+.` list items)
372
+ - Corrected file header comment (HEALTH REPORT and size thresholds ARE present)
373
+ - New tests: HEALTH REPORT emission documented, Tier 1 (20KB) and Tier 2 (50KB)
374
+ archival thresholds documented (10 tests total, was 7)
375
+
376
+ **`test/ci/datetime-template.test.ts`** — was counting `CURRENT_DATETIME:` lines in
377
+ `squad.agent.md` only, expecting ≥4. After slimming only 2 remain there; the rest
378
+ moved to `spawn-reference.md` and `after-agent-reference.md`. Fixed to combine all
379
+ coordinator-owned template files for spawn-template assertions.
380
+
381
+ - 27f07cf: Warn when squad.agent.md template is missing during upgrade or init instead of silently skipping file creation. Adds `warnings` field to `InitResult` for structured error reporting.
382
+ - 09cd6c1: Fix state-backend and upgrade regressions (#1163, #1185, #1190, #1191, #1194)
383
+
384
+ **Bug A (P0) — Permission contract mismatch** (#1191)
385
+ The Copilot SDK changed the valid permission result `kind` from `"approved"` to
386
+ `"approve-once"`. Squad was still returning `{ kind: 'approved' }`, causing all
387
+ agent sessions to fail permission checks immediately. Fixed in:
388
+
389
+ - `cli/shell/index.ts` — `approveAllPermissions` handler now returns `{ kind: 'approve-once' }`
390
+ - `adapter/types.ts` — `SquadPermissionRequestResult.kind` union includes `'approve-once'`
391
+ - `adapter/client.ts` — error hint updated to reference the correct `kind` value
392
+
393
+ **Bug B (P1) — Hard-throw in `resolveStateBackend()` when explicit backend fails** (#1185, #1190)
394
+ When a backend configured in `config.json` failed to initialize (e.g., no git repo
395
+ available), Squad threw a fatal error and refused to start. Now always warns and
396
+ falls back to `local` so operators can fix config without losing work.
397
+
398
+ **Bug C (P1) — Silent git-notes→two-layer migration** (#1163)
399
+ `normalizeBackendType()` silently mapped `'git-notes'` to `'two-layer'` with no
400
+ user notification. Now emits a `console.warn()` directing users to update their
401
+ `config.json`.
402
+
403
+ **Bug F (P3) — Windows `toRelative()` drive-letter case mismatch**
404
+ `StateBackendStorageAdapter.toRelative()` used a simple string prefix comparison
405
+ after normalizing separators. On Windows, `C:\` vs `c:\` drive-letter case
406
+ differences caused the prefix check to fail, returning full absolute paths as
407
+ git-notes keys (corruption). Now uses `path.resolve()` and case-insensitive
408
+ comparison on `process.platform === 'win32'`.
409
+
410
+ **Issue #1194 — Externalized state paths not followed by runtime commands**
411
+ Adds `effectiveSquadDir()` and `resolveStateDir()` helpers that follow the
412
+ `stateLocation: 'external'` marker in `.squad/config.json`. Updates `loop`,
413
+ `watch`, `plugin`, `doctor` commands and `shell` (lifecycle, coordinator, index)
414
+ to use the effective state dir for reading `team.md`, `routing.md`, `agents/`,
415
+ `plugins/`, and other state files.
416
+
417
+ - 6760b6e: Fix `squad <command> --help` silently running the command instead of showing help (#1201)
418
+
419
+ Previously, passing `--help` or `-h` after a subcommand (e.g. `squad init --help`,
420
+ `squad triage --help`, `squad doctor --help`) was silently dropped and the command
421
+ would execute for real — sometimes with destructive side effects (init scaffolded
422
+ files into the cwd, triage/watch started a polling loop). Only `squad loop --help`
423
+ and `squad state-mcp --help` were intercepting the flag.
424
+
425
+ The CLI now intercepts `--help`/`-h` for every registered subcommand in one place
426
+ at the top of the router and prints command-specific help via a new
427
+ `printCommandHelp(cmd, version)` helper. Unrecognized commands fall back to a
428
+ friendly "see `squad help`" message. No side effects are triggered.
429
+
430
+ - e4a49f1: Extend SQUAD_TEAM_ROOT to all resolveSquad() call sites for subprocess compatibility
431
+ - 2129ad7: Fix triage label slug derivation: use `slugify()` instead of `toLowerCase()` so multi-word agent names produce valid GitHub labels (e.g. "Steve Rogers" → `squad:steve-rogers` instead of `squad:steve rogers`).
432
+
433
+ Pre-create all `squad:{member}` labels at watch startup via `ensureTag()` so `gh issue edit --add-label` never fails on missing labels.
434
+
435
+ - cb57268: fix(watch): Windows shell:true, shared agent-spawn, round-level fetch (#920, #923)
436
+
437
+ Three fixes for the watch --execute subsystem:
438
+
439
+ 1. Added shell: IS_WINDOWS to all 37+ execFile calls so commands resolve
440
+ through PATH on Windows (fixes spawn EINVAL errors).
441
+
442
+ 2. Created shared agent-spawn.ts module replacing 7 copy-pasted
443
+ buildAgentCommand() implementations. Default changed from deprecated
444
+ gh copilot to standalone copilot CLI.
445
+
446
+ 3. Added RoundData shared fetch — issues and PRs fetched once per round
447
+ instead of per-capability, reducing API calls from ~40 to ~2 per round.
448
+
449
+ - 677b7cf: docs: Add KEDA external scaler template for GitHub issue-driven autoscaling
450
+
451
+ New template documenting how to use keda-copilot-scaler for scaling
452
+ agent pods to zero when idle, with rate-limit-aware polling.
453
+
454
+ Closes #516
455
+
456
+ - a299b3c: fix: use TEMPLATE_MANIFEST to drive skill installation instead of wholesale directory copy
457
+
458
+ Both sdkInitSquad() and syncAllSkills() previously copied the entire templates/skills/
459
+ directory, ignoring the curated 8-skill subset declared in TEMPLATE_MANIFEST.
460
+ This meant all 37+ template skills shipped on every init/upgrade, and
461
+ overwriteOnUpgrade was never consulted.
462
+
463
+ Now both code paths iterate TEMPLATE_MANIFEST entries:
464
+
465
+ - init (SDK): only the 8 manifest skills are copied on first init
466
+ - upgrade (CLI): syncAllSkills() reads manifest entries, respects overwriteOnUpgrade
467
+
468
+ Fixes #833
469
+
470
+ - 244554c: Allow memory diagnostics log level to be configured from `.squad/config.json`.
471
+ - 10f5036: perf(resolution): memoize squad-dir lookups; deduplicate squads.json reads to reduce filesystem I/O on repeated resolution calls
472
+ - 3bd1843: feat: add declarative plugin behavior context proof
473
+
474
+ Adds static plugin metadata, lifecycle state, runtime context injection,
475
+ declarative provider contracts, and behavior simulations for Graphify,
476
+ MemPalace, and Index Server plugin samples. Enabled plugins can now contribute
477
+ installed static guidance and typed memory/knowledge provider summaries to
478
+ spawned-agent prompts while preserving the no-execution security boundary.
479
+
480
+ - a3419b5: Fix Windows spawn EINVAL in watch capabilities by adding `shell: true` to `execFile()` calls in monitor-teams, monitor-email, retro, and decision-hygiene capabilities. Add Copilot CLI preflight check to `squad doctor` and monitor capabilities so missing `gh copilot` extension is flagged early. Improve team hire confirmation UX to show member names inline with the prompt. (closes #920, closes #880, closes #1107)
481
+ - bc86668: Add delete() and append() to StateBackend interface; add resolveSquadState() entry point; add StateBackendStorageAdapter; add git-notes agent protocol templates
482
+
483
+ - Add `delete()` and `append()` methods to the `StateBackend` interface
484
+ - Implement delete/append for all three backends (local, orphan, two-layer)
485
+ - Fix orphan backend append to preserve trailing whitespace via readUntrimmed()
486
+ - Add `SquadStateContext` interface and `resolveSquadState()` factory in resolution module
487
+ - Add `StateBackendStorageAdapter` — bridges StateBackend as a StorageProvider so SDK modules that accept `storage: StorageProvider` work with git-notes and orphan backends
488
+ - Add `storage` field to `SquadStateContext` — local uses FSStorageProvider directly, orphan/two-layer use the adapter
489
+ - Export `StateBackendStorageAdapter` from SDK public API
490
+ - Wire `resolveSquadState()` into CLI entry so the state backend is resolved once at startup
491
+ - Pass pre-resolved `stateContext` through to watch config to avoid redundant resolution
492
+ - Add `notes-protocol.md` template — agent contract for git-notes state (namespaces, JSON schema, fetch/push, conflict handling)
493
+ - Add `scripts/notes/fetch.ps1` template — fetch notes + one-time refspec setup + merge after conflict
494
+ - Add `scripts/notes/write-note.ps1` template — agent helper for writing notes with JSON validation and push retry
495
+ - Update state-backends docs with "Using with Copilot CLI Sessions" section (copilot-instructions snippet, promotion flow, template index)
496
+ - This is the SDK foundation for making state backends squad-wide (Phase 1)
497
+
498
+ - 84872b1: Harden runtime state tools so write, append, and delete only mutate approved Squad runtime state paths, and refresh prompt templates to require state-tool persistence and literal datetime propagation.
499
+ - fa76432: fix(watch): 3 UX improvements — round timing output, --log-file tee flag, immediate startup feedback (#2141)
500
+ - 89db44d: Widen changelog-gate coverage for template and scaffolding paths
501
+
502
+ Previously, the changelog gate only required a changeset for `packages/squad-(sdk|cli)/src/` changes, so template and scaffolding updates under `packages/squad-(sdk|cli)/templates/`, `.squad-templates/`, top-level `templates/`, and agent charters under `.squad/agents/*/charter.md` could reach users with no release-note entry. This widens the gate to those paths so user-facing template and scaffolding changes are no longer silently omitted from release notes. Closes #1156.
503
+
504
+ - a543f93: Fix Windows Azure CLI execution and ADO state mapping in squad watch
505
+ - Updated dependencies [a1fcdb8]
506
+ - Updated dependencies [6a72634]
507
+ - Updated dependencies [ba8d8f7]
508
+ - Updated dependencies [1446050]
509
+ - Updated dependencies [7f86e0e]
510
+ - Updated dependencies [5826555]
511
+ - Updated dependencies [dafc495]
512
+ - Updated dependencies [9c3156a]
513
+ - Updated dependencies [37def62]
514
+ - Updated dependencies [9a53769]
515
+ - Updated dependencies [36eed05]
516
+ - Updated dependencies [8c33f9f]
517
+ - Updated dependencies [490adf3]
518
+ - Updated dependencies [e5f4ca5]
519
+ - Updated dependencies [42c9dd3]
520
+ - Updated dependencies [70a3781]
521
+ - Updated dependencies [d8c1382]
522
+ - Updated dependencies [27f07cf]
523
+ - Updated dependencies [09cd6c1]
524
+ - Updated dependencies [2129ad7]
525
+ - Updated dependencies [7f9a878]
526
+ - Updated dependencies [87e9381]
527
+ - Updated dependencies [8d49066]
528
+ - Updated dependencies [a299b3c]
529
+ - Updated dependencies [900d2e4]
530
+ - Updated dependencies [a9c06b0]
531
+ - Updated dependencies [29cedd0]
532
+ - Updated dependencies [10f5036]
533
+ - Updated dependencies [892bd4f]
534
+ - Updated dependencies [32d2a23]
535
+ - Updated dependencies [3bd1843]
536
+ - Updated dependencies [6a01eef]
537
+ - Updated dependencies [9083085]
538
+ - Updated dependencies [7beb854]
539
+ - Updated dependencies [aa91ba4]
540
+ - Updated dependencies [5996db4]
541
+ - Updated dependencies [8456549]
542
+ - Updated dependencies [4f2de95]
543
+ - Updated dependencies [fe1e7e8]
544
+ - Updated dependencies [eb17e15]
545
+ - Updated dependencies [ef30286]
546
+ - Updated dependencies [5720705]
547
+ - Updated dependencies [a3419b5]
548
+ - Updated dependencies [bc86668]
549
+ - Updated dependencies [14917c5]
550
+ - Updated dependencies [84872b1]
551
+ - Updated dependencies [bbcbf7b]
552
+ - Updated dependencies [e11b5d3]
553
+ - Updated dependencies [a543f93]
554
+ - Updated dependencies [e0898ad]
555
+ - @bradygaster/squad-sdk@0.10.0
package/README.md CHANGED
@@ -223,7 +223,7 @@ When you run `squad init`, Squad creates a `.squad/` directory with this structu
223
223
 
224
224
  ## Built-in Skills
225
225
 
226
- When you run `squad init`, Squad installs **8 curated skills** into `.copilot/skills/`. These skills teach your agents best practices and conventions:
226
+ When you run `squad init`, Squad installs **8 curated skills** into `.github/skills/`. These skills teach your agents best practices and conventions:
227
227
 
228
228
  | Skill | Purpose |
229
229
  |-------|---------|
@@ -236,19 +236,19 @@ When you run `squad init`, Squad installs **8 curated skills** into `.copilot/sk
236
236
  | `test-discipline` | Test-first discipline and coverage expectations |
237
237
  | `agent-collaboration` | Multi-agent collaboration and handoff patterns |
238
238
 
239
- Each skill is a `SKILL.md` file inside `.copilot/skills/<skill-name>/`.
239
+ Each skill is a `SKILL.md` file inside `.github/skills/<skill-name>/`.
240
240
 
241
241
  ### Skill lifecycle
242
242
 
243
- - **`squad init`** — Installs the 8 manifest skills on first run. If `.copilot/skills/` already has content, init skips skill installation (idempotent).
243
+ - **`squad init`** — Installs the 8 manifest skills on first run. If `.github/skills/` already has content, init skips skill installation (idempotent).
244
244
  - **`squad upgrade`** — Refreshes manifest skills to their latest versions. Skills marked `overwriteOnUpgrade: true` (all built-in skills) are always updated to pick up fixes and improvements.
245
245
 
246
246
  ### Adding custom skills
247
247
 
248
- You can add your own skills by creating a new directory under `.copilot/skills/`:
248
+ You can add your own skills by creating a new directory under `.github/skills/`:
249
249
 
250
250
  ```
251
- .copilot/skills/my-custom-skill/
251
+ .github/skills/my-custom-skill/
252
252
  └── SKILL.md
253
253
  ```
254
254
 
@@ -212,7 +212,7 @@ function generateCeremoniesDispatchTable(ceremonies) {
212
212
  const schedule = c.schedule ?? '—';
213
213
  const participants = c.participants?.join(', ') ?? '—';
214
214
  const slug = c.name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/(^-|-$)/g, '');
215
- const skillPath = `.copilot/skills/ceremony-${slug}/SKILL.md`;
215
+ const skillPath = `.github/skills/ceremony-${slug}/SKILL.md`;
216
216
  lines.push(`| ${c.name} | ${trigger} | ${schedule} | ${participants} | \`${skillPath}\` |`);
217
217
  }
218
218
  lines.push('');
@@ -301,7 +301,7 @@ function buildFilePlan(config) {
301
301
  for (const c of config.ceremonies) {
302
302
  const slug = c.name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/(^-|-$)/g, '');
303
303
  files.push({
304
- relPath: `.copilot/skills/ceremony-${slug}/SKILL.md`,
304
+ relPath: `.github/skills/ceremony-${slug}/SKILL.md`,
305
305
  content: generateCeremonySkillFile(c),
306
306
  });
307
307
  }
@@ -318,7 +318,7 @@ function buildFilePlan(config) {
318
318
  if (config.skills && config.skills.length > 0) {
319
319
  for (const skill of config.skills) {
320
320
  files.push({
321
- relPath: `.copilot/skills/${skill.name}/SKILL.md`,
321
+ relPath: `.github/skills/${skill.name}/SKILL.md`,
322
322
  content: generateSkillFile(skill),
323
323
  });
324
324
  }