ll-skills 2.0.2 → 3.1.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 (125) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/README.md +42 -20
  3. package/agents/ll-executor.md +2 -1
  4. package/agents/ll-verifier.md +1 -0
  5. package/assets/preamble.md +27 -39
  6. package/bin/install.js +4 -1
  7. package/hooks/ll-precompact.js +29 -1
  8. package/hooks/ll-skills-check-update.js +6 -6
  9. package/hooks/ll-state.js +30 -2
  10. package/package.json +3 -2
  11. package/scripts/evals/README.md +81 -0
  12. package/scripts/evals/cases/auto-dry-run/assert.sh +35 -0
  13. package/scripts/evals/cases/auto-dry-run/case.json +8 -0
  14. package/scripts/evals/cases/auto-dry-run/prompt.txt +1 -0
  15. package/scripts/evals/cases/auto-empty-repo/assert.sh +25 -0
  16. package/scripts/evals/cases/auto-empty-repo/case.json +8 -0
  17. package/scripts/evals/cases/auto-empty-repo/fixture/.gitkeep +0 -0
  18. package/scripts/evals/cases/auto-empty-repo/prompt.txt +1 -0
  19. package/scripts/evals/cases/decide-final-round/assert.sh +45 -0
  20. package/scripts/evals/cases/decide-final-round/case.json +8 -0
  21. package/scripts/evals/cases/decide-final-round/fixture/README.md +3 -0
  22. package/scripts/evals/cases/decide-final-round/prompt.txt +1 -0
  23. package/scripts/evals/cases/executor-block/assert.sh +33 -0
  24. package/scripts/evals/cases/executor-block/case.json +8 -0
  25. package/scripts/evals/cases/executor-block/prompt.txt +14 -0
  26. package/scripts/evals/cases/goal-autonomous/assert.sh +35 -0
  27. package/scripts/evals/cases/goal-autonomous/case.json +8 -0
  28. package/scripts/evals/cases/goal-autonomous/fixture/PLAN.md +42 -0
  29. package/scripts/evals/cases/goal-autonomous/fixture/PROGRESS.md +20 -0
  30. package/scripts/evals/cases/goal-autonomous/fixture/ROADMAP.md +29 -0
  31. package/scripts/evals/cases/goal-autonomous/fixture/package.json +8 -0
  32. package/scripts/evals/cases/goal-autonomous/fixture/src/money.js +6 -0
  33. package/scripts/evals/cases/goal-autonomous/fixture/test/reconcile.test.js +8 -0
  34. package/scripts/evals/cases/goal-autonomous/prompt.txt +1 -0
  35. package/scripts/evals/cases/implement-review-gate/assert.sh +37 -0
  36. package/scripts/evals/cases/implement-review-gate/case.json +8 -0
  37. package/scripts/evals/cases/implement-review-gate/prompt.txt +1 -0
  38. package/scripts/evals/cases/implement-stops-at-next/assert.sh +121 -0
  39. package/scripts/evals/cases/implement-stops-at-next/case.json +9 -0
  40. package/scripts/evals/cases/implement-stops-at-next/prompt.txt +1 -0
  41. package/scripts/evals/cases/preamble-no-ritual/assert.sh +17 -0
  42. package/scripts/evals/cases/preamble-no-ritual/case.json +8 -0
  43. package/scripts/evals/cases/preamble-no-ritual/fixture/README.md +3 -0
  44. package/scripts/evals/cases/preamble-no-ritual/fixture/src/a.ts +3 -0
  45. package/scripts/evals/cases/preamble-no-ritual/prompt.txt +1 -0
  46. package/scripts/evals/cases/router-no-skill/assert.sh +33 -0
  47. package/scripts/evals/cases/router-no-skill/case.json +8 -0
  48. package/scripts/evals/cases/router-no-skill/fixture/PLAN.md +21 -0
  49. package/scripts/evals/cases/router-no-skill/fixture/README.md +7 -0
  50. package/scripts/evals/cases/router-no-skill/fixture/decisions/README.md +3 -0
  51. package/scripts/evals/cases/router-no-skill/prompt.txt +1 -0
  52. package/scripts/evals/cases/router-small/assert.sh +21 -0
  53. package/scripts/evals/cases/router-small/case.json +8 -0
  54. package/scripts/evals/cases/router-small/fixture/README.md +17 -0
  55. package/scripts/evals/cases/router-small/prompt.txt +1 -0
  56. package/scripts/evals/cases/scout-no-plan/assert.sh +41 -0
  57. package/scripts/evals/cases/scout-no-plan/case.json +8 -0
  58. package/scripts/evals/cases/scout-no-plan/prompt.txt +8 -0
  59. package/scripts/evals/cases/verifier-weakened-test/assert.sh +19 -0
  60. package/scripts/evals/cases/verifier-weakened-test/case.json +8 -0
  61. package/scripts/evals/cases/verifier-weakened-test/prompt.txt +13 -0
  62. package/scripts/evals/cases/verifier-weakened-test/setup.sh +19 -0
  63. package/scripts/evals/fixtures/manual-contract/out.json +29 -0
  64. package/scripts/evals/fixtures/manual-contract/out.txt +5 -0
  65. package/scripts/evals/fixtures/manual-contract/with-skill.json +46 -0
  66. package/scripts/evals/fixtures/router-no-skill/fail.txt +5 -0
  67. package/scripts/evals/fixtures/router-no-skill/out.json +27 -0
  68. package/scripts/evals/fixtures/router-no-skill/pass.txt +4 -0
  69. package/scripts/evals/lib/assert.sh +107 -0
  70. package/scripts/evals/lib/extract.js +73 -0
  71. package/scripts/evals/run.sh +369 -0
  72. package/scripts/fixtures/auto-closed/PLAN.md +5 -0
  73. package/scripts/fixtures/auto-closed/PROGRESS.md +20 -0
  74. package/scripts/fixtures/auto-closed/ROADMAP.md +6 -0
  75. package/scripts/fixtures/auto-closed/docs/DELIVERY.md +3 -0
  76. package/scripts/fixtures/auto-decisions/decisions/DEC-0001-taken-alone.md +13 -0
  77. package/scripts/fixtures/auto-decisions/decisions/DEC-0002-owner.md +13 -0
  78. package/scripts/fixtures/auto-noroadmap/PLAN.md +20 -0
  79. package/scripts/fixtures/auto-noroadmap/PROGRESS.md +11 -0
  80. package/scripts/fixtures/auto-verify-next/PLAN.md +5 -0
  81. package/scripts/fixtures/auto-verify-next/PROGRESS.md +18 -0
  82. package/scripts/fixtures/auto-verify-next/ROADMAP.md +5 -0
  83. package/scripts/fixtures/auto-verify-next/phases/01/PLAN.md +6 -0
  84. package/scripts/fixtures/evals-auto/auto-dry-run/pass.txt +18 -0
  85. package/scripts/fixtures/evals-auto/auto-empty-repo/pass.txt +2 -0
  86. package/scripts/fixtures/evals-auto/goal-autonomous/pass.txt +29 -0
  87. package/scripts/fixtures/lint-bad/folded-description/SKILL.md +13 -0
  88. package/scripts/fixtures/lint-bad/jargon-in-questions/SKILL.md +36 -0
  89. package/scripts/fixtures/lint-bad/model-invocation-false/SKILL.md +10 -0
  90. package/scripts/fixtures/next-bad/skills/ll-bad/SKILL.md +30 -0
  91. package/scripts/fixtures/next-good/skills/ll-good/SKILL.md +26 -0
  92. package/scripts/fixtures/project/BACKLOG.md +6 -5
  93. package/scripts/fixtures/project/PROGRESS.md +4 -0
  94. package/scripts/lint-contract.cjs +495 -0
  95. package/scripts/lint-prompts.sh +443 -0
  96. package/scripts/ll-tools.js +497 -450
  97. package/scripts/smoke-test.sh +481 -4
  98. package/skills/ll-auto/SKILL.md +74 -0
  99. package/skills/ll-auto/references/run.md +75 -0
  100. package/skills/ll-auto/references/stages.md +66 -0
  101. package/skills/ll-auto/scripts/ll-auto.js +345 -0
  102. package/skills/ll-brainstorm/SKILL.md +14 -12
  103. package/skills/ll-brainstorm/references/decision-policy.md +22 -12
  104. package/skills/ll-close/SKILL.md +8 -7
  105. package/skills/ll-close/references/delivery.md +3 -1
  106. package/skills/ll-decide/SKILL.md +21 -19
  107. package/skills/ll-decide/references/decision-policy.md +22 -12
  108. package/skills/ll-decide/references/decision-room.md +5 -3
  109. package/skills/ll-decide/references/interview.md +29 -13
  110. package/skills/ll-decide/references/plan-skeleton.md +14 -14
  111. package/skills/ll-decide/references/premise-gate.md +34 -20
  112. package/skills/ll-goal/SKILL.md +22 -4
  113. package/skills/ll-goal/references/goal-template.md +57 -0
  114. package/skills/ll-implement/SKILL.md +25 -22
  115. package/skills/ll-implement/references/briefs.md +2 -1
  116. package/skills/ll-implement/references/decision-policy.md +22 -12
  117. package/skills/ll-implement/references/phase-conversation.md +20 -12
  118. package/skills/ll-implement/references/phase-plan.md +23 -0
  119. package/skills/ll-oncall/SKILL.md +3 -2
  120. package/skills/ll-refine/SKILL.md +3 -2
  121. package/skills/ll-research/SKILL.md +3 -2
  122. package/skills/ll-resume/SKILL.md +9 -4
  123. package/skills/ll-update/SKILL.md +6 -1
  124. package/skills/ll-verify/SKILL.md +2 -1
  125. package/skills/ll-verify/references/verifier-briefs.md +3 -0
@@ -1,15 +1,16 @@
1
1
  ---
2
2
  name: ll-brainstorm
3
- description: "Opens a phase, a project or a loose idea by deciding in front of the owner instead of asking — scouts the repo, then shows one map (A: what Claude decides, each item with its repo analog at file:line; B: at most 4 calls only the owner can make, batched once; C: deferred) and ends with phases/NN/DECISIONS.md or docs/decide/OPENING.md plus the next command. Use when the owner says \"vamos discutir\", \"tenho uma ideia\", \"não sei ainda\", \"me ajuda a pensar\", \"brainstorm\", \"antes de começar a fase X\", \"abrir projeto novo\", \"li esse documento / áudio / transcrição, o que fazemos com isso\", \"a tentativa anterior não deu certo\" — or in English \"let's discuss\", \"I have an idea\", \"help me think\", \"before we start phase X\", \"new project\", \"the previous attempt failed\". Not for an already-specified request or a plan ready for adversarial pressure (both go to `ll-decide`), nor for a market question (`ll-research --market`)."
3
+ description: Opens a phase, a project or a loose idea by deciding in front of the owner instead of asking, and writes the opening map to phases/NN/DECISIONS.md or docs/decide/OPENING.md with the next command.
4
4
  argument-hint: "[phase-number | project | chat] [--no-talk]"
5
+ disable-model-invocation: true
5
6
  ---
6
7
 
7
8
  # Brainstorm
8
9
 
9
10
  Opens a piece of work by deciding what can be decided and showing it, so the owner corrects only
10
11
  what he cares about. The result is judged by three numbers: the map fits in 35 lines, the owner is
11
- interrupted once (one battery of at most 4 questions), and zero band-1 items are open when the file
12
- is written. Nothing is implemented and nothing is committed here.
12
+ interrupted once (one battery of at most 4 questions), and zero owner decisions are open when the
13
+ file is written. Nothing is implemented and nothing is committed here.
13
14
 
14
15
  Reply to the owner in Portuguese; every file you write is in English.
15
16
 
@@ -20,6 +21,7 @@ Reply to the owner in Portuguese; every file you write is in English.
20
21
  | `phases/NN/DECISIONS.md` | phase route: the decisions of the opening conversation, 8 fixed sections, IDs `D-NN-kk` | append-only, single writer (this session); IDs never recycled; supersession by a new line, never by edit |
21
22
  | `docs/decide/OPENING.md` | project route: same schema, IDs `D-00-kk`; `ll-decide project` treats everything in it as settled | append-only |
22
23
  | (nothing) | chat route: ends in the conversation | — |
24
+ | `<CLAUDE_CONFIG_DIR>/projects/<cwd>/memory/*.md` | a `feedback` memory when the owner corrects a premise | outside the repo, by design |
23
25
 
24
26
  Readers: `ll-implement` skips its own opening conversation when `phases/NN/DECISIONS.md` exists;
25
27
  the verifier runs its decision-coverage gate only if the file exists. Chat writes no file because
@@ -46,7 +48,7 @@ what was locked. A reference the request cites is read by the route below, never
46
48
  | Other URL | Playwright MCP headless: `mcp__plugin_playwright_playwright__browser_navigate`, then snapshot or screenshot |
47
49
  | Page behind the owner's login | Chrome MCP (`mcp__claude-in-chrome__*`), only then |
48
50
 
49
- None works → band-1 question (ask the owner to attach or paste it), never an assumption. "Fiel ao
51
+ None works → owner decision (ask the owner to attach or paste it), never an assumption. "Fiel ao
50
52
  protótipo" makes the prototype a premise whose source is the content read.
51
53
 
52
54
  ### 1. Scout before you speak (≤10% of context, 0 agents)
@@ -65,7 +67,7 @@ List every open point as a question (question storming: no answers yet), then cl
65
67
  - Blocking (band 1: money above the ceiling, irreversible outside the repo, price or promise,
66
68
  scope cut, the number the owner will look at, a recorded rule contradicted by evidence) → B,
67
69
  at most 4, ordered by impact.
68
- A band-1 item in A is a bug. Never in B: who executes; a fact readable from repo, db or infra;
70
+ An owner decision in A is a bug. Never in B: who executes; a fact readable from repo, db or infra;
69
71
  which pattern when a house pattern exists; a reversible detail inside a closed contract;
70
72
  confirmation of another session's decision; a subject outside the round; a question whose answer
71
73
  changes no action; copy without a commercial promise; industry defaults (retention, performance
@@ -97,7 +99,7 @@ Rules: every A item cites its analog or says `[no analog — my call]` (and beco
97
99
  every Taste item says why it is revisable, the "constraint I am inventing out of caution" case
98
100
  spelled out; C is recorded, never discussed; no acronym without its translation on the same
99
101
  line; the queue behind the map is never shown. Project route: header `Project — <title>`, and
100
- PREMISES carry the five gate answers (deliverable in the client's format, source of truth, invented
102
+ PREMISES carry the four gate answers plus the caution assumption (deliverable in the client's format, source of truth, invented
101
103
  constraint, house pattern, the number that decides success) when the owner already gave them.
102
104
 
103
105
  ### 4. Battery B (once, ≤4)
@@ -121,9 +123,9 @@ Write the file, print the score in three lines and the next command. Nothing is
121
123
 
122
124
  ```
123
125
  Closed. <k> locked by me (<r> revisable), <j> answered by you (<c> against the recommendation),
124
- <m> deferred. Questions asked <j> / assumptions <a> / band-1 open 0. (printed even when <j> = 0)
126
+ <m> deferred. Questions asked <j> / assumptions <a> / owner decisions open 0. (printed even when <j> = 0)
125
127
  → phases/NN/DECISIONS.md
126
- ▶ Next — `/clear` then `ll-implement NN` (or "adjust X" if something is wrong)
128
+ ▶ Next — /clear, then ll-implement NN (or "adjust X" if something is wrong)
127
129
  ```
128
130
 
129
131
  File skeleton (8 sections, all present even when empty):
@@ -132,7 +134,7 @@ File skeleton (8 sections, all present even when empty):
132
134
  # Phase NN — Decisions · <date> · ll-brainstorm
133
135
  ## Score
134
136
  <n> points · <k> locked by me (<r> revisable) · <j> answered by the owner (<c> against the
135
- recommendation) · <m> deferred · 0 band-1 items open.
137
+ recommendation) · <m> deferred · 0 owner decisions open.
136
138
  ## Locked
137
139
  ### D-NN-01 — <title>
138
140
  - Class: QUESTION|RULE · Band: 1|2|3 · Impact: HIGH|MED|LOW · Revert: <cost>
@@ -154,7 +156,7 @@ decision he did not make is a defect, not a rounding. Band-1 items and items tha
154
156
  phases also get `decisions/DEC-NNNN-<slug>.md`. The helper `${CLAUDE_CONFIG_DIR:-$HOME/.claude}/skills/ll-implement/scripts/ll-tools.js` is used only if it exists — this skill does not ship it; when it is absent,
155
157
  the DEC id is the next number after the highest in `decisions/`; with it, `dec-reserve <n>`.
156
158
 
157
- ## Closing criterion
159
+ ## Completion criterion
158
160
 
159
161
  The conversation closes when four list comparisons hold — no model score:
160
162
  1. Zero Blocking items open (answered by the owner or explicitly deferred by him).
@@ -168,8 +170,8 @@ Cap: two map rounds. After the second, stop and say: "we are discussing more tha
168
170
  close A as it stands and handle the rest in execution, or take the premise that is not standing
169
171
  to `ll-decide project` (its premortem) as the next command." Budget: ≤4 turns on the phase route, ≤8 on project.
170
172
 
171
- Done when the file exists with its 8 sections and the Score line reads `0 band-1 items open`.
172
- ▶ Next — `/clear` then `ll-implement NN` (phase route) · `ll-decide project` (project route) ·
173
+ Done when the file exists with its 8 sections and the Score line reads `0 owner decisions open`.
174
+ ▶ Next — /clear, then ll-implement NN (phase route; project route: ll-decide project)
173
175
  nothing to run (chat route).
174
176
 
175
177
  ## References
@@ -39,14 +39,15 @@ instead of creating one. In an opening conversation these are the A items.
39
39
 
40
40
  ### Blanket delegation
41
41
  "Pode decidir tudo, me pergunta só o que for realmente necessário" delegates bands 2 and 3, never band 1:
42
- band-1 items are still asked, in one block of ≤4 with the recommendation marked. Zero questions plus a stack of assumptions has misread it.
42
+ owner-only items are still asked, in one block of ≤4 with the recommendation marked. Zero questions plus a stack of assumptions has misread it.
43
43
 
44
44
  ## Contact minimum
45
45
  Every planning skill (`ll-brainstorm`, `ll-decide`, the phase conversation of `ll-implement`) ends
46
- with a final round that shows `questions asked N / assumptions M / band-1 open K`, even when N = 0.
47
- Silence of 10 minutes ratifies the recommended list (A), never a blocking item (B).
46
+ with a final round that shows `questions asked N / assumptions M / owner decisions open K`
47
+ (printed to the owner in Portuguese as `perguntas N / assunções M · decisões só suas em aberto K`),
48
+ even when N = 0. Silence of 10 minutes ratifies the recommended list (A), never a blocking item (B).
48
49
 
49
- ## Never ask (10 items)
50
+ ## Never ask (11 items)
50
51
  1. Who executes — agent vs session, worktrees, model per wave. Decide it and record it.
51
52
  2. A fact readable from the repo, the database or the infra — look it up, including whether it was already done.
52
53
  3. Which pattern, when a house pattern exists — follow it.
@@ -57,10 +58,16 @@ Silence of 10 minutes ratifies the recommended list (A), never a blocking item (
57
58
  8. Copy without impact on a commercial promise. Route it to a blind judge instead.
58
59
  9. Industry defaults — data retention, performance target, error format, default auth. Recorded in Locked with backing.
59
60
  10. The same policy question a second time, however it is rephrased.
61
+ 11. A question whose options differ only in rigor — how strictly, how often or from where a check
62
+ is re-run: the strictest cheap option is taken and recorded as an assumption `[decided by
63
+ absence — revisable]`.
60
64
 
61
65
  ## Silence, delegation, directives
62
66
  - Silence for 10 minutes in the hot window (harness AFK timeout) ratifies option A of a band-2/3 item or
63
- list A of a map — never option B, never a band-1 item. Record `ratified by silence`; in a run, `[decided by absence — revisable]`.
67
+ list A of a map — never option B, never an owner-only item. Record `ratified by silence`; in a run, `[decided by absence — revisable]`.
68
+ - Under `--no-talk` the ten minutes are not waited for: the recommended option is taken at once and
69
+ recorded `[decided by absence — revisable]`. An owner-only item is never taken this way — it is written
70
+ as a decision in state `WAITING` and the work that depends on it stops there.
64
71
  - "Claude decide", "você decide", "pergunta pro time" are legitimate answers: record an assumption
65
72
  `ASM-n` (permanent; announced if changed later) or the delegation, and never ask that item again.
66
73
  - An order against the recommendation is a directive: one challenge with the cost named, then
@@ -93,19 +100,22 @@ the execution back to the owner: ask in one line and execute; transfer only what
93
100
  - Count the decisions before the first question; number `n/N`; never renumber; if the scope grows,
94
101
  say "+2 questions". At most 4 questions per call, one call per subject, ordered by impact, all
95
102
  inside the round's subject.
96
- - `header` ≤ 12 chars. `question` = `[D-NN-kk] Question n/N — <title> (impact HIGH|MED|LOW · revert:
97
- <cost>)` + `FACT:` with number and source + `CONTEXT: <term> = <plain words>` for any acronym + the
98
- decision in business words, ending with "?". Target ≤ 200 chars; over ~500, rewrite. Everything
99
- inside the field — text in the previous turn does not reach the owner.
103
+ - `header` ≤ 12 chars. `question` = `Pergunta n/N — <title in business words> (impacto
104
+ ALTO|MÉDIO|BAIXO · desfazer: <cost>)` + `FACT:` with number and source + `CONTEXT: <term> =
105
+ <plain words>` for any acronym + the decision in business words, ending with "?". Target ≤ 200
106
+ chars; over ~500, rewrite. Everything inside the field — text in the previous turn does not reach
107
+ the owner. The `D-NN-kk`/`DEC-NNNN` id is written only in the file that records the answer, never
108
+ in the header or in an option.
100
109
  - Options 2–3 (4 only multi-select); recommended first with `(Recommended)` and a traceable reason;
101
- each `description` = `<what becomes true> · <cost in R$/US$ or days> · <what is lost>`. Add "Claude
102
- decide" when the item is delegable. No "Other" — the tool provides it; free text is a new requirement.
110
+ each `description` = `<what becomes true> · <cost in R$/US$ or days> · <what is lost>`. An option
111
+ names the thing decided, never an id alone. Add "Claude decide" when the item is delegable. No
112
+ "Other" — the tool provides it; free text is a new requirement.
103
113
  - Recommend on the product axis; cost appears as a number in the option; above the ceiling the item
104
114
  is band 1. In a scope question the maximalist option is always on the table.
105
115
 
106
116
  Example:
107
117
  ```
108
- question: "[D-07-01] Question 1/2 — cents mismatch (impact HIGH · revert: 1 migration)
118
+ question: "Pergunta 1/2 — cents mismatch (impacto ALTO · desfazer: 1 migration)
109
119
  FACT: <share>% of <n> rows of the last close differ by ≤ <tolerance> (<path to the run
110
120
  output>); today the job stops at the first one.
111
121
  CONTEXT: reconciliation = matching provider payouts to our sales, row by row.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: ll-close
3
- description: Closes a delivery or a milestone — reconciles the backlog against executable conditions, writes docs/DELIVERY.md for the manager, stamps the epilogue with phase-stats, produces a retrospective, promotes the lessons that became permanent rules to project memory and CLAUDE.md, and asks for one block of ratification. Use when the request is "fecha", "fecha a fase", "pode arquivar", "encerra isso", "fecha o milestone", or at the end of a /goal; `--milestone` archives the phases, collapses the ROADMAP and updates the project's current state. It refuses to close without an approved VERIFICATION.md; for the verification itself use ll-verify.
4
- argument-hint: "[--milestone <name>]"
3
+ description: Closes a phase or a delivery, reconciling the backlog against executable conditions, writing docs/DELIVERY.md, stamping the epilogue, recording the retrospective and asking for one block of ratification.
4
+ argument-hint: "[--milestone <name>] [--no-talk]"
5
5
  disable-model-invocation: true
6
6
  allowed-tools: Bash(${CLAUDE_SKILL_DIR}/scripts/ll-tools.js *)
7
7
  ---
@@ -24,24 +24,25 @@ Reply to the owner in Portuguese; every file you write is in English.
24
24
  | `BACKLOG.md` | reconciled; new items with an executable condition and their birth phase | closed only by `backlog-reconcile --run` |
25
25
  | `CLAUDE.md` (project) | `## Current state`, plus a line per rule that became permanent | short and alive; never a changelog |
26
26
  | `docs/history/<milestone>/` | archived phases (`--milestone` only) | write once |
27
+ | `<CLAUDE_CONFIG_DIR>/projects/<cwd>/memory/*.md` | a lesson that changes how the next phase runs (step 5) | outside the repo, by design |
27
28
 
28
29
  ## Gate
29
30
 
30
31
  Read the verification for the target: the newest by mtime between `phases/NN/VERIFICATION.md` (phase) and `VERIFICATION.md` at the repo root (delivery); say which one opened the gate. Close only on `APPROVED`, or on `APPROVED_WITH_RESERVATIONS` whose reservations are accepted in a `decisions/DEC-*.md` naming them. Anything else — `REJECTED`, `product: FAIL`, `process: FAIL` with no DEC, no verification file at all — stops here:
31
32
 
32
- > Não fecho: `<motivo em uma linha>`. ▶ Next — `/clear`, then `ll-verify NN` (or record the reservations in a DEC and run `ll-close` again).
33
+ > Não fecho: `<motivo em uma linha>`. ▶ Next — /clear, then ll-verify NN (or record the reservations in a DEC and run ll-close again)
33
34
 
34
35
  A verification whose ledger has `STALE` lines is verification of code that moved: it does not open the gate.
35
36
 
36
37
  ## Flow — delivery (default)
37
38
 
38
- 1. **Reconcile.** `ll-tools.js backlog-reconcile --run`. Items whose condition passed close; the rest stay open with their exit code. Then add the items born in this delivery — deviations, stubs, tests not run, debt, domain questions — one row each with the next free `B-nnn`, an executable closing condition (`` `<command>` exit 0 ``), state `OPEN`, and its birth phase and commit. An item without a condition is a wish, not a backlog entry.
39
+ 1. **Reconcile.** `ll-tools.js backlog-reconcile --run`. Items whose condition passed close; the rest stay open with their exit code. Then add the items born in this delivery — deviations, stubs, tests not run, debt, domain questions — one row each with the next free `B-nnn` in the columns `| B-nnn | born (phase / commit) | type | closing condition (executable) | note | state |`; the closing condition cell is exactly `` `<command>` exit N `` and nothing else, any prose goes in `note`. An item without a condition is a wish, not a backlog entry.
39
40
  2. **Write `docs/DELIVERY.md`** in the eight sections of `references/delivery.md`. The verification section carries the commands, their last output lines and the screenshots that were opened; a claim with no command behind it goes to the assumptions section instead.
40
- 3. **Stamp the epilogue.** `ll-tools.js epilogue <phase> --json` gives passed, left with why, WAITING, new backlog, dirty tree, HEAD and the next command; `ll-tools.js phase-stats --since <YYYY-MM-DD of the phase's first commit>` (a date, not a sha) gives days with work, span, idle days, commits by type and the test/feat ratio. The helper prints the data; the prose around it is yours, in `## Epilogue` at the end of PROGRESS.
41
+ 3. **Stamp the epilogue.** `ll-tools.js epilogue <phase> --json` gives passed, left with why, WAITING, new backlog, dirty tree, HEAD and the next command; `ll-tools.js phase-stats --since <YYYY-MM-DD of the phase's first commit>` (a date; the day is inclusive) gives days with work, span, idle days, commits by type and the test/feat ratio. The helper prints the data; the prose around it is yours, in `## Epilogue` at the end of PROGRESS.
41
42
  4. **Write `docs/RETROSPECTIVE-<date>.md`** from `references/retrospective.md` — about 60 lines, driven by the numbers from step 3, one lesson per line with the evidence that produced it.
42
43
  5. **Promote what is permanent.** A lesson that changes how the next phase runs goes to project memory; a lesson that is a standing rule of this repository goes as one line into the project's `CLAUDE.md`, in the owner's words when he gave them. Two lines at most per delivery: a CLAUDE.md that grows every close stops being read.
43
44
  6. **Peer notice.** If a peer session (infra, ops, another repo) shipped, waits on something, or was asked for something in `docs/REQUESTS.md`, that goes in the summary as one line with the request id and its state — not as a new message.
44
- 7. **One block of ratification.** A single `AskUserQuestion`, at most 4 items, only after everything is written: the open pendings with their conditions, and the accepted risks the delivery carries. Options carry the cost of each path and the recommendation is marked. Silence keeps what is written; nothing here blocks the close.
45
+ 7. **One block of ratification.** A single `AskUserQuestion`, at most 4 items, only after everything is written: the open pendings with their conditions, and the accepted risks the delivery carries. Options carry the cost of each path and the recommendation is marked; options name the item in plain words — never a `DEC-`/`B-` id alone, the id goes in the file. Silence keeps what is written; nothing here blocks the close. With `--no-talk`, this block is not asked: the same items — open pendings with their conditions, accepted risks, recommendation — are written instead under the epilogue in PROGRESS.md and in DELIVERY.md §5, each line marked `[decided by absence — revisable]` with the date; the gate above is unchanged.
45
46
  8. **Report.** Verdict and seals, what changed in one line, numbers from `phase-stats`, open pendings by id, accepted risks, next command.
46
47
 
47
48
  ## Flow — `--milestone <name>`
@@ -53,7 +54,7 @@ The list always goes out; the audit ritual is optional and offered once, never i
53
54
  3. Collapse the closed phases in `ROADMAP.md` into one `<details>` block per phase, keeping the numbering intact — phase 7 stays phase 7 forever, and a later reference to it still resolves.
54
55
  4. Transport only what survives: an open pending with an executable condition goes to `BACKLOG.md`; a criterion never proven goes to the next milestone's ROADMAP as a criterion, not as a note. What survives neither test is dropped, and the report says which.
55
56
  5. Update `## Current state` in the project's `CLAUDE.md`: what exists now, what the next milestone is, where the history went. Replace the section; do not append to it.
56
- 6. One block of ratification, as in the delivery flow, plus the open pendings the milestone inherits.
57
+ 6. One block of ratification, as in the delivery flow, plus the open pendings the milestone inherits. `--no-talk` follows the same rule: the block is not asked, and the same items are written under the epilogue instead.
57
58
 
58
59
  ## Completion criterion
59
60
 
@@ -42,7 +42,9 @@ reason, never omitted.>
42
42
  <What was decided on the owner's behalf while he was not there, one per line: the assumption, the
43
43
  DEC that records it, what breaks if it is wrong, and how expensive it is to reverse. This section
44
44
  feeds the ratification block; if it is empty, say "none — every decision in this delivery is in
45
- decisions/".>
45
+ decisions/". Under `--no-talk`, this section also carries the open pendings, accepted risks and
46
+ recommendation that would otherwise be asked in the ratification block, each line ending
47
+ `[decided by absence — revisable]` and the date.>
46
48
 
47
49
  ## 6. Out of this round, and why
48
50
  <What was asked for or found and deliberately not done. One line each: what, why (cost, risk,
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  name: ll-decide
3
- description: Turns a request into a contract that survives without the owner — project mode runs a five-question premise gate, a "back from the future" premortem with clean-context narrators, a disarm pass, a decision room (docs/decide/OPTIONS.html) and an interview in batteries, then writes PLAN.md §0–§11, ROADMAP.md, decisions/ and an empty PROGRESS.md; feedback mode ingests external material (docx/pdf/xlsx/images) forensically, anchors every item in the code, checks its claims, triages by impact, arbitrates competing copy blind and writes docs/review-<date>.md plus the team's .xlsx. Use when the request is "escreva o plano", "vamos desenhar", "segunda tentativa", a new folder, a LARGE-regime request, or in English "write the plan", "let's design it" (project); or pasted .docx/.pdf/.xlsx/image paths with "analise a revisão", "processa o feedback", "vê o que o time sugeriu", "process the review" (feedback). For an open-ended idea start with `ll-brainstorm`; for research first, `ll-research`.
4
- argument-hint: "[project | feedback] [--measure]"
3
+ description: Turns a request into a contract that survives without the owner, writing PLAN.md, ROADMAP.md, decisions/ and an empty PROGRESS.md in project mode, or a dated review file from external feedback in feedback mode.
4
+ argument-hint: "[project | feedback] [--measure] [--no-talk]"
5
+ disable-model-invocation: true
5
6
  ---
6
7
 
7
8
  # Decide
@@ -31,7 +32,7 @@ Read, never rewritten: `docs/decide/OPENING.md` (from `ll-brainstorm` — everyt
31
32
  ## Flow — project
32
33
 
33
34
  ### 0. Mode, inputs and existing state
34
- Read the argument: `--measure` runs the disarm tests and may spend; without it the exercise is design-only (paper). When the request itself says which, that wins; otherwise announce the mode in one line — the owner overrules by replying. Read the project CLAUDE.md, `docs/decide/OPENING.md`, research summaries, and any record of a previous attempt ("segunda tentativa", a retrospective): the previous failure is a source in PLAN §11 with its dated reason, and its lessons enter §2/§4 with that source.
35
+ Read the argument: `--measure` runs the disarm tests and may spend; without it the exercise is design-only (paper). `--no-talk` sends no question in steps 1, 5 and 6: each band-2/3 item takes its recommended option at once as `ASM-n [decided by absence — revisable]`, and each owner-only item becomes a `WAITING` decision file instead of a question. When the request itself says which, that wins; otherwise announce the mode in one line — the owner overrules by replying. Read the project CLAUDE.md, `docs/decide/OPENING.md`, research summaries, and any record of a previous attempt ("segunda tentativa", a retrospective): the previous failure is a source in PLAN §11 with its dated reason, and its lessons enter §2/§4 with that source.
35
36
 
36
37
  Existing state at the root. `PLAN.md` already there from an earlier round, and that round is closed (its `PROGRESS.md` carries the `ll-close` epilogue, or the owner says it is closed) → `git mv` of what exists among `PLAN.md ROADMAP.md PROGRESS.md phases/ docs/decide/` into `docs/history/<round-slug>/` in one commit `docs(history): archive <round>`; `decisions/` and `BACKLOG.md` stay where they are and the DEC ids continue from the highest. Round not closed → stop and ask (band 1): close it with `ll-close`, or continue it. The new set is then written at the root, never under `docs/<project>/`.
37
38
 
@@ -43,14 +44,14 @@ Read every reference the request names, before the gate:
43
44
  | a path on disk (html, png, pdf, docx) | `Read` (pdf by `pages`) |
44
45
  | any other URL | Playwright MCP headless: `mcp__plugin_playwright_playwright__browser_navigate`, then `browser_snapshot` or `browser_take_screenshot` |
45
46
  | a page that needs the owner's login | Chrome MCP (`claude-in-chrome`), his own session |
46
- | none of these returns the content | band-1 question: ask him to attach the file or paste the content — never an assumption about what it contains |
47
+ | none of these returns the content | owner-only question: ask him to attach the file or paste the content — never an assumption about what it contains |
47
48
 
48
49
  "fiel ao protótipo" in the request makes the prototype a premise: its source is the content read, cited by artifact id or path. Without that content there is no premise and the gate stops.
49
50
 
50
51
  ### 1. Premise gate (blocking)
51
- Five questions in one block, before any subagent: the number that decides success and what counts as FAILURE; the deliverable in the client's format; the source of truth for the data; the house pattern that applies; the constraint being invented out of caution that is not the owner's rule. The tool takes four per call: questions 1–4 in one call, the fifth right after, nothing in between. Skip every question `OPENING.md` already answers. Option shapes and why each question exists: `references/premise-gate.md`.
52
+ Four questions in one block, before any subagent: the number that decides success and what counts as FAILURE; the deliverable in the client's format; the source of truth for the data; the house pattern that applies. One tool call carries the four — never a fifth question in a second call. The fifth premise — a constraint the session is inventing out of caution that is not the owner's rule — is never asked: it is dropped, or kept as an assumption `ASM-n [revisable]` with its review trigger, and named as an assumption in the count line. Skip every question `OPENING.md` already answers. Option shapes and why each question exists: `references/premise-gate.md`.
52
53
 
53
- The gate is passed when each of the five premises carries a source — `file:line`, the owner's message quoted, or an `ASM-n` label he has seen. A premise without a source is one question block (≤4) sent now, and nothing after this step runs — no premortem, no narrator, no subagent — until it is answered or ratified. A blanket delegation does not open this gate; it only turns band-2/3 premises into `ASM-n`.
54
+ The gate is passed when each of the four premises carries a source — `file:line`, the owner's message quoted, or an `ASM-n` label he has seen. A premise without a source is one question block (≤4) sent now, and nothing after this step runs — no premortem, no narrator, no subagent — until it is answered or ratified. A blanket delegation does not open this gate; it only turns band-2/3 premises into `ASM-n`. Under `--no-talk` no block is sent: a premise without a source takes the recommended answer of its question as `ASM-n [decided by absence — revisable]`, and the first two — owner-only, like any premise resting on a reference this session could not read — are written as premises and also as `decisions/DEC-NNNN-<slug>.md` in state `WAITING`, so the later steps run.
54
55
 
55
56
  ### 2. Back from the future
56
57
  Write the measured × faith inventory (5 sections) into `docs/decide/PREMORTEM.md`, then run 3–5 narrators (Opus, clean context, one persona each) that read only the inventory and the artifacts, never this conversation. Each writes `## ☠️ N.` deaths with a dated scene, an omen quoted literally from a project file with a named bias (or "no artifact mentions this point"), and a disarming test. Consolidate by convergence into F-01..F-0n ordered by lethality, TOP 3 marked, every quote re-opened and checked; close with "the missing rule" as a verifiable checklist. `references/premortem.md`.
@@ -59,21 +60,21 @@ Write the measured × faith inventory (5 sections) into `docs/decide/PREMORTEM.m
59
60
  Design mode (default): for each F-0n, a design mitigation, a sentinel (the observable that says it is happening) and a plan B — into `docs/decide/DISARM.md`; each becomes R-nn in PLAN §4 and, when observable by command, a CA-nn in §6. Measure mode: an 8-part pre-registration per test, frozen and committed before anything runs; verdicts from the closed vocabulary with the number beside each; a "What this test does NOT prove" section; verdict ceiling when the ground truth is human. `references/disarm.md`.
60
61
 
61
62
  ### 4. Decision room
62
- Write `docs/decide/OPTIONS.html` — self-contained: one alternatives table per topic (design, architecture, flow, data model) with what becomes true, cost, what is lost, revert cost and the recommendation, plus the fixed block with the five gate answers. A Fable judge in clean context (never fork) reads the file and the evidence and returns an opinion per topic; the opinion is appended to the file as its own section. The file is published, and its path given to the owner, before the first interview question. `references/decision-room.md`.
63
+ Write `docs/decide/OPTIONS.html` — self-contained: one alternatives table per topic (design, architecture, flow, data model) with what becomes true, cost, what is lost, revert cost and the recommendation, plus the fixed block with the four gate answers and the caution constraint as an assumption. A Fable judge in clean context (never fork) reads the file and the evidence and returns an opinion per topic; the opinion is appended to the file as its own section. The file is the deliverable; its path is sent to the owner in a message of its own, before the first interview question — no other tool publishes it and no other skill is loaded to write it. `references/decision-room.md`.
63
64
 
64
65
  ### 5. Interview (blocking)
65
- A blanket delegation in the request ("pode decidir tudo", "me pergunta só o que for necessário") covers bands 2 and 3 only: those items become `ASM-n` and are never asked. Band 1 is asked anyway — money above the round's ceiling, irreversible outside the repo (deploy, destroy, credential in a new place, prod write), price or a promise to a customer, a scope cut, the number the owner will look at, an owner reference this session could not read, a recorded rule contradicted by new evidence. One block of ≤4 per round, ordered by impact, recommendation marked with its cost; the owner may answer "A" to ratify every recommended item at once. Ten minutes of silence ratify the recommended list (A), never a blocking item (B) and never a band-1 item.
66
+ A blanket delegation in the request ("pode decidir tudo", "me pergunta só o que for necessário") covers bands 2 and 3 only: those items become `ASM-n` and are never asked. Band 1 is asked anyway — money above the round's ceiling, irreversible outside the repo (deploy, destroy, credential in a new place, prod write), price or a promise to a customer, a scope cut, the number the owner will look at, an owner reference this session could not read, a recorded rule contradicted by new evidence. One block of ≤4 per round, ordered by impact, recommendation marked with its cost; the owner may answer "A" to ratify every recommended item at once. Ten minutes of silence ratify the recommended list (A), never a blocking item (B) and never an owner-only item. Under `--no-talk` nothing is asked: band-2/3 items become `ASM-n [decided by absence — revisable]`, each owner-only item becomes its own `WAITING` DEC file listed in PLAN §3, and `ROADMAP.md` marks the first phase whose work depends on one with `stop: owner` in its section.
66
67
 
67
68
  Count the decisions after step 4 and before the first question; number `n/N`; if the count grows, say "+k questions". Batteries of at most 4 per subject, ordered by impact, in the canonical format of `references/decision-policy.md` (fact with source, plain-words context, options with cost, recommendation first with its reason, "Claude decide" when delegable). Free text is a new requirement with its own ID, never an invalid answer; "Claude decide" is recorded as `ASM-n` and never asked again; an order against the recommendation gets one challenge with the cost named, then obeys. The helper `${CLAUDE_CONFIG_DIR:-$HOME/.claude}/skills/ll-implement/scripts/ll-tools.js` is used only if it exists — this skill does not ship it; when it is absent, take the next number after the highest in `decisions/`; with it, `dec-reserve <n>` reserves the ids before the battery. `references/interview.md`.
68
69
 
69
70
  ### 6. Final round (blocking, always sent)
70
- Minimum contact: at least one message reaches the owner before PLAN.md is frozen, whatever the delegation was. It carries, in this order, (a) the decision count, (b) the counter `questions asked N / assumptions M / band-1 open K`, (c) the band-1 items still waiting for an answer, then every decision as it will be written — ID, decision, who decided, against-recommendation marks, assumptions. A run whose items are all band 2/3 still sends it, with `N = 0` and the ASM list. An item that was badly posed is re-asked here; a correction is applied and the list shown once more. "ok" or "A" freezes; ten minutes of silence ratifies the recommended list (A, the assumptions) and freezes PLAN.md too, but only when `band-1 open` is 0 — with one band-1 item open nothing freezes. Nothing is written before this round closes.
71
+ Minimum contact: at least one message reaches the owner before PLAN.md is frozen, whatever the delegation was. It carries, in this order, (a) the decision count, (b) the counter `questions asked N / assumptions M / owner decisions open K` (printed to the owner in Portuguese as `perguntas N / assunções M · decisões só suas em aberto K`), (c) the owner-only items still waiting for an answer, then every decision as it will be written — ID, decision, who decided, against-recommendation marks, assumptions. A run whose items are all band 2/3 still sends it, with `N = 0` and the ASM list. An item that was badly posed is re-asked here; a correction is applied and the list shown once more. "ok" or "A" freezes; ten minutes of silence ratifies the recommended list (A, the assumptions) and freezes PLAN.md too, but only when `owner decisions open` is 0 — with one owner-only item open nothing freezes. Under `--no-talk` the round is printed as a report, not asked: same content, counter `questions asked 0 / assumptions M / owner decisions open K`, and the contract is written and frozen even with K > 0 — the `WAITING` DECs are what stop the dependent work, not this skill. Nothing is written before this round closes.
71
72
 
72
73
  ### 7. Write the contract
73
74
  At the repo root: `PLAN.md` §0–§11, `ROADMAP.md` when phases > 3, one `decisions/DEC-NNNN-<slug>.md` per decision plus `decisions/README.md`, and an empty `PROGRESS.md` with the `<!-- ll-state -->` block — templates in `references/plan-skeleton.md`. The id is four digits with no project prefix (`DEC-0007-cents-mismatch.md`, never `DEC-X-007`), reserved with `ll-tools.js dec-reserve` when the helper exists and otherwise taken as the next number after the highest in `decisions/`. `plan-lint` reads phase plans only (an `ll-milestones` block), so it runs in `ll-implement`, not here; before freezing, check by hand that every `T<n>` and `CA-nn` carries a command, every `REQ-<slug>` points to one phase, and every `I-nn` has a source. Answer the self-sufficiency test in §10 before ending: which test key to use, what is missing, given that this session's context will be cleared.
74
75
 
75
76
  ### 8. Hand off
76
- Report in Portuguese, opening with the counter `questions asked N / assumptions M / band-1 open K`, then the decision counts (owner / assumption / inherited / against recommendation), accepted risks, files written, hand-check result. With `N = 0` and `M > 5`, append one line under the phase heading of `PROGRESS.md`: `- review assumptions: <M> ASM written with 0 questions asked (<date>)`.
77
+ Report in Portuguese, opening with the counter `questions asked N / assumptions M / owner decisions open K` (printed as `perguntas N / assunções M · decisões só suas em aberto K`), then the decision counts (owner / assumption / inherited / against recommendation), accepted risks, files written, hand-check result. Under `--no-talk` the report also names each `WAITING` DEC with its file path and the phase that carries `stop: owner`. With `N = 0` and `M > 5`, append one line under the phase heading of `PROGRESS.md`: `- review assumptions: <M> ASM written with 0 questions asked (<date>)`.
77
78
 
78
79
  Then stop and print the next command — one command, `ll-implement 1`, the attended run. An owner who wants the phases to run unattended may choose `ll-goal 1` instead; say it in the prose if he asks, never in the ▶ line. This skill does not write `phases/NN/PLAN.md`, does not dispatch executors and does not run a phase — the phase plan is written by `ll-implement` when the owner runs it, one phase at a time.
79
80
 
@@ -89,7 +90,7 @@ For every item, the current state: `file:line`, current price, current copy. An
89
90
  List the factual claims the material proposes (times, prices, numbers, names, credits) and check each against `PRODUCT.md`, the project CLAUDE.md and the code. Divergences are the first questions, because they poison every decision after them. The instruction "the reviewers are lay people in X" means evaluate, not obey.
90
91
 
91
92
  ### 4. Triage by impact
92
- Count the decisions before the first question. Order: money → offer → fact → copy → microcopy. Every question carries the reviewer's proposal, the anchored current state, the analysis and a recommendation; "reject" is always an option; in a scope question the maximalist option is always on the table. Anything for a human recipient asks the format once (`.xlsx` in `docs/`, artifact, issue) before being built.
93
+ Count the decisions before the first question. Order: money → offer → fact → copy → microcopy. Every question carries the reviewer's proposal, the anchored current state, the analysis and a recommendation; "reject" is always an option; in a scope question the maximalist option is always on the table. Anything for a human recipient asks the format once (`.xlsx` in `docs/`, artifact, issue) before being built. Under `--no-talk` the battery is not sent: the same order holds, each band-2/3 item takes its recommendation as `ASM-n [decided by absence — revisable]` and each owner-only item becomes a `WAITING` DEC.
93
94
 
94
95
  ### 5. Blind arbitration (automatic)
95
96
  Two or more competing versions of conversion copy → judges (Fable, clean context, one per item) receive product facts, audience, criteria and the versions unattributed, with the `<output_contract>` (≤150 words: VERDICT / Rationale / Version D if better). Not asked whether to do it; the verdict comes back into the numbered question as "(retomada)". Contract: `references/review-spec.md`.
@@ -98,21 +99,22 @@ Two or more competing versions of conversion copy → judges (Fable, clean conte
98
99
  Write `docs/review-<date>.md` in the 7 sections: self-contained header · decision log including rejected items · §1–§N copy verbatim per page with target file · §Sweep greps of what became obsolete · §External dependencies with the placeholder rule · §Deferred with reason · §Verification contract. Decisions in it are final.
99
100
 
100
101
  ### 7. External contract
101
- From §External dependencies, generate `docs/<slug>.xlsx` with checklist columns and a "how to use" tab, committed in the repo. Append the round to `ROADMAP.md` as a phase (`| NN | review <date> | … | PLANNED |` with a `## Phase NN` section whose success criteria are the §Verification contract and whose objective points at the spec). Report in Portuguese and stop: `▶ Next — /clear then ll-implement NN` (one executor per slice with a file allowlist).
102
+ From §External dependencies, generate `docs/<slug>.xlsx` with checklist columns and a "how to use" tab, committed in the repo. Append the round to `ROADMAP.md` as a phase (`| NN | review <date> | … | PLANNED |` with a `## Phase NN` section whose success criteria are the §Verification contract and whose objective points at the spec). Report in Portuguese and stop: `▶ Next — /clear, then ll-implement NN` (one executor per slice with a file allowlist).
102
103
 
103
104
  ## Completion criterion
104
105
 
105
- Project: `PLAN.md` exists at the repo root with §0–§11 (`git ls-files PLAN.md PROGRESS.md` returns both at the root), §10 answers the self-sufficiency test, every CA-nn has a command, `decisions/README.md` counts match the DEC files and every id is `DEC-NNNN-<slug>.md`, `PROGRESS.md` carries the empty `ll-state` block, the premise gate closed with a source per premise, the final round was sent and closed, the counter `questions asked N / assumptions M / band-1 open K` is printed, no `phases/NN/PLAN.md` was written, and the hand check of step 7 found nothing. Feedback: the inventory count equals the number of decisions logged plus deferred items, and the `.xlsx` is committed.
106
+ Project: `PLAN.md` exists at the repo root with §0–§11 (`git ls-files PLAN.md PROGRESS.md` returns both at the root), §10 answers the self-sufficiency test, every CA-nn has a command, `decisions/README.md` counts match the DEC files and every id is `DEC-NNNN-<slug>.md`, `PROGRESS.md` carries the empty `ll-state` block, the premise gate closed with a source per premise, the final round was sent and closed (printed as a report under `--no-talk`), the counter `questions asked N / assumptions M / owner decisions open K` is printed, no `phases/NN/PLAN.md` was written, and the hand check of step 7 found nothing. Feedback: the inventory count equals the number of decisions logged plus deferred items, and the `.xlsx` is committed.
106
107
 
107
- ▶ Next — `/clear` then `ll-implement 1` (feedback mode: `/clear` then `ll-implement NN`, the phase appended in step 7).
108
+ ▶ Next — /clear, then ll-implement 1 (feedback mode: ll-implement NN, the phase appended in step 7)
108
109
 
109
110
  ## Questions
110
111
 
111
- - Gate: five, in one block, at the start; the ones `OPENING.md` answers are skipped. Blocking: no premortem, no subagent, no writing until every premise has a source.
112
+ - Gate: four questions, in one block, at the start; the ones `OPENING.md` answers are skipped; a constraint invented out of caution is never one of them — it is dropped or kept as a revisable assumption. Blocking: no premortem, no subagent, no writing until every premise has a source.
112
113
  - Interview: batteries of at most 4 per subject, by impact, canonical format; counted before the first, `n/N` never renumbered. Feedback: counted before the first, one subject per call, money items alone.
113
- - Blanket delegation ("decide tudo"): covers bands 2 and 3; band-1 items are asked anyway, and an owner reference this session could not read is band 1.
114
- - Final round: always sent before writing, with the counter and the open band-1 list, even when zero questions were asked.
115
- - Never asked: the ten items of `references/decision-policy.md` (who executes, a fact readable from the repo, which pattern when a house pattern exists, a reversible detail inside a closed contract, another session's decision, out-of-scope subjects, a question that changes no action, copy without a commercial promise, industry defaults, the same policy question twice). Silence for 10 minutes ratifies the recommended option of a band-2/3 item, never option B and never band 1.
114
+ - Blanket delegation ("decide tudo"): covers bands 2 and 3; owner-only items are asked anyway, and an owner reference this session could not read is band 1.
115
+ - Final round: always sent before writing, with the counter and the open owner-only list, even when zero questions were asked.
116
+ - `--no-talk`: steps 1, 5 and 6 send no question; band-2/3 items take the recommendation, recorded `[decided by absence — revisable]`; owner-only items are written as `WAITING` decisions and the contract is frozen anyway.
117
+ - Never asked: the eleven items of `references/decision-policy.md` (who executes, a fact readable from the repo, which pattern when a house pattern exists, a reversible detail inside a closed contract, another session's decision, out-of-scope subjects, a question that changes no action, copy without a commercial promise, industry defaults, the same policy question twice, options that differ only in rigor). Silence for 10 minutes ratifies the recommended option of a band-2/3 item, never option B and never band 1.
116
118
 
117
119
  ## Models
118
120
 
@@ -125,7 +127,7 @@ Project: `PLAN.md` exists at the repo root with §0–§11 (`git ls-files PLAN.m
125
127
 
126
128
  ## References
127
129
 
128
- - Step 1 — the five questions, option shapes, where each answer lands: [references/premise-gate.md](references/premise-gate.md)
130
+ - Step 1 — the four questions, option shapes, where each answer lands: [references/premise-gate.md](references/premise-gate.md)
129
131
  - Step 2 — inventory template, narrator brief, death format, convergence, missing-rule checklist: [references/premortem.md](references/premortem.md)
130
132
  - Step 3 — design-mode table, 8-part pre-registration, verdict vocabulary, ceiling rule: [references/disarm.md](references/disarm.md)
131
133
  - Step 4 — OPTIONS.html structure and judge brief: [references/decision-room.md](references/decision-room.md)
@@ -39,14 +39,15 @@ instead of creating one. In an opening conversation these are the A items.
39
39
 
40
40
  ### Blanket delegation
41
41
  "Pode decidir tudo, me pergunta só o que for realmente necessário" delegates bands 2 and 3, never band 1:
42
- band-1 items are still asked, in one block of ≤4 with the recommendation marked. Zero questions plus a stack of assumptions has misread it.
42
+ owner-only items are still asked, in one block of ≤4 with the recommendation marked. Zero questions plus a stack of assumptions has misread it.
43
43
 
44
44
  ## Contact minimum
45
45
  Every planning skill (`ll-brainstorm`, `ll-decide`, the phase conversation of `ll-implement`) ends
46
- with a final round that shows `questions asked N / assumptions M / band-1 open K`, even when N = 0.
47
- Silence of 10 minutes ratifies the recommended list (A), never a blocking item (B).
46
+ with a final round that shows `questions asked N / assumptions M / owner decisions open K`
47
+ (printed to the owner in Portuguese as `perguntas N / assunções M · decisões só suas em aberto K`),
48
+ even when N = 0. Silence of 10 minutes ratifies the recommended list (A), never a blocking item (B).
48
49
 
49
- ## Never ask (10 items)
50
+ ## Never ask (11 items)
50
51
  1. Who executes — agent vs session, worktrees, model per wave. Decide it and record it.
51
52
  2. A fact readable from the repo, the database or the infra — look it up, including whether it was already done.
52
53
  3. Which pattern, when a house pattern exists — follow it.
@@ -57,10 +58,16 @@ Silence of 10 minutes ratifies the recommended list (A), never a blocking item (
57
58
  8. Copy without impact on a commercial promise. Route it to a blind judge instead.
58
59
  9. Industry defaults — data retention, performance target, error format, default auth. Recorded in Locked with backing.
59
60
  10. The same policy question a second time, however it is rephrased.
61
+ 11. A question whose options differ only in rigor — how strictly, how often or from where a check
62
+ is re-run: the strictest cheap option is taken and recorded as an assumption `[decided by
63
+ absence — revisable]`.
60
64
 
61
65
  ## Silence, delegation, directives
62
66
  - Silence for 10 minutes in the hot window (harness AFK timeout) ratifies option A of a band-2/3 item or
63
- list A of a map — never option B, never a band-1 item. Record `ratified by silence`; in a run, `[decided by absence — revisable]`.
67
+ list A of a map — never option B, never an owner-only item. Record `ratified by silence`; in a run, `[decided by absence — revisable]`.
68
+ - Under `--no-talk` the ten minutes are not waited for: the recommended option is taken at once and
69
+ recorded `[decided by absence — revisable]`. An owner-only item is never taken this way — it is written
70
+ as a decision in state `WAITING` and the work that depends on it stops there.
64
71
  - "Claude decide", "você decide", "pergunta pro time" are legitimate answers: record an assumption
65
72
  `ASM-n` (permanent; announced if changed later) or the delegation, and never ask that item again.
66
73
  - An order against the recommendation is a directive: one challenge with the cost named, then
@@ -93,19 +100,22 @@ the execution back to the owner: ask in one line and execute; transfer only what
93
100
  - Count the decisions before the first question; number `n/N`; never renumber; if the scope grows,
94
101
  say "+2 questions". At most 4 questions per call, one call per subject, ordered by impact, all
95
102
  inside the round's subject.
96
- - `header` ≤ 12 chars. `question` = `[D-NN-kk] Question n/N — <title> (impact HIGH|MED|LOW · revert:
97
- <cost>)` + `FACT:` with number and source + `CONTEXT: <term> = <plain words>` for any acronym + the
98
- decision in business words, ending with "?". Target ≤ 200 chars; over ~500, rewrite. Everything
99
- inside the field — text in the previous turn does not reach the owner.
103
+ - `header` ≤ 12 chars. `question` = `Pergunta n/N — <title in business words> (impacto
104
+ ALTO|MÉDIO|BAIXO · desfazer: <cost>)` + `FACT:` with number and source + `CONTEXT: <term> =
105
+ <plain words>` for any acronym + the decision in business words, ending with "?". Target ≤ 200
106
+ chars; over ~500, rewrite. Everything inside the field — text in the previous turn does not reach
107
+ the owner. The `D-NN-kk`/`DEC-NNNN` id is written only in the file that records the answer, never
108
+ in the header or in an option.
100
109
  - Options 2–3 (4 only multi-select); recommended first with `(Recommended)` and a traceable reason;
101
- each `description` = `<what becomes true> · <cost in R$/US$ or days> · <what is lost>`. Add "Claude
102
- decide" when the item is delegable. No "Other" — the tool provides it; free text is a new requirement.
110
+ each `description` = `<what becomes true> · <cost in R$/US$ or days> · <what is lost>`. An option
111
+ names the thing decided, never an id alone. Add "Claude decide" when the item is delegable. No
112
+ "Other" — the tool provides it; free text is a new requirement.
103
113
  - Recommend on the product axis; cost appears as a number in the option; above the ceiling the item
104
114
  is band 1. In a scope question the maximalist option is always on the table.
105
115
 
106
116
  Example:
107
117
  ```
108
- question: "[D-07-01] Question 1/2 — cents mismatch (impact HIGH · revert: 1 migration)
118
+ question: "Pergunta 1/2 — cents mismatch (impacto ALTO · desfazer: 1 migration)
109
119
  FACT: <share>% of <n> rows of the last close differ by ≤ <tolerance> (<path to the run
110
120
  output>); today the job stops at the first one.
111
121
  CONTEXT: reconciliation = matching provider payouts to our sales, row by row.
@@ -38,9 +38,11 @@ with the F-0n that killed it. Tables scroll inside their own container on narrow
38
38
  (`overflow-x:auto` wrapper), the body never scrolls horizontally.
39
39
 
40
40
  ## Publishing
41
- Write the file, then give the owner its path in the reply; when the Artifact tool is available,
42
- publish the same file (favicon "⚖️") and give the link too — the file in `docs/decide/` stays the
43
- source. The interview starts only after this message.
41
+ Write the file with `Write` — it is the deliverable, nothing else publishes it and no other skill
42
+ is loaded to design it; the structure above (self-contained, inline CSS) is everything this step
43
+ needs. Send its path to the owner in a message of its own, with no other content, right after
44
+ writing it and before the first `AskUserQuestion` of the interview. Under `--no-talk` the same
45
+ path line is printed instead of waited on.
44
46
 
45
47
  ## Judge brief (Fable, high, clean context — a fresh agent, never `fork`)
46
48
  Fill the paths absolute:
@@ -15,7 +15,10 @@ A confirmed failure is a design constraint: options that ignore it are not offer
15
15
 
16
16
  Classify each item with the bands: band 1 → question; band 2/3 → assumption `ASM-n` with the
17
17
  cheapest-to-revert default and its reason, in PLAN §3, escalable only by contrary evidence. In
18
- doubt, look at fan-out: an item that conditions 3+ others is a question even if reversible.
18
+ doubt, look at fan-out: an item that conditions 3+ others is a question even if reversible. A
19
+ question whose options differ only in rigor — how strictly, how often or from where a check is
20
+ re-run: the strictest cheap option is taken and recorded as an assumption `[decided by absence —
21
+ revisable]`.
19
22
 
20
23
  ## Blanket delegation
21
24
  "Pode decidir tudo", "você decide o que der", "me pergunta só o que for realmente necessário" is a
@@ -27,8 +30,15 @@ window, what counts as an event) · a reference of his the session could not rea
27
30
  file) · a recorded rule that new evidence contradicts. They go out in one block of at most 4 per
28
31
  round, ordered by impact, recommendation first with its cost; the owner may answer "A" to ratify
29
32
  every recommended item at once. Ten minutes of silence ratify the recommended list A, never a
30
- blocking item B and never a band-1 item. An interview that ends with zero questions asked while a
31
- band-1 item exists is the defect this rule exists for: the delegation was read as "never ask".
33
+ blocking item B and never an owner-only item. An interview that ends with zero questions asked while an
34
+ owner-only item exists is the defect this rule exists for: the delegation was read as "never ask".
35
+
36
+ `--no-talk` goes one step further: no block leaves the session. Band-2/3 items take their
37
+ recommended option at once as `ASM-n [decided by absence — revisable]`; every item that stays a
38
+ question under a blanket delegation becomes `decisions/DEC-NNNN-<slug>.md` in state `WAITING`,
39
+ listed in PLAN §3 with what it blocks, and the first phase whose work depends on one carries
40
+ `stop: owner` in its ROADMAP section. Zero questions with an owner-only item open is the defect above
41
+ only when the item vanishes; here it is written, dated and pointed at from the plan.
32
42
 
33
43
  Order: the kickoff question first when it exists (big-bang vs incremental, minimum vs complete —
34
44
  it re-prices every later option, and later cost descriptions cite its answer); then by structural
@@ -43,11 +53,13 @@ Count the queue, announce "N decisions", and keep `n/N` stable; growth is announ
43
53
 
44
54
  ## Batteries
45
55
  At most 4 questions per call, one subject per call, ordered by impact. HIGH-impact items on money,
46
- price or scope go alone. `header` ≤ 12 chars; the `question` field carries `[DEC-NNNN] Question
47
- n/N — <title> (impact · revert)` (the reserved id), `FACT:` with number and source (a row of OPTIONS.html, a
48
- premortem F-0n, `file:line`), `CONTEXT:` for any acronym, and the decision in business words
49
- ending with "?". Options 2–3 (4 only multi-select), recommended first with `(Recommended)` and a
50
- traceable reason; each description = what becomes true · cost · what is lost. Add "Claude decide"
56
+ price or scope go alone. `header` ≤ 12 chars; the `question` field carries `Pergunta n/N — <title
57
+ in business words> (impacto ALTO|MÉDIO|BAIXO · desfazer: <cost>)` — the reserved `DEC-NNNN` id
58
+ stays in the file that records the answer, never in the header or an option —, `FACT:` with number
59
+ and source (a row of OPTIONS.html, a premortem F-0n, `file:line`), `CONTEXT:` for any acronym, and
60
+ the decision in business words ending with "?". Options 2–3 (4 only multi-select), recommended
61
+ first with `(Recommended)` and a traceable reason; each description = what becomes true · cost ·
62
+ what is lost — an option names the thing decided, never an id alone. Add "Claude decide"
51
63
  when delegable. Never add "Other" — the tool provides it. Everything the owner needs is inside the
52
64
  field: text in a previous turn does not reach him. Fatigue: after 3–5 HIGH decisions offer a
53
65
  pause; the queue lives in `decisions/`, so a new session resumes from the next open item.
@@ -66,7 +78,7 @@ A free answer is a first-class redesign: record verbatim, give it an ID, treat i
66
78
  requirement — it may create items, kill items, or redirect the process (a research request, a
67
79
  blind-judge request). When it asks for an unbiased opinion, run the judge brief of
68
80
  `decision-room.md` on that item and re-present the same numbered question with the verdict
69
- ("Question 6/16 (retomada)"). "Não entendi" or a counter-question: rephrase with better context;
81
+ ("Pergunta 6/16 (retomada)"). "Não entendi" or a counter-question: rephrase with better context;
70
82
  the failure was the question's. "Claude decide" / "você decide" / "pergunta pro X": record
71
83
  `ASM-n` (or the delegation) with default and reason; never ask that item again. An order against
72
84
  the recommendation: one challenge with the cost named, then obey and record under
@@ -78,9 +90,10 @@ When the queue has no open item, one message — not a question tool call — go
78
90
  delegation was. It opens with three lines:
79
91
  ```
80
92
  decisions: <N total>
81
- questions asked N / assumptions M / band-1 open K
82
- band-1 open: <ids and one line each, or "none">
93
+ questions asked N / assumptions M / owner decisions open K
94
+ owner decisions open: <ids and one line each, or "none">
83
95
  ```
96
+ (printed to the owner in Portuguese as `perguntas N / assunções M · decisões só suas em aberto K`)
84
97
  then lists every decision as it will be written in PLAN §3: `ID · decision · by (owner / Claude ASM
85
98
  / inherited from …) · [against recommendation] · [accepted risk]`, then the assumptions, then the
86
99
  accepted risks. A run whose items are all band 2/3 sends the same message with `N = 0` and the full
@@ -89,7 +102,10 @@ The owner replies "ok"/"A" or names what to change; a badly posed item is re-ask
89
102
  canonical format.
90
103
  A correction is applied and the list is shown once more. "ok" or "A" freezes; ten minutes of silence
91
104
  in the hot window ratifies the recommended list (A, the assumptions) and freezes PLAN.md too, but
92
- only when `band-1 open` is 0 — with one band-1 item open nothing freezes.
105
+ only when `owner decisions open` is 0 — with one owner-only item open nothing freezes.
106
+ Under `--no-talk` the same message is printed as a report and no reply is waited for: `N = 0`, the
107
+ full ASM list, the WAITING ids under `owner decisions open`, and PLAN.md is frozen right after it even with
108
+ K > 0 — the WAITING DECs hold the dependent phases, not the freeze.
93
109
  Nothing is written before this round closes.
94
110
 
95
111
  ## Recording
@@ -97,6 +113,6 @@ Every decision: `decisions/DEC-NNNN-<slug>.md` in the schema of `plan-skeleton.m
97
113
  PLAN §3. `decisions/README.md` carries the four counts (by owner / by rule / delegated /
98
114
  assumptions), the against-recommendation list, the free answers verbatim with the ID each created,
99
115
  and the consciously accepted risks. The same header carries the counter
100
- `questions asked N / assumptions M / band-1 open K`; with `N = 0` and `M > 5` the session also appends to `PROGRESS.md`, under the
116
+ `questions asked N / assumptions M / owner decisions open K`; with `N = 0` and `M > 5` the session also appends to `PROGRESS.md`, under the
101
117
  phase heading, `- review assumptions: <M> ASM written with 0 questions asked (<date>)`. A decision
102
118
  attributed to the owner that he did not make voids the artefact: it is rewritten, not patched.