@bradygaster/squad-cli 0.9.1 → 0.9.2-insider.5

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 (276) hide show
  1. package/README.md +329 -329
  2. package/dist/cli/commands/build.d.ts.map +1 -1
  3. package/dist/cli/commands/build.js +10 -10
  4. package/dist/cli/commands/build.js.map +1 -1
  5. package/dist/cli/commands/config.d.ts +12 -0
  6. package/dist/cli/commands/config.d.ts.map +1 -0
  7. package/dist/cli/commands/config.js +157 -0
  8. package/dist/cli/commands/config.js.map +1 -0
  9. package/dist/cli/commands/consult.d.ts.map +1 -1
  10. package/dist/cli/commands/consult.js +9 -4
  11. package/dist/cli/commands/consult.js.map +1 -1
  12. package/dist/cli/commands/copilot.d.ts.map +1 -1
  13. package/dist/cli/commands/copilot.js +8 -7
  14. package/dist/cli/commands/copilot.js.map +1 -1
  15. package/dist/cli/commands/doctor.d.ts.map +1 -1
  16. package/dist/cli/commands/doctor.js +50 -17
  17. package/dist/cli/commands/doctor.js.map +1 -1
  18. package/dist/cli/commands/economy.d.ts.map +1 -1
  19. package/dist/cli/commands/economy.js +3 -2
  20. package/dist/cli/commands/economy.js.map +1 -1
  21. package/dist/cli/commands/export.d.ts.map +1 -1
  22. package/dist/cli/commands/export.js +22 -16
  23. package/dist/cli/commands/export.js.map +1 -1
  24. package/dist/cli/commands/extract.d.ts.map +1 -1
  25. package/dist/cli/commands/extract.js +14 -10
  26. package/dist/cli/commands/extract.js.map +1 -1
  27. package/dist/cli/commands/import.d.ts.map +1 -1
  28. package/dist/cli/commands/import.js +21 -18
  29. package/dist/cli/commands/import.js.map +1 -1
  30. package/dist/cli/commands/init-remote.d.ts.map +1 -1
  31. package/dist/cli/commands/init-remote.js +7 -6
  32. package/dist/cli/commands/init-remote.js.map +1 -1
  33. package/dist/cli/commands/link.d.ts.map +1 -1
  34. package/dist/cli/commands/link.js +11 -10
  35. package/dist/cli/commands/link.js.map +1 -1
  36. package/dist/cli/commands/migrate.d.ts.map +1 -1
  37. package/dist/cli/commands/migrate.js +19 -18
  38. package/dist/cli/commands/migrate.js.map +1 -1
  39. package/dist/cli/commands/personal.d.ts.map +1 -1
  40. package/dist/cli/commands/personal.js +57 -65
  41. package/dist/cli/commands/personal.js.map +1 -1
  42. package/dist/cli/commands/plugin.d.ts.map +1 -1
  43. package/dist/cli/commands/plugin.js +8 -7
  44. package/dist/cli/commands/plugin.js.map +1 -1
  45. package/dist/cli/commands/rc.d.ts.map +1 -1
  46. package/dist/cli/commands/rc.js +19 -12
  47. package/dist/cli/commands/rc.js.map +1 -1
  48. package/dist/cli/commands/schedule.d.ts.map +1 -1
  49. package/dist/cli/commands/schedule.js +6 -5
  50. package/dist/cli/commands/schedule.js.map +1 -1
  51. package/dist/cli/commands/start.d.ts.map +1 -1
  52. package/dist/cli/commands/start.js +18 -11
  53. package/dist/cli/commands/start.js.map +1 -1
  54. package/dist/cli/commands/streams.d.ts.map +1 -1
  55. package/dist/cli/commands/streams.js +3 -2
  56. package/dist/cli/commands/streams.js.map +1 -1
  57. package/dist/cli/commands/upstream.d.ts.map +1 -1
  58. package/dist/cli/commands/upstream.js +23 -19
  59. package/dist/cli/commands/upstream.js.map +1 -1
  60. package/dist/cli/commands/watch/capabilities/board.d.ts +22 -0
  61. package/dist/cli/commands/watch/capabilities/board.d.ts.map +1 -0
  62. package/dist/cli/commands/watch/capabilities/board.js +121 -0
  63. package/dist/cli/commands/watch/capabilities/board.js.map +1 -0
  64. package/dist/cli/commands/watch/capabilities/decision-hygiene.d.ts +14 -0
  65. package/dist/cli/commands/watch/capabilities/decision-hygiene.d.ts.map +1 -0
  66. package/dist/cli/commands/watch/capabilities/decision-hygiene.js +72 -0
  67. package/dist/cli/commands/watch/capabilities/decision-hygiene.js.map +1 -0
  68. package/dist/cli/commands/watch/capabilities/execute.d.ts +33 -0
  69. package/dist/cli/commands/watch/capabilities/execute.d.ts.map +1 -0
  70. package/dist/cli/commands/watch/capabilities/execute.js +119 -0
  71. package/dist/cli/commands/watch/capabilities/execute.js.map +1 -0
  72. package/dist/cli/commands/watch/capabilities/index.d.ts +7 -0
  73. package/dist/cli/commands/watch/capabilities/index.d.ts.map +1 -0
  74. package/dist/cli/commands/watch/capabilities/index.js +28 -0
  75. package/dist/cli/commands/watch/capabilities/index.js.map +1 -0
  76. package/dist/cli/commands/watch/capabilities/monitor-email.d.ts +14 -0
  77. package/dist/cli/commands/watch/capabilities/monitor-email.d.ts.map +1 -0
  78. package/dist/cli/commands/watch/capabilities/monitor-email.js +54 -0
  79. package/dist/cli/commands/watch/capabilities/monitor-email.js.map +1 -0
  80. package/dist/cli/commands/watch/capabilities/monitor-teams.d.ts +14 -0
  81. package/dist/cli/commands/watch/capabilities/monitor-teams.d.ts.map +1 -0
  82. package/dist/cli/commands/watch/capabilities/monitor-teams.js +55 -0
  83. package/dist/cli/commands/watch/capabilities/monitor-teams.js.map +1 -0
  84. package/dist/cli/commands/watch/capabilities/retro.d.ts +14 -0
  85. package/dist/cli/commands/watch/capabilities/retro.d.ts.map +1 -0
  86. package/dist/cli/commands/watch/capabilities/retro.js +81 -0
  87. package/dist/cli/commands/watch/capabilities/retro.js.map +1 -0
  88. package/dist/cli/commands/watch/capabilities/self-pull.d.ts +14 -0
  89. package/dist/cli/commands/watch/capabilities/self-pull.d.ts.map +1 -0
  90. package/dist/cli/commands/watch/capabilities/self-pull.js +33 -0
  91. package/dist/cli/commands/watch/capabilities/self-pull.js.map +1 -0
  92. package/dist/cli/commands/watch/capabilities/two-pass.d.ts +14 -0
  93. package/dist/cli/commands/watch/capabilities/two-pass.d.ts.map +1 -0
  94. package/dist/cli/commands/watch/capabilities/two-pass.js +66 -0
  95. package/dist/cli/commands/watch/capabilities/two-pass.js.map +1 -0
  96. package/dist/cli/commands/watch/capabilities/wave-dispatch.d.ts +14 -0
  97. package/dist/cli/commands/watch/capabilities/wave-dispatch.d.ts.map +1 -0
  98. package/dist/cli/commands/watch/capabilities/wave-dispatch.js +117 -0
  99. package/dist/cli/commands/watch/capabilities/wave-dispatch.js.map +1 -0
  100. package/dist/cli/commands/watch/config.d.ts +25 -0
  101. package/dist/cli/commands/watch/config.d.ts.map +1 -0
  102. package/dist/cli/commands/watch/config.js +82 -0
  103. package/dist/cli/commands/watch/config.js.map +1 -0
  104. package/dist/cli/commands/watch/index.d.ts +95 -0
  105. package/dist/cli/commands/watch/index.d.ts.map +1 -0
  106. package/dist/cli/commands/watch/index.js +704 -0
  107. package/dist/cli/commands/watch/index.js.map +1 -0
  108. package/dist/cli/commands/watch/registry.d.ts +19 -0
  109. package/dist/cli/commands/watch/registry.d.ts.map +1 -0
  110. package/dist/cli/commands/watch/registry.js +28 -0
  111. package/dist/cli/commands/watch/registry.js.map +1 -0
  112. package/dist/cli/commands/watch/types.d.ts +57 -0
  113. package/dist/cli/commands/watch/types.d.ts.map +1 -0
  114. package/dist/cli/commands/watch/types.js +8 -0
  115. package/dist/cli/commands/watch/types.js.map +1 -0
  116. package/dist/cli/core/cast.d.ts.map +1 -1
  117. package/dist/cli/core/cast.js +15 -19
  118. package/dist/cli/core/cast.js.map +1 -1
  119. package/dist/cli/core/detect-squad-dir.d.ts.map +1 -1
  120. package/dist/cli/core/detect-squad-dir.js +12 -10
  121. package/dist/cli/core/detect-squad-dir.js.map +1 -1
  122. package/dist/cli/core/email-scrub.d.ts.map +1 -1
  123. package/dist/cli/core/email-scrub.js +12 -11
  124. package/dist/cli/core/email-scrub.js.map +1 -1
  125. package/dist/cli/core/gh-cli.d.ts +13 -0
  126. package/dist/cli/core/gh-cli.d.ts.map +1 -1
  127. package/dist/cli/core/gh-cli.js +24 -0
  128. package/dist/cli/core/gh-cli.js.map +1 -1
  129. package/dist/cli/core/init.d.ts +2 -0
  130. package/dist/cli/core/init.d.ts.map +1 -1
  131. package/dist/cli/core/init.js +22 -5
  132. package/dist/cli/core/init.js.map +1 -1
  133. package/dist/cli/core/migrate-directory.d.ts.map +1 -1
  134. package/dist/cli/core/migrate-directory.js +14 -13
  135. package/dist/cli/core/migrate-directory.js.map +1 -1
  136. package/dist/cli/core/migrations.d.ts.map +1 -1
  137. package/dist/cli/core/migrations.js +22 -8
  138. package/dist/cli/core/migrations.js.map +1 -1
  139. package/dist/cli/core/nap.d.ts.map +1 -1
  140. package/dist/cli/core/nap.js +111 -49
  141. package/dist/cli/core/nap.js.map +1 -1
  142. package/dist/cli/core/project-type.d.ts.map +1 -1
  143. package/dist/cli/core/project-type.js +11 -10
  144. package/dist/cli/core/project-type.js.map +1 -1
  145. package/dist/cli/core/team-md.d.ts.map +1 -1
  146. package/dist/cli/core/team-md.js +43 -38
  147. package/dist/cli/core/team-md.js.map +1 -1
  148. package/dist/cli/core/templates.d.ts.map +1 -1
  149. package/dist/cli/core/templates.js +4 -3
  150. package/dist/cli/core/templates.js.map +1 -1
  151. package/dist/cli/core/upgrade.d.ts.map +1 -1
  152. package/dist/cli/core/upgrade.js +68 -55
  153. package/dist/cli/core/upgrade.js.map +1 -1
  154. package/dist/cli/core/version.d.ts.map +1 -1
  155. package/dist/cli/core/version.js +8 -7
  156. package/dist/cli/core/version.js.map +1 -1
  157. package/dist/cli/index.d.ts +1 -1
  158. package/dist/cli/index.d.ts.map +1 -1
  159. package/dist/cli/index.js +1 -1
  160. package/dist/cli/index.js.map +1 -1
  161. package/dist/cli/self-update.d.ts.map +1 -1
  162. package/dist/cli/self-update.js +7 -4
  163. package/dist/cli/self-update.js.map +1 -1
  164. package/dist/cli/shell/agent-name-parser.d.ts +16 -0
  165. package/dist/cli/shell/agent-name-parser.d.ts.map +1 -0
  166. package/dist/cli/shell/agent-name-parser.js +54 -0
  167. package/dist/cli/shell/agent-name-parser.js.map +1 -0
  168. package/dist/cli/shell/commands.d.ts.map +1 -1
  169. package/dist/cli/shell/commands.js +4 -3
  170. package/dist/cli/shell/commands.js.map +1 -1
  171. package/dist/cli/shell/coordinator.d.ts +4 -1
  172. package/dist/cli/shell/coordinator.d.ts.map +1 -1
  173. package/dist/cli/shell/coordinator.js +29 -26
  174. package/dist/cli/shell/coordinator.js.map +1 -1
  175. package/dist/cli/shell/index.d.ts.map +1 -1
  176. package/dist/cli/shell/index.js +33 -35
  177. package/dist/cli/shell/index.js.map +1 -1
  178. package/dist/cli/shell/lifecycle.d.ts +13 -2
  179. package/dist/cli/shell/lifecycle.d.ts.map +1 -1
  180. package/dist/cli/shell/lifecycle.js +26 -13
  181. package/dist/cli/shell/lifecycle.js.map +1 -1
  182. package/dist/cli/shell/session-store.d.ts.map +1 -1
  183. package/dist/cli/shell/session-store.js +16 -12
  184. package/dist/cli/shell/session-store.js.map +1 -1
  185. package/dist/cli/shell/spawn.d.ts +4 -1
  186. package/dist/cli/shell/spawn.d.ts.map +1 -1
  187. package/dist/cli/shell/spawn.js +28 -10
  188. package/dist/cli/shell/spawn.js.map +1 -1
  189. package/dist/cli-entry.js +83 -12
  190. package/dist/cli-entry.js.map +1 -1
  191. package/package.json +8 -4
  192. package/scripts/patch-esm-imports.mjs +105 -105
  193. package/scripts/patch-ink-rendering.mjs +115 -115
  194. package/templates/casting/Futurama.json +9 -9
  195. package/templates/casting-history.json +4 -4
  196. package/templates/casting-policy.json +37 -37
  197. package/templates/casting-reference.md +104 -104
  198. package/templates/casting-registry.json +3 -3
  199. package/templates/ceremonies.md +41 -41
  200. package/templates/charter.md +53 -53
  201. package/templates/constraint-tracking.md +38 -38
  202. package/templates/cooperative-rate-limiting.md +229 -229
  203. package/templates/copilot-instructions.md +46 -46
  204. package/templates/history.md +10 -10
  205. package/templates/identity/now.md +9 -9
  206. package/templates/identity/wisdom.md +15 -15
  207. package/templates/issue-lifecycle.md +412 -412
  208. package/templates/keda-scaler.md +164 -164
  209. package/templates/machine-capabilities.md +74 -74
  210. package/templates/mcp-config.md +90 -90
  211. package/templates/multi-agent-format.md +28 -28
  212. package/templates/orchestration-log.md +27 -27
  213. package/templates/plugin-marketplace.md +49 -49
  214. package/templates/ralph-circuit-breaker.md +313 -313
  215. package/templates/raw-agent-output.md +37 -37
  216. package/templates/roster.md +60 -60
  217. package/templates/routing.md +39 -39
  218. package/templates/run-output.md +50 -50
  219. package/templates/scribe-charter.md +123 -119
  220. package/templates/skill.md +24 -24
  221. package/templates/skills/agent-collaboration/SKILL.md +42 -42
  222. package/templates/skills/agent-conduct/SKILL.md +24 -24
  223. package/templates/skills/architectural-proposals/SKILL.md +151 -151
  224. package/templates/skills/ci-validation-gates/SKILL.md +84 -84
  225. package/templates/skills/cli-wiring/SKILL.md +47 -47
  226. package/templates/skills/client-compatibility/SKILL.md +89 -89
  227. package/templates/skills/cross-machine-coordination/SKILL.md +434 -0
  228. package/templates/skills/cross-squad/SKILL.md +114 -114
  229. package/templates/skills/distributed-mesh/SKILL.md +287 -287
  230. package/templates/skills/distributed-mesh/mesh.json.example +30 -30
  231. package/templates/skills/distributed-mesh/sync-mesh.ps1 +111 -111
  232. package/templates/skills/distributed-mesh/sync-mesh.sh +104 -104
  233. package/templates/skills/docs-standards/SKILL.md +71 -71
  234. package/templates/skills/economy-mode/SKILL.md +114 -114
  235. package/templates/skills/error-recovery/SKILL.md +99 -0
  236. package/templates/skills/external-comms/SKILL.md +329 -329
  237. package/templates/skills/gh-auth-isolation/SKILL.md +183 -183
  238. package/templates/skills/git-workflow/SKILL.md +204 -204
  239. package/templates/skills/github-multi-account/SKILL.md +95 -95
  240. package/templates/skills/history-hygiene/SKILL.md +36 -36
  241. package/templates/skills/humanizer/SKILL.md +105 -105
  242. package/templates/skills/init-mode/SKILL.md +102 -102
  243. package/templates/skills/iterative-retrieval/SKILL.md +165 -0
  244. package/templates/skills/model-selection/SKILL.md +117 -117
  245. package/templates/skills/nap/SKILL.md +24 -24
  246. package/templates/skills/notification-routing/SKILL.md +105 -0
  247. package/templates/skills/personal-squad/SKILL.md +57 -57
  248. package/templates/skills/pr-screenshots/SKILL.md +149 -0
  249. package/templates/skills/ralph-two-pass-scan/SKILL.md +35 -0
  250. package/templates/skills/reflect/SKILL.md +229 -0
  251. package/templates/skills/release-process/SKILL.md +131 -423
  252. package/templates/skills/reskill/SKILL.md +92 -92
  253. package/templates/skills/retro-enforcement/SKILL.md +148 -0
  254. package/templates/skills/reviewer-protocol/SKILL.md +79 -79
  255. package/templates/skills/secret-handling/SKILL.md +200 -200
  256. package/templates/skills/session-recovery/SKILL.md +155 -155
  257. package/templates/skills/squad-conventions/SKILL.md +69 -69
  258. package/templates/skills/test-discipline/SKILL.md +37 -37
  259. package/templates/skills/tiered-memory/SKILL.md +234 -0
  260. package/templates/skills/windows-compatibility/SKILL.md +98 -74
  261. package/templates/{squad.agent.md → squad.agent.md.template} +1316 -1287
  262. package/templates/workflows/squad-ci.yml +24 -24
  263. package/templates/workflows/squad-docs.yml +54 -54
  264. package/templates/workflows/squad-heartbeat.yml +0 -4
  265. package/templates/workflows/squad-insider-release.yml +61 -61
  266. package/templates/workflows/squad-issue-assign.yml +161 -161
  267. package/templates/workflows/squad-label-enforce.yml +181 -181
  268. package/templates/workflows/squad-preview.yml +55 -55
  269. package/templates/workflows/squad-promote.yml +120 -120
  270. package/templates/workflows/squad-release.yml +77 -77
  271. package/templates/workflows/squad-triage.yml +260 -260
  272. package/templates/workflows/sync-squad-labels.yml +169 -169
  273. package/dist/cli/commands/watch.d.ts +0 -18
  274. package/dist/cli/commands/watch.d.ts.map +0 -1
  275. package/dist/cli/commands/watch.js +0 -306
  276. package/dist/cli/commands/watch.js.map +0 -1
