@bradygaster/squad-cli 0.9.2-insider.6 → 0.9.4-insider.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 +33 -0
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +27 -5
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/externalize.d.ts +27 -0
- package/dist/cli/commands/externalize.d.ts.map +1 -0
- package/dist/cli/commands/externalize.js +207 -0
- package/dist/cli/commands/externalize.js.map +1 -0
- package/dist/cli/commands/loop.d.ts +56 -0
- package/dist/cli/commands/loop.d.ts.map +1 -0
- package/dist/cli/commands/loop.js +352 -0
- package/dist/cli/commands/loop.js.map +1 -0
- package/dist/cli/commands/migrate.js +2 -2
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/rc.js +2 -2
- package/dist/cli/commands/rc.js.map +1 -1
- package/dist/cli/commands/watch/capabilities/cleanup.d.ts +18 -0
- package/dist/cli/commands/watch/capabilities/cleanup.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/cleanup.js +135 -0
- package/dist/cli/commands/watch/capabilities/cleanup.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/execute.d.ts +15 -3
- package/dist/cli/commands/watch/capabilities/execute.d.ts.map +1 -1
- package/dist/cli/commands/watch/capabilities/execute.js +106 -86
- package/dist/cli/commands/watch/capabilities/execute.js.map +1 -1
- package/dist/cli/commands/watch/capabilities/fleet-dispatch.d.ts +20 -0
- package/dist/cli/commands/watch/capabilities/fleet-dispatch.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/fleet-dispatch.js +144 -0
- package/dist/cli/commands/watch/capabilities/fleet-dispatch.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/index.d.ts +0 -2
- package/dist/cli/commands/watch/capabilities/index.d.ts.map +1 -1
- package/dist/cli/commands/watch/capabilities/index.js +4 -12
- package/dist/cli/commands/watch/capabilities/index.js.map +1 -1
- package/dist/cli/commands/watch/capabilities/self-pull.d.ts +4 -1
- package/dist/cli/commands/watch/capabilities/self-pull.d.ts.map +1 -1
- package/dist/cli/commands/watch/capabilities/self-pull.js +53 -5
- package/dist/cli/commands/watch/capabilities/self-pull.js.map +1 -1
- package/dist/cli/commands/watch/config.d.ts +10 -15
- package/dist/cli/commands/watch/config.d.ts.map +1 -1
- package/dist/cli/commands/watch/config.js +14 -47
- package/dist/cli/commands/watch/config.js.map +1 -1
- package/dist/cli/commands/watch/health.d.ts +41 -0
- package/dist/cli/commands/watch/health.d.ts.map +1 -0
- package/dist/cli/commands/watch/health.js +141 -0
- package/dist/cli/commands/watch/health.js.map +1 -0
- package/dist/cli/commands/watch/index.d.ts +9 -16
- package/dist/cli/commands/watch/index.d.ts.map +1 -1
- package/dist/cli/commands/watch/index.js +117 -63
- package/dist/cli/commands/watch/index.js.map +1 -1
- package/dist/cli/commands/watch/types.d.ts +2 -0
- package/dist/cli/commands/watch/types.d.ts.map +1 -1
- package/dist/cli/commands/watch/verbose.d.ts +12 -0
- package/dist/cli/commands/watch/verbose.d.ts.map +1 -0
- package/dist/cli/commands/watch/verbose.js +28 -0
- package/dist/cli/commands/watch/verbose.js.map +1 -0
- package/dist/cli/core/detect-squad-dir.d.ts.map +1 -1
- package/dist/cli/core/detect-squad-dir.js +9 -12
- package/dist/cli/core/detect-squad-dir.js.map +1 -1
- package/dist/cli/core/email-scrub.js +2 -2
- package/dist/cli/core/email-scrub.js.map +1 -1
- package/dist/cli/core/init.d.ts.map +1 -1
- package/dist/cli/core/init.js +4 -1
- package/dist/cli/core/init.js.map +1 -1
- package/dist/cli/core/migrations.js +1 -1
- package/dist/cli/core/migrations.js.map +1 -1
- package/dist/cli/core/nap.js +2 -2
- package/dist/cli/core/nap.js.map +1 -1
- package/dist/cli/core/project-type.js +1 -1
- package/dist/cli/core/project-type.js.map +1 -1
- package/dist/cli/core/templates.d.ts.map +1 -1
- package/dist/cli/core/templates.js +48 -0
- package/dist/cli/core/templates.js.map +1 -1
- package/dist/cli/core/upgrade.d.ts +20 -0
- package/dist/cli/core/upgrade.d.ts.map +1 -1
- package/dist/cli/core/upgrade.js +141 -15
- package/dist/cli/core/upgrade.js.map +1 -1
- package/dist/cli/shell/session-store.js +2 -2
- package/dist/cli/shell/session-store.js.map +1 -1
- package/dist/cli-entry.js +201 -89
- package/dist/cli-entry.js.map +1 -1
- package/package.json +6 -2
- package/templates/casting-reference.md +104 -104
- package/templates/ceremonies.md +28 -0
- package/templates/fact-checker-charter.md +83 -0
- package/templates/issue-lifecycle.md +2 -1
- package/templates/loop.md +46 -0
- package/templates/ralph-triage.js +3 -1
- package/templates/scribe-charter.md +20 -1
- package/templates/skills/external-comms/SKILL.md +329 -329
- package/templates/skills/gh-auth-isolation/SKILL.md +183 -183
- package/templates/skills/humanizer/SKILL.md +105 -105
- package/templates/skills/pr-review-response/SKILL.md +268 -0
- package/templates/skills/pr-screenshots/SKILL.md +149 -149
- package/templates/skills/versioning-policy/SKILL.md +119 -0
- package/templates/squad.agent.md.template +9 -7
- package/templates/workflows/squad-triage.yml +4 -2
- package/templates/workflows/sync-squad-labels.yml +3 -1
- package/dist/cli/commands/watch/capabilities/budget-check.d.ts +0 -29
- package/dist/cli/commands/watch/capabilities/budget-check.d.ts.map +0 -1
- package/dist/cli/commands/watch/capabilities/budget-check.js +0 -38
- package/dist/cli/commands/watch/capabilities/budget-check.js.map +0 -1
- package/dist/cli/commands/watch/capabilities/circuit-breaker.d.ts +0 -52
- package/dist/cli/commands/watch/capabilities/circuit-breaker.d.ts.map +0 -1
- package/dist/cli/commands/watch/capabilities/circuit-breaker.js +0 -152
- package/dist/cli/commands/watch/capabilities/circuit-breaker.js.map +0 -1
- package/dist/cli/commands/watch/capabilities/health-check.d.ts +0 -29
- package/dist/cli/commands/watch/capabilities/health-check.d.ts.map +0 -1
- package/dist/cli/commands/watch/capabilities/health-check.js +0 -139
- package/dist/cli/commands/watch/capabilities/health-check.js.map +0 -1
- package/dist/cli/commands/watch/capabilities/heartbeat.d.ts +0 -48
- package/dist/cli/commands/watch/capabilities/heartbeat.d.ts.map +0 -1
- package/dist/cli/commands/watch/capabilities/heartbeat.js +0 -115
- package/dist/cli/commands/watch/capabilities/heartbeat.js.map +0 -1
- package/dist/cli/commands/watch/capabilities/lockfile.d.ts +0 -30
- package/dist/cli/commands/watch/capabilities/lockfile.d.ts.map +0 -1
- package/dist/cli/commands/watch/capabilities/lockfile.js +0 -100
- package/dist/cli/commands/watch/capabilities/lockfile.js.map +0 -1
- package/dist/cli/commands/watch/capabilities/machine-capabilities.d.ts +0 -30
- package/dist/cli/commands/watch/capabilities/machine-capabilities.d.ts.map +0 -1
- package/dist/cli/commands/watch/capabilities/machine-capabilities.js +0 -103
- package/dist/cli/commands/watch/capabilities/machine-capabilities.js.map +0 -1
- package/dist/cli/commands/watch/capabilities/post-failure.d.ts +0 -19
- package/dist/cli/commands/watch/capabilities/post-failure.d.ts.map +0 -1
- package/dist/cli/commands/watch/capabilities/post-failure.js +0 -58
- package/dist/cli/commands/watch/capabilities/post-failure.js.map +0 -1
- package/dist/cli/commands/watch/capabilities/priority.d.ts +0 -59
- package/dist/cli/commands/watch/capabilities/priority.d.ts.map +0 -1
- package/dist/cli/commands/watch/capabilities/priority.js +0 -101
- package/dist/cli/commands/watch/capabilities/priority.js.map +0 -1
- package/dist/cli/commands/watch/capabilities/rate-pool.d.ts +0 -67
- package/dist/cli/commands/watch/capabilities/rate-pool.d.ts.map +0 -1
- package/dist/cli/commands/watch/capabilities/rate-pool.js +0 -187
- package/dist/cli/commands/watch/capabilities/rate-pool.js.map +0 -1
- package/dist/cli/commands/watch/capabilities/stale-reclaim.d.ts +0 -23
- package/dist/cli/commands/watch/capabilities/stale-reclaim.d.ts.map +0 -1
- package/dist/cli/commands/watch/capabilities/stale-reclaim.js +0 -87
- package/dist/cli/commands/watch/capabilities/stale-reclaim.js.map +0 -1
- package/dist/cli/commands/watch/capabilities/webhook-alerts.d.ts +0 -29
- package/dist/cli/commands/watch/capabilities/webhook-alerts.d.ts.map +0 -1
- package/dist/cli/commands/watch/capabilities/webhook-alerts.js +0 -114
- package/dist/cli/commands/watch/capabilities/webhook-alerts.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bradygaster/squad-cli",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.4-insider.1",
|
|
4
4
|
"description": "Squad CLI — Command-line interface for the Squad multi-agent runtime",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -124,6 +124,10 @@
|
|
|
124
124
|
"types": "./dist/cli/commands/watch/index.d.ts",
|
|
125
125
|
"import": "./dist/cli/commands/watch/index.js"
|
|
126
126
|
},
|
|
127
|
+
"./commands/watch/health": {
|
|
128
|
+
"types": "./dist/cli/commands/watch/health.d.ts",
|
|
129
|
+
"import": "./dist/cli/commands/watch/health.js"
|
|
130
|
+
},
|
|
127
131
|
"./commands/start": {
|
|
128
132
|
"types": "./dist/cli/commands/start.d.ts",
|
|
129
133
|
"import": "./dist/cli/commands/start.js"
|
|
@@ -177,7 +181,7 @@
|
|
|
177
181
|
"node": ">=22.5.0"
|
|
178
182
|
},
|
|
179
183
|
"dependencies": {
|
|
180
|
-
"@bradygaster/squad-sdk": "
|
|
184
|
+
"@bradygaster/squad-sdk": "0.9.4-insider.1",
|
|
181
185
|
"ink": "^6.8.0",
|
|
182
186
|
"react": "^19.2.4",
|
|
183
187
|
"vscode-jsonrpc": "^8.2.1"
|
|
@@ -1,104 +1,104 @@
|
|
|
1
|
-
# Casting Reference
|
|
2
|
-
|
|
3
|
-
On-demand reference for Squad's casting system. Loaded during Init Mode or when adding team members.
|
|
4
|
-
|
|
5
|
-
## Universe Table
|
|
6
|
-
|
|
7
|
-
| Universe | Capacity | Shape Tags | Resonance Signals |
|
|
8
|
-
|---|---|---|---|
|
|
9
|
-
| The Usual Suspects | 6 | small, noir, ensemble | crime, heist, mystery, deception |
|
|
10
|
-
| Reservoir Dogs | 8 | small, noir, ensemble | crime, heist, tension, loyalty |
|
|
11
|
-
| Alien | 8 | small, sci-fi, survival | space, isolation, threat, engineering |
|
|
12
|
-
| Ocean's Eleven | 14 | medium, heist, ensemble | planning, coordination, roles, charm |
|
|
13
|
-
| Arrested Development | 15 | medium, comedy, ensemble | dysfunction, business, family, satire |
|
|
14
|
-
| Star Wars | 12 | medium, sci-fi, epic | conflict, mentorship, legacy, rebellion |
|
|
15
|
-
| The Matrix | 10 | medium, sci-fi, cyberpunk | systems, reality, hacking, philosophy |
|
|
16
|
-
| Firefly | 10 | medium, sci-fi, western | frontier, crew, independence, smuggling |
|
|
17
|
-
| The Goonies | 8 | small, adventure, ensemble | exploration, treasure, kids, teamwork |
|
|
18
|
-
| The Simpsons | 20 | large, comedy, ensemble | satire, community, family, absurdity |
|
|
19
|
-
| Breaking Bad | 12 | medium, drama, tension | chemistry, transformation, consequence, power |
|
|
20
|
-
| Lost | 18 | large, mystery, ensemble | survival, mystery, groups, leadership |
|
|
21
|
-
| Marvel Cinematic Universe | 25 | large, action, ensemble | heroism, teamwork, powers, scale |
|
|
22
|
-
| DC Universe | 18 | large, action, ensemble | justice, duality, powers, mythology |
|
|
23
|
-
| Futurama | 12 | medium, sci-fi, comedy | future, robots, space, absurdity |
|
|
24
|
-
|
|
25
|
-
**Total: 15 universes** — capacity range 6–25.
|
|
26
|
-
|
|
27
|
-
## Selection Algorithm
|
|
28
|
-
|
|
29
|
-
Universe selection is deterministic. Score each universe and pick the highest:
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
score = size_fit + shape_fit + resonance_fit + LRU
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
| Factor | Description |
|
|
36
|
-
|---|---|
|
|
37
|
-
| `size_fit` | How well the universe capacity matches the team size. Prefer universes where capacity ≥ agent_count with minimal waste. |
|
|
38
|
-
| `shape_fit` | Match universe shape tags against the assignment shape derived from the project description. |
|
|
39
|
-
| `resonance_fit` | Match universe resonance signals against session and repo context signals. |
|
|
40
|
-
| `LRU` | Least-recently-used bonus — prefer universes not used in recent assignments (from `history.json`). |
|
|
41
|
-
|
|
42
|
-
Same inputs → same choice (unless LRU changes between assignments).
|
|
43
|
-
|
|
44
|
-
## Casting State File Schemas
|
|
45
|
-
|
|
46
|
-
### policy.json
|
|
47
|
-
|
|
48
|
-
Source template: `.squad/templates/casting-policy.json`
|
|
49
|
-
Runtime location: `.squad/casting/policy.json`
|
|
50
|
-
|
|
51
|
-
```json
|
|
52
|
-
{
|
|
53
|
-
"casting_policy_version": "1.1",
|
|
54
|
-
"allowlist_universes": ["Universe Name", "..."],
|
|
55
|
-
"universe_capacity": {
|
|
56
|
-
"Universe Name": 10
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### registry.json
|
|
62
|
-
|
|
63
|
-
Source template: `.squad/templates/casting-registry.json`
|
|
64
|
-
Runtime location: `.squad/casting/registry.json`
|
|
65
|
-
|
|
66
|
-
```json
|
|
67
|
-
{
|
|
68
|
-
"agents": {
|
|
69
|
-
"agent-role-id": {
|
|
70
|
-
"persistent_name": "CharacterName",
|
|
71
|
-
"universe": "Universe Name",
|
|
72
|
-
"created_at": "ISO-8601",
|
|
73
|
-
"legacy_named": false,
|
|
74
|
-
"status": "active"
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### history.json
|
|
81
|
-
|
|
82
|
-
Source template: `.squad/templates/casting-history.json`
|
|
83
|
-
Runtime location: `.squad/casting/history.json`
|
|
84
|
-
|
|
85
|
-
```json
|
|
86
|
-
{
|
|
87
|
-
"universe_usage_history": [
|
|
88
|
-
{
|
|
89
|
-
"universe": "Universe Name",
|
|
90
|
-
"assignment_id": "unique-id",
|
|
91
|
-
"used_at": "ISO-8601"
|
|
92
|
-
}
|
|
93
|
-
],
|
|
94
|
-
"assignment_cast_snapshots": {
|
|
95
|
-
"assignment-id": {
|
|
96
|
-
"universe": "Universe Name",
|
|
97
|
-
"agents": {
|
|
98
|
-
"role-id": "CharacterName"
|
|
99
|
-
},
|
|
100
|
-
"created_at": "ISO-8601"
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
```
|
|
1
|
+
# Casting Reference
|
|
2
|
+
|
|
3
|
+
On-demand reference for Squad's casting system. Loaded during Init Mode or when adding team members.
|
|
4
|
+
|
|
5
|
+
## Universe Table
|
|
6
|
+
|
|
7
|
+
| Universe | Capacity | Shape Tags | Resonance Signals |
|
|
8
|
+
|---|---|---|---|
|
|
9
|
+
| The Usual Suspects | 6 | small, noir, ensemble | crime, heist, mystery, deception |
|
|
10
|
+
| Reservoir Dogs | 8 | small, noir, ensemble | crime, heist, tension, loyalty |
|
|
11
|
+
| Alien | 8 | small, sci-fi, survival | space, isolation, threat, engineering |
|
|
12
|
+
| Ocean's Eleven | 14 | medium, heist, ensemble | planning, coordination, roles, charm |
|
|
13
|
+
| Arrested Development | 15 | medium, comedy, ensemble | dysfunction, business, family, satire |
|
|
14
|
+
| Star Wars | 12 | medium, sci-fi, epic | conflict, mentorship, legacy, rebellion |
|
|
15
|
+
| The Matrix | 10 | medium, sci-fi, cyberpunk | systems, reality, hacking, philosophy |
|
|
16
|
+
| Firefly | 10 | medium, sci-fi, western | frontier, crew, independence, smuggling |
|
|
17
|
+
| The Goonies | 8 | small, adventure, ensemble | exploration, treasure, kids, teamwork |
|
|
18
|
+
| The Simpsons | 20 | large, comedy, ensemble | satire, community, family, absurdity |
|
|
19
|
+
| Breaking Bad | 12 | medium, drama, tension | chemistry, transformation, consequence, power |
|
|
20
|
+
| Lost | 18 | large, mystery, ensemble | survival, mystery, groups, leadership |
|
|
21
|
+
| Marvel Cinematic Universe | 25 | large, action, ensemble | heroism, teamwork, powers, scale |
|
|
22
|
+
| DC Universe | 18 | large, action, ensemble | justice, duality, powers, mythology |
|
|
23
|
+
| Futurama | 12 | medium, sci-fi, comedy | future, robots, space, absurdity |
|
|
24
|
+
|
|
25
|
+
**Total: 15 universes** — capacity range 6–25.
|
|
26
|
+
|
|
27
|
+
## Selection Algorithm
|
|
28
|
+
|
|
29
|
+
Universe selection is deterministic. Score each universe and pick the highest:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
score = size_fit + shape_fit + resonance_fit + LRU
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
| Factor | Description |
|
|
36
|
+
|---|---|
|
|
37
|
+
| `size_fit` | How well the universe capacity matches the team size. Prefer universes where capacity ≥ agent_count with minimal waste. |
|
|
38
|
+
| `shape_fit` | Match universe shape tags against the assignment shape derived from the project description. |
|
|
39
|
+
| `resonance_fit` | Match universe resonance signals against session and repo context signals. |
|
|
40
|
+
| `LRU` | Least-recently-used bonus — prefer universes not used in recent assignments (from `history.json`). |
|
|
41
|
+
|
|
42
|
+
Same inputs → same choice (unless LRU changes between assignments).
|
|
43
|
+
|
|
44
|
+
## Casting State File Schemas
|
|
45
|
+
|
|
46
|
+
### policy.json
|
|
47
|
+
|
|
48
|
+
Source template: `.squad/templates/casting-policy.json`
|
|
49
|
+
Runtime location: `.squad/casting/policy.json`
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"casting_policy_version": "1.1",
|
|
54
|
+
"allowlist_universes": ["Universe Name", "..."],
|
|
55
|
+
"universe_capacity": {
|
|
56
|
+
"Universe Name": 10
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### registry.json
|
|
62
|
+
|
|
63
|
+
Source template: `.squad/templates/casting-registry.json`
|
|
64
|
+
Runtime location: `.squad/casting/registry.json`
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"agents": {
|
|
69
|
+
"agent-role-id": {
|
|
70
|
+
"persistent_name": "CharacterName",
|
|
71
|
+
"universe": "Universe Name",
|
|
72
|
+
"created_at": "ISO-8601",
|
|
73
|
+
"legacy_named": false,
|
|
74
|
+
"status": "active"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### history.json
|
|
81
|
+
|
|
82
|
+
Source template: `.squad/templates/casting-history.json`
|
|
83
|
+
Runtime location: `.squad/casting/history.json`
|
|
84
|
+
|
|
85
|
+
```json
|
|
86
|
+
{
|
|
87
|
+
"universe_usage_history": [
|
|
88
|
+
{
|
|
89
|
+
"universe": "Universe Name",
|
|
90
|
+
"assignment_id": "unique-id",
|
|
91
|
+
"used_at": "ISO-8601"
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"assignment_cast_snapshots": {
|
|
95
|
+
"assignment-id": {
|
|
96
|
+
"universe": "Universe Name",
|
|
97
|
+
"agents": {
|
|
98
|
+
"role-id": "CharacterName"
|
|
99
|
+
},
|
|
100
|
+
"created_at": "ISO-8601"
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
```
|
package/templates/ceremonies.md
CHANGED
|
@@ -39,3 +39,31 @@
|
|
|
39
39
|
2. Root cause analysis
|
|
40
40
|
3. What should change?
|
|
41
41
|
4. Action items for next iteration
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Retrospective with Enforcement
|
|
47
|
+
|
|
48
|
+
| Field | Value |
|
|
49
|
+
|-------|-------|
|
|
50
|
+
| **Trigger** | auto |
|
|
51
|
+
| **When** | weekly |
|
|
52
|
+
| **Condition** | No *retrospective* log in .squad/log/ within the last 7 days |
|
|
53
|
+
| **Facilitator** | lead |
|
|
54
|
+
| **Participants** | all |
|
|
55
|
+
| **Time budget** | focused |
|
|
56
|
+
| **Enabled** | yes |
|
|
57
|
+
| **Enforcement skill** | retro-enforcement |
|
|
58
|
+
|
|
59
|
+
**Agenda:**
|
|
60
|
+
1. What shipped this week? (closed issues, merged PRs)
|
|
61
|
+
2. What did not ship? (open issues, blockers)
|
|
62
|
+
3. Root cause on any failures
|
|
63
|
+
4. Action items -- each MUST become a GitHub Issue labeled retro-action
|
|
64
|
+
|
|
65
|
+
**Coordinator integration:**
|
|
66
|
+
At round start, call Test-RetroOverdue (see skill retro-enforcement). If overdue, run this ceremony before the work queue.
|
|
67
|
+
|
|
68
|
+
**Why GitHub Issues, not markdown:**
|
|
69
|
+
Production data: 0% completion across 6 retros using markdown checklists, 100% after switching to GitHub Issues.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Fact Checker
|
|
2
|
+
|
|
3
|
+
> Trust, but verify. Every claim gets a source check.
|
|
4
|
+
|
|
5
|
+
## Identity
|
|
6
|
+
|
|
7
|
+
- **Name:** Fact Checker
|
|
8
|
+
- **Role:** Devil's Advocate & Verification Agent
|
|
9
|
+
- **Style:** Rigorous but constructive. Flags issues clearly without being abrasive.
|
|
10
|
+
- **Casting:** Gets a universe name like any other agent (not exempt like Scribe/Ralph).
|
|
11
|
+
|
|
12
|
+
## What I Do
|
|
13
|
+
|
|
14
|
+
Validate claims, detect hallucinations, and run counter-hypotheses on team output before it ships.
|
|
15
|
+
|
|
16
|
+
## Verification Methodology
|
|
17
|
+
|
|
18
|
+
For every claim or assertion I review:
|
|
19
|
+
|
|
20
|
+
1. **Source Check:** What evidence supports this? Can I verify it?
|
|
21
|
+
2. **Counter-Hypothesis:** What would disprove this? Is there an alternative explanation?
|
|
22
|
+
3. **Existence Check:** Do the URLs, package names, API endpoints, file paths, and version numbers actually exist?
|
|
23
|
+
4. **Consistency Check:** Does this contradict anything in `.squad/decisions.md` or prior team output?
|
|
24
|
+
|
|
25
|
+
## Confidence Ratings
|
|
26
|
+
|
|
27
|
+
Every verified item gets one of:
|
|
28
|
+
|
|
29
|
+
| Rating | Meaning |
|
|
30
|
+
|--------|---------|
|
|
31
|
+
| ✅ Verified | Confirmed via source, test, or direct observation |
|
|
32
|
+
| ⚠️ Unverified | Plausible but could not confirm — needs human review |
|
|
33
|
+
| ❌ Contradicted | Found evidence that contradicts the claim |
|
|
34
|
+
| 🔍 Needs Investigation | Requires deeper analysis beyond current scope |
|
|
35
|
+
|
|
36
|
+
## When I'm Triggered
|
|
37
|
+
|
|
38
|
+
- **Auto-trigger (via routing):** Tasks tagged with `review`, `verify`, `fact-check`, `audit`
|
|
39
|
+
- **Pre-publish gate:** Before any artifact is delivered to the user, if configured
|
|
40
|
+
- **Manual:** User says "fact-check this", "verify these claims", "double-check"
|
|
41
|
+
- **Post-research:** After any agent produces research output or external references
|
|
42
|
+
|
|
43
|
+
## How I Work
|
|
44
|
+
|
|
45
|
+
1. **Read the artifact** — understand what's being claimed
|
|
46
|
+
2. **Extract claims** — list every factual assertion (package versions, API behavior, file existence, etc.)
|
|
47
|
+
3. **Verify each claim** — use available tools (grep, glob, web search, gh CLI) to check
|
|
48
|
+
4. **Run counter-hypotheses** — for key assumptions, ask "what if this is wrong?"
|
|
49
|
+
5. **Produce a verification report:**
|
|
50
|
+
|
|
51
|
+
```markdown
|
|
52
|
+
## Verification Report — {artifact name}
|
|
53
|
+
|
|
54
|
+
### Claims Verified
|
|
55
|
+
- ✅ {claim} — confirmed via {source}
|
|
56
|
+
- ⚠️ {claim} — could not verify, {reason}
|
|
57
|
+
- ❌ {claim} — contradicted by {evidence}
|
|
58
|
+
|
|
59
|
+
### Counter-Hypotheses
|
|
60
|
+
- {assumption} → Alternative: {counter}
|
|
61
|
+
|
|
62
|
+
### Recommendation
|
|
63
|
+
{proceed / revise / block with reasons}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
6. **Write decision** if I found issues: `.squad/decisions/inbox/fact-checker-{slug}.md`
|
|
67
|
+
|
|
68
|
+
## Boundaries
|
|
69
|
+
|
|
70
|
+
**I handle:** Verification, fact-checking, counter-hypotheses, hallucination detection.
|
|
71
|
+
|
|
72
|
+
**I don't handle:** Implementation, design, testing, or docs. I review, not create.
|
|
73
|
+
|
|
74
|
+
**I am not a blocker by default.** My verification report is advisory unless the coordinator or a reviewer escalates it to a gate.
|
|
75
|
+
|
|
76
|
+
## Project Context
|
|
77
|
+
|
|
78
|
+
**Project:** {project_name}
|
|
79
|
+
{project_description}
|
|
80
|
+
|
|
81
|
+
## Learnings
|
|
82
|
+
|
|
83
|
+
Initial setup complete. Ready for verification work.
|
|
@@ -231,7 +231,8 @@ Working as {member} ({role})
|
|
|
231
231
|
**Update workflow:**
|
|
232
232
|
```bash
|
|
233
233
|
# Make changes
|
|
234
|
-
git add
|
|
234
|
+
# ⚠️ NEVER use `git add .` or `git add -A` — only stage files you intentionally changed
|
|
235
|
+
git add -- {specific files you modified}
|
|
235
236
|
git commit -m "fix: address review feedback"
|
|
236
237
|
git push
|
|
237
238
|
```
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
configured: false
|
|
3
|
+
interval: 10
|
|
4
|
+
timeout: 30
|
|
5
|
+
description: "My squad work loop"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Squad Work Loop
|
|
9
|
+
|
|
10
|
+
> ⚠️ Set `configured: true` in the frontmatter above to activate this loop.
|
|
11
|
+
> Run with: `squad loop`
|
|
12
|
+
|
|
13
|
+
## What to do each cycle
|
|
14
|
+
|
|
15
|
+
Describe what your squad should do every time the loop wakes up. Be specific —
|
|
16
|
+
the more context you give, the better your squad performs.
|
|
17
|
+
|
|
18
|
+
Examples:
|
|
19
|
+
- Check for new messages in a Teams channel and summarize action items
|
|
20
|
+
- Review recent pull requests and flag anything needing attention
|
|
21
|
+
- Run a health check on staging and report anomalies
|
|
22
|
+
- Scan the inbox for anything that needs a response today
|
|
23
|
+
|
|
24
|
+
<!-- Replace this section with your actual loop instructions. -->
|
|
25
|
+
|
|
26
|
+
## Monitoring (optional)
|
|
27
|
+
|
|
28
|
+
If you want your squad to watch external channels, enable monitor capabilities:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
squad loop --monitor-email --monitor-teams
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Personality (optional)
|
|
35
|
+
|
|
36
|
+
If your squad has a specific voice or style, describe it here so each cycle
|
|
37
|
+
stays consistent.
|
|
38
|
+
|
|
39
|
+
Example: "Be concise. Use bullet points. Flag blockers clearly."
|
|
40
|
+
|
|
41
|
+
## Tips
|
|
42
|
+
|
|
43
|
+
- **Be specific.** Vague prompts produce vague results.
|
|
44
|
+
- **Set boundaries.** Tell the squad what NOT to do (e.g., "Don't send messages to anyone but me").
|
|
45
|
+
- **Start small.** Begin with one task per cycle, then expand.
|
|
46
|
+
- **Use frontmatter.** `interval` controls how often the loop runs. `timeout` caps each cycle.
|
|
@@ -55,6 +55,8 @@ function normalizeEol(content) {
|
|
|
55
55
|
return content.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
function slugify(text) { return text.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, ''); }
|
|
59
|
+
|
|
58
60
|
function parseRoutingRules(routingMd) {
|
|
59
61
|
const table = parseTableSection(routingMd, /^##\s*work\s*type\s*(?:→|->)\s*agent\b/i);
|
|
60
62
|
if (!table) return [];
|
|
@@ -124,7 +126,7 @@ function parseRoster(teamMd) {
|
|
|
124
126
|
members.push({
|
|
125
127
|
name,
|
|
126
128
|
role,
|
|
127
|
-
label: `squad:${name
|
|
129
|
+
label: `squad:${slugify(name)}`,
|
|
128
130
|
});
|
|
129
131
|
}
|
|
130
132
|
|
|
@@ -61,7 +61,26 @@ After every substantial work session:
|
|
|
61
61
|
Do NOT embed newlines in `git commit -m` (backtick-n fails silently in PowerShell).
|
|
62
62
|
Instead:
|
|
63
63
|
- `cd` into the team root first.
|
|
64
|
-
- Stage
|
|
64
|
+
- Stage only files Scribe actually modified in this session.
|
|
65
|
+
Use `git status --porcelain` to build an explicit file list filtered to allowed `.squad/` paths:
|
|
66
|
+
```powershell
|
|
67
|
+
$allowed = @(
|
|
68
|
+
'.squad/decisions.md',
|
|
69
|
+
'.squad/decisions-archive.md'
|
|
70
|
+
)
|
|
71
|
+
$allowedPatterns = @(
|
|
72
|
+
'.squad/agents/*/history.md',
|
|
73
|
+
'.squad/agents/*/history-archive.md',
|
|
74
|
+
'.squad/log/*',
|
|
75
|
+
'.squad/orchestration-log/*'
|
|
76
|
+
)
|
|
77
|
+
$filesToStage = git status --porcelain | Where-Object { $_.Length -gt 3 } | ForEach-Object { $_.Substring(3) -replace '^.* -> ','' } | Where-Object {
|
|
78
|
+
$f = $_
|
|
79
|
+
($f -in $allowed) -or ($allowedPatterns | Where-Object { $f -like $_ })
|
|
80
|
+
}
|
|
81
|
+
if ($filesToStage) { $filesToStage | Where-Object { $_ } | ForEach-Object { git add -- $_ } }
|
|
82
|
+
```
|
|
83
|
+
⚠️ NEVER use `git add .squad/` or broad globs — only stage specific files you wrote in this session.
|
|
65
84
|
- Check for staged changes: `git diff --cached --quiet`
|
|
66
85
|
If exit code is 0, no changes — skip silently.
|
|
67
86
|
- Write the commit message to a temp file, then commit with `-F`:
|