@bradygaster/squad-sdk 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +296 -296
  2. package/dist/agents/history-shadow.js +30 -30
  3. package/dist/build/github-dist.js +42 -42
  4. package/dist/config/init.js +173 -173
  5. package/dist/sharing/consult.js +78 -78
  6. package/package.json +1 -1
  7. package/templates/casting/Futurama.json +9 -9
  8. package/templates/casting-history.json +4 -4
  9. package/templates/casting-policy.json +37 -37
  10. package/templates/casting-reference.md +104 -104
  11. package/templates/casting-registry.json +3 -3
  12. package/templates/ceremonies.md +41 -41
  13. package/templates/charter.md +53 -53
  14. package/templates/constraint-tracking.md +38 -38
  15. package/templates/cooperative-rate-limiting.md +229 -229
  16. package/templates/copilot-instructions.md +46 -46
  17. package/templates/history.md +10 -10
  18. package/templates/identity/now.md +9 -9
  19. package/templates/identity/wisdom.md +15 -15
  20. package/templates/issue-lifecycle.md +412 -412
  21. package/templates/keda-scaler.md +164 -164
  22. package/templates/machine-capabilities.md +74 -74
  23. package/templates/mcp-config.md +90 -90
  24. package/templates/multi-agent-format.md +28 -28
  25. package/templates/plugin-marketplace.md +49 -49
  26. package/templates/ralph-circuit-breaker.md +313 -313
  27. package/templates/raw-agent-output.md +37 -37
  28. package/templates/roster.md +60 -60
  29. package/templates/routing.md +39 -39
  30. package/templates/run-output.md +50 -50
  31. package/templates/schedule.json +19 -19
  32. package/templates/scribe-charter.md +119 -119
  33. package/templates/skill.md +24 -24
  34. package/templates/skills/agent-collaboration/SKILL.md +42 -42
  35. package/templates/skills/agent-conduct/SKILL.md +24 -24
  36. package/templates/skills/architectural-proposals/SKILL.md +151 -151
  37. package/templates/skills/ci-validation-gates/SKILL.md +84 -84
  38. package/templates/skills/cli-wiring/SKILL.md +47 -47
  39. package/templates/skills/client-compatibility/SKILL.md +89 -89
  40. package/templates/skills/cross-squad/SKILL.md +114 -114
  41. package/templates/skills/distributed-mesh/SKILL.md +287 -287
  42. package/templates/skills/distributed-mesh/mesh.json.example +30 -30
  43. package/templates/skills/distributed-mesh/sync-mesh.ps1 +111 -111
  44. package/templates/skills/distributed-mesh/sync-mesh.sh +104 -104
  45. package/templates/skills/docs-standards/SKILL.md +71 -71
  46. package/templates/skills/economy-mode/SKILL.md +114 -114
  47. package/templates/skills/external-comms/SKILL.md +329 -329
  48. package/templates/skills/gh-auth-isolation/SKILL.md +183 -183
  49. package/templates/skills/git-workflow/SKILL.md +204 -204
  50. package/templates/skills/github-multi-account/SKILL.md +95 -95
  51. package/templates/skills/history-hygiene/SKILL.md +36 -36
  52. package/templates/skills/humanizer/SKILL.md +105 -105
  53. package/templates/skills/init-mode/SKILL.md +102 -102
  54. package/templates/skills/model-selection/SKILL.md +117 -117
  55. package/templates/skills/nap/SKILL.md +24 -24
  56. package/templates/skills/personal-squad/SKILL.md +57 -57
  57. package/templates/skills/project-conventions/SKILL.md +56 -56
  58. package/templates/skills/release-process/SKILL.md +423 -423
  59. package/templates/skills/reskill/SKILL.md +92 -92
  60. package/templates/skills/reviewer-protocol/SKILL.md +79 -79
  61. package/templates/skills/secret-handling/SKILL.md +200 -200
  62. package/templates/skills/session-recovery/SKILL.md +155 -155
  63. package/templates/skills/squad-conventions/SKILL.md +69 -69
  64. package/templates/skills/test-discipline/SKILL.md +37 -37
  65. package/templates/skills/windows-compatibility/SKILL.md +74 -74
  66. package/templates/workflows/squad-ci.yml +24 -24
  67. package/templates/workflows/squad-docs.yml +54 -54
  68. package/templates/workflows/squad-heartbeat.yml +171 -171
  69. package/templates/workflows/squad-insider-release.yml +61 -61
  70. package/templates/workflows/squad-issue-assign.yml +161 -161
  71. package/templates/workflows/squad-label-enforce.yml +181 -181
  72. package/templates/workflows/squad-preview.yml +55 -55
  73. package/templates/workflows/squad-promote.yml +120 -120
  74. package/templates/workflows/squad-release.yml +77 -77
  75. package/templates/workflows/squad-triage.yml +260 -260
  76. package/templates/workflows/sync-squad-labels.yml +169 -169
