Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
1aaead4
fix: auto-scaffold Fact Checker agent during init and cast (#1222)
tamirdresher Jun 7, 2026
010f6fc
fix(upgrade): auto-scaffold Rai + Fact Checker on squad upgrade (#1222)
tamirdresher Jun 7, 2026
d41b046
Merge pull request #1223 from tamirdresher/fix/1222-fact-checker-auto…
bradygaster Jun 7, 2026
e5c1800
fix(permissions): use 'approve-once' for Copilot CLI v1.0.54+ contrac…
bradygaster Jun 9, 2026
a081832
feat: Squad.Agents.AI - Microsoft Agent Framework adapter for the Squ…
tamirdresher Jun 9, 2026
28962e2
ci(Squad.Agents.AI): switch NuGet publish to Trusted Publishing (OIDC…
tamirdresher Jun 9, 2026
647f337
fix(Squad.Agents.AI): expose SessionConfig + default OnPermissionRequ…
tamirdresher Jun 10, 2026
cc37a2f
Squad.Agents.AI 0.2.0: bump to MAF 1.10.0-rc1 / SDK 1.0.0 GA — file-I…
tamirdresher Jun 10, 2026
39ee9c7
fix: address pre-existing Copilot review comments from PR #1212 (#1258)
bradygaster Jun 11, 2026
611a82b
fix: expose memory tools via MCP + route writes through governed pipe…
bradygaster Jun 11, 2026
eeb68f2
docs(skills): update path references from .squad/skills/ to .copilot/…
bradygaster Jun 11, 2026
c11274d
feat(init): prompt to add @copilot as a team member during squad init…
bradygaster Jun 11, 2026
5824b60
docs: align skills path + state-backend upgrade flow (#1241, #1226) (…
bradygaster Jun 11, 2026
152bbf0
Squad.Agents.AI 0.3.0: first-class subagent observability (#1265)
tamirdresher Jun 11, 2026
d3c2d84
chore(lockfile): sync package-lock with package.json after v0.10.0 bu…
tamirdresher Jun 11, 2026
f79b03a
fix(bump-build): also update package-lock workspace entries (#1267)
tamirdresher Jun 11, 2026
da17eef
fix: release pipeline version pinning (#1203, #1204) (#1250)
bradygaster Jun 11, 2026
ce15d6b
chore: include CHANGELOG.md in published npm tarball (#1257)
bradygaster Jun 11, 2026
c076ffb
Squad.Agents.AI 0.4.0: default-on subagent observability + Aspire-sty…
tamirdresher Jun 11, 2026
dfc5b94
Squad.Agents.AI 0.5.0: auto-inject --agent squad (CLI parity by defau…
tamirdresher Jun 11, 2026
edcc39d
Squad.Agents.AI 0.5.1: fix 0.5.0 regression — use --agent CLI flag (n…
tamirdresher Jun 11, 2026
217e0bd
Add squad registry add/list/remove for discovery-only peer squads (#1…
tamirdresher Jun 12, 2026
2ca906d
fix(cli): stop writing squad_state to ~/.copilot/mcp-config.json on e…
tamirdresher Jun 13, 2026
84ce747
fix(sdk): wire team.md/routing.md/casting state on \squad preset appl…
tamirdresher Jun 13, 2026
68e2774
fix(docs): tell coordinator to roster Fact Checker on first-time cast…
tamirdresher Jun 13, 2026
16c6b25
fix(sdk): plumb Fact Checker like Rai — rich charter at init + .squad…
tamirdresher Jun 13, 2026
76ba4e7
fix(skills): rename squad disambiguation skill to squad-help (superse…
tamirdresher Jun 13, 2026
918cbd4
fix(prompt): coordinator must probe for squad_state/memory tools befo…
tamirdresher Jun 13, 2026
608f858
feat(skills): make /squad a real slash command (user-invocable: true …
tamirdresher Jun 13, 2026
40f78f2
fix(skills): install bundled skills to .github/skills/ (closes #1126)…
tamirdresher Jun 13, 2026
6afd067
feat(sdk): bundle cross-squad-communication skill (#5 cross-squad pro…
tamirdresher Jun 13, 2026
b79e64a
fix(coordinator): route "spawn a squad" / "another squad" prompts thr…
tamirdresher Jun 13, 2026
89a1b96
fix(sdk,cli): bundle missing skills on init + strip fabricated tiered…
tamirdresher Jun 13, 2026
942270b
docs: add feature pages for preset, cross-squad discover/delegate, an…
tamirdresher Jun 14, 2026
f9f77c0
docs: add feature pages for remaining 8 v0.10 features (tiered-memory…
tamirdresher Jun 14, 2026
caef438
docs(state-backends): document pre-commit hook, post-upgrade flow, an…
tamirdresher Jun 14, 2026
ae6f4e7
docs: clarify that .squad/casting/* files are identity, not two-layer…
tamirdresher Jun 14, 2026
567f447
fix(state-backend): conditional .gitignore entries for two-layer/orph…
tamirdresher Jun 14, 2026
264b876
feat(sdk): thread reasoningEffort through agent spawning pipeline (#1…
ahhlun Jun 15, 2026
6278510
deps: Bump xunit from 2.9.2 to 2.9.3 (#1237)
dependabot[bot] Jun 15, 2026
ca3fdd6
fix(test): anchor docs fence-parity regex to line start (#1319)
tamirdresher Jun 15, 2026
937665a
deps: Bump Microsoft.Extensions.Configuration and 8 others (#1317)
dependabot[bot] Jun 15, 2026
89bf31f
ci(dependabot): add npm ecosystem coverage for JS workspaces (#1320)
tamirdresher Jun 15, 2026
0b38155
deps: Bump GitHub.Copilot.SDK from 1.0.0 to 1.0.1 (#1316)
dependabot[bot] Jun 15, 2026
eb57b87
ci: bump the github-actions group across 1 directory with 8 updates (…
dependabot[bot] Jun 15, 2026
8418ef8
deps: Bump xunit.runner.visualstudio from 2.8.2 to 3.1.5 (#1238)
dependabot[bot] Jun 15, 2026
9a5babc
deps: bump the minor-patch group in /docs with 7 updates (#1330)
dependabot[bot] Jun 15, 2026
a137f9b
deps: Bump Microsoft.Extensions.AI from 10.6.0 to 10.7.0 (#1331)
dependabot[bot] Jun 15, 2026
03bc88a
deps: bump eslint-plugin-n from 17.24.0 to 18.1.0 (#1336)
dependabot[bot] Jun 15, 2026
6643897
deps: bump astro from 5.18.0 to 6.4.7 in /docs (#1332)
dependabot[bot] Jun 15, 2026
8fe1096
chore(deps): bump flask in /test-fixtures/dogfood/python-flask (#1341)
dependabot[bot] Jun 15, 2026
0df0bb0
chore(deps): bump black in /test-fixtures/dogfood/python-flask (#1340)
dependabot[bot] Jun 15, 2026
0024464
chore(deps): bump pytest in /test-fixtures/dogfood/mixed-lang/backend…
dependabot[bot] Jun 15, 2026
a23e9b2
fix(docs): migrate to astro 6 content collection config (#1345)
tamirdresher Jun 15, 2026
0796216
chore(deps-dev): bump vite in /samples/streaming-chat (#1344)
dependabot[bot] Jun 16, 2026
3ac4731
chore(deps): bump esbuild, tsx and vitest in /samples/streaming-chat …
dependabot[bot] Jun 16, 2026
daef99a
deps: bump typedoc-plugin-markdown from 4.11.0 to 4.12.0 in /packages…
dependabot[bot] Jun 16, 2026
616cf9f
deps: bump markdown-it from 14.1.1 to 14.2.0 (#1346)
dependabot[bot] Jun 16, 2026
e97ed62
deps: bump the minor-patch group across 1 directory with 13 updates (…
dependabot[bot] Jun 16, 2026
9ea067f
chore: bump @types/node to 25.9.3 (cli + sdk) (#1349)
tamirdresher Jun 16, 2026
f45f856
chore: adapt CLI to ink 7 (#1350)
tamirdresher Jun 16, 2026
f020c8f
deps: bump vscode-jsonrpc from 8.2.1 to 9.0.0 in /packages/squad-cli …
dependabot[bot] Jun 16, 2026
be0c7df
chore: upgrade to TypeScript 6 (cli + sdk + root) and align @typescri…
tamirdresher Jun 16, 2026
04c80ab
chore: upgrade vitest to v4 (coordinated with @vitest/coverage-v8 v4)…
tamirdresher Jun 16, 2026
d5ada48
deps: bump vscode-jsonrpc from 8.2.1 to 9.0.0 in /packages/squad-sdk …
dependabot[bot] Jun 16, 2026
9bb88c6
deps: bump sharp from 0.35.1 to 0.35.2 in /docs in the minor-patch gr…
dependabot[bot] Jun 23, 2026
79ead09
deps: bump the minor-patch group with 2 updates (#1360)
dependabot[bot] Jun 23, 2026
af128fd
deps: Bump GitHub.Copilot.SDK from 1.0.1 to 1.0.3 (#1359)
dependabot[bot] Jun 23, 2026
9329802
deps: bump hono from 4.12.22 to 4.12.26 (#1355)
dependabot[bot] Jun 23, 2026
e76a21d
fix(coordinator): restore always-on inline-dispatch gate (#1378)
tamirdresher Jun 24, 2026
bcdd2e5
chore(deps): bump flask in /test-fixtures/dogfood/mixed-lang/backend …
dependabot[bot] Jun 24, 2026
bcc1d8b
chore(deps): bump pytest in /test-fixtures/dogfood/python-flask (#1376)
dependabot[bot] Jun 24, 2026
df5686d
fix(docs): rephrase 'fenced code block' row in skill-security-scanner…
tamirdresher Jun 24, 2026
1166b8f
docs(Squad.Agents.AI): update README header to 0.5.1 and multi-target…
tamirdresher Jun 24, 2026
0250d5f
ci(release): stop publishing on test-only dep bumps (#1342)
bradygaster Jun 24, 2026
3cfd2c5
ci: bump actions/checkout from 6 to 7 in the github-actions group (#1…
dependabot[bot] Jun 24, 2026
fc057de
fix: respect SQUAD_HOME env var, implement SQUAD_PERSONAL_DIR, fix Wi…
bradygaster Jun 25, 2026
389f147
docs: fix platform paths and explain global squad.agent.md (#1381)
bradygaster Jun 25, 2026
b563251
fix: CLI and upgrade bug fixes (#1050, #1048, #1047, #1052, #1029, #1…
bradygaster Jun 25, 2026
ae6f5c9
fix(sdk): export gitignore-state helpers; bump Squad.Agents.AI to 0.5…
bradygaster Jun 25, 2026
9eda638
feat(tracing): capture task-tool dispatch + tool requests for subagen…
tamirdresher Jun 25, 2026
dff05c4
fix: escape args for cmd.exe shell on Windows (DEP0190) (#1388)
tamirdresher Jun 25, 2026
78c48ca
feat(coordinator): spawn cast members as sub-sessions in Copilot App …
bradygaster Jun 25, 2026
7e49eb7
fix(coordinator): address #1385 review follow-ups (#1390)
bradygaster Jun 25, 2026
d407b82
Rename .NET Aspire references to Aspire (#1239)
Meir017 Jun 25, 2026
ea48282
chore: simplify workflow files by removing .ai-team fallback logic (#…
bradygaster Jun 25, 2026
45080ad
fix(routing): strip surrounding quotes from routing.md examples (#1357)
duongau Jun 25, 2026
ee1870d
fix(cli): add externalize/internalize to top-level squad --help (#1232)
primetimetank21 Jun 25, 2026
54ded23
deps: bump @types/node from 25.9.4 to 26.0.0 in /packages/squad-cli (…
dependabot[bot] Jun 25, 2026
a61f950
deps: bump @types/node from 25.9.4 to 26.0.0 in /packages/squad-sdk (…
dependabot[bot] Jun 25, 2026
5b9db05
ci: bump esbuild and tsx in /samples/storage-provider-sqlite (#1380)
dependabot[bot] Jun 25, 2026
918bbe8
deps: bump @opentelemetry/sdk-trace-base from 1.30.1 to 2.8.0 in /pac…
dependabot[bot] Jun 26, 2026
63ab588
deps: bump @opentelemetry/resources from 1.30.1 to 2.8.0 in /packages…
dependabot[bot] Jun 26, 2026
173880a
deps: bump @github/copilot-sdk from 0.3.0 to 1.0.4 (#1361)
dependabot[bot] Jun 26, 2026
98542a6
deps: bump @github/copilot-sdk from 0.3.0 to 1.0.4 in /packages/squad…
dependabot[bot] Jun 26, 2026
606840a
deps: bump cspell from 9.7.0 to 10.0.1 (#1362)
dependabot[bot] Jun 26, 2026
097c2fa
docs(casting): add spoiler-awareness to casting/naming rules (#1196)
obit91 Jun 26, 2026
f69cb03
feat(prompt): slim squad.agent.md by extracting 3 sections to satelli…
tamirdresher Jun 26, 2026
62c5249
feat(cli): rename hire to cast (#1394)
bradygaster Jun 26, 2026
89c36ab
Add OSS release checklist files (#1217)
bradygaster Jun 28, 2026
dc3bcf4
feat: add 'squad preset install <source>' for sharing presets via rep…
tamirdresher Jun 28, 2026
04682c6
fix: update adapter/client.ts for @github/copilot-sdk 1.0.4 API chang…
bradygaster Jun 28, 2026
6c7e110
deps: bump @opentelemetry/sdk-metrics and sdk-trace-node to 2.8.0 (#1…
bradygaster Jun 29, 2026
4ef3282
fix(cli): pin squad-sdk to workspace:* (fixes prerelease build crash)…
bradygaster Jun 29, 2026
897d883
Fix green test suite (#1416)
bradygaster Jun 29, 2026
6e6f1aa
Stage 0.11.0 release (#1420)
bradygaster Jun 30, 2026
7e01965
Guard symlink test for Windows/restricted environments (#1418)
bradygaster Jun 30, 2026
f963839
chore: promote dev → main (v0.11.0)
bradygaster Jun 30, 2026
e4cf2f8
chore: allow SWE-bench docs terms
bradygaster Jun 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/bump-otel-sdk-2x.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@bradygaster/squad-sdk": patch
---

deps: bump @opentelemetry/sdk-metrics and @opentelemetry/sdk-trace-node from 1.x to 2.8.0
12 changes: 12 additions & 0 deletions .changeset/cli-upgrade-fixes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@bradygaster/squad-cli": patch
"@bradygaster/squad-sdk": patch
---

Fix CLI and upgrade bugs:
- `squad externalize` and `squad internalize` now appear in `squad --help` output (#1050)
- `squad build` writes files to the externalized state directory when applicable (#1048)
- `squad new agent` correctly adds agent definitions to `squad.config.ts` (#1047)
- `squad upgrade` backs up customized `squad.agent.md` before overwriting; supports `--dry-run` (#1052)
- Explicit `@agent` mentions bypass direct-response handler and route to named agent (#1029)
- `state-mcp` server uses lazy initialization to avoid blocking multi-MCP startup (#1353)
6 changes: 6 additions & 0 deletions .changeset/docs-platform-path-fixes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@bradygaster/squad-sdk": patch
"@bradygaster/squad-cli": patch
---

Fix platform-specific path examples in personal squad docs, JSDoc, and bundled skill templates.
60 changes: 60 additions & 0 deletions .changeset/feat-preset-install.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
---
"@bradygaster/squad-cli": minor
"@bradygaster/squad-sdk": minor
---

feat: add `squad preset install <source>` for sharing presets via repo URL or local path (#1224)

Closes #1224. Adds a new subcommand that installs a single preset from a GitHub URL or local path into `$SQUAD_HOME/presets/<name>/` — the peer-to-peer preset sharing flow that was missing in v0.10.0.

### CLI

```bash
# From a GitHub repo (preset at <repo-root>/preset.json or <repo-root>/presets/<name>/)
squad preset install https://github.com/tamir/my-presets#my-awesome-team

# From a sub-path
squad preset install https://github.com/tamir/my-presets/tree/main/presets/my-awesome-team

# From SSH URL
squad preset install git@github.com:tamir/my-presets.git#my-awesome-team

# From a local path
squad preset install ./my-awesome-team

# Override the installed name
squad preset install https://github.com/tamir/my-presets#my-awesome-team --name corp-team

# Overwrite an existing preset
squad preset install <source> --force
```

After install, the preset is a normal entry in `$SQUAD_HOME/presets/` — `squad preset list`, `squad preset apply <name>`, and `squad init --preset <name>` all work as today.

### Why

The existing `squad preset init --remote` flow is for syncing your *whole* `$SQUAD_HOME` repo across machines (single-user, multi-machine use case). There was no built-in way to install just *one* preset from someone else's repo. Users had to:
1. Manually clone the repo to a temp dir
2. `cp -r <clone>/presets/<name> $SQUAD_HOME/presets/`
3. Then `squad preset apply <name>`

…or hijack `SQUAD_HOME` (which collides with their own personal squad config).

### What it does

1. Resolves source — GitHub URL → shallow `git clone --depth 1` to a temp dir; local path → use as-is
2. Locates the preset within the source via 3 patterns:
- Source dir contains `preset.json` → single-preset source
- Source dir contains a `presets/` collection → require `--name` (or `#name` fragment) to pick
- Source dir IS the `presets/` dir → require `--name`, or auto-pick if only one preset
3. Validates the preset's `preset.json` manifest (name, agents[]) before any destructive action
4. Verifies `agents/` directory exists
5. Copies `preset.json` (with optional rename) + `agents/` into `$SQUAD_HOME/presets/<name>/`
6. Fail-stops if destination exists, unless `--force` is passed
7. Cleans up the temp clone whether install succeeds or fails

### What's NOT in scope (deferred to follow-ups)

- `squad preset uninstall` — `rm -rf $SQUAD_HOME/presets/<name>` works for now
- `squad preset update <name>` to pull a fresh version from origin
- Public preset registry / discovery catalog
5 changes: 5 additions & 0 deletions .changeset/fix-cli-sdk-workspace-pin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@bradygaster/squad-cli": patch
---

Force the CLI's squad-sdk dependency through the repo workspace by using a root file dependency plus an npm override for the CLI package. This keeps fresh installs linked to the local SDK prerelease instead of pulling the stale published SDK. Closes #1405.
24 changes: 24 additions & 0 deletions .changeset/fix-coordinator-inline-dispatch-gate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
"@bradygaster/squad-cli": patch
"@bradygaster/squad-sdk": patch
---

Fix coordinator inline-dispatch regression: restore always-on dispatch gate in the Squad coordinator template

**Problem**

In v0.10.0 the Squad coordinator started doing domain work itself instead of dispatching to roster agents (it worked in v0.9.4). Root cause: commit `afe78188` (#1035, "context overflow sentinel + coordinator size reduction") relocated the concrete inline-dispatch gate and the dispatch mechanics out of the always-on coordinator prompt (`.squad-templates/squad.agent.md`) into lazy-loaded reference files (`client-compatibility-reference.md`, `spawn-reference.md`). The remaining inline one-liner ("inline work is last-resort fallback only") was too soft, and the concrete "when may I work inline?" rule + the VS Code `runSubagent` how-to were no longer in-context, so the coordinator defaulted to executing work itself.

**Fix**

Three minimal edits to the canonical coordinator template (`.squad-templates/squad.agent.md`), synced to all mirrors via `npm run sync-templates`:

1. **Client Compatibility** — replaced the soft one-liner with an explicit **Inline-dispatch gate**: doing domain work inline is permitted ONLY in Direct Mode, or when NEITHER `task` NOR `runSubagent` is available; otherwise the coordinator MUST dispatch.
2. **How to Spawn an Agent** — added a one-line **STOP gate**: about to produce a domain artifact with no `task` / `runSubagent` call this turn → STOP and dispatch (exceptions: Direct Mode, or no spawn tool exists).
3. Re-inlined a ~5-line **VS Code `runSubagent` micro-playbook** so the how-to-dispatch mechanics are always-on instead of lazy-loaded.

The legitimate Direct/Lightweight response modes are preserved (Lightweight still spawns one agent; Direct still answers from context without spawning).

**Validation**

New deterministic, subprocess-free regression test `test/coordinator-inline-dispatch-gate.test.ts` asserts the gate/STOP-gate/micro-playbook exist in canonical and that the gate is present in all 5 synced copies (parity). Red before the fix (8/8 failing), green after. Existing requires a `squad upgrade` for existing installs to pick up the new template.
12 changes: 12 additions & 0 deletions .changeset/fix-copilot-sdk-type-compat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@bradygaster/squad-sdk": patch
---

fix: update adapter/client.ts for @github/copilot-sdk 1.0.4 API changes

Fixes 5 TypeScript errors caused by breaking changes in `@github/copilot-sdk@1.0.4`:

- Replace removed `cliPath`/`cliArgs`/`useStdio`/`port`/`cliUrl` options with the new `RuntimeConnection` pattern
- Update `ping()` return type from `timestamp: number` to `timestamp: string`
- Make `SquadModelBilling.multiplier` optional to match upstream `ModelBilling`
- Replace `client.on()` with `client.onLifecycle()` for session lifecycle events
11 changes: 11 additions & 0 deletions .changeset/fix-dep0190-shell-spawn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"@bradygaster/squad-cli": patch
---

Fix Windows shell spawn issues and gh auth false-negative

- **DEP0190 fix:** Added `escapeForCmd()`/`escapeArgs()` to properly quote args when `shell: true` is used on Windows. Changed `shell: true` → `shell: IS_WINDOWS`.
- **Capability migration:** Moved monitor-email, monitor-teams, retro, decision-hygiene from inline `buildAgentCommand`/`spawnWithTimeout` to shared `agent-spawn.ts` module.
- **gh auth fix:** Use `gh auth token` instead of `gh auth status` — the latter returns non-zero when any keyring entry is stale, even if the active account works fine.
- **Copilot flag fix:** Use `-p` (correct) instead of `--message` (non-existent) for copilot CLI prompt flag.
- **Default --yolo:** When `--execute` is active and no `copilotFlags`/`agentCmd` are set, default to `--yolo` so copilot doesn't hang waiting for permission prompts.
5 changes: 5 additions & 0 deletions .changeset/fix-green-suite.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@bradygaster/squad-sdk": patch
---

Fix local test-suite failures by aligning personal squad path expectations, stabilizing observer file classification, and skipping environment-dependent docs/Aspire checks when required local dependencies are unavailable.
9 changes: 9 additions & 0 deletions .changeset/fix-routing-strip-example-quotes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@bradygaster/squad-sdk": patch
---

Fix: strip surrounding quotes from routing.md example phrases in `parseRoutingMarkdown`

`parseRoutingMarkdown` split the Examples cell on commas but never stripped the surrounding quotes, so a quoted example like `"unit tests"` was stored verbatim (quotes included). When `compileRoutingRules` / `matchRoute` later tokenized it, the quote characters glued onto the boundary words (`"unit`, `tests"`), producing regex patterns that could never match — so routing tables that used quoted examples silently routed every message to the fallback agent.

Leading/trailing quotes (`"`, `'`, `` ` ``) are now stripped from each example, so quoted and unquoted examples behave identically. Adds regression tests covering both the parse step and end-to-end `matchRoute`.
11 changes: 11 additions & 0 deletions .changeset/fix-sdk-export-gitignore-state.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"@bradygaster/squad-sdk": patch
---

fix(sdk): export `addSquadStateGitignoreBlock` / `removeSquadStateGitignoreBlock` from the package root

`packages/squad-cli/src/cli/commands/migrate-backend.ts` imports these helpers from
`@bradygaster/squad-sdk`, but they were never re-exported from `src/index.ts`. This broke
the CLI TypeScript build (`TS2305: has no exported member`). Re-export the two functions
(plus their marker constants) so the CLI compiles and the state-backend migration command
resolves them. Unblocks cutting a stable release that carries the #1378 inline-dispatch-gate fix.
12 changes: 12 additions & 0 deletions .changeset/fix-squad-home-env-bugs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@bradygaster/squad-sdk": patch
"@bradygaster/squad-cli": patch
---

fix: respect SQUAD_HOME in capabilities.ts and comms-teams.ts, implement SQUAD_PERSONAL_DIR env var, fix Windows shell flag in loop preflight, link personal squad during init

- capabilities.ts: use `resolveSquadHome()` instead of hardcoded `~/.squad/` for machine-capabilities.json (#1280)
- comms-teams.ts: use `resolveSquadHome()` instead of hardcoded `~/.squad/` for Teams OAuth token storage (#1279)
- resolution.ts: implement `SQUAD_PERSONAL_DIR` env var override in `resolvePersonalSquadDir()` (#1278)
- loop.ts: add `shell: process.platform === 'win32'` to `checkCopilotCli()` execFile call (#1372)
- init.ts: set `teamRoot` in config.json to personal squad directory when one exists (#1010, #984)
5 changes: 5 additions & 0 deletions .changeset/help-externalize-internalize.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@bradygaster/squad-cli": patch
---

Add `externalize` and `internalize` to the top-level `squad --help` command list so they are discoverable (#1050).
12 changes: 12 additions & 0 deletions .changeset/ink7-adaptation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@bradygaster/squad-cli": patch
---

chore: adapt CLI to ink 7.0.6

Updates the ink dependency from ^6.8.0 to ^7.0.6 and adapts keyboard handling in InputPrompt.tsx to ink 7's revised API:

- key.meta no longer fires on bare Escape; guard updated to use key.escape
- useInput callbacks are now wrapped in reconciler.discreteUpdates(), which flushes React state synchronously at end of callback; rewrote Enter/paste handler to call setValue('') inside the flush rather than in a deferred timer

Closes #1322, #1335.
5 changes: 5 additions & 0 deletions .changeset/observer-hardening.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@bradygaster/squad-sdk": patch
---

Harden squad observer change resolution against directory events, symlinks, and filesystem scan errors.
5 changes: 5 additions & 0 deletions .changeset/otel-resource-api-migration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@bradygaster/squad-sdk": patch
---

Migrate OTel Resource API to `resourceFromAttributes` for compatibility with `@opentelemetry/resources` 2.x (replaces the removed `Resource` class constructor in `packages/squad-sdk/src/runtime/otel.ts` and `test/aspire-integration.test.ts`)
17 changes: 17 additions & 0 deletions .changeset/reasoning-effort.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
"@bradygaster/squad-sdk": minor
---

Add reasoning effort support to agent spawning pipeline

Thread `reasoningEffort` through the full agent lifecycle:

- **Charter**: Parse `**Reasoning Effort:**` from `## Model` section in `charter.md`
- **Config**: Read/write `defaultReasoningEffort` and `agentReasoningEffortOverrides` in `.squad/config.json`
- **Resolution**: New `resolveReasoningEffort()` with layered priority (per-agent config override > global config > spawn override > charter preference > undefined)
- **Clamping**: New `clampReasoningEffort()` caps effort to model's max supported level
- **Lifecycle**: `SpawnAgentOptions.reasoningEffortOverride` passes through to `SquadSessionConfig`
- **Fan-Out**: `AgentSpawnConfig.reasoningEffortOverride` passes through to `createSession()`
- **Builders**: `defineAgent()` and `defineDefaults()` accept `reasoningEffort: "low" | "medium" | "high" | "xhigh"`
- **Template**: Updated charter template with `**Reasoning Effort:** auto`
- **Validation**: `"auto"` and invalid values are normalized to `undefined` at parse time
6 changes: 6 additions & 0 deletions .changeset/release-0.11.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@bradygaster/squad-cli": minor
"@bradygaster/squad-sdk": minor
---

Stage the 0.11.0 release by cleaning the committed package versions and publishing the 0.11.0 changelog notes.
5 changes: 5 additions & 0 deletions .changeset/rename-dotnet-aspire-to-aspire.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@bradygaster/squad-cli": patch
---

Rename user-facing Aspire terminology in CLI help text and command output. Aspire is a standalone OTLP dashboard, not limited to .NET apps.
5 changes: 5 additions & 0 deletions .changeset/rename-hire-to-cast.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"squad-cli": minor
---

Rename `hire` command to `cast` in CLI help and documentation. The `hire` command continues to work as a silent alias (like `cls`/`clear` in PowerShell) — no deprecation, no warnings, it just does the same thing. All user-facing text now presents `cast` as the canonical verb because we're casting agents, not hiring humans.
90 changes: 90 additions & 0 deletions .changeset/slim-squad-agent-md-phase1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
---
"@bradygaster/squad-sdk": minor
"@bradygaster/squad-cli": minor
---

Slim squad.agent.md by extracting 3 sections to satellite skills (closes #1308 phase 1)

## Symptom

`squad.agent.md` is loaded as the agent prompt at every Copilot session start. As of v0.10.0-insider.1 it sits at **81 KB / 1,137 lines** and was steadily growing — the v0.10 stabilisation pass alone added +10.6 KB / +114 lines. Every byte of that file is paid at every session.

## Phase 1 fix (this PR)

Extract three **low-cross-reference, high-byte** sections into satellite skills the coordinator loads on demand via the `skill` tool. Same pattern that already worked for `cross-squad-communication` (#1295).

| Extracted to satellite skill | Bytes saved in main file |
|---|---|
| `coordinator-init-mode` (Init Mode Phase 1 + Phase 2) | 5.4 KB |
| `coordinator-source-of-truth` (Source of Truth Hierarchy table) | 4.4 KB |
| `coordinator-response-mode` (Response Mode Selection + Lightweight Spawn Template) | 3.9 KB |

### Result

- `squad.agent.md`: **81 KB → 70 KB** (-13.9%, -140 lines)
- Three new bundled skills (`coordinator-source-of-truth`, `coordinator-response-mode`, `coordinator-init-mode`) installed alongside the existing 16 — total 19 skills at `.github/skills/`
- Behaviour unchanged: each removed section is replaced with a stub that names the trigger condition and instructs the coordinator to `skill(coordinator-X)` before acting

## Stubs left in `squad.agent.md`

Each extracted section keeps a short stub (4-12 lines) so the coordinator still knows the section exists and what triggers it. The full algorithm/table/template lives in the satellite skill.

Example (Source of Truth, was 30+ lines, now 9):

```markdown
## Source of Truth Hierarchy

Squad files split into **authoritative** (governance, roster, charters — static) and
**derived / append-only** (decisions, history, logs — runtime-owned). The four
governing rules:

1. **`squad.agent.md` wins** any conflict with another file.
2. **Append-only files** are never retroactively edited.
3. **Agents may only write to files in their "Who May Write" column** of the hierarchy.
4. **Only Squad (Coordinator)** records accepted decisions in `.squad/decisions.md`.

**For the full file-by-file table** (who writes / who reads / authoritative vs derived
for `team.md`, `decisions.md`, `routing.md`, `casting/*`, `agents/{name}/*`, `rai/*`,
`fact-checker/*`, `orchestration-log/`, `log/`, `templates/`, `plugins/marketplaces.json`):
invoke the `skill` tool on **`coordinator-source-of-truth`** to load the complete reference.
```

## What is NOT extracted (intentional)

These sections stay in `squad.agent.md` because they're loaded on EVERY prompt and / or are load-bearing for first-touch behaviour:

- **Team Mode + state-backend handshake + HARD RULE** (#1306) — handshake must fire before any state write
- **Routing table** — the trigger table for every user prompt
- **Hard trigger — keyword-to-skill match** paragraph (#1307) — load-bearing for the spawn-routing fix
- **How to Spawn an Agent** — referenced from every routing-table action
- **Coordinator Identity / Personal Squad / Memory Governance Tools** — frequently re-read inline

Follow-up issues will tackle these one at a time if/when needed.

## Wired changes

- New: `.squad/skills/coordinator-{source-of-truth,response-mode,init-mode}/SKILL.md` are the **canonical source files** kept in the squad repo itself (the same convention every other bundled skill follows). At install/upgrade time they are copied to `.github/skills/coordinator-{x}/SKILL.md` in the user's repo — that's the Copilot CLI custom-skills location adopted by #1304 (formerly `.copilot/skills/`).
- Mirrored at build time to `packages/squad-cli/templates/skills/` and `packages/squad-sdk/templates/skills/` via `scripts/sync-skill-templates.mjs` (same path every other manifest skill takes).
- `MANIFEST_SKILL_NAMES` in `packages/squad-sdk/src/config/init.ts` grows by 3 entries (now 19)
- `TEMPLATE_MANIFEST` in `packages/squad-cli/src/cli/core/templates.ts` grows by 3 entries with `../.github/skills/` destinations (matching the post-#1304 install location)
- `.squad-templates/squad.agent.md` replaces each extracted section with a stub
- 4 mirrored copies re-synced via `scripts/sync-templates.mjs --sync`

## Tests

- `test/init.test.ts > should install every manifest-curated skill (regression: bradygaster/squad#1289, #1264)` — already imports `MANIFEST_SKILL_NAMES` and iterates it, so it automatically asserts the 3 new skills install. **287/287 tests pass.**
- Smoke test: fresh `squad init` produces 19 skills at `.github/skills/`, `squad.agent.md` is 70 KB.

## Composability

Disjoint from all other open PRs. Pure file moves + a few line replacements + 3 manifest entries.

## Follow-ups (separate PRs)

The remaining high-bloat sections in `squad.agent.md` are stickier and need careful design to extract:

- **Routing table** (9.2 KB) — needed on every prompt; can't be lazy-loaded as-is. May be slimmable by moving the action-cell verbiage into satellite skills (the trigger table stays, the action prose moves).
- **Team Mode** (5.5 KB) — contains the state-backend handshake, which MUST fire on every session. Maybe extract the worktree-awareness / casting-migration sub-sections.
- **How to Spawn an Agent** (3.2 KB) — could extract the role-emoji catalog.

Target: get the coordinator down to **~45 KB** in 2-3 follow-up PRs.
Loading
Loading