@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.
- package/README.md +296 -296
- package/dist/agents/history-shadow.js +30 -30
- package/dist/build/github-dist.js +42 -42
- package/dist/config/init.js +173 -173
- package/dist/sharing/consult.js +78 -78
- package/package.json +1 -1
- package/templates/casting/Futurama.json +9 -9
- package/templates/casting-history.json +4 -4
- package/templates/casting-policy.json +37 -37
- package/templates/casting-reference.md +104 -104
- package/templates/casting-registry.json +3 -3
- package/templates/ceremonies.md +41 -41
- package/templates/charter.md +53 -53
- package/templates/constraint-tracking.md +38 -38
- package/templates/cooperative-rate-limiting.md +229 -229
- package/templates/copilot-instructions.md +46 -46
- package/templates/history.md +10 -10
- package/templates/identity/now.md +9 -9
- package/templates/identity/wisdom.md +15 -15
- package/templates/issue-lifecycle.md +412 -412
- package/templates/keda-scaler.md +164 -164
- package/templates/machine-capabilities.md +74 -74
- package/templates/mcp-config.md +90 -90
- package/templates/multi-agent-format.md +28 -28
- package/templates/plugin-marketplace.md +49 -49
- package/templates/ralph-circuit-breaker.md +313 -313
- package/templates/raw-agent-output.md +37 -37
- package/templates/roster.md +60 -60
- package/templates/routing.md +39 -39
- package/templates/run-output.md +50 -50
- package/templates/schedule.json +19 -19
- package/templates/scribe-charter.md +119 -119
- package/templates/skill.md +24 -24
- package/templates/skills/agent-collaboration/SKILL.md +42 -42
- package/templates/skills/agent-conduct/SKILL.md +24 -24
- package/templates/skills/architectural-proposals/SKILL.md +151 -151
- package/templates/skills/ci-validation-gates/SKILL.md +84 -84
- package/templates/skills/cli-wiring/SKILL.md +47 -47
- package/templates/skills/client-compatibility/SKILL.md +89 -89
- package/templates/skills/cross-squad/SKILL.md +114 -114
- package/templates/skills/distributed-mesh/SKILL.md +287 -287
- package/templates/skills/distributed-mesh/mesh.json.example +30 -30
- package/templates/skills/distributed-mesh/sync-mesh.ps1 +111 -111
- package/templates/skills/distributed-mesh/sync-mesh.sh +104 -104
- package/templates/skills/docs-standards/SKILL.md +71 -71
- package/templates/skills/economy-mode/SKILL.md +114 -114
- package/templates/skills/external-comms/SKILL.md +329 -329
- package/templates/skills/gh-auth-isolation/SKILL.md +183 -183
- package/templates/skills/git-workflow/SKILL.md +204 -204
- package/templates/skills/github-multi-account/SKILL.md +95 -95
- package/templates/skills/history-hygiene/SKILL.md +36 -36
- package/templates/skills/humanizer/SKILL.md +105 -105
- package/templates/skills/init-mode/SKILL.md +102 -102
- package/templates/skills/model-selection/SKILL.md +117 -117
- package/templates/skills/nap/SKILL.md +24 -24
- package/templates/skills/personal-squad/SKILL.md +57 -57
- package/templates/skills/project-conventions/SKILL.md +56 -56
- package/templates/skills/release-process/SKILL.md +423 -423
- package/templates/skills/reskill/SKILL.md +92 -92
- package/templates/skills/reviewer-protocol/SKILL.md +79 -79
- package/templates/skills/secret-handling/SKILL.md +200 -200
- package/templates/skills/session-recovery/SKILL.md +155 -155
- package/templates/skills/squad-conventions/SKILL.md +69 -69
- package/templates/skills/test-discipline/SKILL.md +37 -37
- package/templates/skills/windows-compatibility/SKILL.md +74 -74
- package/templates/workflows/squad-ci.yml +24 -24
- package/templates/workflows/squad-docs.yml +54 -54
- package/templates/workflows/squad-heartbeat.yml +171 -171
- package/templates/workflows/squad-insider-release.yml +61 -61
- package/templates/workflows/squad-issue-assign.yml +161 -161
- package/templates/workflows/squad-label-enforce.yml +181 -181
- package/templates/workflows/squad-preview.yml +55 -55
- package/templates/workflows/squad-promote.yml +120 -120
- package/templates/workflows/squad-release.yml +77 -77
- package/templates/workflows/squad-triage.yml +260 -260
- 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)
|