Skip to content

Add squad registry add/list/remove for discovery-only peer squads (no inheritance) #1290

Closed

Description

@tamirdresher

Summary

squad upstream add <path> exists, but there's no companion command to register a peer squad for discovery-only (no inheritance). Users who want to discover + delegate to another squad without inheriting its skills/decisions/wisdom must hand-edit .squad/squad-registry.json. The error message from squad discover itself even tells users to "create a squad-registry.json" by hand:

"No squads discovered. Add upstreams with 'squad upstream add' or create a squad-registry.json."

This is a UX asymmetry — upstream has a real subcommand, registry does not.

Proposal

Add squad registry subcommands matching the shape of squad upstream:

squad registry add <name> <path>       # add entry; refuses on duplicate name
squad registry list                    # show all registered peers (also: --json)
squad registry remove <name>           # remove entry

The <path> is the repository root (not .squad/). Squad locates the manifest via the existing readManifest(repoPath) which joins .squad/manifest.json internally (cross-squad.ts:121-132). Validates the path resolves to a readable manifest before writing the entry.

Secondary fix in same PR — clarify path semantics

The docs and the cross-squad SKILL.md both show ../friend/.squad as the path. But readManifest() then appends .squad/manifest.json again, looking up ../friend/.squad/.squad/manifest.json which doesn't exist — discover silently returns nothing. Empirically reproduced just now.

Two fixes:

  1. Make readManifest accept BOTH forms: if path ends in .squad, strip it before joining; if not, append as today.
  2. Update the SKILL.md and any docs that show the wrong form.

Why not just use upstream?

Upstream is for INHERITANCE — it loads the other squad's skills/decisions/wisdom/routing into the coordinator at session start. For cross-org or cross-team peer relationships where you DON'T want to inherit, registry is the right tool. The mechanisms are intentionally separate (cross-squad.ts:235-250 dedupes by name with upstream priority).

Acceptance

  • squad registry add/list/remove shipped
  • Path semantics accept both repo-root and repo-root/.squad
  • cross-squad SKILL.md updated to show correct path form
  • squad discover "no squads discovered" hint updated to mention squad registry add
  • Tests covering the three new subcommands + dual-path semantics
  • Changeset

Activity

  1. added a commit that references this issue on Jun 12, 2026
    217e0bd
  2. added a commit that references this issue on Jun 22, 2026
    a2ca2f7
  3. added a commit that references this issue on Jun 30, 2026
    25eae44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions