Repository navigation
Closed
Labels
enhancementNew feature or improvementNew feature or improvementgo:needs-researchNeeds investigationNeeds investigationnext-upPriority queue — next issues to workPriority queue — next issues to workpriority:p1This sprintThis sprintsquadSquad triage inbox — Lead will assign to a memberSquad triage inbox — Lead will assign to a membersquad:architectAssigned to architect (Lead Architect)Assigned to architect (Lead Architect)stalled-initiativeWork area that was started but never completed — cut, close, finish, or reprioritizeWork area that was started but never completed — cut, close, finish, or reprioritizetriagedIssue has been triagedIssue has been triagedwave:1-nextWave 1 — immediate next sprintWave 1 — immediate next sprint
Description
PRD: Remove .squad/ from version control before v1.0
Author: Brady Gaster
Status: Draft
Target: v0.10.0 (release after v0.9.0, giving one full release cycle for migration)
Problem statement
The .squad/ directory is currently tracked in version control. Since SDK mode (squad.config.ts + squad build) generates .squad/ as build output, tracking it creates several problems:
- Merge conflicts on append-only files (decisions.md, history.md) across branches
- Dirty working trees when agents work on multiple branches simultaneously
- CI noise from
.squad/state changes polluting diffs - Privacy concerns with agent history and session logs in public repos
- Conceptual confusion —
.squad/is runtime state, not source code
Current state
- 128 tracked files, ~889 KB across agents, templates, casting, identity, skills
- 58 agent files (charters + histories) — the bulk
- 6 CI workflows reference
.squad/team.mdfor label sync, triage, heartbeat - 112 product source files in
packages/reference.squad/paths .gitattributeshas union merge drivers for.squad/append-only files- SDK mode already treats
.squad/as generated output fromsquad.config.ts
Proposed approach
Phase 1: Preparation (v0.9.0 release cycle)
- Document the migration path in release notes and docs
- Add
squad exportcommand to export current.squad/state (charters, history, decisions) to a portable format - Publish the "Squad squad" (this repo's team) somewhere public so community can reference it
- Update
squad initto generate.squad/locally (already does this) - Ensure
squad buildfully regenerates.squad/fromsquad.config.ts - Add
.squad/to.gitignoretemplate used bysquad init - Announce deprecation in v0.9.0 release notes
Phase 2: Removal (v0.10.0)
- Add
.squad/to.gitignorein this repo - Run
git rm -r --cached .squad/to untrack (files stay on disk) - Update CI workflows to run
squad buildbefore reading.squad/team.mdsquad-heartbeat.yml— addsquad buildstepsquad-issue-assign.yml— addsquad buildstepsquad-triage.yml— addsquad buildstepsync-squad-labels.yml— addsquad buildstepsquad-preview.yml— addsquad buildstepsquad-promote.yml— addsquad buildstep
- Remove
.gitattributesunion merge drivers for.squad/paths - Update docs to reflect that
.squad/is local-only - Update
squad initdocs to mention.gitignoresetup
Phase 3: Validation
- Verify fresh clone +
npm install+squad buildproduces working.squad/ - Verify all CI workflows pass with build step
- Verify
squad initon a new project creates.squad/correctly - Test the full issue -> branch -> PR -> merge lifecycle without tracked
.squad/
Migration path for users
Users who have existing .squad/ directories tracked in their repos:
- Run
squad exportto save current team state - Add
.squad/to.gitignore - Run
git rm -r --cached .squad/ - Commit
- Team state persists locally;
squad buildregenerates fromsquad.config.ts
Users without SDK mode (squad.config.ts) will need to either:
- Adopt SDK mode first (
squad init --sdk) - Or keep
.squad/tracked (opt-in, not the default)
Risks
- Breaking change for users who depend on
.squad/being in their repo - CI workflows need updating — if missed, label routing breaks on fresh clones
- History loss — agent
history.mdfiles won't persist across clones (mitigated bysquad export)
Timeline
- v0.9.0 (this weekend): Announce plan, begin Phase 1 prep
- v0.10.0 (next release after v0.9.0): Execute Phase 2 removal
- v1.0:
.squad/is fully local-only, generated bysquad build
Metadata
Metadata
Assignees
Labels
enhancementNew feature or improvementNew feature or improvementgo:needs-researchNeeds investigationNeeds investigationnext-upPriority queue — next issues to workPriority queue — next issues to workpriority:p1This sprintThis sprintsquadSquad triage inbox — Lead will assign to a memberSquad triage inbox — Lead will assign to a membersquad:architectAssigned to architect (Lead Architect)Assigned to architect (Lead Architect)stalled-initiativeWork area that was started but never completed — cut, close, finish, or reprioritizeWork area that was started but never completed — cut, close, finish, or reprioritizetriagedIssue has been triagedIssue has been triagedwave:1-nextWave 1 — immediate next sprintWave 1 — immediate next sprint
Activity
github-actions commentedon Mar 22, 2026
🏗️ Squad Triage — Flight (Lead)
Issue: #498 — PRD: Remove .squad/ from version control before v1.0
Assigned to: FIDO (Quality Owner)
Reason: Issue relates to testing/quality work
@copilot evaluation: 🔴 Not suitable — issue involves work outside the coding agent's capability profile.
Team roster:
squad:flightsquad:proceduressquad:eecomsquad:fidosquad:paosquad:capcomsquad:controlsquad:surgeonsquad:boostersquad:gncsquad:networksquad:retrosquad:incosquad:guidosquad:telemetrysquad:voxsquad:dskysquad:simssquad:handbooksquad:ralphsquad:copilotmlinnen commentedon Mar 22, 2026
I am curious how squad skills and lessons learned will work moving forward without these components persisted centrally somewhere. Mostly for the following scenarios:
Will export/import be the only way to manage this or will there be a longer term memory solution that allows for the squad team to maintain lessons learned in a central way?
chore: audit .squad/ VCS references for removal prep (#498)
docs(audit): VCS removal Phase 1 prep (#498) (#542)
chore(.squad): log session completion — #508/#525/#498 all done
docs(.squad): log mega-session — #508 complete, #525 complete, #498 a…
chore(squad): Phase 1 upstream migration cleanup (#1351)
[Squad] Automate git worktree cleanup after PR merge (#1442)
[Kind Aspire] Documentation and samples (#1427) (#1444)
10 remaining items
github-actions commentedon Sep 10, 2026
🔄 Ralph — Auto-Triage
Assigned to: Flight
Reason: No module, routing, or role keyword match — routed to Lead/Architect
Source: lead-fallback
github-actions commentedon Sep 10, 2026
🔄 Ralph — Auto-Triage
Assigned to: Flight
Reason: No module, routing, or role keyword match — routed to Lead/Architect
Source: lead-fallback
github-actions commentedon Sep 11, 2026
🔄 Ralph — Auto-Triage
Assigned to: Flight
Reason: No module, routing, or role keyword match — routed to Lead/Architect
Source: lead-fallback
github-actions commentedon Sep 11, 2026
🔄 Ralph — Auto-Triage
Assigned to: Flight
Reason: No module, routing, or role keyword match — routed to Lead/Architect
Source: lead-fallback
github-actions commentedon Sep 11, 2026
🔄 Ralph — Auto-Triage
Assigned to: Flight
Reason: No module, routing, or role keyword match — routed to Lead/Architect
Source: lead-fallback
github-actions commentedon Sep 11, 2026
🔄 Ralph — Auto-Triage
Assigned to: Flight
Reason: No module, routing, or role keyword match — routed to Lead/Architect
Source: lead-fallback
github-actions commentedon Sep 13, 2026
🔄 Ralph — Auto-Triage
Assigned to: architect
Reason: No module, routing, or role keyword match — routed to Lead/Architect
Source: lead-fallback
bradygaster commentedon Sep 24, 2026
Direction update: retain this as a V2 architecture discussion, not a blanket v1 removal of
.squad/from version control. The required boundary is authored governance/configuration versus mutable or generated runtime state, including persistence, portability, and multi-machine/team behavior. Any future proposal should classify artifacts along that boundary before changing tracking defaults.