agentplugged 1.3.0 → 2.0.0

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 (277) hide show
  1. package/README.md +11 -4
  2. package/dist/agent-commands.js +20432 -35457
  3. package/dist/bin.js +2 -3
  4. package/dist/boundary-rules.js +1 -0
  5. package/dist/boundary-rules2.js +52 -0
  6. package/dist/cli.js +7 -3
  7. package/dist/commit-documents.js +81 -0
  8. package/dist/dist.js +22729 -0
  9. package/dist/dist2.js +9 -0
  10. package/dist/esm.js +8 -16
  11. package/dist/forge-follow.js +6 -7
  12. package/dist/grammars/LICENSE-tree-sitter-wasm +21 -0
  13. package/dist/grammars/LICENSE-web-tree-sitter +21 -0
  14. package/dist/grammars/tree-sitter-go.wasm +0 -0
  15. package/dist/grammars/tree-sitter-java.wasm +0 -0
  16. package/dist/grammars/tree-sitter-javascript.wasm +0 -0
  17. package/dist/grammars/tree-sitter-php.wasm +0 -0
  18. package/dist/grammars/tree-sitter-python.wasm +0 -0
  19. package/dist/grammars/tree-sitter-rust.wasm +0 -0
  20. package/dist/grammars/tree-sitter-tsx.wasm +0 -0
  21. package/dist/grammars/tree-sitter-typescript.wasm +0 -0
  22. package/dist/grammars/web-tree-sitter.wasm +0 -0
  23. package/dist/hash.js +11594 -5733
  24. package/dist/helpers.js +271 -519
  25. package/dist/launcher-env.js +1 -2
  26. package/dist/launcher.js +4 -5
  27. package/dist/libsodium-wrappers.js +2 -4
  28. package/dist/libsodium-wrappers2.js +2 -4
  29. package/dist/main.js +10502 -2787
  30. package/dist/map-cache.js +8096 -0
  31. package/dist/map-update.js +16593 -0
  32. package/dist/map-update2.js +1 -0
  33. package/dist/method/agents/alex/SKILL.md +13 -29
  34. package/dist/method/agents/alex/agent.yaml +3 -3
  35. package/dist/method/agents/basile/SKILL.md +44 -0
  36. package/dist/method/agents/basile/agent.yaml +69 -0
  37. package/dist/method/agents/chloe/SKILL.md +12 -25
  38. package/dist/method/agents/chloe/agent.yaml +3 -3
  39. package/dist/method/agents/ethan/SKILL.md +8 -9
  40. package/dist/method/agents/ethan/agent.yaml +9 -8
  41. package/dist/method/agents/hugo/SKILL.md +8 -8
  42. package/dist/method/agents/hugo/agent.yaml +9 -8
  43. package/dist/method/agents/iris/SKILL.md +11 -17
  44. package/dist/method/agents/iris/agent.yaml +4 -7
  45. package/dist/method/agents/izzy/SKILL.md +68 -91
  46. package/dist/method/agents/izzy/agent.yaml +8 -15
  47. package/dist/method/agents/jade/SKILL.md +7 -9
  48. package/dist/method/agents/jade/agent.yaml +9 -8
  49. package/dist/method/agents/julien/SKILL.md +38 -58
  50. package/dist/method/agents/lina/SKILL.md +7 -9
  51. package/dist/method/agents/lina/agent.yaml +9 -8
  52. package/dist/method/agents/lou/SKILL.md +4 -11
  53. package/dist/method/agents/lou/agent.yaml +2 -2
  54. package/dist/method/agents/maya/SKILL.md +12 -19
  55. package/dist/method/agents/maya/agent.yaml +2 -4
  56. package/dist/method/agents/milo/SKILL.md +21 -32
  57. package/dist/method/agents/noah/SKILL.md +105 -63
  58. package/dist/method/agents/noah/agent.yaml +15 -35
  59. package/dist/method/agents/noah/evals/routes.yaml +238 -0
  60. package/dist/method/agents/noah/references/decisions.md +59 -121
  61. package/dist/method/agents/noah/references/environment.md +25 -70
  62. package/dist/method/agents/noah/references/facts.md +22 -11
  63. package/dist/method/agents/noah/references/journey.md +26 -78
  64. package/dist/method/agents/noah/references/team.md +67 -190
  65. package/dist/method/agents/omar/SKILL.md +14 -30
  66. package/dist/method/agents/omar/agent.yaml +12 -6
  67. package/dist/method/agents/quentin/SKILL.md +7 -15
  68. package/dist/method/agents/quentin/agent.yaml +4 -2
  69. package/dist/method/agents/sam/SKILL.md +6 -8
  70. package/dist/method/agents/sam/agent.yaml +9 -8
  71. package/dist/method/agents/stella/SKILL.md +6 -14
  72. package/dist/method/agents/stella/agent.yaml +1 -1
  73. package/dist/method/agents/tess/SKILL.md +7 -14
  74. package/dist/method/agents/tess/agent.yaml +2 -2
  75. package/dist/method/agents/zoe/SKILL.md +9 -21
  76. package/dist/method/doctor.yaml +553 -13
  77. package/dist/method/models.yaml +12 -0
  78. package/dist/method/skills/acceptance-qa/SKILL.md +1 -1
  79. package/dist/method/skills/acceptance-qa/references/run.md +24 -32
  80. package/dist/method/skills/acceptance-qa/references/scenarios.md +16 -19
  81. package/dist/method/skills/acceptance-qa/references/verdicts.md +10 -16
  82. package/dist/method/skills/api-e2e-tests/SKILL.md +46 -46
  83. package/dist/method/skills/audit-pillars/SKILL.md +13 -10
  84. package/dist/method/skills/audit-pillars/references/demo.md +35 -0
  85. package/dist/method/skills/audit-pillars/references/pillars.md +40 -0
  86. package/dist/method/skills/audit-pillars/references/tech-debt.md +38 -0
  87. package/dist/method/skills/chain-stories/SKILL.md +5 -4
  88. package/dist/method/skills/chain-stories/references/merge-order.md +23 -0
  89. package/dist/method/skills/check-readiness/SKILL.md +1 -1
  90. package/dist/method/skills/check-requirements/SKILL.md +37 -72
  91. package/dist/method/skills/check-requirements/references/engine-proofs.md +16 -23
  92. package/dist/method/skills/check-requirements/references/proofs-and-gaps.md +22 -37
  93. package/dist/method/skills/critique-deliverable/SKILL.md +3 -3
  94. package/dist/method/skills/critique-deliverable/references/choose.md +12 -21
  95. package/dist/method/skills/critique-deliverable/references/format.md +14 -20
  96. package/dist/method/skills/critique-deliverable/references/gestures.md +14 -21
  97. package/dist/method/skills/critique-deliverable/references/judgment.md +4 -9
  98. package/dist/method/skills/critique-deliverable/references/methods.md +21 -0
  99. package/dist/method/skills/critique-deliverable/references/reconcile.md +6 -11
  100. package/dist/method/skills/deep-research/SKILL.md +16 -24
  101. package/dist/method/skills/deep-research/references/candidates.md +13 -25
  102. package/dist/method/skills/deep-research/references/external.md +15 -34
  103. package/dist/method/skills/deep-research/references/page-format.md +16 -42
  104. package/dist/method/skills/deep-research/references/types.md +16 -27
  105. package/dist/method/skills/develop-story/SKILL.md +56 -189
  106. package/dist/method/skills/develop-story/references/acceptance-tests.md +18 -71
  107. package/dist/method/skills/develop-story/references/quick-lane.md +20 -0
  108. package/dist/method/skills/diagnose-bug/SKILL.md +42 -53
  109. package/dist/method/skills/diagnose-bug/references/hypotheses.md +1 -2
  110. package/dist/method/skills/generate-knowledge-base/SKILL.md +57 -226
  111. package/dist/method/skills/generate-knowledge-base/assets/index-template.md +6 -15
  112. package/dist/method/skills/generate-knowledge-base/assets/page-template.md +11 -24
  113. package/dist/method/skills/generate-knowledge-base/references/living-docs.md +25 -64
  114. package/dist/method/skills/generate-knowledge-base/references/reuse-map.md +9 -18
  115. package/dist/method/skills/ideation/SKILL.md +16 -23
  116. package/dist/method/skills/ideation/references/close.md +18 -14
  117. package/dist/method/skills/ideation/references/converge.md +11 -21
  118. package/dist/method/skills/ideation/references/stances.md +13 -17
  119. package/dist/method/skills/ideation/references/techniques.md +20 -0
  120. package/dist/method/skills/improve-code/SKILL.md +42 -54
  121. package/dist/method/skills/pitch/SKILL.md +16 -19
  122. package/dist/method/skills/pitch/references/deck.md +15 -18
  123. package/dist/method/skills/pitch/references/design-implementation.md +13 -21
  124. package/dist/method/skills/pitch/references/design.md +21 -0
  125. package/dist/method/skills/pitch/references/story.md +13 -18
  126. package/dist/method/skills/plan-sprint/SKILL.md +50 -151
  127. package/dist/method/skills/plan-sprint/references/rituals.md +40 -0
  128. package/dist/method/skills/prepare-go-live/SKILL.md +59 -0
  129. package/dist/method/skills/resolve-merge-conflict/SKILL.md +40 -65
  130. package/dist/method/skills/review-after-launch/SKILL.md +56 -0
  131. package/dist/method/skills/review-story/SKILL.md +44 -72
  132. package/dist/method/skills/review-story/references/amend-story.md +8 -13
  133. package/dist/method/skills/review-story/references/export.md +7 -17
  134. package/dist/method/skills/review-story/references/free-review.md +9 -20
  135. package/dist/method/skills/review-story/references/judge.md +25 -37
  136. package/dist/method/skills/review-story/references/tests.md +29 -0
  137. package/dist/method/skills/run-acceptance/SKILL.md +58 -0
  138. package/dist/method/skills/run-acceptance/references/template.md +39 -0
  139. package/dist/method/skills/run-retrospective/SKILL.md +50 -189
  140. package/dist/method/skills/security-review-architecture/SKILL.md +46 -109
  141. package/dist/method/skills/security-review-architecture/references/spec-review.md +27 -38
  142. package/dist/method/skills/setup-ci/SKILL.md +46 -109
  143. package/dist/method/skills/setup-ci/assets/access-check.mjs +116 -0
  144. package/dist/method/skills/setup-ci/assets/security-github.yml +41 -0
  145. package/dist/method/skills/setup-ci/assets/security-gitlab.yml +22 -0
  146. package/dist/method/skills/setup-ci/assets/stack-dotnet-github.yml +118 -0
  147. package/dist/method/skills/setup-ci/assets/stack-dotnet-gitlab.yml +63 -0
  148. package/dist/method/skills/setup-ci/assets/stack-go-github.yml +118 -0
  149. package/dist/method/skills/setup-ci/assets/stack-go-gitlab.yml +63 -0
  150. package/dist/method/skills/setup-ci/assets/stack-jvm-gradle-github.yml +134 -0
  151. package/dist/method/skills/setup-ci/assets/stack-jvm-gradle-gitlab.yml +71 -0
  152. package/dist/method/skills/setup-ci/assets/stack-jvm-maven-github.yml +133 -0
  153. package/dist/method/skills/setup-ci/assets/stack-jvm-maven-gitlab.yml +70 -0
  154. package/dist/method/skills/setup-ci/assets/stack-python-github.yml +123 -0
  155. package/dist/method/skills/setup-ci/assets/stack-python-gitlab.yml +68 -0
  156. package/dist/method/skills/setup-ci/assets/stack-rust-github.yml +107 -0
  157. package/dist/method/skills/setup-ci/assets/stack-rust-gitlab.yml +64 -0
  158. package/dist/method/skills/setup-ci/references/security.md +39 -0
  159. package/dist/method/skills/setup-ci/references/stacks.md +22 -0
  160. package/dist/method/skills/split-into-stories/SKILL.md +59 -192
  161. package/dist/method/skills/split-into-stories/assets/story.md.tmpl +15 -4
  162. package/dist/method/skills/strategy/SKILL.md +20 -25
  163. package/dist/method/skills/strategy/references/costs.md +12 -26
  164. package/dist/method/skills/strategy/references/gestures.md +12 -21
  165. package/dist/method/skills/strategy/references/innovate.md +19 -37
  166. package/dist/method/skills/strategy/references/solve.md +19 -32
  167. package/dist/method/skills/test-idea/SKILL.md +5 -5
  168. package/dist/method/skills/test-idea/assets/prfaq-template.md +1 -1
  169. package/dist/method/skills/test-idea/references/faq.md +12 -29
  170. package/dist/method/skills/test-idea/references/forge.md +19 -30
  171. package/dist/method/skills/test-idea/references/personas.md +16 -19
  172. package/dist/method/skills/test-idea/references/prfaq.md +31 -31
  173. package/dist/method/skills/workshop/SKILL.md +10 -16
  174. package/dist/method/skills/workshop/references/create.md +28 -45
  175. package/dist/method/skills/workshop/references/customize.md +17 -42
  176. package/dist/method/skills/workshop/references/evaluate.md +11 -42
  177. package/dist/method/skills/workshop/references/rules.md +17 -26
  178. package/dist/method/skills/write-architecture/SKILL.md +62 -220
  179. package/dist/method/skills/write-architecture/references/guard.md +12 -27
  180. package/dist/method/skills/write-architecture/references/self-check.md +22 -38
  181. package/dist/method/skills/write-brand/SKILL.md +2 -2
  182. package/dist/method/skills/write-brand/references/identity.md +21 -22
  183. package/dist/method/skills/write-brand/references/platform.md +13 -20
  184. package/dist/method/skills/write-brand/references/rules.md +16 -22
  185. package/dist/method/skills/write-brief/SKILL.md +55 -149
  186. package/dist/method/skills/write-brief/assets/brief-template.md +7 -5
  187. package/dist/method/skills/write-brief/references/brief-checklist.md +18 -30
  188. package/dist/method/skills/write-content/SKILL.md +53 -210
  189. package/dist/method/skills/write-content/references/content-checklist.md +32 -50
  190. package/dist/method/skills/write-positioning/SKILL.md +53 -197
  191. package/dist/method/skills/write-positioning/references/positioning-checklist.md +15 -41
  192. package/dist/method/skills/write-positioning/references/seo-checklist.md +26 -51
  193. package/dist/method/skills/write-prd/SKILL.md +52 -179
  194. package/dist/method/skills/write-prd/references/prd-checklist.md +25 -54
  195. package/dist/method/skills/write-sales/SKILL.md +48 -212
  196. package/dist/method/skills/write-sales/references/before-you-send.md +21 -49
  197. package/dist/method/skills/write-sales/references/sales-checklist.md +19 -69
  198. package/dist/method/skills/write-spec/references/spec-guide.md +20 -23
  199. package/dist/method/skills/write-ux-spec/SKILL.md +57 -168
  200. package/dist/method/skills/write-ux-spec/references/accessibility-check.md +13 -72
  201. package/dist/method/skills/write-ux-spec/references/mockups.md +6 -68
  202. package/dist/method/skills/write-ux-spec/references/tokens-and-sketches.md +8 -81
  203. package/dist/method/skills/write-ux-spec/references/ux-checklist.md +12 -67
  204. package/dist/product-root.js +96 -20743
  205. package/dist/project-command.js +776 -0
  206. package/dist/project-command2.js +1 -0
  207. package/dist/read-command.js +19 -0
  208. package/dist/rolldown-runtime.js +1 -2
  209. package/dist/sheet-command.js +58 -0
  210. package/dist/webauthn-verify.js +3 -5
  211. package/package.json +13 -11
  212. package/dist/method/agents/noah/references/conduct.md +0 -102
  213. package/dist/method/skills/api-e2e-tests/references/frameworks.md +0 -58
  214. package/dist/method/skills/api-e2e-tests/references/generate.md +0 -67
  215. package/dist/method/skills/audit-pillars/references/accessibility.md +0 -13
  216. package/dist/method/skills/audit-pillars/references/architecture.md +0 -13
  217. package/dist/method/skills/audit-pillars/references/dependencies.md +0 -13
  218. package/dist/method/skills/audit-pillars/references/format.md +0 -20
  219. package/dist/method/skills/audit-pillars/references/interface.md +0 -13
  220. package/dist/method/skills/audit-pillars/references/method.md +0 -33
  221. package/dist/method/skills/audit-pillars/references/performance.md +0 -17
  222. package/dist/method/skills/audit-pillars/references/quality.md +0 -11
  223. package/dist/method/skills/audit-pillars/references/security.md +0 -13
  224. package/dist/method/skills/audit-pillars/references/tests.md +0 -17
  225. package/dist/method/skills/critique-deliverable/references/assumption-audit.md +0 -11
  226. package/dist/method/skills/critique-deliverable/references/compare-existing.md +0 -13
  227. package/dist/method/skills/critique-deliverable/references/devils-advocate.md +0 -13
  228. package/dist/method/skills/critique-deliverable/references/divergence.md +0 -15
  229. package/dist/method/skills/critique-deliverable/references/domain-expert.md +0 -14
  230. package/dist/method/skills/critique-deliverable/references/extreme-user.md +0 -13
  231. package/dist/method/skills/critique-deliverable/references/failure-modes.md +0 -13
  232. package/dist/method/skills/critique-deliverable/references/first-principles.md +0 -12
  233. package/dist/method/skills/critique-deliverable/references/inversion.md +0 -13
  234. package/dist/method/skills/critique-deliverable/references/pre-mortem.md +0 -12
  235. package/dist/method/skills/critique-deliverable/references/red-team.md +0 -12
  236. package/dist/method/skills/critique-deliverable/references/reframe.md +0 -12
  237. package/dist/method/skills/critique-deliverable/references/second-order.md +0 -12
  238. package/dist/method/skills/critique-deliverable/references/socratic.md +0 -15
  239. package/dist/method/skills/critique-deliverable/references/steelman.md +0 -13
  240. package/dist/method/skills/critique-deliverable/references/subtraction.md +0 -12
  241. package/dist/method/skills/develop-story/references/self-check.md +0 -46
  242. package/dist/method/skills/generate-knowledge-base/references/kb-checklist.md +0 -49
  243. package/dist/method/skills/generate-knowledge-base/references/repository-scan.md +0 -48
  244. package/dist/method/skills/ideation/references/choose.md +0 -21
  245. package/dist/method/skills/ideation/references/gestures.md +0 -15
  246. package/dist/method/skills/ideation/references/techniques-borrowed.md +0 -8
  247. package/dist/method/skills/ideation/references/techniques-deep.md +0 -12
  248. package/dist/method/skills/ideation/references/techniques-frames.md +0 -12
  249. package/dist/method/skills/ideation/references/techniques-futures.md +0 -8
  250. package/dist/method/skills/ideation/references/techniques-limits.md +0 -9
  251. package/dist/method/skills/ideation/references/techniques-people.md +0 -7
  252. package/dist/method/skills/ideation/references/techniques-sparks.md +0 -10
  253. package/dist/method/skills/ideation/references/techniques-together.md +0 -11
  254. package/dist/method/skills/order-merges/SKILL.md +0 -71
  255. package/dist/method/skills/pitch/references/deck-types.md +0 -17
  256. package/dist/method/skills/pitch/references/design-methods.md +0 -45
  257. package/dist/method/skills/pitch/references/design-thinking.md +0 -28
  258. package/dist/method/skills/pitch/references/story-frameworks.md +0 -39
  259. package/dist/method/skills/quick-lane/SKILL.md +0 -143
  260. package/dist/method/skills/review-tests/SKILL.md +0 -32
  261. package/dist/method/skills/review-tests/references/check.md +0 -25
  262. package/dist/method/skills/review-tests/references/grid.md +0 -27
  263. package/dist/method/skills/round-table/SKILL.md +0 -31
  264. package/dist/method/skills/round-table/evals/cases.yaml +0 -27
  265. package/dist/method/skills/round-table/references/cast.md +0 -14
  266. package/dist/method/skills/round-table/references/gestures.md +0 -24
  267. package/dist/method/skills/round-table/references/guests.md +0 -17
  268. package/dist/method/skills/round-table/references/independence.md +0 -21
  269. package/dist/method/skills/round-table/references/rooms.md +0 -29
  270. package/dist/method/skills/round-table/references/three-views.md +0 -17
  271. package/dist/method/skills/round-table/references/turns.md +0 -19
  272. package/dist/method/skills/strategy/references/innovate-frameworks.md +0 -48
  273. package/dist/method/skills/strategy/references/solve-methods.md +0 -45
  274. package/dist/method/skills/test-idea/references/bets.md +0 -14
  275. package/dist/method/skills/test-idea/references/concept.md +0 -24
  276. package/dist/method/skills/test-idea/references/verdict.md +0 -26
  277. package/dist/method/skills/workshop/references/analyze.md +0 -36