@@ -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)
@@ -0,0 +1,165 @@
1
+ ---
2
+ name: "iterative-retrieval"
3
+ description: "Max-3-cycle protocol for agent sub-tasks with WHY context and coordinator validation. Use when spawning sub-agents to complete scoped work."
4
+ domain: "agent-coordination"
5
+ confidence: "high"
6
+ license: MIT
7
+ ---
8
+
9
+ # Iterative Retrieval Skill
10
+
11
+ Squad agents frequently spawn sub-agents to complete scoped work. Without structure, these
12
+ handoffs become vague, cycles multiply, and outputs land without being checked. The
13
+ **Iterative Retrieval Pattern** caps cycles at 3, mandates WHY context in every spawn, and
14
+ requires the coordinator to validate agent output before closing an issue.
15
+
16
+ ---
17
+
18
+ ## Spawn Prompt Template
19
+
20
+ Every agent spawn must include the following four sections. Copy and fill in the template:
21
+
22
+ ```
23
+ ## Task
24
+ {What you need done — concrete and bounded}
25
+
26
+ ## WHY this matters
27
+ {The motivation and context. What system or user goal does this serve? What breaks if skipped?}
28
+
29
+ ## Success criteria
30
+ {How you will know the output is correct. Be explicit — list acceptance criteria, not vibes.}
31
+ Example:
32
+ - [ ] File X exists and contains Y
33
+ - [ ] No regressions in existing tests
34
+ - [ ] PR is open targeting main with description matching the issue
35
+
36
+ ## Escalation path
37
+ {What the agent should do if uncertain or stuck. "Stop and ask me" is valid.}
38
+ Example:
39
+ - If requirements are ambiguous → stop, comment on the issue, set label status:needs-decision
40
+ - If blocked by a dependency → label status:blocked, explain in a comment
41
+ - If 3 cycles exhausted without resolution → write a summary to inbox and surface to coordinator
42
+ ```
43
+
44
+ ---
45
+
46
+ ## 3-Cycle Protocol
47
+
48
+ | Cycle | Description | Exit condition |
49
+ |-------|-------------|----------------|
50
+ | **1** | Initial attempt | Done → coordinator validates. Incomplete → surface delta. |
51
+ | **2** | Targeted retry with specific corrections | Done → coordinator validates. Incomplete → one more. |
52
+ | **3** | Final attempt with all context from cycles 1–2 | Done or escalate — no cycle 4. |
53
+
54
+ ### Rules
55
+
56
+ 1. **After each cycle**, the coordinator evaluates the output against the success criteria
57
+ before accepting it or spawning the next cycle.
58
+ 2. **Objective context forward**: each subsequent spawn includes a summary of what was tried
59
+ and what is still missing — not just a repeat of the original task.
60
+ 3. **Cycle 3 exhausted** → escalate: write a summary to `.squad/decisions/inbox/`, label the
61
+ issue `status:needs-decision`, and notify the user.
62
+
63
+ ---
64
+
65
+ ## Coordinator Validation Checklist
66
+
67
+ Before accepting agent output and closing an issue, the coordinator must check:
68
+
69
+ - [ ] All success criteria from the spawn prompt are met
70
+ - [ ] PR exists and description matches the issue (if code work)
71
+ - [ ] No obvious regressions (grep for TODO/FIXME introduced, build passes)
72
+ - [ ] Agent did not silently skip parts of the task
73
+ - [ ] If the agent reported uncertainty — was it resolved or escalated?
74
+
75
+ If any item fails → do **not** accept. Spawn cycle N+1 (up to cycle 3) with specific deltas.
76
+
77
+ ---
78
+
79
+ ## When to Escalate vs Retry
80
+
81
+ **Retry (cycle N+1)** when:
82
+ - Output is structurally correct but missing specific items
83
+ - Agent misunderstood scope (provide more context and re-run)
84
+ - Partial success — clearly identified remaining delta
85
+
86
+ **Escalate** when:
87
+ - Requirements are fundamentally unclear (decision needed)
88
+ - 3 cycles complete without convergence
89
+ - Agent returned conflicting results across cycles
90
+ - Task requires elevated permissions or external action
91
+ - The work depends on another issue that isn't done yet
92
+
93
+ ---
94
+
95
+ ## Issue Dedup Check (Mandatory)
96
+
97
+ Before any agent creates a GitHub issue, it **must** search for existing open issues to avoid
98
+ duplicates.
99
+
100
+ ```bash
101
+ # Check for existing open issues before creating a new one
102
+ gh issue list --search "<keywords from your issue title>" --state open
103
+ ```
104
+
105
+ - If an open issue already covers the same problem → **comment on it** instead of creating a new one.
106
+ - If no duplicate → proceed to create the issue.
107
+ - Use 2–3 representative keywords from the planned issue title as the search query.
108
+
109
+ ---
110
+
111
+ ## Mandatory Output Requirement (Research-Then-Execute)
112
+
113
+ Every research or analysis task completed under this protocol **MUST** end with at least one
114
+ concrete action before the cycle is closed. Acceptable follow-up actions:
115
+
116
+ - GitHub issue created documenting the findings and next steps
117
+ - PR opened implementing a recommendation
118
+ - Decision recorded in `.squad/decisions/inbox/`
119
+ - Documented recommendation with a named assignee and due date
120
+
121
+ **Pure analysis reports without actionable follow-up will be rejected during triage.**
122
+ If no action is warranted, the agent must explicitly state why and get coordinator sign-off.
123
+
124
+ ---
125
+
126
+ ## Anti-Patterns
127
+
128
+ - **Spawning without WHY** — agents can't prioritise trade-offs without motivation context.
129
+ - **Accepting output without validating** — one failed check avoids merging broken work.
130
+ - **Cycle 4+** — if 3 cycles haven't converged, the problem is in the requirements, not the agent.
131
+ - **Vague success criteria** — "looks good" is not a criterion. Use checkboxes.
132
+ - **Forwarding WHAT without delta** — cycle 2+ prompts must include what cycle 1 got wrong.
133
+ - **Creating issues without dedup check** — always search before creating.
134
+ - **Research without action** — delivering analysis with no issue, PR, decision, or assignee is incomplete work.
135
+
136
+ ---
137
+
138
+ ## Examples
139
+
140
+ ### Good spawn prompt
141
+ ```
142
+ ## Task
143
+ Add an "Iterative Retrieval Protocol" section to `.squad/agents/coordinator/charter.md` explaining
144
+ the 3-cycle rule, WHY format, and validation checklist.
145
+
146
+ ## WHY this matters
147
+ The coordinator spawns sub-agents on every round. Without a documented protocol, agents run unbounded
148
+ cycles and outputs go unvalidated — leading to stale issues and silent failures.
149
+
150
+ ## Success criteria
151
+ - [ ] Section "Iterative Retrieval Protocol" exists in charter.md
152
+ - [ ] Section documents max-3-cycles rule
153
+ - [ ] Section documents WHY format requirement
154
+ - [ ] Section contains validation checklist (at least 4 items)
155
+ - [ ] No other sections of charter.md are modified
156
+
157
+ ## Escalation path
158
+ If the charter.md format is unclear, check another agent charter as a reference.
159
+ If uncertain about content, stop and surface to coordinator.
160
+ ```
161
+
162
+ ### Bad spawn prompt (don't do this)
163
+ ```
164
+ Update the coordinator charter with the iterative retrieval stuff.
165
+ ```