Found while fixing the .squad/templates/ README in #1949. Documentation-only there; this is the underlying behavioral gap, filed separately rather than papered over by a doc edit.
What ships
squad init copies the SDK templates directory recursively (copyRecursiveSync, packages/squad-sdk/src/config/init.ts:1481), so .squad-templates/casting/ lands in every new project as .squad/templates/casting/. It currently contains Futurama.json — a custom-universe character-name pool.
The gap
No shipped template or skill references that directory:
grep -rn "templates/casting/" .squad-templates/ # no matches
The only reference in the repository is:
.copilot/skills/init-mode/SKILL.md:29 — "If the universe is custom, allocate character names from that universe based on the related list found in the .squad/templates/casting/ directory."
.copilot/skills/ is the legacy install location — packages/squad-sdk/src/config/init.ts:1301 records that "Earlier versions of Squad installed to .copilot/skills/", and TEMPLATE_MANIFEST routes skills to ../.github/skills/....
The shipped counterpart is skills/coordinator-init-mode/SKILL.md (manifest source skills/coordinator-init-mode/SKILL.md → destination ../.github/skills/coordinator-init-mode/SKILL.md), and it does not reference the casting/ directory. The shipped casting-reference.md describes the casting algorithm in terms of top-level casting-policy.json / casting-registry.json, not the directory.
Consequence
For a user after squad init, the custom-universe name pools appear to be unreachable: the data is copied into their project, but nothing they have instructs an agent to read it. The behavior survives in this repo only via the legacy .copilot/ copy, which is why it isn't obvious from dogfooding here.
Not yet determined
I did not establish which of these is intended, and deliberately did not guess:
coordinator-init-mode should carry the instruction and lost it (or never gained it) when skills moved to .github/skills/ — a regression, fix by porting the line.
- Custom-universe lists were superseded by the
allow_custom_universes policy path in casting-reference.md, and casting/ is genuinely vestigial — fix by removing it from the shipped set.
These have opposite fixes, so it needs a decision before code changes.
Suggested next step
Diff .copilot/skills/init-mode/SKILL.md against .squad-templates/skills/coordinator-init-mode/SKILL.md for other instructions that did not survive the move — this may not be the only one.
Related
Found while fixing the
.squad/templates/README in #1949. Documentation-only there; this is the underlying behavioral gap, filed separately rather than papered over by a doc edit.What ships
squad initcopies the SDK templates directory recursively (copyRecursiveSync,packages/squad-sdk/src/config/init.ts:1481), so.squad-templates/casting/lands in every new project as.squad/templates/casting/. It currently containsFuturama.json— a custom-universe character-name pool.The gap
No shipped template or skill references that directory:
The only reference in the repository is:
.copilot/skills/init-mode/SKILL.md:29— "If the universe is custom, allocate character names from that universe based on the related list found in the.squad/templates/casting/directory.".copilot/skills/is the legacy install location —packages/squad-sdk/src/config/init.ts:1301records that "Earlier versions of Squad installed to.copilot/skills/", andTEMPLATE_MANIFESTroutes skills to../.github/skills/....The shipped counterpart is
skills/coordinator-init-mode/SKILL.md(manifest sourceskills/coordinator-init-mode/SKILL.md→ destination../.github/skills/coordinator-init-mode/SKILL.md), and it does not reference thecasting/directory. The shippedcasting-reference.mddescribes the casting algorithm in terms of top-levelcasting-policy.json/casting-registry.json, not the directory.Consequence
For a user after
squad init, the custom-universe name pools appear to be unreachable: the data is copied into their project, but nothing they have instructs an agent to read it. The behavior survives in this repo only via the legacy.copilot/copy, which is why it isn't obvious from dogfooding here.Not yet determined
I did not establish which of these is intended, and deliberately did not guess:
coordinator-init-modeshould carry the instruction and lost it (or never gained it) when skills moved to.github/skills/— a regression, fix by porting the line.allow_custom_universespolicy path incasting-reference.md, andcasting/is genuinely vestigial — fix by removing it from the shipped set.These have opposite fixes, so it needs a decision before code changes.
Suggested next step
Diff
.copilot/skills/init-mode/SKILL.mdagainst.squad-templates/skills/coordinator-init-mode/SKILL.mdfor other instructions that did not survive the move — this may not be the only one.Related
casting/by its content and points atcasting-reference.md, rather than citing a legacy path users don't have.