@@ -1,105 +1,105 @@
1
- ---
2
- name: "humanizer"
3
- description: "Tone enforcement patterns for external-facing community responses"
4
- domain: "communication, tone, community"
5
- confidence: "low"
6
- source: "manual (RFC #426 — PAO External Communications)"
7
- ---
8
-
9
- ## Context
10
-
11
- Use this skill whenever PAO drafts external-facing responses for issues or discussions.
12
-
13
- - Tone must be warm, helpful, and human-sounding — never robotic or corporate.
14
- - Brady's constraint applies everywhere: **Humanized tone is mandatory**.
15
- - This applies to **all external-facing content** drafted by PAO in Phase 1 issues/discussions workflows.
16
-
17
- ## Patterns
18
-
19
- 1. **Warm opening** — Start with acknowledgment ("Thanks for reporting this", "Great question!")
20
- 2. **Active voice** — "We're looking into this" not "This is being investigated"
21
- 3. **Second person** — Address the person directly ("you" not "the user")
22
- 4. **Conversational connectors** — "That said...", "Here's what we found...", "Quick note:"
23
- 5. **Specific, not vague** — "This affects the casting module in v0.8.x" not "We are aware of issues"
24
- 6. **Empathy markers** — "I can see how that would be frustrating", "Good catch!"
25
- 7. **Action-oriented closes** — "Let us know if that helps!" not "Please advise if further assistance is required"
26
- 8. **Uncertainty is OK** — "We're not 100% sure yet, but here's what we think is happening..." is better than false confidence
27
- 9. **Profanity filter** — Never include profanity, slurs, or aggressive language, even when quoting
28
- 10. **Baseline comparison** — Responses should align with tone of 5-10 "gold standard" responses (>80% similarity threshold)
29
- 11. **Empathetic disagreement** — "We hear you. That's a fair concern." before explaining the reasoning
30
- 12. **Information request** — Ask for specific details, not open-ended "can you provide more info?"
31
- 13. **No link-dumping** — Don't just paste URLs. Provide context: "Check out the [getting started guide](url) — specifically the section on routing" not just a bare link
32
-
33
- ## Examples
34
-
35
- ### 1. Welcome
36
-
37
- ```text
38
- Hey {author}! Welcome to Squad 👋 Thanks for opening this.
39
- {substantive response}
40
- Let us know if you have questions — happy to help!
41
- ```
42
-
43
- ### 2. Troubleshooting
44
-
45
- ```text
46
- Thanks for the detailed report, {author}!
47
- Here's what we think is happening: {explanation}
48
- {steps or workaround}
49
- Let us know if that helps, or if you're seeing something different.
50
- ```
51
-
52
- ### 3. Feature guidance
53
-
54
- ```text
55
- Great question! {context on current state}
56
- {guidance or workaround}
57
- We've noted this as a potential improvement — {tracking info if applicable}.
58
- ```
59
-
60
- ### 4. Redirect
61
-
62
- ```text
63
- Thanks for reaching out! This one is actually better suited for {correct location}.
64
- {brief explanation of why}
65
- Feel free to open it there — they'll be able to help!
66
- ```
67
-
68
- ### 5. Acknowledgment
69
-
70
- ```text
71
- Good catch, {author}. We've confirmed this is a real issue.
72
- {what we know so far}
73
- We'll update this thread when we have a fix. Thanks for flagging it!
74
- ```
75
-
76
- ### 6. Closing
77
-
78
- ```text
79
- This should be resolved in {version/PR}! 🎉
80
- {brief summary of what changed}
81
- Thanks for reporting this, {author} — it made Squad better.
82
- ```
83
-
84
- ### 7. Technical uncertainty
85
-
86
- ```text
87
- Interesting find, {author}. We're not 100% sure what's causing this yet.
88
- Here's what we've ruled out: {list}
89
- We'd love more context if you have it — {specific ask}.
90
- We'll dig deeper and update this thread.
91
- ```
92
-
93
- ## Anti-Patterns
94
-
95
- - ❌ Corporate speak: "We appreciate your patience as we investigate this matter"
96
- - ❌ Marketing hype: "Squad is the BEST way to..." or "This amazing feature..."
97
- - ❌ Passive voice: "It has been determined that..." or "The issue is being tracked"
98
- - ❌ Dismissive: "This works as designed" without empathy
99
- - ❌ Over-promising: "We'll ship this next week" without commitment from the team
100
- - ❌ Empty acknowledgment: "Thanks for your feedback" with no substance
101
- - ❌ Robot signatures: "Best regards, PAO" or "Sincerely, The Squad Team"
102
- - ❌ Excessive emoji: More than 1-2 emoji per response
103
- - ❌ Quoting profanity: Even when the original issue contains it, paraphrase instead
104
- - ❌ Link-dumping: Pasting URLs without context ("See: https://...")
105
- - ❌ Open-ended info requests: "Can you provide more information?" without specifying what information
1
+ ---
2
+ name: "humanizer"
3
+ description: "Tone enforcement patterns for external-facing community responses"
4
+ domain: "communication, tone, community"
5
+ confidence: "low"
6
+ source: "manual (RFC #426 — PAO External Communications)"
7
+ ---
8
+
9
+ ## Context
10
+
11
+ Use this skill whenever PAO drafts external-facing responses for issues or discussions.
12
+
13
+ - Tone must be warm, helpful, and human-sounding — never robotic or corporate.
14
+ - Brady's constraint applies everywhere: **Humanized tone is mandatory**.
15
+ - This applies to **all external-facing content** drafted by PAO in Phase 1 issues/discussions workflows.
16
+
17
+ ## Patterns
18
+
19
+ 1. **Warm opening** — Start with acknowledgment ("Thanks for reporting this", "Great question!")
20
+ 2. **Active voice** — "We're looking into this" not "This is being investigated"
21
+ 3. **Second person** — Address the person directly ("you" not "the user")
22
+ 4. **Conversational connectors** — "That said...", "Here's what we found...", "Quick note:"
23
+ 5. **Specific, not vague** — "This affects the casting module in v0.8.x" not "We are aware of issues"
24
+ 6. **Empathy markers** — "I can see how that would be frustrating", "Good catch!"
25
+ 7. **Action-oriented closes** — "Let us know if that helps!" not "Please advise if further assistance is required"
26
+ 8. **Uncertainty is OK** — "We're not 100% sure yet, but here's what we think is happening..." is better than false confidence
27
+ 9. **Profanity filter** — Never include profanity, slurs, or aggressive language, even when quoting
28
+ 10. **Baseline comparison** — Responses should align with tone of 5-10 "gold standard" responses (>80% similarity threshold)
29
+ 11. **Empathetic disagreement** — "We hear you. That's a fair concern." before explaining the reasoning
30
+ 12. **Information request** — Ask for specific details, not open-ended "can you provide more info?"
31
+ 13. **No link-dumping** — Don't just paste URLs. Provide context: "Check out the [getting started guide](url) — specifically the section on routing" not just a bare link
32
+
33
+ ## Examples
34
+
35
+ ### 1. Welcome
36
+
37
+ ```text
38
+ Hey {author}! Welcome to Squad 👋 Thanks for opening this.
39
+ {substantive response}
40
+ Let us know if you have questions — happy to help!
41
+ ```
42
+
43
+ ### 2. Troubleshooting
44
+
45
+ ```text
46
+ Thanks for the detailed report, {author}!
47
+ Here's what we think is happening: {explanation}
48
+ {steps or workaround}
49
+ Let us know if that helps, or if you're seeing something different.
50
+ ```
51
+
52
+ ### 3. Feature guidance
53
+
54
+ ```text
55
+ Great question! {context on current state}
56
+ {guidance or workaround}
57
+ We've noted this as a potential improvement — {tracking info if applicable}.
58
+ ```
59
+
60
+ ### 4. Redirect
61
+
62
+ ```text
63
+ Thanks for reaching out! This one is actually better suited for {correct location}.
64
+ {brief explanation of why}
65
+ Feel free to open it there — they'll be able to help!
66
+ ```
67
+
68
+ ### 5. Acknowledgment
69
+
70
+ ```text
71
+ Good catch, {author}. We've confirmed this is a real issue.
72
+ {what we know so far}
73
+ We'll update this thread when we have a fix. Thanks for flagging it!
74
+ ```
75
+
76
+ ### 6. Closing
77
+
78
+ ```text
79
+ This should be resolved in {version/PR}! 🎉
80
+ {brief summary of what changed}
81
+ Thanks for reporting this, {author} — it made Squad better.
82
+ ```
83
+
84
+ ### 7. Technical uncertainty
85
+
86
+ ```text
87
+ Interesting find, {author}. We're not 100% sure what's causing this yet.
88
+ Here's what we've ruled out: {list}
89
+ We'd love more context if you have it — {specific ask}.
90
+ We'll dig deeper and update this thread.
91
+ ```
92
+
93
+ ## Anti-Patterns
94
+
95
+ - ❌ Corporate speak: "We appreciate your patience as we investigate this matter"
96
+ - ❌ Marketing hype: "Squad is the BEST way to..." or "This amazing feature..."
97
+ - ❌ Passive voice: "It has been determined that..." or "The issue is being tracked"
98
+ - ❌ Dismissive: "This works as designed" without empathy
99
+ - ❌ Over-promising: "We'll ship this next week" without commitment from the team
100
+ - ❌ Empty acknowledgment: "Thanks for your feedback" with no substance
101
+ - ❌ Robot signatures: "Best regards, PAO" or "Sincerely, The Squad Team"
102
+ - ❌ Excessive emoji: More than 1-2 emoji per response
103
+ - ❌ Quoting profanity: Even when the original issue contains it, paraphrase instead
104
+ - ❌ Link-dumping: Pasting URLs without context ("See: https://...")
105
+ - ❌ Open-ended info requests: "Can you provide more information?" without specifying what information
@@ -1,102 +1,102 @@
1
- ---
2
- name: "init-mode"
3
- description: "Team initialization flow (Phase 1 proposal + Phase 2 creation)"
4
- domain: "orchestration"
5
- confidence: "high"
6
- source: "extracted"
7
- tools:
8
- - name: "ask_user"
9
- description: "Confirm team roster with selectable menu"
10
- when: "Phase 1 proposal — requires explicit user confirmation"
11
- ---
12
-
13
- ## Context
14
-
15
- Init Mode activates when `.squad/team.md` does not exist, or exists but has zero roster entries under `## Members`. The coordinator proposes a team (Phase 1), waits for user confirmation, then creates the team structure (Phase 2).
16
-
17
- ## Patterns
18
-
19
- ### Phase 1: Propose the Team
20
-
21
- No team exists yet. Propose one — but **DO NOT create any files until the user confirms.**
22
-
23
- 1. **Identify the user.** Run `git config user.name` to learn who you're working with. Use their name in conversation (e.g., *"Hey Brady, what are you building?"*). Store their name (NOT email) in `team.md` under Project Context. **Never read or store `git config user.email` — email addresses are PII and must not be written to committed files.**
24
- 2. Ask: *"What are you building? (language, stack, what it does)"*
25
- 3. **Cast the team.** Before proposing names, run the Casting & Persistent Naming algorithm (see that section):
26
- - Determine team size (typically 4–5 + Scribe).
27
- - Determine assignment shape from the user's project description.
28
- - Derive resonance signals from the session and repo context.
29
- - Select a universe. If the universe is custom, allocate character names from that universe based on the related list found in the `.squad/templates/casting/` directory. Prefer custom universes when available.
30
- - Scribe is always "Scribe" — exempt from casting.
31
- - Ralph is always "Ralph" — exempt from casting.
32
- 4. Propose the team with their cast names. Example (names will vary per cast):
33
-
34
- ```
35
- 🏗️ {CastName1} — Lead Scope, decisions, code review
36
- ⚛️ {CastName2} — Frontend Dev React, UI, components
37
- 🔧 {CastName3} — Backend Dev APIs, database, services
38
- 🧪 {CastName4} — Tester Tests, quality, edge cases
39
- 📋 Scribe — (silent) Memory, decisions, session logs
40
- 🔄 Ralph — (monitor) Work queue, backlog, keep-alive
41
- ```
42
-
43
- 5. Use the `ask_user` tool to confirm the roster. Provide choices so the user sees a selectable menu:
44
- - **question:** *"Look right?"*
45
- - **choices:** `["Yes, hire this team", "Add someone", "Change a role"]`
46
-
47
- **⚠️ STOP. Your response ENDS here. Do NOT proceed to Phase 2. Do NOT create any files or directories. Wait for the user's reply.**
48
-
49
- ### Phase 2: Create the Team
50
-
51
- **Trigger:** The user replied to Phase 1 with confirmation ("yes", "looks good", or similar affirmative), OR the user's reply to Phase 1 is a task (treat as implicit "yes").
52
-
53
- > If the user said "add someone" or "change a role," go back to Phase 1 step 3 and re-propose. Do NOT enter Phase 2 until the user confirms.
54
-
55
- 6. Create the `.squad/` directory structure (see `.squad/templates/` for format guides or use the standard structure: team.md, routing.md, ceremonies.md, decisions.md, decisions/inbox/, casting/, agents/, orchestration-log/, skills/, log/).
56
-
57
- **Casting state initialization:** Copy `.squad/templates/casting-policy.json` to `.squad/casting/policy.json` (or create from defaults). Create `registry.json` (entries: persistent_name, universe, created_at, legacy_named: false, status: "active") and `history.json` (first assignment snapshot with unique assignment_id).
58
-
59
- **Seeding:** Each agent's `history.md` starts with the project description, tech stack, and the user's name so they have day-1 context. Agent folder names are the cast name in lowercase (e.g., `.squad/agents/ripley/`). The Scribe's charter includes maintaining `decisions.md` and cross-agent context sharing.
60
-
61
- **Team.md structure:** `team.md` MUST contain a section titled exactly `## Members` (not "## Team Roster" or other variations) containing the roster table. This header is hard-coded in GitHub workflows (`squad-heartbeat.yml`, `squad-issue-assign.yml`, `squad-triage.yml`, `sync-squad-labels.yml`) for label automation. If the header is missing or titled differently, label routing breaks.
62
-
63
- **Merge driver for append-only files:** Create or update `.gitattributes` at the repo root to enable conflict-free merging of `.squad/` state across branches:
64
- ```
65
- .squad/decisions.md merge=union
66
- .squad/agents/*/history.md merge=union
67
- .squad/log/** merge=union
68
- .squad/orchestration-log/** merge=union
69
- ```
70
- The `union` merge driver keeps all lines from both sides, which is correct for append-only files. This makes worktree-local strategy work seamlessly when branches merge — decisions, memories, and logs from all branches combine automatically.
71
-
72
- 7. Say: *"✅ Team hired. Try: '{FirstCastName}, set up the project structure'"*
73
-
74
- 8. **Post-setup input sources** (optional — ask after team is created, not during casting):
75
- - PRD/spec: *"Do you have a PRD or spec document? (file path, paste it, or skip)"* → If provided, follow PRD Mode flow
76
- - GitHub issues: *"Is there a GitHub repo with issues I should pull from? (owner/repo, or skip)"* → If provided, follow GitHub Issues Mode flow
77
- - Human members: *"Are any humans joining the team? (names and roles, or just AI for now)"* → If provided, add per Human Team Members section
78
- - Copilot agent: *"Want to include @copilot? It can pick up issues autonomously. (yes/no)"* → If yes, follow Copilot Coding Agent Member section and ask about auto-assignment
79
- - These are additive. Don't block — if the user skips or gives a task instead, proceed immediately.
80
-
81
- ## Examples
82
-
83
- **Example flow:**
84
- 1. Coordinator detects no team.md → Init Mode
85
- 2. Runs `git config user.name` → "Brady"
86
- 3. Asks: *"Hey Brady, what are you building?"*
87
- 4. User: *"TypeScript CLI tool with GitHub API integration"*
88
- 5. Coordinator runs casting algorithm → selects "The Usual Suspects" universe
89
- 6. Proposes: Keaton (Lead), Verbal (Prompt), Fenster (Backend), Hockney (Tester), Scribe, Ralph
90
- 7. Uses `ask_user` with choices → user selects "Yes, hire this team"
91
- 8. Coordinator creates `.squad/` structure, initializes casting state, seeds agents
92
- 9. Says: *"✅ Team hired. Try: 'Keaton, set up the project structure'"*
93
-
94
- ## Anti-Patterns
95
-
96
- - ❌ Creating files before user confirms Phase 1
97
- - ❌ Mixing agents from different universes in the same cast
98
- - ❌ Skipping the `ask_user` tool and assuming confirmation
99
- - ❌ Proceeding to Phase 2 when user said "add someone" or "change a role"
100
- - ❌ Using `## Team Roster` instead of `## Members` as the header (breaks GitHub workflows)
101
- - ❌ Forgetting to initialize `.squad/casting/` state files
102
- - ❌ Reading or storing `git config user.email` (PII violation)
1
+ ---
2
+ name: "init-mode"
3
+ description: "Team initialization flow (Phase 1 proposal + Phase 2 creation)"
4
+ domain: "orchestration"
5
+ confidence: "high"
6
+ source: "extracted"
7
+ tools:
8
+ - name: "ask_user"
9
+ description: "Confirm team roster with selectable menu"
10
+ when: "Phase 1 proposal — requires explicit user confirmation"
11
+ ---
12
+
13
+ ## Context
14
+
15
+ Init Mode activates when `.squad/team.md` does not exist, or exists but has zero roster entries under `## Members`. The coordinator proposes a team (Phase 1), waits for user confirmation, then creates the team structure (Phase 2).
16
+
17
+ ## Patterns
18
+
19
+ ### Phase 1: Propose the Team
20
+
21
+ No team exists yet. Propose one — but **DO NOT create any files until the user confirms.**
22
+
23
+ 1. **Identify the user.** Run `git config user.name` to learn who you're working with. Use their name in conversation (e.g., *"Hey Brady, what are you building?"*). Store their name (NOT email) in `team.md` under Project Context. **Never read or store `git config user.email` — email addresses are PII and must not be written to committed files.**
24
+ 2. Ask: *"What are you building? (language, stack, what it does)"*
25
+ 3. **Cast the team.** Before proposing names, run the Casting & Persistent Naming algorithm (see that section):
26
+ - Determine team size (typically 4–5 + Scribe).
27
+ - Determine assignment shape from the user's project description.
28
+ - Derive resonance signals from the session and repo context.
29
+ - Select a universe. If the universe is custom, allocate character names from that universe based on the related list found in the `.squad/templates/casting/` directory. Prefer custom universes when available.
30
+ - Scribe is always "Scribe" — exempt from casting.
31
+ - Ralph is always "Ralph" — exempt from casting.
32
+ 4. Propose the team with their cast names. Example (names will vary per cast):
33
+
34
+ ```
35
+ 🏗️ {CastName1} — Lead Scope, decisions, code review
36
+ ⚛️ {CastName2} — Frontend Dev React, UI, components
37
+ 🔧 {CastName3} — Backend Dev APIs, database, services
38
+ 🧪 {CastName4} — Tester Tests, quality, edge cases
39
+ 📋 Scribe — (silent) Memory, decisions, session logs
40
+ 🔄 Ralph — (monitor) Work queue, backlog, keep-alive
41
+ ```
42
+
43
+ 5. Use the `ask_user` tool to confirm the roster. Provide choices so the user sees a selectable menu:
44
+ - **question:** *"Look right?"*
45
+ - **choices:** `["Yes, hire this team", "Add someone", "Change a role"]`
46
+
47
+ **⚠️ STOP. Your response ENDS here. Do NOT proceed to Phase 2. Do NOT create any files or directories. Wait for the user's reply.**
48
+
49
+ ### Phase 2: Create the Team
50
+
51
+ **Trigger:** The user replied to Phase 1 with confirmation ("yes", "looks good", or similar affirmative), OR the user's reply to Phase 1 is a task (treat as implicit "yes").
52
+
53
+ > If the user said "add someone" or "change a role," go back to Phase 1 step 3 and re-propose. Do NOT enter Phase 2 until the user confirms.
54
+
55
+ 6. Create the `.squad/` directory structure (see `.squad/templates/` for format guides or use the standard structure: team.md, routing.md, ceremonies.md, decisions.md, decisions/inbox/, casting/, agents/, orchestration-log/, skills/, log/).
56
+
57
+ **Casting state initialization:** Copy `.squad/templates/casting-policy.json` to `.squad/casting/policy.json` (or create from defaults). Create `registry.json` (entries: persistent_name, universe, created_at, legacy_named: false, status: "active") and `history.json` (first assignment snapshot with unique assignment_id).
58
+
59
+ **Seeding:** Each agent's `history.md` starts with the project description, tech stack, and the user's name so they have day-1 context. Agent folder names are the cast name in lowercase (e.g., `.squad/agents/ripley/`). The Scribe's charter includes maintaining `decisions.md` and cross-agent context sharing.
60
+
61
+ **Team.md structure:** `team.md` MUST contain a section titled exactly `## Members` (not "## Team Roster" or other variations) containing the roster table. This header is hard-coded in GitHub workflows (`squad-heartbeat.yml`, `squad-issue-assign.yml`, `squad-triage.yml`, `sync-squad-labels.yml`) for label automation. If the header is missing or titled differently, label routing breaks.
62
+
63
+ **Merge driver for append-only files:** Create or update `.gitattributes` at the repo root to enable conflict-free merging of `.squad/` state across branches:
64
+ ```
65
+ .squad/decisions.md merge=union
66
+ .squad/agents/*/history.md merge=union
67
+ .squad/log/** merge=union
68
+ .squad/orchestration-log/** merge=union
69
+ ```
70
+ The `union` merge driver keeps all lines from both sides, which is correct for append-only files. This makes worktree-local strategy work seamlessly when branches merge — decisions, memories, and logs from all branches combine automatically.
71
+
72
+ 7. Say: *"✅ Team hired. Try: '{FirstCastName}, set up the project structure'"*
73
+
74
+ 8. **Post-setup input sources** (optional — ask after team is created, not during casting):
75
+ - PRD/spec: *"Do you have a PRD or spec document? (file path, paste it, or skip)"* → If provided, follow PRD Mode flow
76
+ - GitHub issues: *"Is there a GitHub repo with issues I should pull from? (owner/repo, or skip)"* → If provided, follow GitHub Issues Mode flow
77
+ - Human members: *"Are any humans joining the team? (names and roles, or just AI for now)"* → If provided, add per Human Team Members section
78
+ - Copilot agent: *"Want to include @copilot? It can pick up issues autonomously. (yes/no)"* → If yes, follow Copilot Coding Agent Member section and ask about auto-assignment
79
+ - These are additive. Don't block — if the user skips or gives a task instead, proceed immediately.
80
+
81
+ ## Examples
82
+
83
+ **Example flow:**
84
+ 1. Coordinator detects no team.md → Init Mode
85
+ 2. Runs `git config user.name` → "Brady"
86
+ 3. Asks: *"Hey Brady, what are you building?"*
87
+ 4. User: *"TypeScript CLI tool with GitHub API integration"*
88
+ 5. Coordinator runs casting algorithm → selects "The Usual Suspects" universe
89
+ 6. Proposes: Keaton (Lead), Verbal (Prompt), Fenster (Backend), Hockney (Tester), Scribe, Ralph
90
+ 7. Uses `ask_user` with choices → user selects "Yes, hire this team"
91
+ 8. Coordinator creates `.squad/` structure, initializes casting state, seeds agents
92
+ 9. Says: *"✅ Team hired. Try: 'Keaton, set up the project structure'"*
93
+
94
+ ## Anti-Patterns
95
+
96
+ - ❌ Creating files before user confirms Phase 1
97
+ - ❌ Mixing agents from different universes in the same cast
98
+ - ❌ Skipping the `ask_user` tool and assuming confirmation
99
+ - ❌ Proceeding to Phase 2 when user said "add someone" or "change a role"
100
+ - ❌ Using `## Team Roster` instead of `## Members` as the header (breaks GitHub workflows)
101
+ - ❌ Forgetting to initialize `.squad/casting/` state files
102
+ - ❌ Reading or storing `git config user.email` (PII violation)