You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 7cd97e8
Browse filesBrowse the repository at this point in the historyBrowse files
fix(remote): a project linked to a team repository uses that team (satellite repos) (#2500)
* fix(remote): a project linked to a team repository uses that team
After `squad link` / `squad init --mode remote`, init and upgrade
scaffolded a placeholder local team (empty roster, routing, built-ins,
casting) and Claude Code's member subagents came from it, so the
coordinator saw an empty team.
- init/upgrade skip team files in a linked project; local state stays.
- Claude member subagents are projected from the linked team
(ClientContext.teamDir) and read their charters via squad_state.
- Copilot's agent file advertises the linked team's cast.
- Every coordinator digest gets a "Linked team" rule: read team files
only through squad_state, never create a local roster.
- Host matrix: dual-root-remote-mode supported on every host (Claude
validated live); the monorepo TEAM_ROOT digest gap stays open.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix(remote): address linked-team review
- squad client list expects the linked team's member files
- a linked member's charter is carried in its subagent file; history via
squad_state_read only when its authored tool list allows (never widened)
- effort overrides come from the project's own config
- teamRoot "." is not a linked team in the coordinator rule
- init advertises the linked team's cast in Copilot's agent file
- the interactive shell reads the linked team's roster
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore(plugin): regenerate after rebase on #2496
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Projects linked to a team repository (`squad link`, `squad init --mode remote`) use that team: `squad init`/`squad upgrade` no longer scaffold a placeholder local roster, routing, charters or casting; Claude Code member subagents are projected from the linked team; and every coordinator digest reads a linked team through `squad_state`.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -86,6 +86,7 @@ Claude Code is the first host after GitHub Copilot where Squad uses the host's o
86
86
-`.squad/templates/human-members.md` ships again. The template index listed it, but it had been missing since 2025. It describes adding a human to the roster and now includes the sign-off gate: a request to do gated work is not the sign-off.
87
87
-`squad doctor` no longer fails the `squad_state` bridge check when the team folder has two spellings, such as macOS `/var` and `/private/var`. It compares the real paths.
88
88
- When `squad_state` is unavailable and `.squad/config.json` sets a non-local `stateBackend`, the non-Copilot coordinators stop and say so instead of writing `.squad/decisions.md` directly, which that backend never reads. Seen in a live test with `two-layer`.
89
+
-**A project linked to a team repository uses that team in Claude Code.** After `squad link` or `squad init --mode remote`, `squad init` and `squad upgrade` scaffolded a placeholder local team (an empty roster, routing, the built-ins, casting), and Claude Code's member subagents came from that empty team. Now a linked project gets no local roster, routing, charters or casting; its member subagents are projected from the linked team and read their charters through `squad_state`; Copilot's agent file advertises the linked team's cast; and every coordinator's digest says to read a linked team only through `squad_state`. The team repository is never written.
89
90
-`squad init --client claude` tells you to run `claude --agent squad --mcp-config .mcp.json`, not Copilot. With several hosts it gives one line per host (#2453).
90
91
-`squad_state` starts when Claude Code is started in a subfolder of the repository, such as a package in a monorepo. Claude Code finds the root `.mcp.json` from there but starts the server in the subfolder, so `node .squad/squad.mjs state-mcp` failed with "Cannot find module". The committed command now runs a short `node -e` script that finds the repository root (the nearest folder with `.git`) and runs only the `.squad/squad.mjs` there, so a launcher in a package's own `.squad/` or above the repository is never run. Run `squad upgrade` to rewrite an existing `.mcp.json`.
91
92
-`.squad/squad.mjs` finds a `squad` on PATH. It used to skip every PATH entry, so a repository with only a global Squad CLI failed with "no Squad CLI found". Arguments reach the CLI unchanged on Windows (through npm's `.cmd` shims, never cmd.exe) and Linux, and a new CI job runs the launcher tests on both.
0 commit comments