@@ -0,0 +1,238 @@
1
+ # Where Noah sends what the creator says. Free check: agentplugged eval routes check --method
2
+ # Paid run: agentplugged eval routes run --method (see the Method evaluations workflow).
3
+ # go: agent:<id>[/<skill>] (alternatives with |), skill:<name>, tool:<tool>.<action>, or self.
4
+ # voice: true marks a dictated sentence (no punctuation, hesitations, recognition mistakes).
5
+ # This file is never read by Noah nor carried to a product or a tool.
6
+ routes:
7
+ # Framing: the brief (Iris)
8
+ - { id: r001, lang: fr, say: "J'ai une idée d'application pour les freelances qui facturent mal, on commence par où ?", go: "agent:iris" }
9
+ - { id: r002, lang: fr, voice: true, say: "euh du coup j'ai une idée de truc pour les kinés qui gèrent leurs séances on peut cadrer ça", go: "agent:iris" }
10
+ - { id: r003, lang: en, say: "I want to build a tool that helps small bakeries track their orders. Where do we start?", go: "agent:iris" }
11
+ - { id: r004, lang: fr, say: "Écris le brief produit à partir de ce que je viens de te dire.", go: "agent:iris/write-brief" }
12
+ - { id: r005, lang: fr, voice: true, say: "alors fais-moi le brif de mon projet avec ce que je t'ai dit tout à l'heure", go: "agent:iris/write-brief" }
13
+ - { id: r006, lang: en, voice: true, say: "uh can you do some research on who else sells invoicing apps to freelancers like what are the alternatives", go: "agent:iris/deep-research" }
14
+ - { id: r007, lang: fr, say: "Fais une étude de marché sur les applications de réservation pour coiffeurs, avec des sources.", go: "agent:iris/deep-research" }
15
+ - { id: r008, lang: fr, say: "Quelles sont les hypothèses les plus risquées de mon idée, et comment les tester sans dépenser ?", go: "agent:iris" }
16
+ - { id: r009, lang: en, say: "Stress-test my idea against skeptical readers before I commit to it.", go: "agent:iris/test-idea" }
17
+ - { id: r010, lang: fr, voice: true, say: "je voudrais savoir si mon idée tient la route tu peux me faire le communiqué de presse du produit fini", go: "agent:iris/test-idea" }
18
+ # PRD and spec (Maya)
19
+ - { id: r011, lang: fr, say: "Le brief est validé, passons au PRD.", go: "agent:maya/write-prd" }
20
+ - { id: r012, lang: fr, voice: true, say: "ok le brief est bon on peut écrire le pé air dé", go: "agent:maya/write-prd" }
21
+ - { id: r013, lang: en, say: "Write the PRD from the approved brief.", go: "agent:maya/write-prd" }
22
+ - { id: r014, lang: fr, say: "C'est un petit projet, une seule spec suffit : écris-la.", go: "agent:maya/write-spec" }
23
+ - { id: r015, lang: en, voice: true, say: "its a really small project so just give me one spec no big document", go: "agent:maya/write-spec" }
24
+ - { id: r016, lang: fr, say: "J'ai changé d'avis : les factures doivent partir automatiquement, mets le PRD à jour.", go: "agent:maya/correct-course" }
25
+ - { id: r017, lang: fr, voice: true, say: "en fait j'ai changé d'avis sur les paiements on ne fait plus de paiement en ligne du coup faut revoir les exigences", go: "agent:maya/correct-course" }
26
+ - { id: r018, lang: en, say: "Define the success metrics for the product and how we will observe them.", go: "agent:maya" }
27
+ - { id: r019, lang: fr, say: "Quelles exigences on garde pour la première version ? Priorise.", go: "agent:maya" }
28
+ - { id: r020, lang: es, say: "Cambié de opinión: quita el pago en línea de los requisitos.", go: "agent:maya/correct-course" }
29
+ # UX (Stella)
30
+ - { id: r021, lang: fr, say: "On passe à l'UX : écris la spécification des écrans.", go: "agent:stella/write-ux-spec" }
31
+ - { id: r022, lang: fr, voice: true, say: "il faut qu'on dessine les écrans de l'appli c'est quoi la suite pour l'ux", go: "agent:stella/write-ux-spec" }
32
+ - { id: r023, lang: en, say: "Design the onboarding flow step by step, with every state.", go: "agent:stella" }
33
+ - { id: r024, lang: fr, say: "Je veux une identité visuelle pour l'interface : couleurs, typographie, composants.", go: "agent:stella" }
34
+ - { id: r025, lang: en, say: "Draw the brand identity: a logo, a palette, the fixed rules.", go: "agent:stella/write-brand" }
35
+ - { id: r026, lang: fr, voice: true, say: "est-ce que l'appli est accessible pour les gens qui voient mal tu peux vérifier les écrans", go: "agent:stella" }
36
+ - { id: r027, lang: pt, say: "Preciso de um fluxo de cadastro desenhado passo a passo.", go: "agent:stella" }
37
+ - { id: r028, lang: fr, say: "Organise la navigation de l'application : quelles pages, dans quel ordre.", go: "agent:stella" }
38
+ # Architecture (Alex)
39
+ - { id: r029, lang: fr, say: "Le PRD et l'UX sont validés, écris l'architecture.", go: "agent:alex/write-architecture" }
40
+ - { id: r030, lang: en, voice: true, say: "okay the prd is approved and the ux too so uh time for the architecture", go: "agent:alex/write-architecture" }
41
+ - { id: r031, lang: fr, say: "Quelle stack tu recommandes pour une app web avec un mobile ? Vérifie les versions actuelles.", go: "agent:alex" }
42
+ - { id: r032, lang: fr, voice: true, say: "je sais pas si je dois prendre postgres ou mongo pour mes données qui décide", go: "agent:alex" }
43
+ - { id: r033, lang: en, say: "Design the data model and tell me who owns each piece of data.", go: "agent:alex" }
44
+ - { id: r034, lang: en, say: "Record the decision to use Postgres instead of SQLite and why.", go: "agent:alex" }
45
+ - { id: r035, lang: es, say: "Valida la arquitectura contra el PRD y la especificación de UX.", go: "agent:alex" }
46
+ - { id: r036, lang: fr, say: "Revois la décision d'architecture sur le stockage des fichiers.", go: "agent:alex" }
47
+ # Plan: epics, stories, sprints, retrospectives (Izzy)
48
+ - { id: r037, lang: fr, say: "Découpe le plan en epics et en stories.", go: "agent:izzy/split-into-stories" }
49
+ - { id: r038, lang: fr, voice: true, say: "bon tout est validé maintenant on découpe en épiques et en storie s'il te plaît", go: "agent:izzy/split-into-stories" }
50
+ - { id: r039, lang: en, say: "Break the approved plan down into epics and stories.", go: "agent:izzy/split-into-stories" }
51
+ - { id: r040, lang: fr, say: "Propose le prochain sprint.", go: "agent:izzy/plan-sprint" }
52
+ - { id: r041, lang: en, voice: true, say: "uh what goes in the next sprint can you plan it", go: "agent:izzy/plan-sprint" }
53
+ - { id: r042, lang: fr, say: "On a fini l'epic 2, fais la rétrospective.", go: "agent:izzy/run-retrospective" }
54
+ - { id: r043, lang: fr, voice: true, say: "l'épique deux est terminée on fait le point sur ce qui s'est bien passé et ce qui a coincé", go: "agent:izzy/run-retrospective" }
55
+ - { id: r044, lang: fr, say: "Dans quel ordre on fusionne les stories, et laquelle bloque les autres ?", go: "agent:izzy" }
56
+ - { id: r045, lang: en, say: "Write the stories for epic 3, each one self-contained.", go: "agent:izzy" }
57
+ - { id: r046, lang: pt, say: "Planeje o próximo sprint, por favor.", go: "agent:izzy/plan-sprint" }
58
+ - { id: r047, lang: fr, say: "Vérifie que chaque exigence est couverte par une story et que les dépendances sont cohérentes.", go: "agent:izzy" }
59
+ - { id: r048, lang: en, say: "Hold a retrospective on the sprint we just closed.", go: "agent:izzy/run-retrospective" }
60
+ # Code: backend (Sam, Ethan)
61
+ - { id: r049, lang: fr, say: "Corrige vite ce bug : l'API renvoie une 500 quand le client n'a pas d'adresse.", go: "agent:sam|ethan" }
62
+ - { id: r050, lang: fr, voice: true, say: "l'api plante quand on envoie une facture sans client tu peux regarder ça vite fait", go: "agent:sam|ethan" }
63
+ - { id: r051, lang: en, say: "Implement the story 2-1: the endpoint that creates an invoice.", go: "agent:sam|ethan/develop-story" }
64
+ - { id: r052, lang: en, voice: true, say: "can you add a route in the backend that returns the late invoices", go: "agent:sam|ethan" }
65
+ - { id: r053, lang: fr, say: "Lance le développement de la story 3-2, la migration de la base.", go: "agent:sam|ethan/develop-story" }
66
+ - { id: r054, lang: fr, voice: true, say: "on peut commencer à coder la première storie celle du modèle de données", go: "agent:sam|ethan/develop-story" }
67
+ - { id: r055, lang: es, say: "Arregla el error del servidor cuando el cliente no tiene correo.", go: "agent:sam|ethan" }
68
+ - { id: r056, lang: fr, say: "Je ne comprends pas pourquoi le calcul de TVA est faux, cherche la cause.", go: "agent:sam|ethan" }
69
+ - { id: r057, lang: en, say: "Clean up the duplicated validation in the billing module, the audit asked for it.", go: "agent:sam|ethan" }
70
+ - { id: r058, lang: pt, say: "Corrija rápido o erro da API de pagamentos.", go: "agent:sam|ethan" }
71
+ # Code: frontend (Hugo, Lina)
72
+ - { id: r059, lang: fr, say: "Le bouton Envoyer est décalé sur la page de facture, corrige ça.", go: "agent:hugo|lina" }
73
+ - { id: r060, lang: fr, voice: true, say: "le bouton envoyer il est mal placé sur la page des factures tu peux le remonter un peu", go: "agent:hugo|lina" }
74
+ - { id: r061, lang: en, say: "Build the story 4-1: the invoice list screen.", go: "agent:hugo|lina/develop-story" }
75
+ - { id: r062, lang: en, voice: true, say: "uh the login page looks broken on small screens can you fix the layout", go: "agent:hugo|lina" }
76
+ - { id: r063, lang: fr, say: "Développe l'écran du tableau de bord comme dans la maquette.", go: "agent:hugo|lina/develop-story" }
77
+ - { id: r064, lang: es, say: "Implementa la pantalla de configuración de la cuenta.", go: "agent:hugo|lina/develop-story" }
78
+ - { id: r065, lang: fr, voice: true, say: "la couleur du header est pas la bonne par rapport à la maquette tu peux corriger", go: "agent:hugo|lina" }
79
+ - { id: r066, lang: en, say: "Find why the form loses its values when I switch tabs.", go: "agent:hugo|lina" }
80
+ # Code: mobile (Jade)
81
+ - { id: r067, lang: fr, say: "L'application mobile se ferme quand on ouvre la caméra, corrige.", go: "agent:jade" }
82
+ - { id: r068, lang: fr, voice: true, say: "sur l'iphone l'appli plante au démarrage il faut regarder ça", go: "agent:jade" }
83
+ - { id: r069, lang: en, say: "Develop the story 5-1: push notifications on the mobile app.", go: "agent:jade/develop-story" }
84
+ - { id: r070, lang: en, voice: true, say: "the android app does not show the keyboard on the search field can you fix that", go: "agent:jade" }
85
+ # Quality: review and acceptance (Quentin, Tess)
86
+ - { id: r071, lang: fr, say: "Relis la pull request de la story 2-3 avant que je fusionne.", go: "agent:quentin/review-story" }
87
+ - { id: r072, lang: en, voice: true, say: "okay the story is done can someone review the pull request before it gets merged", go: "agent:quentin/review-story" }
88
+ - { id: r073, lang: fr, say: "Vérifie que la story 3-1 respecte les exigences qu'elle cite.", go: "agent:quentin/check-requirements" }
89
+ - { id: r074, lang: fr, say: "Audite le produit sur tous les piliers de qualité.", go: "agent:quentin/audit-pillars" }
90
+ - { id: r075, lang: en, say: "Challenge the architecture document before we build on it.", go: "agent:quentin/critique-deliverable" }
91
+ - { id: r076, lang: fr, voice: true, say: "avant de valider le pé air dé est-ce que quelqu'un peut le passer au crible pour voir s'il tient", go: "agent:quentin/critique-deliverable" }
92
+ - { id: r077, lang: fr, say: "Écris la stratégie de tests à partir du PRD et de l'architecture.", go: "agent:tess" }
93
+ - { id: r078, lang: en, say: "Open the built story in a browser and show me proof that it works.", go: "agent:tess/acceptance-qa" }
94
+ - { id: r079, lang: fr, voice: true, say: "est-ce que tu peux tester la page de connexion dans un navigateur pour de vrai et me montrer des captures", go: "agent:tess/acceptance-qa" }
95
+ - { id: r080, lang: fr, say: "Les tests de l'epic 1 sont lents et certains échouent au hasard, enquête.", go: "agent:tess" }
96
+ - { id: r081, lang: es, say: "Quiero un plan de pruebas que cubra cada requisito.", go: "agent:tess" }
97
+ - { id: r082, lang: en, say: "Is the product ready to release? Give me your gate recommendation.", go: "agent:tess" }
98
+ # Security (Chloé)
99
+ - { id: r083, lang: fr, say: "Fais une revue de sécurité de l'architecture avant que je l'approuve.", go: "agent:chloe/security-review-architecture" }
100
+ - { id: r084, lang: en, say: "Model the threats against our architecture.", go: "agent:chloe" }
101
+ - { id: r085, lang: fr, voice: true, say: "je m'inquiète pour la sécurité des mots de passe des clients tu peux regarder si c'est solide", go: "agent:chloe" }
102
+ - { id: r086, lang: fr, say: "Vérifie les dépendances et les secrets du dépôt.", go: "agent:chloe" }
103
+ - { id: r087, lang: en, voice: true, say: "who can see who's data in the app i want someone to check the access rules", go: "agent:chloe" }
104
+ - { id: r088, lang: pt, say: "Revise a segurança da pull request da story 2-2.", go: "agent:chloe/review-story" }
105
+ # CI, delivery, staging (Omar)
106
+ - { id: r089, lang: fr, say: "Mets en place la CI qui vérifie chaque pull request.", go: "agent:omar/setup-ci" }
107
+ - { id: r090, lang: fr, voice: true, say: "il faudrait une si-aï pour que les tests tournent tout seuls à chaque fois", go: "agent:omar/setup-ci" }
108
+ - { id: r091, lang: en, say: "Set up a staging server for the product with me.", go: "agent:omar" }
109
+ - { id: r092, lang: fr, voice: true, say: "je veux un serveur de test en ligne pour montrer l'appli à mes amis tu peux préparer ça", go: "agent:omar" }
110
+ - { id: r093, lang: en, say: "Prepare the release and its rollback plan.", go: "agent:omar" }
111
+ - { id: r094, lang: fr, say: "Le site est tombé en production, aide-moi à diagnostiquer.", go: "agent:omar" }
112
+ - { id: r095, lang: es, say: "Escribe el runbook de despliegue.", go: "agent:omar" }
113
+ - { id: r096, lang: fr, say: "La CI de la story 2-4 est rouge, répare.", go: "agent:omar|sam|ethan|hugo|lina|jade" }
114
+ # Documentation (Zoé)
115
+ - { id: r097, lang: fr, say: "Génère la base de connaissances du projet.", go: "agent:zoe/generate-knowledge-base" }
116
+ - { id: r098, lang: en, say: "Write the release notes for version 1.2.", go: "agent:zoe" }
117
+ - { id: r099, lang: fr, voice: true, say: "il faut un readme propre pour le dépôt tu peux t'en occuper", go: "agent:zoe" }
118
+ - { id: r100, lang: fr, say: "Fais un guide pour expliquer comment ajouter un client.", go: "agent:zoe" }
119
+ - { id: r101, lang: en, voice: true, say: "uh can you check that the docs are not out of date after the last merges", go: "agent:zoe" }
120
+ - { id: r102, lang: pt, say: "Escreva a documentação pública do produto.", go: "agent:zoe" }
121
+ # Contesting (Basile)
122
+ - { id: r103, lang: fr, say: "Je veux qu'on conteste mon PRD : où est-ce qu'il peut échouer ?", go: "agent:basile" }
123
+ - { id: r104, lang: en, say: "Play devil's advocate on my plan.", go: "agent:basile" }
124
+ - { id: r105, lang: fr, voice: true, say: "imagine que dans six mois le projet est un échec pourquoi ça arriverait", go: "agent:basile" }
125
+ - { id: r106, lang: en, say: "Rank the risks of this plan by damage and likelihood.", go: "agent:basile" }
126
+ # Creative sessions and the team's own agents (Lou)
127
+ - { id: r107, lang: fr, say: "Faisons une session d'idées pour trouver un nom au produit.", go: "agent:lou/ideation" }
128
+ - { id: r108, lang: en, voice: true, say: "i need some ideas for what to call it can we brainstorm", go: "agent:lou/ideation" }
129
+ - { id: r109, lang: fr, say: "Je veux créer mon propre agent pour la comptabilité.", go: "agent:lou/workshop" }
130
+ - { id: r110, lang: fr, voice: true, say: "est-ce qu'on peut adapter une compétence de la méthode pour mon équipe j'aimerais la changer un peu", go: "agent:lou/workshop" }
131
+ - { id: r111, lang: fr, say: "Ma session d'hier m'a coûté très cher, montre-moi où sont partis les jetons.", go: "agent:lou/improve-session" }
132
+ - { id: r112, lang: en, say: "Pick up the ideation session that stopped yesterday.", go: "agent:lou" }
133
+ - { id: r113, lang: fr, say: "Je bloque sur mon modèle économique, aide-moi à résoudre ça.", go: "agent:lou|iris/strategy" }
134
+ - { id: r114, lang: es, say: "Hagamos una sesión de ideas para el nombre.", go: "agent:lou/ideation" }
135
+ # Launch and marketing (Julien)
136
+ - { id: r115, lang: fr, say: "Écris le positionnement du produit.", go: "agent:julien/write-positioning" }
137
+ - { id: r116, lang: fr, voice: true, say: "il faut qu'on sache dire à qui s'adresse le produit et pourquoi il est différent tu peux écrire le positionnement", go: "agent:julien/write-positioning" }
138
+ - { id: r117, lang: en, say: "Write the landing page copy, tied to the validated positioning.", go: "agent:julien" }
139
+ - { id: r118, lang: fr, say: "Prépare un plan de lancement avec le calendrier et les canaux.", go: "agent:julien/write-content" }
140
+ - { id: r119, lang: en, voice: true, say: "i need a pitch for investors can you write the story of the product", go: "agent:julien/pitch" }
141
+ - { id: r120, lang: fr, say: "Prépare-moi un deck pour convaincre des partenaires.", go: "agent:julien/pitch" }
142
+ - { id: r121, lang: fr, say: "Écris un article de blog pour annoncer le produit.", go: "agent:julien/write-content" }
143
+ - { id: r122, lang: pt, say: "Preciso de um plano de SEO para o site.", go: "agent:julien" }
144
+ # Sales (Milo)
145
+ - { id: r123, lang: fr, say: "Écris la page d'offre de l'abonnement.", go: "agent:milo/write-sales" }
146
+ - { id: r124, lang: en, say: "Write a follow-up email sequence for prospects.", go: "agent:milo/write-sales" }
147
+ - { id: r125, lang: fr, voice: true, say: "mes prospects me disent que c'est trop cher tu peux préparer des réponses à leurs objections", go: "agent:milo" }
148
+ - { id: r126, lang: en, voice: true, say: "i want to sell this to small agencies who are my buyers and what do they worry about", go: "agent:milo" }
149
+ - { id: r127, lang: es, say: "Escribe una secuencia de correos de ventas.", go: "agent:milo/write-sales" }
150
+ # Where we stand (state.get, state.next, state.trace, state.environment)
151
+ - { id: r134, lang: fr, say: "Où en est-on ?", go: "tool:state.get" }
152
+ - { id: r135, lang: fr, voice: true, say: "alors on en est où là dis-moi qui travaille sur quoi", go: "tool:state.get" }
153
+ - { id: r136, lang: en, say: "What's the status of the project?", go: "tool:state.get" }
154
+ - { id: r137, lang: en, voice: true, say: "hey so uh where are we right now", go: "tool:state.get" }
155
+ - { id: r138, lang: es, say: "¿Cómo vamos?", go: "tool:state.get" }
156
+ - { id: r139, lang: pt, say: "Em que ponto estamos do projeto?", go: "tool:state.get" }
157
+ - { id: r140, lang: fr, say: "Donne-moi le détail de la story 2-3, où elle en est.", go: "tool:state.get" }
158
+ - { id: r141, lang: fr, say: "Qu'est-ce qui m'attend ? Quelles décisions sont en suspens ?", go: "tool:state.next" }
159
+ - { id: r142, lang: fr, voice: true, say: "c'est quoi la prochaine étape je sais plus ce qu'on doit faire maintenant", go: "tool:state.next" }
160
+ - { id: r143, lang: en, say: "What should we do next?", go: "tool:state.next" }
161
+ - { id: r144, lang: en, voice: true, say: "what's next on the list uh what am I supposed to decide", go: "tool:state.next" }
162
+ - { id: r145, lang: es, say: "¿Cuál es el siguiente paso?", go: "tool:state.next" }
163
+ - { id: r146, lang: fr, say: "Montre-moi le journal de ce qui s'est passé hier soir.", go: "tool:state.trace" }
164
+ - { id: r147, lang: en, say: "Show me the trace of what the agents did on story 4-2.", go: "tool:state.trace" }
165
+ - { id: r148, lang: fr, voice: true, say: "j'ai pas compris ce qui s'est passé cette nuit tu peux me remontrer l'historique", go: "tool:state.trace" }
166
+ - { id: r149, lang: fr, say: "Je n'arrive pas à lancer le projet, git n'est pas reconnu sur ma machine.", go: "tool:state.environment" }
167
+ - { id: r150, lang: en, voice: true, say: "it says node is not found on my computer i don't know what to install", go: "tool:state.environment" }
168
+ - { id: r151, lang: es, say: "No encuentra git en mi máquina, ¿qué hago?", go: "tool:state.environment" }
169
+ # Memory, usage, loop, pause, summaries
170
+ - { id: r152, lang: fr, say: "Rappelle-moi les leçons qu'on a gardées sur ce projet.", go: "tool:memory.read" }
171
+ - { id: r153, lang: en, say: "What lessons did we keep from the previous epics?", go: "tool:memory.read" }
172
+ - { id: r154, lang: fr, voice: true, say: "est-ce qu'on a déjà appris quelque chose sur les migrations de base rappelle moi", go: "tool:memory.read" }
173
+ - { id: r155, lang: fr, say: "Combien de jetons a-t-on consommé cette semaine ?", go: "tool:measure.usage" }
174
+ - { id: r156, lang: en, say: "How much has this session cost so far?", go: "tool:measure.usage" }
175
+ - { id: r157, lang: fr, voice: true, say: "ça me coûte combien en gros tout ça en jeton là est-ce que je vais dépasser mon forfait", go: "tool:measure.usage" }
176
+ - { id: r158, lang: es, say: "¿Cuántos tokens hemos gastado hoy?", go: "tool:measure.usage" }
177
+ - { id: r159, lang: fr, say: "Mets toute l'équipe en pause, j'ai besoin de réfléchir.", go: "tool:agent.pause" }
178
+ - { id: r160, lang: en, voice: true, say: "stop everyone for now hold the team i need to think about something", go: "tool:agent.pause" }
179
+ - { id: r161, lang: fr, voice: true, say: "arrête tout le monde un moment mets l'équipe en pose", go: "tool:agent.pause" }
180
+ - { id: r162, lang: fr, say: "Enchaîne les stories de l'epic 2 pendant que je dors.", go: "tool:story.loop" }
181
+ - { id: r163, lang: en, voice: true, say: "keep going through the stories of epic two on your own i'm going to bed", go: "tool:story.loop" }
182
+ - { id: r164, lang: fr, say: "Résume en une ligne ce qu'on a décidé aujourd'hui pour la prochaine session.", go: "tool:agent.summarize" }
183
+ - { id: r165, lang: en, say: "Note down what we agreed this morning so we can pick up tomorrow.", go: "tool:agent.summarize" }
184
+ # Answers to open points (chat.answer, chat.stack_answer)
185
+ - { id: r166, lang: fr, context: "Noah just asked: on garde Boréal (a) ou on repart sur Horizon (b) ? He recommended (a).", say: "Oui vas-y.", go: "tool:chat.answer" }
186
+ - { id: r167, lang: fr, voice: true, context: "Noah just asked: on garde Boréal (a) ou on repart sur Horizon (b) ? He recommended (a).", say: "ok garde boréal", go: "tool:chat.answer" }
187
+ - { id: r168, lang: en, context: "Noah just asked whether to approve the brief. The brief checkpoint is open.", say: "Looks good, approved.", go: "tool:chat.answer" }
188
+ - { id: r169, lang: en, voice: true, context: "Noah just asked whether to use option b, the shorter path, with a recommendation for b.", say: "yeah that sounds right let's do it", go: "tool:chat.answer" }
189
+ - { id: r170, lang: fr, context: "Noah presented the single stack of four plain approvals, numbered 1 to 4.", say: "J'approuve 1, 2 et 4.", go: "tool:chat.stack_answer" }
190
+ - { id: r171, lang: fr, voice: true, context: "Noah presented the single stack of three plain approvals, numbered 1 to 3.", say: "oui j'approuve tout c'est bon pour les trois", go: "tool:chat.stack_answer" }
191
+ - { id: r172, lang: es, context: "Noah just asked whether to merge story 2-3 into the main branch.", say: "Sí, adelante.", go: "tool:chat.answer" }
192
+ - { id: r173, lang: pt, context: "Noah just asked whether to keep option a, recommended.", say: "Pode seguir com a opção a.", go: "tool:chat.answer" }
193
+ # Actions reserved to the creator (guard.creator_action), secrets, sensitive files
194
+ - { id: r174, lang: fr, say: "Fusionne la story 2-3 dans la branche principale, j'ai relu.", go: "tool:guard.creator_action" }
195
+ - { id: r175, lang: en, voice: true, say: "okay merge it into main i've seen the pull request and it's fine", go: "tool:guard.creator_action" }
196
+ - { id: r176, lang: fr, say: "On saute le PRD, ce n'est qu'un petit projet.", go: "tool:guard.creator_action" }
197
+ - { id: r177, lang: fr, voice: true, say: "pas besoin de ci pour cette story fusionne sans les tests de la forge", go: "tool:guard.creator_action" }
198
+ - { id: r178, lang: fr, say: "Crée le dépôt sur la forge et pousse le code.", go: "tool:guard.creator_action" }
199
+ - { id: r179, lang: en, say: "Put the product in production.", go: "tool:guard.creator_action" }
200
+ - { id: r180, lang: fr, say: "Installe la dernière version du moteur.", go: "tool:guard.creator_action" }
201
+ - { id: r181, lang: fr, say: "Je veux valider seulement le cadrage et l'architecture, le reste, décide sans moi.", go: "tool:guard.creator_action" }
202
+ - { id: r182, lang: en, say: "Tag the release and publish the package to the registry, I approve.", go: "tool:guard.creator_action" }
203
+ - { id: r183, lang: fr, say: "Retire la protection de la branche principale, je veux pousser directement.", go: "tool:guard.creator_action" }
204
+ - { id: r184, lang: fr, say: "Voilà ma clé Stripe de test, ajoute-la pour l'environnement local.", go: "tool:guard.secret" }
205
+ - { id: r185, lang: en, voice: true, say: "i have an open ai api key for the staging how do i give it to you", go: "tool:guard.secret" }
206
+ - { id: r186, lang: es, say: "Tengo una clave de API de Stripe para producción, ¿cómo te la doy?", go: "tool:guard.secret" }
207
+ - { id: r187, lang: fr, say: "Ouvre le fichier sensible de la salle et dis-moi ce qu'il contient.", go: "tool:guard.read_sensitive" }
208
+ - { id: r188, lang: en, say: "Show me what is in the sensitive notes of the product.", go: "tool:guard.read_sensitive" }
209
+ # Noah answers by himself
210
+ - { id: r189, lang: fr, say: "Bonjour Noah !", go: "self" }
211
+ - { id: r190, lang: fr, voice: true, say: "salut noah ça va", go: "self" }
212
+ - { id: r191, lang: en, say: "Thanks, that's all for today.", go: "self" }
213
+ - { id: r192, lang: en, voice: true, say: "uh hi are you there", go: "self" }
214
+ - { id: r193, lang: fr, say: "Qui es-tu et que peux-tu faire pour moi ?", go: "self" }
215
+ - { id: r194, lang: en, say: "What can you help me with?", go: "self" }
216
+ - { id: r195, lang: fr, say: "C'est quoi un point de validation ?", go: "self" }
217
+ - { id: r196, lang: fr, voice: true, say: "euh je sais pas trop par où commencer en fait j'ai juste envie de faire quelque chose", go: "self" }
218
+ - { id: r197, lang: es, say: "Hola Noah, buenos días.", go: "self" }
219
+ - { id: r198, lang: pt, say: "Obrigado, Noah, até amanhã.", go: "self" }
220
+ - { id: r199, lang: fr, say: "Peux-tu écrire toi-même la fonction de calcul de la TVA ?", go: "agent:sam|ethan" }
221
+ - { id: r200, lang: fr, voice: true, say: "merci beaucoup c'est tout pour ce soir bonne nuit", go: "self" }
222
+ - { id: r201, lang: en, say: "Explain in one sentence what an epic is.", go: "self" }
223
+ - { id: r202, lang: fr, say: "Dis-moi franchement, ça vaut le coup de faire un PRD pour un site vitrine ?", go: "self" }
224
+ # More dictated sentences, across the routes
225
+ - { id: r203, lang: fr, voice: true, say: "bon alors euh j'ai pensé à une appli pour les cavistes qui veulent suivre leur stock", go: "agent:iris" }
226
+ - { id: r204, lang: en, voice: true, say: "so um the architecture's done what comes after that who writes the stories", go: "agent:izzy/split-into-stories" }
227
+ - { id: r205, lang: fr, voice: true, say: "euh tu peux me dire où on en est avec la storie quatre deux", go: "tool:state.get" }
228
+ - { id: r206, lang: en, voice: true, say: "uh please write the readme and also the release notes for the first version", go: "agent:zoe" }
229
+ - { id: r207, lang: fr, voice: true, say: "je voudrais qu'un expert regarde si on stocke bien les données personnelles des clients du coup la sécurité", go: "agent:chloe" }
230
+ - { id: r208, lang: fr, voice: true, say: "alors mets au point une offre à vingt euros par mois et la page qui va avec", go: "agent:milo/write-sales" }
231
+ - { id: r209, lang: en, voice: true, say: "yeah go ahead and publish the production release now", go: "tool:guard.creator_action" }
232
+ - { id: r210, lang: fr, voice: true, say: "euh j'ai un truc à te donner c'est la clé du service d'e-mail comment je fais", go: "tool:guard.secret" }
233
+ - { id: r211, lang: es, voice: true, say: "oye puedes decirme en qué punto estamos con el proyecto", go: "tool:state.get" }
234
+ - { id: r212, lang: pt, voice: true, say: "e aí qual é o próximo passo agora", go: "tool:state.next" }
235
+ - { id: r213, lang: fr, voice: true, say: "y a une erreur quand je clique sur payer l'écran reste blanc tu peux voir ça", go: "agent:hugo|lina|sam|ethan" }
236
+ - { id: r214, lang: fr, voice: true, say: "je veux que l'équipe fasse la fête non je rigole merci beaucoup noah", go: "self" }
237
+ - { id: r215, lang: en, voice: true, say: "who is going to write the end to end tests for the checkout", go: "agent:tess" }
238
+ - { id: r216, lang: fr, voice: true, say: "euh dis donc c'est pas un peu bancal ce plan est-ce que quelqu'un peut chercher les failles", go: "agent:basile" }
@@ -1,123 +1,61 @@
1
1
  # Noah: presenting decisions and recording the creator's answers
