Squad Squad
Back to Blog

Squad v0.10 Stabilization: Eleven PRs and an Insider Release

“Done means a fresh squad init, in a fresh repo, with a two-layer state backend, can build a working app without anyone holding its hand.”

The Problem v0.10 Left Open

v0.10 introduced six big things: a two-layer state backend, presets, the squad commands skill, cross-squad discovery, cross-squad communication, and the Fact-Checker / Devil’s Advocate agent. Each one shipped behind feature work; each one had at least one rough edge that surfaced the first time someone tried to use it in anger.

A weekend of dogfooding found and fixed eleven of those edges. The result is @bradygaster/squad-cli@0.10.0-insider.1 — install today, get the polished v0.10 experience without waiting for v0.11.

Install the Insider

# One-off use
npx -y @bradygaster/squad-cli@insider init --state-backend two-layer

# Or pin it in .copilot/mcp-config.json
{
  "squad_state_<hash>": {
    "command": "npx",
    "args": ["-y", "@bradygaster/squad-cli@0.10.0-insider.1", "state-mcp"]
  }
}

The insider track follows the <base>-insider.N pattern. Today: 0.10.0-insider.1. Each new insider bumps N; the public latest tag stays on 0.10.0 until the next stable release.

What Got Fixed

1. Memory tools survive a fresh Copilot session

The two-layer state backend writes squad decisions to an orphan squad-state branch and exposes them through the MCP server as squad_state.* plus six memory.* aliases. Before: a freshly opened Copilot session would show seven tools, sometimes silently. After:

2. Presets wire the team on apply

squad preset apply <name> used to install the preset files but stop short of wiring the roster. The team table stayed empty, the casting registry was unpopulated, and the next Copilot session would mode-switch into Init Mode instead of Established Mode. PR #1293 added a merge-friendly presets/scaffold.ts that populates:

After: opening a Copilot session on a freshly applied preset shows mode-switch detect Established Mode and squad team list shows all members.

3. The squad commands skill lands in the right folder

The squad commands skill (and squad-version-check, squad-help) lives in the CLI templates dir but was missing from the SDK manifest, so squad init silently skipped it on a fresh install. PR #1292 ports it across plus three other previously-missing skills (tiered-memory, iterative-retrieval, reflect). PR #1304 makes the install target .github/skills/ (the canonical Copilot CLI skill discovery path) and migrates older squads from .squad/skills/ on squad upgrade. PR #1303 adds a slash-style /squad command surface.

Bonus: a regression test (#1292) asserts MANIFEST_SKILL_NAMES.length === installed_skills.length. No more silent skips.

4. Cross-squad communication ships with every squad

The cross-squad-communication skill — which lets one squad call another with copilot --agent squad --allow-all-tools — is now bundled by squad init and squad upgrade. PR #1295 audited the CLI invocations to make sure they use the real flags (--agent squad, capital -C, -p for text not path, --allow-all-tools) and added a universal rule: every copilot spawn into a peer squad passes --agent squad.

5. Fact-Checker / Devil’s Advocate is on every team

The Fact-Checker agent (also operates as Devil’s Advocate in its second mode; one agent, two modes per #1254) used to be a manual cast. PR #1300 added it to the always-on roster scaffolded by squad init and squad upgrade, alongside RAI. PR #1301 gave it a rich charter, its own state dir, and a Linux-CI case-fix for the file path.

6. The coordinator routes “spawn a squad” correctly

When a user typed “spawn a squad to build X”, the coordinator sometimes silently fanned out individual task calls instead of using the task(agent_type="Squad", …) path. PR #1307 fixed the routing row in squad.agent.md, added an ask_user clarification step for ambiguous requests, and documented the anti-pattern explicitly. PR #1297 added a squad disambiguation skill so skill(Squad) lookups succeed and redirect to the right path.

End-to-End Smoke Test

The acceptance criterion this whole weekend was driving toward:

# Fresh dir, fresh git repo, no prior squad state
mkdir C:\Temp\smoke-test; cd C:\Temp\smoke-test; git init

# Init with two-layer backend
npx -y @bradygaster/squad-cli@insider init --state-backend two-layer

# Ask it to build something
copilot --agent squad --allow-all-tools `
  -p "build hello-squad — a Node CLI that prints the squad team members"

Result: the coordinator built three files (package.json, index.js, test/index.test.js), ran the tests, self-corrected one path bug, and finished green in 1m 58s with 1 pass / 0 fail. The squad-state orphan branch picked up four commits (decisions, history, charters, routing). A fresh Copilot session on the same repo loaded all thirteen MCP tools on the first function-list call.

What’s Still Open

The Eleven PRs

PRTitleTouches
#1292Bundle missing skills + manifest drift guardmanifest, templates
#1293Preset apply wires team / routing / castingpresets/scaffold.ts
#1295Cross-squad-communication skill + CLI correctnessskills, CLI invocations
#1298Stop polluting ~/.copilot/mcp-config.json per projectinit.ts, mcp-root.ts
#1300Always-on Fact-Checker roster scaffoldingscaffoldAlwaysOnAgents
#1301Fact-Checker rich charter + state dirtemplates
#1302squad-help skilltemplates
#1303/squad slash command surfaceskills
#1304Install skills to .github/skills/ + migrateupgrade.ts
#1306MCP handshake + HARD RULE on state-backend probesquad.agent.md, state-mcp.ts
#1307”Spawn a squad” routing + ask_user + anti-patternssquad.agent.md

Try It

npx -y @bradygaster/squad-cli@insider --version
# 0.10.0-insider.1

If you hit anything that doesn’t work the way the docs say it should, file it on bradygaster/squad. The fastest way to get a fix is a real repro on a fresh squad init.