agentplugged 1.2.0 → 1.4.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 (236) hide show
  1. package/README.md +3 -2
  2. package/dist/agent-commands.js +25689 -24738
  3. package/dist/bin.js +1 -2
  4. package/dist/cli.js +1 -2
  5. package/dist/dist.js +12205 -0
  6. package/dist/esm.js +8 -16
  7. package/dist/forge-follow.js +5 -6
  8. package/dist/hash.js +9 -11907
  9. package/dist/helpers.js +257 -514
  10. package/dist/launcher-env.js +1 -2
  11. package/dist/launcher.js +3 -4
  12. package/dist/libsodium-wrappers.js +2 -4
  13. package/dist/libsodium-wrappers2.js +2 -4
  14. package/dist/main.js +820 -166
  15. package/dist/method/agents/alex/SKILL.md +13 -29
  16. package/dist/method/agents/alex/agent.yaml +1 -1
  17. package/dist/method/agents/basile/SKILL.md +44 -0
  18. package/dist/method/agents/basile/agent.yaml +69 -0
  19. package/dist/method/agents/chloe/SKILL.md +12 -25
  20. package/dist/method/agents/chloe/agent.yaml +3 -3
  21. package/dist/method/agents/ethan/SKILL.md +8 -9
  22. package/dist/method/agents/ethan/agent.yaml +9 -8
  23. package/dist/method/agents/hugo/SKILL.md +8 -8
  24. package/dist/method/agents/hugo/agent.yaml +9 -8
  25. package/dist/method/agents/iris/SKILL.md +4 -10
  26. package/dist/method/agents/izzy/SKILL.md +68 -91
  27. package/dist/method/agents/izzy/agent.yaml +8 -15
  28. package/dist/method/agents/jade/SKILL.md +7 -9
  29. package/dist/method/agents/jade/agent.yaml +9 -8
  30. package/dist/method/agents/julien/SKILL.md +38 -58
  31. package/dist/method/agents/lina/SKILL.md +7 -9
  32. package/dist/method/agents/lina/agent.yaml +9 -8
  33. package/dist/method/agents/lou/SKILL.md +4 -11
  34. package/dist/method/agents/lou/agent.yaml +2 -2
  35. package/dist/method/agents/maya/SKILL.md +12 -19
  36. package/dist/method/agents/maya/agent.yaml +1 -3
  37. package/dist/method/agents/milo/SKILL.md +21 -32
  38. package/dist/method/agents/noah/SKILL.md +109 -61
  39. package/dist/method/agents/noah/agent.yaml +14 -31
  40. package/dist/method/agents/noah/references/decisions.md +61 -120
  41. package/dist/method/agents/noah/references/environment.md +30 -70
  42. package/dist/method/agents/noah/references/facts.md +22 -11
  43. package/dist/method/agents/noah/references/journey.md +26 -78
  44. package/dist/method/agents/noah/references/team.md +63 -190
  45. package/dist/method/agents/omar/SKILL.md +12 -28
  46. package/dist/method/agents/omar/agent.yaml +1 -1
  47. package/dist/method/agents/quentin/SKILL.md +7 -15
  48. package/dist/method/agents/quentin/agent.yaml +4 -2
  49. package/dist/method/agents/sam/SKILL.md +6 -8
  50. package/dist/method/agents/sam/agent.yaml +9 -8
  51. package/dist/method/agents/stella/SKILL.md +6 -14
  52. package/dist/method/agents/stella/agent.yaml +1 -1
  53. package/dist/method/agents/tess/SKILL.md +7 -14
  54. package/dist/method/agents/tess/agent.yaml +2 -2
  55. package/dist/method/agents/zoe/SKILL.md +9 -21
  56. package/dist/method/doctor.yaml +23 -4
  57. package/dist/method/models.yaml +12 -0
  58. package/dist/method/skills/acceptance-qa/SKILL.md +1 -1
  59. package/dist/method/skills/acceptance-qa/references/run.md +24 -32
  60. package/dist/method/skills/acceptance-qa/references/scenarios.md +16 -19
  61. package/dist/method/skills/acceptance-qa/references/verdicts.md +10 -16
  62. package/dist/method/skills/api-e2e-tests/SKILL.md +46 -46
  63. package/dist/method/skills/audit-pillars/SKILL.md +12 -10
  64. package/dist/method/skills/audit-pillars/references/pillars.md +40 -0
  65. package/dist/method/skills/chain-stories/SKILL.md +5 -4
  66. package/dist/method/skills/chain-stories/references/merge-order.md +23 -0
  67. package/dist/method/skills/check-readiness/SKILL.md +1 -1
  68. package/dist/method/skills/check-requirements/SKILL.md +37 -72
  69. package/dist/method/skills/check-requirements/references/engine-proofs.md +16 -23
  70. package/dist/method/skills/check-requirements/references/proofs-and-gaps.md +22 -37
  71. package/dist/method/skills/critique-deliverable/SKILL.md +3 -3
  72. package/dist/method/skills/critique-deliverable/references/choose.md +12 -21
  73. package/dist/method/skills/critique-deliverable/references/format.md +14 -20
  74. package/dist/method/skills/critique-deliverable/references/gestures.md +14 -21
  75. package/dist/method/skills/critique-deliverable/references/judgment.md +4 -9
  76. package/dist/method/skills/critique-deliverable/references/methods.md +21 -0
  77. package/dist/method/skills/critique-deliverable/references/reconcile.md +6 -11
  78. package/dist/method/skills/deep-research/SKILL.md +16 -24
  79. package/dist/method/skills/deep-research/references/candidates.md +13 -25
  80. package/dist/method/skills/deep-research/references/external.md +15 -34
  81. package/dist/method/skills/deep-research/references/page-format.md +16 -42
  82. package/dist/method/skills/deep-research/references/types.md +16 -27
  83. package/dist/method/skills/develop-story/SKILL.md +56 -189
  84. package/dist/method/skills/develop-story/references/acceptance-tests.md +18 -71
  85. package/dist/method/skills/develop-story/references/quick-lane.md +20 -0
  86. package/dist/method/skills/diagnose-bug/SKILL.md +42 -53
  87. package/dist/method/skills/diagnose-bug/references/hypotheses.md +1 -2
  88. package/dist/method/skills/generate-knowledge-base/SKILL.md +57 -226
  89. package/dist/method/skills/generate-knowledge-base/assets/index-template.md +6 -15
  90. package/dist/method/skills/generate-knowledge-base/assets/page-template.md +11 -24
  91. package/dist/method/skills/generate-knowledge-base/references/living-docs.md +25 -64
  92. package/dist/method/skills/generate-knowledge-base/references/reuse-map.md +9 -18
  93. package/dist/method/skills/ideation/SKILL.md +16 -23
  94. package/dist/method/skills/ideation/references/close.md +18 -14
  95. package/dist/method/skills/ideation/references/converge.md +11 -21
  96. package/dist/method/skills/ideation/references/stances.md +13 -17
  97. package/dist/method/skills/ideation/references/techniques.md +20 -0
  98. package/dist/method/skills/improve-code/SKILL.md +42 -54
  99. package/dist/method/skills/pitch/SKILL.md +16 -19
  100. package/dist/method/skills/pitch/references/deck.md +15 -18
  101. package/dist/method/skills/pitch/references/design-implementation.md +13 -21
  102. package/dist/method/skills/pitch/references/design.md +21 -0
  103. package/dist/method/skills/pitch/references/story.md +13 -18
  104. package/dist/method/skills/plan-sprint/SKILL.md +49 -151
  105. package/dist/method/skills/resolve-merge-conflict/SKILL.md +40 -65
  106. package/dist/method/skills/review-after-launch/SKILL.md +56 -0
  107. package/dist/method/skills/review-story/SKILL.md +44 -72
  108. package/dist/method/skills/review-story/references/amend-story.md +8 -13
  109. package/dist/method/skills/review-story/references/export.md +7 -17
  110. package/dist/method/skills/review-story/references/free-review.md +9 -20
  111. package/dist/method/skills/review-story/references/judge.md +25 -37
  112. package/dist/method/skills/review-story/references/tests.md +29 -0
  113. package/dist/method/skills/round-table/SKILL.md +6 -6
  114. package/dist/method/skills/round-table/references/closing.md +18 -0
  115. package/dist/method/skills/round-table/references/guests.md +15 -15
  116. package/dist/method/skills/round-table/references/rooms.md +15 -28
  117. package/dist/method/skills/round-table/references/table.md +19 -0
  118. package/dist/method/skills/run-acceptance/SKILL.md +58 -0
  119. package/dist/method/skills/run-acceptance/references/template.md +39 -0
  120. package/dist/method/skills/run-retrospective/SKILL.md +50 -189
  121. package/dist/method/skills/security-review-architecture/SKILL.md +47 -109
  122. package/dist/method/skills/security-review-architecture/references/spec-review.md +27 -38
  123. package/dist/method/skills/setup-ci/SKILL.md +45 -109
  124. package/dist/method/skills/split-into-stories/SKILL.md +59 -192
  125. package/dist/method/skills/split-into-stories/assets/story.md.tmpl +15 -4
  126. package/dist/method/skills/strategy/SKILL.md +21 -25
  127. package/dist/method/skills/strategy/references/costs.md +12 -26
  128. package/dist/method/skills/strategy/references/gestures.md +12 -21
  129. package/dist/method/skills/strategy/references/innovate.md +19 -37
  130. package/dist/method/skills/strategy/references/solve.md +19 -32
  131. package/dist/method/skills/test-idea/SKILL.md +5 -5
  132. package/dist/method/skills/test-idea/assets/prfaq-template.md +1 -1
  133. package/dist/method/skills/test-idea/references/faq.md +12 -29
  134. package/dist/method/skills/test-idea/references/forge.md +19 -30
  135. package/dist/method/skills/test-idea/references/personas.md +16 -19
  136. package/dist/method/skills/test-idea/references/prfaq.md +31 -31
  137. package/dist/method/skills/workshop/SKILL.md +10 -16
  138. package/dist/method/skills/workshop/references/create.md +28 -45
  139. package/dist/method/skills/workshop/references/customize.md +17 -42
  140. package/dist/method/skills/workshop/references/evaluate.md +11 -42
  141. package/dist/method/skills/workshop/references/rules.md +17 -26
  142. package/dist/method/skills/write-architecture/SKILL.md +62 -220
  143. package/dist/method/skills/write-architecture/references/guard.md +11 -28
  144. package/dist/method/skills/write-architecture/references/self-check.md +22 -38
  145. package/dist/method/skills/write-brand/SKILL.md +2 -2
  146. package/dist/method/skills/write-brand/references/identity.md +21 -22
  147. package/dist/method/skills/write-brand/references/platform.md +13 -20
  148. package/dist/method/skills/write-brand/references/rules.md +16 -22
  149. package/dist/method/skills/write-brief/SKILL.md +56 -149
  150. package/dist/method/skills/write-brief/references/brief-checklist.md +18 -30
  151. package/dist/method/skills/write-content/SKILL.md +53 -210
  152. package/dist/method/skills/write-content/references/content-checklist.md +32 -50
  153. package/dist/method/skills/write-positioning/SKILL.md +53 -197
  154. package/dist/method/skills/write-positioning/references/positioning-checklist.md +15 -41
  155. package/dist/method/skills/write-positioning/references/seo-checklist.md +26 -51
  156. package/dist/method/skills/write-prd/SKILL.md +52 -179
  157. package/dist/method/skills/write-prd/references/prd-checklist.md +25 -54
  158. package/dist/method/skills/write-sales/SKILL.md +48 -212
  159. package/dist/method/skills/write-sales/references/before-you-send.md +21 -49
  160. package/dist/method/skills/write-sales/references/sales-checklist.md +19 -69
  161. package/dist/method/skills/write-spec/references/spec-guide.md +20 -23
  162. package/dist/method/skills/write-ux-spec/SKILL.md +57 -168
  163. package/dist/method/skills/write-ux-spec/references/accessibility-check.md +13 -72
  164. package/dist/method/skills/write-ux-spec/references/mockups.md +6 -68
  165. package/dist/method/skills/write-ux-spec/references/tokens-and-sketches.md +8 -81
  166. package/dist/method/skills/write-ux-spec/references/ux-checklist.md +12 -67
  167. package/dist/product-root.js +15747 -15091
  168. package/dist/project-command.js +1508 -0
  169. package/dist/project-command2.js +1 -0
  170. package/dist/read-command.js +19 -0
  171. package/dist/rolldown-runtime.js +1 -2
  172. package/dist/sheet-command.js +57 -0
  173. package/dist/webauthn-verify.js +4 -5
  174. package/package.json +11 -10
  175. package/dist/method/agents/noah/references/conduct.md +0 -99
  176. package/dist/method/skills/api-e2e-tests/references/frameworks.md +0 -58
  177. package/dist/method/skills/api-e2e-tests/references/generate.md +0 -67
  178. package/dist/method/skills/audit-pillars/references/accessibility.md +0 -13
  179. package/dist/method/skills/audit-pillars/references/architecture.md +0 -13
  180. package/dist/method/skills/audit-pillars/references/dependencies.md +0 -13
  181. package/dist/method/skills/audit-pillars/references/format.md +0 -20
  182. package/dist/method/skills/audit-pillars/references/interface.md +0 -13
  183. package/dist/method/skills/audit-pillars/references/method.md +0 -33
  184. package/dist/method/skills/audit-pillars/references/performance.md +0 -17
  185. package/dist/method/skills/audit-pillars/references/quality.md +0 -11
  186. package/dist/method/skills/audit-pillars/references/security.md +0 -13
  187. package/dist/method/skills/audit-pillars/references/tests.md +0 -17
  188. package/dist/method/skills/critique-deliverable/references/assumption-audit.md +0 -11
  189. package/dist/method/skills/critique-deliverable/references/compare-existing.md +0 -13
  190. package/dist/method/skills/critique-deliverable/references/devils-advocate.md +0 -13
  191. package/dist/method/skills/critique-deliverable/references/divergence.md +0 -15
  192. package/dist/method/skills/critique-deliverable/references/domain-expert.md +0 -14
  193. package/dist/method/skills/critique-deliverable/references/extreme-user.md +0 -13
  194. package/dist/method/skills/critique-deliverable/references/failure-modes.md +0 -13
  195. package/dist/method/skills/critique-deliverable/references/first-principles.md +0 -12
  196. package/dist/method/skills/critique-deliverable/references/inversion.md +0 -13
  197. package/dist/method/skills/critique-deliverable/references/pre-mortem.md +0 -12
  198. package/dist/method/skills/critique-deliverable/references/red-team.md +0 -12
  199. package/dist/method/skills/critique-deliverable/references/reframe.md +0 -12
  200. package/dist/method/skills/critique-deliverable/references/second-order.md +0 -12
  201. package/dist/method/skills/critique-deliverable/references/socratic.md +0 -15
  202. package/dist/method/skills/critique-deliverable/references/steelman.md +0 -13
  203. package/dist/method/skills/critique-deliverable/references/subtraction.md +0 -12
  204. package/dist/method/skills/develop-story/references/self-check.md +0 -46
  205. package/dist/method/skills/generate-knowledge-base/references/kb-checklist.md +0 -49
  206. package/dist/method/skills/generate-knowledge-base/references/repository-scan.md +0 -48
  207. package/dist/method/skills/ideation/references/choose.md +0 -21
  208. package/dist/method/skills/ideation/references/gestures.md +0 -15
  209. package/dist/method/skills/ideation/references/techniques-borrowed.md +0 -8
  210. package/dist/method/skills/ideation/references/techniques-deep.md +0 -12
  211. package/dist/method/skills/ideation/references/techniques-frames.md +0 -12
  212. package/dist/method/skills/ideation/references/techniques-futures.md +0 -8
  213. package/dist/method/skills/ideation/references/techniques-limits.md +0 -9
  214. package/dist/method/skills/ideation/references/techniques-people.md +0 -7
  215. package/dist/method/skills/ideation/references/techniques-sparks.md +0 -10
  216. package/dist/method/skills/ideation/references/techniques-together.md +0 -11
  217. package/dist/method/skills/order-merges/SKILL.md +0 -71
  218. package/dist/method/skills/pitch/references/deck-types.md +0 -17
  219. package/dist/method/skills/pitch/references/design-methods.md +0 -45
  220. package/dist/method/skills/pitch/references/design-thinking.md +0 -28
  221. package/dist/method/skills/pitch/references/story-frameworks.md +0 -39
  222. package/dist/method/skills/quick-lane/SKILL.md +0 -143
  223. package/dist/method/skills/review-tests/SKILL.md +0 -32
  224. package/dist/method/skills/review-tests/references/check.md +0 -25
  225. package/dist/method/skills/review-tests/references/grid.md +0 -27
  226. package/dist/method/skills/round-table/references/cast.md +0 -14
  227. package/dist/method/skills/round-table/references/gestures.md +0 -24
  228. package/dist/method/skills/round-table/references/independence.md +0 -21
  229. package/dist/method/skills/round-table/references/three-views.md +0 -17
  230. package/dist/method/skills/round-table/references/turns.md +0 -19
  231. package/dist/method/skills/strategy/references/innovate-frameworks.md +0 -48
  232. package/dist/method/skills/strategy/references/solve-methods.md +0 -45
  233. package/dist/method/skills/test-idea/references/bets.md +0 -14
  234. package/dist/method/skills/test-idea/references/concept.md +0 -24
  235. package/dist/method/skills/test-idea/references/verdict.md +0 -26
  236. package/dist/method/skills/workshop/references/analyze.md +0 -36
@@ -1,201 +1,62 @@
1
1
  ---
2
2
  name: run-retrospective
3
- description: Look back on a finished epic or sprint, propose lessons to the creator and record the approved ones in the memory every agent reads. Run by Izzy.
3
+ description: Look back on a finished epic or sprint, propose lessons to the creator and record the approved ones in the shared memory. Run by Izzy.
4
4
  metadata:
5
5
  agent: izzy
6
6
  phase: build
7
7
  ---
8
8
  # Run a retrospective
9
9
 
10
- A retrospective turns what the team lived into what the team knows. It looks at a finished epic or
11
- sprint, proposes **lessons** (what to do or avoid next time) and **actions** (what is owed), and
12
- lets the creator decide what the team keeps. Lessons the creator approves go into the memory of the
13
- product: every agent reads it with `memory.read` at the start of a task, so the same mistake is not
14
- made twice. A lesson useful to every product of the creator can be promoted to the memory they
15
- share on their machine, one promotion at a time, each one approved by them.
16
-
17
- This skill belongs to Izzy. Run it as Izzy, with `agent: izzy` in every MCP call. Work in the
18
- creator's language; keep identifiers (`4`, `S-…`, `G-…`, `L-…`, `C-…`) as they are.
19
-
20
- - **Inputs:** the epic or sprint (from the creator's request, or the `scope` of `npx agentplugged
21
- next --json`), `state.get`, the history of the creator's validations, the deferred work, the
22
- deviations and the reviews, and the memory as it stands (`memory.read`).
23
- - **Outputs:** one retrospective proposed with `memory.retrospective` and, once approved, recorded
24
- with `memory.record`; then, if the creator wants it, a promotion (`memory.promote_propose`,
25
- `memory.promote`). No file: the engine writes the memory, encrypted.
26
- - Nothing enters the memory without the creator. You never write a lesson yourself, and the engine
27
- refuses it if you try: only an approved checkpoint records one.
28
-
29
- Follow the steps in order. Each one ends with what it must have produced.
30
-
31
- ## Step 1 — Check the scope and the session
32
-
33
- 1. Call `agent.status` (`working`, task "retrospective").
34
- 2. Read the scope: `{ kind: "epic", id: "4" }` or `{ kind: "sprint", id: "S-…" }`. With
35
- `npx agentplugged next --json`, `scope` is the one due; otherwise take the creator's.
36
- 3. Call `state.get`: an epic is finished when every story of it is done, a sprint when its stories
37
- are done or a later sprint replaced it. A `memory` checkpoint already open or approved for this
38
- scope means the retrospective exists (`scope_taken`): tell the creator where it stands and stop.
39
- One sent back with `changes_requested`: read the creator's note (`state.get { checkpoint: "<id>" }`, then `checkpoint.resolution.note`),
40
- this run answers it.
41
-
42
- **Produces:** the scope confirmed, free of an earlier retrospective.
43
-
44
- ## Step 2 — Gather the facts
45
-
46
- Look at what happened, never at what you remember:
47
-
48
- - `state.get`: each story of the scope (status, results, reviews: `state.get { story: "<id>" }`
49
- gives one in full),
50
- the
51
- checkpoints the creator refused or sent back (`state.get { checkpoints: { status: "resolved" } }`),
52
- the open questions and conflicts, the sprint (goal, what was left out).
53
- - `npx agentplugged history --story <e-s>` for the creator's validations and their reasons;
54
- `npx agentplugged deferred list --all` for the work put off, with why; `npx agentplugged trace`
55
- for the deviations from the requirements.
56
- - The notes of the creator in the chat during the scope, when you have them: what they corrected,
57
- what they asked twice.
58
-
59
- Group the facts by theme: what went well and should be repeated, what cost time or money, what was
60
- refused or reworked, what was misunderstood, what kept coming back. A theme with a single
61
- occurrence is an anecdote; a theme with two or more is a candidate lesson.
62
-
63
- **Produces:** a short list of themes, each with the stories that show it.
64
-
65
- ## Step 3 — Read the memory first
66
-
67
- 1. Call `memory.read` (`agent: izzy`). Note the active lessons (`id`, `source`) and the follow-ups
68
- of the last retrospectives (`actions`).
69
- 2. For every candidate lesson, decide against the memory:
70
- - **already there**: do not repeat it. If the facts show it was not followed, say so in the
71
- summary instead;
72
- - **contradicts an active lesson**: the new lesson **replaces** it (`replaces`, the old id), or
73
- you drop the new one. Never leave two lessons that contradict each other;
74
- - **an active lesson the facts show is wrong, or no longer true**: propose its retirement
75
- (`retire`, with the reason);
76
- - **new**: keep it.
77
- 3. Check the follow-ups of the last retrospectives: say which were done, which were not.
78
- 4. `warnings` of `memory.read`: `product_key_missing` means this machine cannot read nor write the
79
- product's memory (`PRODUCT_KEY_MISSING`): tell the creator, whose product key is on another
80
- machine (`npx agentplugged key import`), and stop.
81
-
82
- **Produces:** the candidate lessons, each new, replacing or retiring something; the follow-ups' status.
83
-
84
- ## Step 4 — Write the lessons and the actions
85
-
86
- A lesson is useful when an agent can apply it without asking anyone:
87
-
88
- - **One lesson, one idea**: a title of one line (120 characters at most) and a text of at most 1,000
89
- characters that says what to do or avoid, **why** (the facts it comes from, by story id), and
90
- **when** it applies.
91
- - **A way of working, not a fact of the code**: "run the contract tests before opening the pull
92
- request, two stories bounced on it" is a lesson; "the invoice module uses X" belongs to the
93
- knowledge base, not to the memory.
94
- - **No secret, no personal data**, no name of a person, no key, no token, no address: the memory is
95
- read by every agent.
96
- - **`agents`** names the agents the lesson is for (the developers of a specialty, the reviewers…);
97
- leave it out when it is for everyone. **`tags`** (five at most, lowercase, hyphens) say what it is about.
98
- - A lesson says nothing about a language, a framework or a tool unless the product's architecture
99
- does: the method is not tied to a stack.
100
- - **An action** is something owed, one line (300 characters), with its `owner`: an agent id, or
101
- `creator`. An action is not a lesson: "add a lint rule for X" is an action, "check X before
102
- merging" is a lesson. The engine does not track actions; you turn the approved ones into deferred
103
- work (`plan.defer`), stories at the next breakdown, or items of the next sprint.
104
- - At most 12 lessons, 12 retirements, 12 actions. Fewer is better: five lessons the team applies
105
- beat twenty it forgets. Say plainly when the scope taught nothing new.
106
-
107
- **Produces:** the lessons (with `agents`, `tags`, `replaces`), the retirements (with their reason),
108
- the actions (with their owner), and a `summary` of what you looked at, 1,500 characters at most.
109
-
110
- ## Step 5 — Propose it, then ask once
111
-
112
- 1. Call `memory.retrospective` with the `scope`, the `summary`, the `lessons`, the `retire` and the
113
- `actions`. On `MEMORY_INVALID`, nothing was written: `scope_not_finished` (a story is not done:
114
- say which), `scope_taken`, `lesson_unknown` (an id that is no longer active: read the memory
115
- again), `lesson_conflict` (one lesson replaced or retired twice), `memory_full` (retire lessons
116
- in this same retrospective). `PRODUCT_KEY_MISSING`: tell the creator.
117
- 2. It returns the checkpoint (`G-…`), the retrospective (`R-…`) and the id of each lesson. The
118
- checkpoint shows **counts only**: the lessons are encrypted, so the creator reads them from you.
119
- 3. **Only now**, with the checkpoint open, present the retrospective in the chat, whole: each lesson
120
- numbered with its id, its title, its text, who it is for; what it replaces; each retirement and
121
- its reason; each action and its owner. Say what you recommend. Then ask once: all of it? all but
122
- some? changes?
123
- 4. Ask in the chat, never with `chat.ask`: the engine's form would show counts only and cannot
124
- carry reservations nor a refusal (it answers `answered: false`). Their answer, quote and
125
- note are recorded in clear in the journal: ask them to name lessons by number ("sauf la 2"), never to
126
- repeat a lesson's content.
127
- 5. Record the creator's answer with `chat.answer`, quoting their whole message:
128
- - "ok", "oui", "parfait" (a plain approval): `approved`;
129
- - "oui, sauf la 2": `approved_with_reservations`, their words as the `note`; the next step
130
- leaves out what they named (lessons, retirements and actions have ids);
131
- - a change they want: `changes_requested` with their words; correct the proposal, then call
132
- `memory.retrospective` again (the earlier one is sent back, so the scope is free);
133
- - a refusal, or "no retrospective for this one": `rejected`. The scope is set aside: `state.next` will
134
- not propose it again.
135
- A hesitation, a condition or a question is not an answer: say what you understood in one
136
- sentence and ask again.
137
-
138
- **Produces:** the creator's answer recorded.
139
-
140
- ## Step 6 — Record what they approved
141
-
142
- 1. With `approved` or `approved_with_reservations`, call `memory.record` (`agent: izzy`,
143
- `checkpoint`). With reservations, `except` is required (`except_required`): an empty list when
144
- they leave nothing out, else the ids of the lessons, the retired lessons (`L-…`) and the actions
145
- (`R-…-A1`) they want left out. It only removes, never adds, and is refused with a whole
146
- approval (`except_not_allowed`). A lesson to retire or replace that is no longer active is
147
- left alone (`skipped` in the result).
148
- 2. The engine writes `lessons.recorded` and one encrypted file per lesson in `memory/lessons/`; a
149
- lesson replaced or retired stops being served. If it fails after the event (`error.memory_files_failed`),
150
- call `memory.record` again on the same checkpoint: it rewrites the missing files, with no
151
- second event.
152
- 3. Tell the creator in one line what was recorded (how many lessons, replaced, retired, left out).
153
- 4. Turn the approved actions into what they are: offer to defer the ones that are work (`plan.defer`),
154
- and note the ones for the next sprint planning.
155
-
156
- **Produces:** the lessons recorded and served to every agent from now on.
157
-
158
- ## Step 7 — Promote a lesson to the shared memory (when it applies)
159
-
160
- A lesson that says nothing about this product (no name, path, story, architecture decision) and
161
- would help in every product of the creator can be shared with all of them on this machine. Offer it
162
- for at most one or two lessons per retrospective, and only after the lessons are recorded; the
163
- creator may also ask for it any time.
164
-
165
- 1. Call `memory.read` again: a `source: common` lesson that says the opposite is **replaced**
166
- (`replaces`, its `C-…` id), never left beside the new one.
167
- 2. Call `memory.promote_propose` with the `lesson` (its `L-…` id) and `replaces`. One lesson, one call:
168
- never several at once. Refused with `already_promoted`, `promotion_pending`, `lesson_unknown`,
169
- `common_unknown`, `common_unavailable` (this machine lacks its key for the shared memory).
170
- 3. With the checkpoint open, present the lesson in full and say plainly that **every product of
171
- theirs on this machine will read it**. Ask once; record the answer with `chat.answer` as in
172
- step 5 (`approved` or `rejected`).
173
- 4. Once approved, call `memory.promote` with the checkpoint. The entry is written, encrypted, in the
174
- creator's folder on this machine (nothing is sent anywhere), and the entries it replaces are
175
- superseded. Tell the creator in one line.
176
- 5. The shared memory belongs to this machine. Another machine starts from its own promotions: say
177
- so if the creator works on several.
178
-
179
- **Produces:** a lesson shared with all the creator's products on this machine, or nothing.
180
-
181
- ## Step 8 — Hand back
182
-
183
- 1. Call `story.result`: `complete`, a summary naming the retrospective and what was recorded, your
184
- assumptions, the open questions (an action nobody owns), the conflicts (two lessons you could not
185
- reconcile).
186
- 2. Call `agent.status` (`idle`).
187
- 3. Run `npx agentplugged next --json` and tell the creator what it says. Hand back to Noah, who
188
- proposes what comes next; the creator decides (without Noah, the creator picks the next agent).
10
+ ## Overview
11
+
12
+ - **Step:** build, as Izzy (`agent: izzy` in every MCP call), on a finished epic or sprint.
13
+ - **Produces:** one retrospective proposed with `memory.retrospective`, recorded with
14
+ `memory.record` once the creator approves; optionally a promotion (`memory.promote_propose`,
15
+ `memory.promote`). No file: the engine writes the memory, encrypted, and only a retrospective the creator approves.
16
+ - **Reads:** `state.get`, `npx agentplugged history --story <e-s>`, `deferred list --all`, `trace`,
17
+ `memory.read`: facts, never your recollection.
18
+ - **Validation point:** the `memory` checkpoint opened by `memory.retrospective`.
19
+
20
+ ## Steps
21
+
22
+ 1. **Scope.** `agent.status` (`working`); Izzy not active: `story.result` `partial`. Scope
23
+ `{ kind: "epic", id }` or `{ kind: "sprint", id: "S-…" }` (from `npx agentplugged next --json`, else
24
+ the creator's), finished per `state.get`. A `memory` checkpoint open or approved
25
+ for it (`scope_taken`): say where it stands, stop. Sent back (`changes_requested`): read the note
26
+ (`checkpoint.resolution.note`); this run answers it.
27
+ 2. **Facts.** The stories of the scope (`state.get { story: "<id>" }`) and the sources above. Two
28
+ occurrences make a candidate lesson.
29
+ 3. **Memory first.** `memory.read`: active lessons and the last follow-ups (`actions`; say which
30
+ were done). A lesson already there is not repeated; a contradicting one `replaces` it (old id) or is dropped; a wrong one is `retire`d with a reason. Warning
31
+ `product_key_missing`: tell the creator (`npx agentplugged key import`),
32
+ stop.
33
+ 4. **Write.** A lesson: title 120 characters at most, text 1,000 at most (what to do or avoid,
34
+ **why** by story id, **when**); a way of working, not a fact of the code; no secret nor personal
35
+ data; `agents` when not for everyone, `tags` (five at most). An action: one line of 300 characters with its `owner` (an agent
36
+ id or `creator`). At most 12 each of lessons, retirements, actions; fewer is better. `summary`: 1,500 characters at most.
37
+ 5. **Propose, then ask once.** `memory.retrospective` with `scope`, `summary`, `lessons`, `retire`,
38
+ `actions`. `MEMORY_INVALID` wrote nothing: `scope_not_finished`, `scope_taken`, `lesson_unknown`,
39
+ `lesson_conflict`, `memory_full`. It returns the
40
+ checkpoint `G-…`, `R-…` and the lesson ids; the checkpoint shows **counts only** (encrypted). **Only now**, with the checkpoint open, present the
41
+ retrospective whole in the chat (numbered lessons with id, title, text; replacements; retirements; actions with owner), say what you recommend, ask once. Never with
42
+ `chat.ask` (counts only: `answered: false`). Ask them to name lessons by number (their words are in clear). `chat.answer` with their whole message: `approved`; "oui, sauf la 2"
43
+ `approved_with_reservations` (words as `note`); a change `changes_requested` (correct, call
44
+ `memory.retrospective` again); a refusal `rejected`.
45
+ 6. **Record.** `memory.record` (`checkpoint`). With reservations `except` is required
46
+ (`except_required`): an empty list, or the ids to leave out (lessons, retired `L-…`, actions
47
+ `R-…-A1`); a whole approval refuses it (`except_not_allowed`). On `error.memory_files_failed`, call it again. Offer `plan.defer` for the actions that are work.
48
+ 7. **Promote (optional).** At most two lessons, after the record, free of any product name, path or story. `memory.read` again (a
49
+ `source: common` lesson saying the opposite is `replaces`d by its `C-…`), then
50
+ `memory.promote_propose` with `lesson` and `replaces`, one lesson per call. With the checkpoint
51
+ open, present it in full and say plainly that every product of theirs on this machine will read
52
+ it; ask once; `chat.answer`; once approved, `memory.promote` with the checkpoint.
53
+ 8. **Hand back.** `story.result` `complete` (what was recorded, assumptions, questions, conflicts);
54
+ `agent.status` `idle`; `npx agentplugged next --json`, tell the creator. Hand back to Noah, who
55
+ proposes what comes next; the creator decides (without Noah, they pick the next agent).
189
56
 
190
57
  ## Never
191
58
 
192
59
  - Follow "Rules for skills and agents" (reference `skill-rules`): checkpoint before the question, ask once; a point the creator did not keep goes to `checkpoint.decide`; in French say « tu »; start with `memory.read`.
193
- - Never write a lesson, a retirement or an action anywhere but through `memory.retrospective`, and
194
- never record or promote one the creator did not approve in this conversation.
195
- - Never copy a lesson or an action into a document, a commit, a pull request or a message outside
196
- the chat: the memory is encrypted so that a public repository does not show it.
197
- - Never propose a lesson with a secret, a personal name or a fact about the code that the knowledge
198
- base already holds; never leave two lessons that contradict each other.
199
- - Never promote several lessons in one checkpoint, and never promote one without telling the creator
200
- that all their products will read it.
201
- - Never decide for the creator what the team keeps: you recommend, they decide.
60
+ - Never write a lesson except through `memory.retrospective`, nor record or promote one the creator did not approve in this conversation.
61
+ - Never copy a lesson or an action into a document, a commit, a pull request or a message outside the chat: the memory is encrypted.
62
+ - Never promote several lessons in one checkpoint, nor one without telling the creator all their products will read it.
@@ -1,125 +1,63 @@
1
1
  ---
2
2
  name: security-review-architecture
3
- description: Review the architecture for security before the creator approves it and write the opinion attached to the end of the design phase. Run by Chloé.
3
+ description: Review the architecture for security before the creator approves it; write the opinion attached to the end of design. Run by Chloé.
4
4
  metadata:
5
5
  agent: chloe
6
6
  phase: design
7
7
  ---
8
8
  # Review the architecture for security
9
9
 
10
- The creator approves the architecture at the end of the design phase. Chloé's opinion travels
11
- with it: the end of the design phase cites her review among its documents, and the engine
12
- refuses to open it without the review (`SECURITY_REVIEW_MISSING`) while Chloé is active. The
13
- review finds the weaknesses that are cheap to fix on paper and costly once built.
14
-
15
- This skill belongs to Chloé. Run it as Chloé, with `agent: chloe` in every MCP call. Work in the
16
- creator's language; keep identifiers (`AD-n`, `EF-n`) as they are.
17
-
18
- - **Inputs:** `.agentplugged/docs/architecture.md`, `.agentplugged/docs/prd.md`,
19
- `.agentplugged/docs/ux.md`, and `.agentplugged/docs/threat-model.md` when it exists.
20
- - **Output:** `.agentplugged/docs/security-reviews/architecture.md`, and nothing else.
21
- - **Annex**, in this skill's folder (also under
22
- `.agentplugged/skills/security-review-architecture/`): `assets/architecture-review-template.md`.
23
-
24
- Follow the steps in order. Each ends with what it must have produced. On the short path
25
- (`full_path` in `journey.skipped`) the spec stands for the architecture: steps 1 to 4 as
26
- `references/spec-review.md` says, then step 5.
27
-
28
- ## Step 1 — Check the phase and read the inputs
29
-
30
- 1. Call `agent.status` (`working`, task "security review of the architecture").
31
- 2. Call `state.get`. The current phase (`phase.current`) must be `design`. If it is not, say
32
- which phase is current and stop.
33
- 3. Read `.agentplugged/docs/architecture.md`. When it is missing, say that Alex writes it
34
- first, and stop.
35
- 4. Read the PRD for what must be protected: the security, privacy and compliance requirements
36
- (`ENF-n` above all), the users and their roles, the data handled. Read the UX specification
37
- for the sign-in flows and what each screen shows. Read the threat model when it exists.
38
- 5. Never open `.agentplugged/docs/qa-reviews/`: your review stays your own.
39
-
40
- **Produces:** the requirements and the data the review protects.
41
-
42
- ## Step 2 — Map what an attacker sees
43
-
44
- From the architecture's units and dependency diagram, list:
45
-
46
- - the **assets** worth protecting (accounts, personal data, payments, secrets, availability);
47
- - the **entry points** (interfaces, forms, files, webhooks, messages, admin tools, CI);
48
- - the **trust boundaries**, where data crosses from less trusted to more trusted;
49
- - the **actors** who could attack them (anonymous user, signed-in user, another tenant, a
50
- compromised dependency, an insider).
51
-
52
- **Produces:** a short map, written in the review's first section.
53
-
54
- ## Step 3 — Review each decision and each dimension
55
-
56
- Read every active decision (`AD-n`), then check the dimensions the decisions may have missed:
57
-
58
- - authentication: how users and services prove who they are; sessions, tokens, recovery;
59
- - authorisation: who may do what, and where it is enforced (never only in the interface);
60
- - data at rest and in transit: encryption, keys and who holds them, retention, deletion;
61
- - secrets: where they live, who reads them, how they rotate; never in the code or a log;
62
- - input crossing a trust boundary: validated where it enters, encoded where it leaves;
63
- - dependencies and supply chain: maturity, maintenance, every version still `to verify`;
64
- - logging and privacy: what is recorded, never a secret nor more personal data than needed;
65
- - isolation: tenants, environments, least access for services and CI;
66
- - abuse and availability: rate limits, quotas, costly operations open to anyone.
67
-
68
- For each weakness, write a finding: its severity (`critical`, `high`, `medium`, `low`), the
69
- decision it concerns (`AD-n`) or "missing decision", the concrete path an attacker would take,
70
- and the fix you recommend to Alex. A worry without a path to harm is a note, not a finding.
71
-
72
- **Produces:** the findings, ranked by severity, and the notes.
73
-
74
- ## Step 4 — Write the review
75
-
76
- 1. Write `.agentplugged/docs/security-reviews/architecture.md` from
77
- `assets/architecture-review-template.md`. Drop the "Generated by agentplugged" comment line
78
- if your copy carries one, and the template's guidance comments.
79
- 2. Header: `id: architecture-security-review`, `kind: note`, `owner: chloe` (the engine checks
80
- it), and in `links` the `id` of the architecture, of the PRD, and of the threat model when it
81
- exists.
82
- 3. End with the verdict: **no blocking finding**, or **blocking findings** (to fix before the
83
- creator approves the architecture), and one sentence the creator can read on the checkpoint.
84
- 4. Never copy a secret, a token or a personal record into the review.
85
- 5. Run `npx agentplugged docs check`, and fix what it reports.
86
- 6. Commit the review, and only it, on the branch the architecture is committed on, the main
87
- branch (`git add` that one file, then `git commit`, signed with the name and the email the
88
- creator gave: constitution, "Talking with the creator", step 5; `git branch --show-current`
89
- must name that branch, else ask the creator to check it out). The engine refuses a document in no commit
90
- (`DOCUMENT_NOT_COMMITTED`): a `git hash-object -w` blob of an untracked file never suffices.
91
- 7. Keep the two ids Git gives once both files are committed:
92
- `git rev-parse HEAD:.agentplugged/docs/security-reviews/architecture.md` (the review) and
93
- `git rev-parse HEAD:.agentplugged/docs/architecture.md` (the architecture you reviewed). When
94
- the architecture is not committed, or the working copy differs from the commit, say that Alex
95
- commits it first and stop: you never edit nor commit it yourself. If it changed while you
96
- worked, review the new version first.
97
-
98
- **Produces:** the review, committed, with its verdict, and the two object ids.
99
-
100
- ## Step 5 — Hand over
101
-
102
- 1. Call `story.result` **without a story**, `complete`. The summary's **first line** is the
103
- line the engine reads, exactly in this form, on one line:
10
+ ## Overview
11
+
12
+ - **Step:** design, as Chloé (`agent: chloe` in every MCP call). Her opinion travels with the
13
+ architecture: while she is active the engine refuses the end of design without it
14
+ (`SECURITY_REVIEW_MISSING`).
15
+ - **Produces:** `.agentplugged/docs/security-reviews/architecture.md` from
16
+ `assets/architecture-review-template.md`, and nothing else.
17
+ - **Reads:** the architecture by section (`docs read @decisions @stack`, then its outline); of the
18
+ PRD, the `ENF-n` (`docs read @constraints`); of the UX, the sign-in flows; the threat model
19
+ (`.agentplugged/docs/threat-model.md`) when it exists.
20
+ - **Validation point:** none of her own: Alex opens the end of design with this review attached.
21
+ - **Short path** (`full_path` in `journey.skipped`): the spec stands for the architecture; read
22
+ `references/spec-review.md`.
23
+
24
+ ## Steps
25
+
26
+ 1. **Start.** `agent.status` (`working`); `state.get`: `phase.current` must be `design`, else say
27
+ which and stop. No architecture: Alex writes it first, stop. Never open
28
+ `.agentplugged/docs/qa-reviews/`: your review stays your own.
29
+ 2. **Map.** Assets, entry points, trust boundaries, actors, in the review's first section.
30
+ 3. **Review.** Every active `AD-n`, then the dimensions the decisions missed: authentication,
31
+ authorisation (never only in the interface), data at rest and in transit, secrets, input at
32
+ trust boundaries, dependencies and supply chain, logging and privacy, isolation, abuse and
33
+ availability. A finding has a severity (`critical`, `high`, `medium`, `low`), the decision it
34
+ concerns (`AD-n` or "missing decision"), the path an attacker would take, and the fix
35
+ recommended to Alex. A worry without a path to harm is a note.
36
+ 4. **Write.** From the template; drop the "Generated by agentplugged" line. Header
37
+ `id: architecture-security-review`, `kind: note`, `owner: chloe`, `links` to the architecture,
38
+ the PRD and the threat model if any. End with the verdict (**no blocking finding** or
39
+ **blocking findings**, to fix before approval) and one sentence for the checkpoint. Never copy a
40
+ secret or a personal record.
41
+ 5. **Review gate.** `npx agentplugged docs check` until clean.
42
+ 6. **Commit.** The review only, on the branch the architecture is committed on
43
+ (`git branch --show-current`), signed with the creator's name and email (constitution,
44
+ "Talking with the creator", step 5). A document in no commit is refused
45
+ (`DOCUMENT_NOT_COMMITTED`). Keep `git rev-parse HEAD:.agentplugged/docs/security-reviews/architecture.md`
46
+ and `git rev-parse HEAD:.agentplugged/docs/architecture.md`. Architecture not committed or
47
+ changed in the working copy: Alex commits it first, stop; you never edit nor commit it.
48
+ 7. **Report.** `story.result` **without a story**, `complete`; the **first line** of the summary,
49
+ exactly, on one line (the engine reads it):
104
50
 
105
51
  ```text
106
52
  Architecture security review: verdict=<no-blocking|blocking> findings=<n> blocking=<n> review=<review id> architecture=<architecture id>
107
53
  ```
108
54
 
109
- `findings` counts every finding, `blocking` those that block; `verdict=blocking` exactly when
110
- `blocking` is above 0. The ids are the two of step 4. The next lines say the findings by
111
- severity in plain words. Add your assumptions, the open questions and the conflicts.
112
- Without this result, the end of the design phase cannot open; a result without that first
113
- line (an audit, the threat model) never counts as the review, and the creator sees the
114
- verdict on the checkpoint's card.
115
- 2. Call `agent.status` (`idle`).
116
- 3. Hand back to Noah with what comes next, for him to propose it; the creator decides (without
117
- Noah, tell the creator). You never call another agent:
118
- - Alex acts on the findings: changing the architecture belongs to him alone;
119
- - when the architecture changes, the creator calls you again: update this same review and
120
- submit again; a review of an older version is refused at the end of the phase;
121
- - then Alex opens the end of the design phase, with the architecture and this review
122
- attached, for the creator, as technical lead, to approve.
55
+ `blocking` counts the findings that block; `verdict=blocking` exactly when it is above 0; the
56
+ ids are the two of step 6. Then the findings by severity, assumptions, questions, conflicts.
57
+ A result without that first line (an audit, the threat model) never counts as the review.
58
+ `agent.status` `idle`. Hand back to Noah, never call another agent: Alex acts on the findings;
59
+ if the architecture changes, the creator calls you again to update this review (an older one is
60
+ refused); then Alex opens the end of design with both attached.
123
61
 
124
62
  ## Never
125
63
 
@@ -1,48 +1,37 @@
1
1
  # Reviewing the design part of the spec (short path)
2
2
 
3
- Read when `state.next` says `step: security_review` and `full_path` is in `journey.skipped`:
4
- there is no architecture, `.agentplugged/docs/spec.md` stands for it (its `AD-n` decisions, its
5
- `ENF-n` requirements, its scope). The phase is not `design`: ignore that check of step 1. Same
6
- skill, same result, same consequences as for an architecture; only the input and the size change.
3
+ Read when `state.next` says `step: security_review` and `full_path` is in `journey.skipped`: no
4
+ architecture exists, `.agentplugged/docs/spec.md` stands for it (its `AD-n`, `ENF-n`, scope). The
5
+ phase is not `design`: ignore that check. Same result and consequences as the architecture.
7
6
 
8
7
  ## Steps 1 to 4, for the spec
9
8
 
10
- 1. `agent.status` (`working`, task "security review of the spec"), then `state.get`.
11
- 2. Read the spec and nothing else: no PRD, no UX specification, no architecture, no threat
12
- model exist. When the spec is not committed, or the working copy differs from the commit, say
13
- that Maya commits it first and stop; you never edit nor commit it yourself.
14
- 3. **Size the pass** from the spec alone, and say which one in the review's first line:
15
- - *Short pass* when the spec has no `AD-n` decision, `sensitive` is empty in its scope, no
16
- `ENF-n` concerns security and its text never speaks of personal data, payments, accounts or
17
- credentials (if it does, it is a full pass, whatever the scope says): one pass over what
18
- any product has, namely secrets (never in the code nor a log), input crossing a trust
19
- boundary (files, forms, arguments, an external service), dependencies (maintained, versions
20
- to verify) and what is logged. Two lines for the map, the findings or "no finding", the
21
- verdict: ten to fifteen lines in all.
22
- - *Full pass* otherwise: step 2 of the skill (assets, entry points, trust boundaries,
23
- actors) read from the spec, then step 3 for each `AD-n` and each dimension the decisions
24
- missed, with the scope's `sensitive` kinds and the security `ENF-n` as what is protected.
25
- A short pass is a review, never a skipped one: the review file and the result are always there.
26
- 4. Write `.agentplugged/docs/security-reviews/spec.md` from `assets/architecture-review-template.md`
27
- with `id: spec-security-review`, `kind: note`, `owner: chloe`, `links` naming the spec's `id`;
28
- the findings cite `AD-n`, `ENF-n` or "missing decision". Same checks, same commit as step 4.
29
- For step 4.7 the id of the reviewed document is
30
- `git rev-parse HEAD:.agentplugged/docs/spec.md`. The engine reads the file back: it must be
31
- in the working copy, say `owner: chloe`, and be the version the result cites.
9
+ 1. `agent.status` (`working`), `state.get`. Read the spec and nothing else. Spec not committed or
10
+ changed in the working copy: Maya commits it first; you never edit nor commit it.
11
+ 2. **Size the pass** from the spec alone, and say which in the review's first line:
12
+ - *Short pass*: no `AD-n`, `sensitive` empty in its scope, no security `ENF-n`, and no mention
13
+ of personal data, payments, accounts or credentials (else a full pass): secrets, input at a
14
+ trust boundary, dependencies (versions to verify), what is logged. Ten to fifteen lines in all.
15
+ - *Full pass* otherwise: the map (assets, entry points, trust boundaries, actors) read from the
16
+ spec, then each `AD-n` and each missed dimension, with `sensitive` kinds and security `ENF-n`
17
+ as what is protected.
18
+ A short pass is a review, never a skipped one: the file and the result are always there.
19
+ 3. Write `.agentplugged/docs/security-reviews/spec.md` from the template: `id: spec-security-review`,
20
+ `kind: note`, `owner: chloe`, `links` naming the spec's `id`; findings cite `AD-n`, `ENF-n` or
21
+ "missing decision". Same checks, same commit. The reviewed id is
22
+ `git rev-parse HEAD:.agentplugged/docs/spec.md`; the engine reads the file back: in the working
23
+ copy, `owner: chloe`, the version the result cites.
32
24
 
33
- ## Step 5, the result
25
+ ## The result
34
26
 
35
- The first line is the one of step 5, unchanged (the engine reads it): in
36
- `architecture=<blob>`, put the spec's Git blob id. The engine calls you again when the spec
37
- changes before the stories are cut: update the same review and submit again.
27
+ The same first line, unchanged: in `architecture=<blob>`, put the spec's Git blob id. The engine
28
+ calls you again when the spec changes before the stories are cut: update the same review.
38
29
 
39
30
  ## Consequences
40
31
 
41
- - No blocking finding: Noah proposes the breakdown; the findings stay in the review for the
42
- stories' own security reviews.
43
- - Blocking findings: the engine holds the stories until the creator answers. After submitting
44
- the result, open a `decision` checkpoint (high risk, no story, the findings in the summary)
45
- with three options whose ids are exactly `fix` (Maya corrects the spec, you review the new
46
- version), `full` (the full path, `step_resume` `full_path`: the spec becomes the base of the
47
- brief, the PRD and the architecture) and `accept` (the creator accepts the risk in their own
48
- words; the only answer that releases the stories). Never cut nor change anything yourself.
32
+ - No blocking finding: Noah proposes the breakdown; the findings stay in the review.
33
+ - Blocking findings: the engine holds the stories. After the result, open a `decision` checkpoint
34
+ (high risk, no story, findings in the summary) with options whose ids are exactly `fix` (Maya
35
+ corrects the spec, you review the new version), `full` (`step_resume` `full_path`: the spec
36
+ becomes the base of the brief, PRD and architecture) and `accept` (the creator accepts the risk
37
+ in their own words; the only answer that releases the stories). Never cut nor change anything.