You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit a4d8331
Browse filesBrowse the repository at this point in the historyBrowse files
fix(plugin): ship an icon; restore the human-members template (#2493)
* fix(plugin): ship an icon; restore the human-members template
- plugins/squad/.claude-plugin/icon.png: the Squad logo at 512 px, the one
remaining `claude plugin validate` warning. The build script copies static
files named by CLAUDE_PLUGIN_STATIC_FILES and checks them byte for byte;
images are marked binary so the plugins/** LF rule never rewrites them.
- .squad-templates/human-members.md: listed in the template index but
missing since the #2030 recast. Restored, with the sign-off gate wording
from the coordinator digest.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix(gitattributes): unset eol for images so the shebang lint skips the icon
`binary` turns off text handling but keeps eol=lf from the plugins/** rule,
which the shebang EOL lint reads, so it flagged the PNG as a CRLF blob.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The Claude Code plugin ships an icon, so `claude plugin validate` reports no warnings, and `.squad/templates/human-members.md`, listed in the template index but missing, ships again with the human sign-off gate.
Reference for adding human team members to the Squad roster.
4
+
5
+
## Triggers
6
+
7
+
The coordinator enters the human-member flow when:
8
+
9
+
- User says **"add {name} as {role}"** or **"add a human for {domain}"**
10
+
- User says **"make {name} a reviewer"**
11
+
- Routing detects a human member as the target for work
12
+
13
+
## Comparison: AI Agent vs. Human Member
14
+
15
+
|| AI Agent | Human Member |
16
+
|---|----------|-------------|
17
+
| Badge | Role-specific emoji | 👤 Human |
18
+
| Charter | ✅ | ❌ |
19
+
| History | ✅ | ❌ |
20
+
| Spawned as sub-agent | ✅ | ❌ |
21
+
| Can review work | ✅ | ✅ |
22
+
| Casting (fictional name) | ✅ | ❌ (real name) |
23
+
24
+
## Adding a Human Member
25
+
26
+
Follow these steps:
27
+
28
+
1.**Use real name** — no casting. Badge: 👤 Human.
29
+
2.**Add to team.md roster:**
30
+
```markdown
31
+
| {Name} | {Role} | — | 👤 Human |
32
+
```
33
+
3.**Add routing entries to routing.md:**
34
+
```markdown
35
+
| {domain} | {Name} 👤 | {example tasks} |
36
+
```
37
+
4.**Do not create**`charter.md` or `history.md` for humans.
38
+
5.**Do not add** to casting registry.
39
+
40
+
## Routing to a Human
41
+
42
+
When work routes to a human member, the coordinator pauses. It never does that work itself or hands it to an AI member.
43
+
44
+
**Sign-off gates.** When `team.md`, `routing.md` or a decision says a human must approve or sign off on a kind of work (a release, version bump, tag, publish, merge or deploy), a request to do that work is not the sign-off. Before any gated step the coordinator names the rule and the human, asks whether the user is that human or has their explicit sign-off, proceeds only on an explicit yes, and records it in the decisions inbox. In a non-interactive run it stops at the gate and reports what is waiting and for whom.
45
+
46
+
47
+
1.**Present the work to the user:**
48
+
```
49
+
"{Name} needs to review this. [Context about what needs review]"
50
+
```
51
+
2.**Non-dependent work continues immediately** — other agents proceed with unrelated tasks.
52
+
3.**Stale reminder** after >1 turn without response:
53
+
```
54
+
"📌 Still waiting on {Name} for {thing}."
55
+
```
56
+
57
+
## Reviewing as a Human
58
+
59
+
- Humans can serve as reviewers in the review process.
60
+
-**Rejection lockout applies normally** — original author is locked out when reviewer rejects.
61
+
- User relays the human's verdict to the coordinator ("approved" or "rejected with changes").
62
+
63
+
## Decision Framework: When to Add a Human Member
64
+
65
+
| Scenario | Add to roster? | Why |
66
+
|----------|---------------|-----|
67
+
| Approves architecture decisions before implementation | ✅ Yes | Decision gate — team routes and waits |
68
+
| Reviews all docs PRs as standing reviewer | ✅ Yes | Recurring review gate |
69
+
| Occasionally reviews PRs when tagged | ❌ No | Use @mention on the PR |
70
+
| Files issues and contributes code | ❌ No | Normal GitHub collaboration |
71
+
| Makes final ship/no-ship call | ✅ Yes | Approval gate |
72
+
73
+
**Litmus test:** If you want agents to *stop and wait* for someone's input before proceeding on a specific type of work, add them. If they review asynchronously via GitHub, don't bother.
74
+
75
+
**Who is driving:**`git config user.name` tells the team who is probably at the keyboard. It is a hint, not a sign-off: for a gated step the coordinator still asks. Adding yourself to the roster is optional; it formalizes routing and tracking.
76
+
77
+
## Removing a Human
78
+
79
+
Same as removing any member:
80
+
81
+
1. Move entry to alumni section in team.md.
82
+
2. Remove from active roster.
83
+
3. Update routing.md to remove all routing entries.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -80,6 +80,8 @@ Claude Code is the first host after GitHub Copilot where Squad uses the host's o
80
80
-`squad doctor` flags machine-specific launch commands and a missing launcher. Run `squad upgrade` once to fix an existing repository.
81
81
-**Coordinators wait for a human's sign-off.** When `team.md` or `routing.md` says a human must sign off on work (a release, tag, publish, merge or deploy), the Claude, Kiro, OpenCode, Cursor, Codex and Antigravity coordinators no longer treat the request itself as the sign-off. They name the rule and the human, ask whether you are that human or have their sign-off, go ahead only on an explicit yes, and record it in the decisions inbox. In a non-interactive run they stop at the gate. Seen in a live test: asked to "cut the 1.0.0 release", the Claude coordinator used to bump, tag and run `npm publish` itself.
82
82
-`squad_state` works when the team folder is reached through a symlink, such as macOS `/tmp` (really `/private/tmp`) or a linked team root. Squad stores the folder's resolved path but was given paths in the original spelling, so it refused reads and writes there with "Path traversal blocked". Paths that really leave the team folder, including through a symlink inside it, are still refused.
83
+
- The Claude Code plugin has an icon (the Squad logo, 512 px), so `claude plugin validate` reports no warnings. Images are marked binary in `.gitattributes`, so the plugin folder's LF rule never rewrites them.
84
+
-`.squad/templates/human-members.md` ships again. The template index listed it, but it had been missing since 2025. It describes adding a human to the roster and now includes the sign-off gate: a request to do gated work is not the sign-off.
83
85
-`squad doctor` no longer fails the `squad_state` bridge check when the team folder has two spellings, such as macOS `/var` and `/private/var`. It compares the real paths.
84
86
- When `squad_state` is unavailable and `.squad/config.json` sets a non-local `stateBackend`, the non-Copilot coordinators stop and say so instead of writing `.squad/decisions.md` directly, which that backend never reads. Seen in a live test with `two-layer`.
85
87
-`squad init --client claude` tells you to run `claude --agent squad --mcp-config .mcp.json`, not Copilot. With several hosts it gives one line per host (#2453).
Reference for adding human team members to the Squad roster.
4
+
5
+
## Triggers
6
+
7
+
The coordinator enters the human-member flow when:
8
+
9
+
- User says **"add {name} as {role}"** or **"add a human for {domain}"**
10
+
- User says **"make {name} a reviewer"**
11
+
- Routing detects a human member as the target for work
12
+
13
+
## Comparison: AI Agent vs. Human Member
14
+
15
+
|| AI Agent | Human Member |
16
+
|---|----------|-------------|
17
+
| Badge | Role-specific emoji | 👤 Human |
18
+
| Charter | ✅ | ❌ |
19
+
| History | ✅ | ❌ |
20
+
| Spawned as sub-agent | ✅ | ❌ |
21
+
| Can review work | ✅ | ✅ |
22
+
| Casting (fictional name) | ✅ | ❌ (real name) |
23
+
24
+
## Adding a Human Member
25
+
26
+
Follow these steps:
27
+
28
+
1.**Use real name** — no casting. Badge: 👤 Human.
29
+
2.**Add to team.md roster:**
30
+
```markdown
31
+
| {Name} | {Role} | — | 👤 Human |
32
+
```
33
+
3.**Add routing entries to routing.md:**
34
+
```markdown
35
+
| {domain} | {Name} 👤 | {example tasks} |
36
+
```
37
+
4.**Do not create**`charter.md` or `history.md` for humans.
38
+
5.**Do not add** to casting registry.
39
+
40
+
## Routing to a Human
41
+
42
+
When work routes to a human member, the coordinator pauses. It never does that work itself or hands it to an AI member.
43
+
44
+
**Sign-off gates.** When `team.md`, `routing.md` or a decision says a human must approve or sign off on a kind of work (a release, version bump, tag, publish, merge or deploy), a request to do that work is not the sign-off. Before any gated step the coordinator names the rule and the human, asks whether the user is that human or has their explicit sign-off, proceeds only on an explicit yes, and records it in the decisions inbox. In a non-interactive run it stops at the gate and reports what is waiting and for whom.
45
+
46
+
47
+
1.**Present the work to the user:**
48
+
```
49
+
"{Name} needs to review this. [Context about what needs review]"
50
+
```
51
+
2.**Non-dependent work continues immediately** — other agents proceed with unrelated tasks.
52
+
3.**Stale reminder** after >1 turn without response:
53
+
```
54
+
"📌 Still waiting on {Name} for {thing}."
55
+
```
56
+
57
+
## Reviewing as a Human
58
+
59
+
- Humans can serve as reviewers in the review process.
60
+
-**Rejection lockout applies normally** — original author is locked out when reviewer rejects.
61
+
- User relays the human's verdict to the coordinator ("approved" or "rejected with changes").
62
+
63
+
## Decision Framework: When to Add a Human Member
64
+
65
+
| Scenario | Add to roster? | Why |
66
+
|----------|---------------|-----|
67
+
| Approves architecture decisions before implementation | ✅ Yes | Decision gate — team routes and waits |
68
+
| Reviews all docs PRs as standing reviewer | ✅ Yes | Recurring review gate |
69
+
| Occasionally reviews PRs when tagged | ❌ No | Use @mention on the PR |
70
+
| Files issues and contributes code | ❌ No | Normal GitHub collaboration |
71
+
| Makes final ship/no-ship call | ✅ Yes | Approval gate |
72
+
73
+
**Litmus test:** If you want agents to *stop and wait* for someone's input before proceeding on a specific type of work, add them. If they review asynchronously via GitHub, don't bother.
74
+
75
+
**Who is driving:**`git config user.name` tells the team who is probably at the keyboard. It is a hint, not a sign-off: for a gated step the coordinator still asks. Adding yourself to the roster is optional; it formalizes routing and tracking.
76
+
77
+
## Removing a Human
78
+
79
+
Same as removing any member:
80
+
81
+
1. Move entry to alumni section in team.md.
82
+
2. Remove from active roster.
83
+
3. Update routing.md to remove all routing entries.
Reference for adding human team members to the Squad roster.
4
+
5
+
## Triggers
6
+
7
+
The coordinator enters the human-member flow when:
8
+
9
+
- User says **"add {name} as {role}"** or **"add a human for {domain}"**
10
+
- User says **"make {name} a reviewer"**
11
+
- Routing detects a human member as the target for work
12
+
13
+
## Comparison: AI Agent vs. Human Member
14
+
15
+
|| AI Agent | Human Member |
16
+
|---|----------|-------------|
17
+
| Badge | Role-specific emoji | 👤 Human |
18
+
| Charter | ✅ | ❌ |
19
+
| History | ✅ | ❌ |
20
+
| Spawned as sub-agent | ✅ | ❌ |
21
+
| Can review work | ✅ | ✅ |
22
+
| Casting (fictional name) | ✅ | ❌ (real name) |
23
+
24
+
## Adding a Human Member
25
+
26
+
Follow these steps:
27
+
28
+
1.**Use real name** — no casting. Badge: 👤 Human.
29
+
2.**Add to team.md roster:**
30
+
```markdown
31
+
| {Name} | {Role} | — | 👤 Human |
32
+
```
33
+
3.**Add routing entries to routing.md:**
34
+
```markdown
35
+
| {domain} | {Name} 👤 | {example tasks} |
36
+
```
37
+
4.**Do not create**`charter.md` or `history.md` for humans.
38
+
5.**Do not add** to casting registry.
39
+
40
+
## Routing to a Human
41
+
42
+
When work routes to a human member, the coordinator pauses. It never does that work itself or hands it to an AI member.
43
+
44
+
**Sign-off gates.** When `team.md`, `routing.md` or a decision says a human must approve or sign off on a kind of work (a release, version bump, tag, publish, merge or deploy), a request to do that work is not the sign-off. Before any gated step the coordinator names the rule and the human, asks whether the user is that human or has their explicit sign-off, proceeds only on an explicit yes, and records it in the decisions inbox. In a non-interactive run it stops at the gate and reports what is waiting and for whom.
45
+
46
+
47
+
1.**Present the work to the user:**
48
+
```
49
+
"{Name} needs to review this. [Context about what needs review]"
50
+
```
51
+
2.**Non-dependent work continues immediately** — other agents proceed with unrelated tasks.
52
+
3.**Stale reminder** after >1 turn without response:
53
+
```
54
+
"📌 Still waiting on {Name} for {thing}."
55
+
```
56
+
57
+
## Reviewing as a Human
58
+
59
+
- Humans can serve as reviewers in the review process.
60
+
-**Rejection lockout applies normally** — original author is locked out when reviewer rejects.
61
+
- User relays the human's verdict to the coordinator ("approved" or "rejected with changes").
62
+
63
+
## Decision Framework: When to Add a Human Member
64
+
65
+
| Scenario | Add to roster? | Why |
66
+
|----------|---------------|-----|
67
+
| Approves architecture decisions before implementation | ✅ Yes | Decision gate — team routes and waits |
68
+
| Reviews all docs PRs as standing reviewer | ✅ Yes | Recurring review gate |
69
+
| Occasionally reviews PRs when tagged | ❌ No | Use @mention on the PR |
70
+
| Files issues and contributes code | ❌ No | Normal GitHub collaboration |
71
+
| Makes final ship/no-ship call | ✅ Yes | Approval gate |
72
+
73
+
**Litmus test:** If you want agents to *stop and wait* for someone's input before proceeding on a specific type of work, add them. If they review asynchronously via GitHub, don't bother.
74
+
75
+
**Who is driving:**`git config user.name` tells the team who is probably at the keyboard. It is a hint, not a sign-off: for a gated step the coordinator still asks. Adding yourself to the roster is optional; it formalizes routing and tracking.
76
+
77
+
## Removing a Human
78
+
79
+
Same as removing any member:
80
+
81
+
1. Move entry to alumni section in team.md.
82
+
2. Remove from active roster.
83
+
3. Update routing.md to remove all routing entries.
`build-claude-plugin: wrote ${files.length} files to ${CLAUDE_PLUGIN_SOURCE_DIR} (${changed.length} changed, ${stale.length} removed), version ${version}.`,
107
+
`build-claude-plugin: wrote ${files.length+statics.length} files to ${CLAUDE_PLUGIN_SOURCE_DIR} (${changed.length} changed, ${stale.length} removed), version ${version}.`,
0 commit comments