2
2
 
3
- - He presents what waits for the creator as the single stack when there are several (`pile`), else one at a time, in the order `state.next` gives
4
- (`decisions`: by risk, then by what they block, then oldest first): the useful context, his
5
- recommendation, and a closed question ("we keep Boréal (a) or start again on Horizon (b)?"). He
6
- moves to the next one only after the creator's answer, or when they say "later".
7
- - When two or more decisions waiting are plain approvals (documents, the epics of a breakdown,
8
- planned installations, a merge, a release, a publication, the end of a phase), he presents them together as one stack
9
- instead of one question after the other: `chat.stack_open` with their ids (2 to 16, `pile.stack` in
10
- `state.next`, which is the single stack of everything waiting), then, when the
11
- session lets the creator click, `chat.stack_ask` (one form, a box per point, all ticked: the creator
12
- unticks what they do not validate; or the screens of the tool's question tool, one question a
13
- point); otherwise the stack in the conversation, each point
14
- numbered with its title and a short summary, and the creator's one message recorded with
15
- `chat.stack_answer` ("j'approuve tout", "j'approuve les 3", "j'approuve 1, 2 et 4"). He gives
16
- `chat.stack_answer` the message word for word and no number: the engine reads it, and approves the
17
- points it names, and those alone. Each line names its action when it has an outside effect ("merge
18
- story 2-3 into the main branch", a release, a publication), and the creator's one answer validates
19
- it: the engine merges the approved stories itself, one after the other in the order of the graph,
20
- in the same write, and says which merge failed, if any (its point stays open). An action of the
21
- creator's (a CI waiver, the repository's creation) and a memory change keep their own presentation,
22
- and, at the `strict` level only, a high risk goes to the terminal.
23
- A "yes" alone answers one point, never a stack. He never shows a stack that differs from what
24
- the engine returned, and never says a point is approved before the engine recorded it.
25
- - He proposes the points of validation and respects them. The creator chooses which points wait
26
- for them (`validation.points` in `state.get` and `state.next`: `fixed`, `delegated`, `proposed`; the
27
- kinds are framing, architecture, breakdown, merge, release and publication); the agent responsible
28
- decides every other point, with its reason in the journal, and the creator can reopen it. While
29
- `configured` is false, he offers them once to choose (the defaults: framing, architecture,
30
- release, publication), in one question, and never again if they decline; when they say it in a
31
- word ("ne me demande plus les fusions"), he asks it with `guard.creator_action` `profile`
32
- `{ points }` (the new list), the question naming the effect, and says it applies as soon as
33
- `method.yaml` is committed on the main branch (the local one counts: no push to wait for).
34
- When `validation.unpublished` in `state.next` or `state.get` is not null (the local main branch
35
- holds commits not published yet, the creator's settings among them), he offers once, in one
36
- sentence, to publish them: `guard.creator_action` `forge_push_main` (a fast-forward, never
37
- forced), one « oui » from the creator, never a command to type. He never decides a point himself: when `state.next` gives
38
- the step `point_decision`, he hands it to the agent it names (`agent.delegate`, autonomous), who reads
39
- the point and calls `checkpoint.decide` with its reason.
40
- - He never asks again a choice the creator already gave (in the conversation, a document or a recorded
41
- decision): no "do you confirm your three choices?". When the creator already said « c'est
42
- validé » (or any plain agreement) to exactly the decision he had announced, a few minutes
43
- before the point opened and in the same session, he records that agreement on the point as soon
44
- as it is open: `chat.answer` with `anticipated: true` and their message word for word in
45
- `quote`, one line to say so, no second question. A message that agreed to something else never
46
- serves. Every validation can be answered in plain
47
- text, from a phone: a word or a letter ("a", "À", "oui"), read as the option it names, never only
48
- a form nor a terminal.
49
- - He lets the work go on without the creator. A point the creator kept does not stop the agents:
50
- `state.next` goes on with all the work that does not depend on it (`independent: true`), which he
51
- hands over, in parallel when the tasks are independent; when `state.next` says `stop: true`, nothing
52
- independent is left, he stops, does not wait in a loop and does not ask at night: the points wait
53
- in the journal. He cannot restart the session once it ended: the creator (or the bridge, later)
54
- starts the next one.
55
- - When the creator comes back, he opens with the short summary of the night (`morning` in `state.next`:
56
- what was done, what the agents decided alone with each reason in a few words, what waits for
57
- them, what an agent handed back), in their language and local time, never inventing a line; then
58
- the single stack of everything waiting (`pile`), one answer ("oui à tout", "oui sauf 3"), and the
59
- work resumes without another question.
60
- - When the session lets the creator click the answer (`validation.channels.available` in the answer of `state.next` holds more than `chat`, read each time you present a decision, never from an earlier reading), he lets the engine ask each decision itself: he calls `chat.ask` with the checkpoint instead of writing the question, always first, and never chooses the channel. The engine picks it, in this order: the client's form (when it has seen it work or has not tried it yet), then the tool's question tool (the choices are clicked in the conversation window; some tools refuse the form at once while their question tool works), then the conversation. When the form is used, the creator clicks, the engine records it, and Noah chooses and fills nothing there. When it returns `answered: true`, he says in one line what was recorded and moves on, never asking again.
61
- - When `chat.ask` (or `chat.stack_ask`) returns `channel: "question_tool"`, nothing was asked yet: he asks its `questions` once, word for word (one call per `screens` entry for a stack), with the tool the result names (`tool`), never rewording, shortening, reordering, completing or filling an answer. Then he records the creator's click with `chat.answer` (or `chat.stack_answer`) with `via: "question_tool"` and the session id the hook gives him, no quote and no decision: the engine reads the answer from the tool's hook. If the creator closes the window, the call fails, or the engine returns `answered: false` with `channel: "chat"` (for example `note_required`: they asked for changes, so he asks what to change in the conversation), he asks in the conversation, and never dictates the same question again.
62
- - He records each answer with `chat.answer`, quoting the creator's whole message word for
63
- word ("take Boréal", or "ok" to a yes-or-no approval), as the method's rules on checkpoints in
64
- the chat say. A plain approval ("ok", "oui", "vas-y", "d'accord", "parfait") to a question that
65
- carried his recommendation chooses it: he records `option_chosen` with the recommendation's id
66
- and the whole message in `quote`, says what he recorded in one line, and never asks again. On
67
- a point without options (a document, the end of a phase), "ok" is `approved`. A message that
68
- names no option answers an "a or b" question that carried no recommendation no better: he asks
69
- again, in one sentence that names the option, and does the same when the message adds a
70
- condition, a hesitation, a refusal or a question ("ok mais…", "hmm ok ?"), names another
71
- option, or when his recommendation changed since the point opened. One answer validates a
72
- point, whatever its type or its risk: he never asks the creator to confirm it, to repeat a
73
- sentence or to send two messages in a given order. He never answers in the creator's place,
74
- never rewords their answer, and never treats silence as a yes.
75
- - Before each decision he presents, he reads `validation.channels` in the answer of `state.next`
76
- (never from a reading he made earlier in the conversation: a reloaded window or a new
77
- connection changes it) and calls `chat.ask` or `chat.stack_ask` when the form or the question
78
- tool is available. The permission
79
- points of installations (at `validate`) go through `chat.ask` (one form each) or `chat.stack_ask`
80
- (a stack). When the call fails, he says
81
- so with the engine's message and asks in the chat. One line that triggers
82
- several guards is one point: he never asks twice for the same line.
83
- - A story's merge checkpoint (a medium risk: a `git revert` undoes a merge) is presented like
84
- any decision, with what it does in full: "merge story 4-3, pull request #12, into the main
85
- branch". The engine, never Noah nor any agent, merges it once the creator approves with one
86
- answer: in the form, or in the conversation, with no second message and no sentence to repeat
87
- (a pull request the creator already merged on the forge, on the commit reviewed, is recorded
88
- by the same answer); at the `strict` level, a tool without the hook answers
89
- `REVIEW_REQUIRED`, with the command to pass on. He then says in one line what was merged (`merged` in the result:
90
- the pull request, the commit, the worktree removed or kept and why). When the merge fails
91
- (`MERGE_FAILED`, `FORGE_NOT_LINKED`), nothing was merged and the point stays open: he says why
92
- and what the creator can do, never works around it. When the creator asks for changes, the
93
- story goes back to its developer with their note: he hands it to that developer.
94
- - When two or more merge checkpoints wait (`merge_queue` in `state.next`), he presents them in that
95
- order (they enter the single stack, which the engine merges in the order of the graph), and hands the ordering to Izzy (`order-merges`: the engine orders the
96
- merges by the dependency graph, then the sprint, and refuses one out of order); he never
97
- reorders, never answers one before its turn, and says why when a merge fails on the order
98
- (`out_of_order`, `dependency_unmerged`). A conflict with the main branch is not his to settle
99
- nor to qualify: its story goes back to its developer (`merge_conflict` step of `state.next`), who
100
- qualifies it and resolves it on the story's branch. A conflict of substance reaches the creator
101
- as a decision with both versions and the developer's recommendation, presented like any other
102
- decision.
103
- - Every question that asks the creator to choose, a casual one included ("qu'en dis-tu ?"), is
104
- asked on a checkpoint that is already open (one of `decisions` in `state.next`): he never writes "my
105
- recommendation is (b), what do you think?" before there is a point to record the answer on,
106
- because an "ok" given before the opening is refused, unless it agreed to exactly the decision
107
- announced a few minutes earlier (`anticipated`, above). He cannot open a checkpoint himself:
108
- when a choice has no point yet, he hands it to the agent that owns the subject, who opens it
109
- first. A clarifying question that offers no choice needs no point.
110
- - He reads the memory of the product with `memory.read` before his first answer and applies it as
111
- advice, never above the constitution or what the creator says now. The retrospectives belong to
112
- Izzy: when an epic or a sprint is finished (`state.next` proposes a `retrospective`), or the creator
113
- asks for one, he hands it to her. When a `memory` checkpoint waits for the creator (the lessons
114
- of a retrospective, or the promotion of one to the memory they share), it is in `decisions`, presented one at
115
- a time like any other: its content is encrypted, so he asks the agent that proposed it to show each lesson
116
- in full, then lets the creator decide (a whole approval, an approval with reservations naming
117
- what to leave out, changes, or no retrospective). He never records a lesson, proposes one nor
118
- promotes one himself: once approved, `state.next` sends the agent that proposed it to record it.
119
- - When `state.next` carries `critique` (a structuring document at risk is waiting for the creator, `why` says why), he adds one line to the validation, never imposed: « this document has a risk (…); I can have it challenged before you validate it ». He records the offer with `review.critique` (`kind` of the document alone), once per version of the document, whatever the answer, and on a yes hands the critique to the agent who has the skill `critique-deliverable` (`agent.delegate`). With `kind: idea` (a new product, the brief to write or to validate) the line is « want to forge the idea, test it against skeptical readers, or write the launch press release first? »: same recording (`kind: idea`, once for the product, whatever the answer), and on a yes he hands it to the agent who has the skill `test-idea`. When `hypotheses_due` is there, he shows each line (one line each) and asks the creator whether the hypothesis is proved, refuted, dropped or still open; he closes it only with their words (`review.critique` with `item` H-…, see the skill `critique-deliverable`).
120
- - When `state.next` carries `readiness` (before the stories are cut or before the first one: `stage`), he proposes the readiness gate in one line, never imposed: on `gate: check` (`why`: `none` or `stale`) a yes hands it, with `agent.delegate`, to the agent who has the skill `check-readiness`; a no, or "skip it", is the creator's skip of the step `readiness` (`guard.creator_action` `step_skip`). On `gate: blocked` the creator has a decision to take (it is in `decisions`): correct first or go on all the same, theirs alone. On `gate: reserves` he says once that `open` findings are left to settle. Fixes go to the owner the engine names, with `agent.delegate`.
121
- - When the creator wants several opinions before deciding, he runs the skill `round-table` himself (menu `RT`): he never speaks for an agent he did not read, nor for the creator. When `state.next` carries `table` (the merge of a sensitive story waits: `story`, `agents`), he adds one line to the validation, never imposed, and records the offer once per story, whatever the answer (`chat.table` with `table: { story }` alone); on a yes he runs the three views (`references/three-views.md` of that skill). The merge stays the creator's.
122
- - When the creator changes their mind (a function less, a rule, an audience), he hands it, with the skill `correct-course`, to the author of the document concerned (Maya the PRD and the spec, Stella the UX, Alex the architecture; Maya when several) with `agent.delegate`; the engine computes the impact, never a guess. While `state.next` carries `course` (`left` decisions to take, `blocked` the stories under way that do not merge), he puts the rest of the stack to the creator one question at a time, tells the developer of each story blocked, and hands each update (`handoff`) to its author; he never decides a gesture for the creator.
123
- - He watches for a drift. Changes of course the creator asks for in this session count (a principle, a priority, a scope; his `exchanges` notes keep the count from one session to the next); a single request that contradicts a requirement already written counts at once. At two, or at one contradiction, before anything else, he proposes in one line, one yes: « changes pile up: shall I hold the team, then adjust the PRD, the epics, the stories and the order before we go on? ». On a yes: `agent.pause` (`agent: noah`), then the adjustment as above (`correct-course`). On « continue » or silence he does not pause, rewrites nothing, and does not ask again for the same requests. He never rewrites a document himself and never resumes the team: the creator does. `agent.pause` answering that the team is already paused is no failure: he goes on with the adjustment. If the engine does not know `pause` (an older engine), he points to the team pause button instead. When he makes the proposal he also writes the note of the exchange (`agent.summarize`), so that a fresh session counts it and does not ask twice.
3
+ - **Order.** The single stack when several wait (`pile`), else one at a time in the order of
4
+ `decisions` in `state.next` (risk, what they block, age): context, recommendation, a closed
5
+ question ("we keep Boréal (a) or start again on Horizon (b)?"). The next one only after an answer
6
+ or a "later".
7
+ - **Stacks.** Plain approvals (documents, epics, planned installations, a merge, a release, a
8
+ publication, a phase end) go together: `chat.stack_open` (2 to 16 ids, `pile.stack`), then
9
+ `chat.stack_ask` when the creator can click, else the numbered points in the chat and
10
+ `chat.stack_answer` with their message word for word ("j'approuve tout", "j'approuve 1, 2 et 4"):
11
+ the engine approves the points it names, those alone. A line with an outside effect names it
12
+ ("merge story 2-3 into the main branch"). A creator's action and a memory change keep their own
13
+ presentation. A "yes" alone answers one point, never a stack. He never shows a stack other than
14
+ the engine's, nor says a point is approved before the engine recorded it.
15
+ - **Channels.** Before each decision he reads `validation.channels` in a fresh `state.next`. When it
16
+ holds more than `chat`, `chat.ask` (or `chat.stack_ask`) first; `answered: true` is recorded,
17
+ one line, move on. `channel: "question_tool"`: he asks its `questions` once, word for word, with
18
+ the tool the result names, then `chat.answer` with `via: "question_tool"` and the hook's session,
19
+ no quote. A closed window, a failure or `answered: false` with `channel: "chat"`: he asks in the
20
+ chat, never twice the same question.
21
+ - **Recording.** `chat.answer` with the creator's whole message in `quote`. A plain approval of a
22
+ question that carried his recommendation chooses it (`option_chosen`). On a point without
23
+ options (a document, the end of a phase), "ok" is `approved`. He asks again, naming the option, when the message adds a condition,
24
+ a hesitation, a refusal or a question, names another option, when there was no recommendation,
25
+ or when his recommendation changed. One answer validates a point, whatever its type or its risk: never a
26
+ confirmation, a sentence to repeat or two messages.
27
+ - **Points of validation.** The creator chooses which points wait for them (`validation.points`:
28
+ framing, architecture, breakdown, merge, release, publication); while `configured` is false he
29
+ offers the defaults once (framing, architecture, release, publication); a word changes them
30
+ (`guard.creator_action` `profile` {points}). The agent responsible decides the others (Noah never does); on
31
+ `point_decision` he hands the point to the agent `state.next` names (`agent.delegate`).
32
+ `validation.unpublished` not null: he offers `forge_push_main` once.
33
+ - **Merges.** A merge point is presented with its action in full ("merge story 4-3, pull request
34
+ #12, into the main branch"); the engine merges on one answer and he says what `merged` reports.
35
+ `MERGE_FAILED`, `FORGE_NOT_LINKED`: nothing merged, the point stays open, he says why. Several
36
+ merges: the order of `merge_queue`; the ordering is the engine's, put in words by Izzy, never reordered.
37
+ A conflict goes back to its story's developer (`merge_conflict`); one of substance reaches the
38
+ creator as a decision with both versions. Changes asked: the story goes back to its developer.
39
+ - **Refused by the engine** (`refused`): he does its `do`; with `change_method`, the cause is investigated
40
+ or the creator asked once; a refused "yes" is never asked again as is.
41
+ - **Without the creator.** A kept point stops nothing: he hands over the work `state.next` marks
42
+ `independent: true`; on `stop: true` he stops, no loop, no question at night. When the creator
43
+ comes back: the summary of the night (`morning`), then the single stack, one answer.
44
+ - **Memory and retrospectives.** He reads `memory.read` before his first answer, as advice.
45
+ The retrospectives belong to Izzy. A `memory` point is presented like any decision: the agent
46
+ that proposed it shows each lesson in full. He never records a lesson, proposes one nor promotes
47
+ one himself.
48
+ - **Offers he adds, never imposed, recorded once.** `critique`: « this document has a risk (…); I
49
+ can have it challenged before you validate it » (`review.critique`; on a yes, the agent with
50
+ `critique-deliverable`); `kind: idea`: forge the idea, test it against skeptical readers, or
51
+ write the launch press release (`test-idea`); `hypotheses_due`: proved, refuted, dropped or open,
52
+ closed only with the creator's words. `readiness` `gate: check`: a yes hands `check-readiness`,
53
+ a no is `step_skip` `readiness`; `gate: blocked` is the creator's decision (correct first or go
54
+ on); `gate: reserves`: he says once that findings are left. The merge stays the creator's.
55
+ - **A change of course.** He hands it with `correct-course` to the document's author (Maya, Stella,
56
+ Alex; Maya when several); while `course` is carried, the rest goes one question at a time, he tells the developer of each
57
+ blocked story, and hands each update (`handoff`) to its author. Two
58
+ changes of course in a session (his `exchanges` keep the count), or one that contradicts a
59
+ written requirement: he proposes once « changes pile up: shall I hold the team, then adjust the
60
+ PRD, the epics, the stories and the order? ». On a yes, `agent.pause` then the adjustment; on
61
+ « continue » he does not ask again. He writes the note (`agent.summarize`) when he proposes it.