geneseed 3.18.0 → 3.19.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 (60) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/DESIGN.md +1 -1
  3. package/README.md +10 -6
  4. package/SHIPPED.md +1 -1
  5. package/docs/concepts/skills.md +2 -2
  6. package/docs/guides/project-context.md +20 -0
  7. package/harness.config.json +1 -1
  8. package/js/inspect/checks-counts.mjs +8 -3
  9. package/js/inspect/checks-repo.mjs +6 -4
  10. package/js/inspect/scorecard-svg.mjs +3 -3
  11. package/package.json +1 -1
  12. package/src/AGENT.md.tmpl +6 -2
  13. package/src/agents/reviewer.md +3 -0
  14. package/src/doctrines/comms.md +19 -0
  15. package/src/skills/daydream/SKILL.md +1 -0
  16. package/src/skills/daydream/VENDOR.md +4 -0
  17. package/src/skills/explain-changes/SKILL.md +1 -1
  18. package/src/skills/fresh-eyes.md +1 -1
  19. package/src/skills/geneseed-code-review.md +14 -7
  20. package/src/skills/parallel-agents.md +1 -1
  21. package/src/skills/pipeline.md +1 -1
  22. package/src/skills/ponytail.md +1 -1
  23. package/src/skills/react-view-transitions/SKILL.md +1 -0
  24. package/src/skills/react-view-transitions/VENDOR.md +4 -0
  25. package/src/skills/review-response.md +8 -2
  26. package/src/skills/roast-me.md +8 -7
  27. package/src/skills/rule.md +3 -1
  28. package/src/skills/ship.md +10 -6
  29. package/themes/_TEMPLATE.json +2 -1
  30. package/themes/biker.json +2 -1
  31. package/themes/commentator.json +2 -1
  32. package/themes/cyberpunk.json +2 -1
  33. package/themes/gamer.json +2 -1
  34. package/themes/imperial.json +2 -1
  35. package/themes/joker.json +2 -1
  36. package/themes/marvin.json +2 -1
  37. package/themes/mean.json +2 -1
  38. package/themes/military.json +2 -1
  39. package/themes/neutral.json +2 -1
  40. package/themes/pirate.json +2 -1
  41. package/themes/sports.json +2 -1
  42. package/themes/verstappen.json +2 -1
  43. package/themes/wizard.json +2 -1
  44. package/web/dist/assets/{Activity-4M4VQJOh.js → Activity-IbwdHHyx.js} +1 -1
  45. package/web/dist/assets/{ActivityDetail-CnmDs43F.js → ActivityDetail-B5uivdWI.js} +1 -1
  46. package/web/dist/assets/{Dashboard-lTaH58R9.js → Dashboard-v6WQ37bD.js} +2 -2
  47. package/web/dist/assets/{Docs-DU5znu5f.js → Docs-CypIfDBX.js} +1 -1
  48. package/web/dist/assets/{GreenhouseView-BxO84bKX.js → GreenhouseView-ClxP0hQG.js} +1 -1
  49. package/web/dist/assets/{Installs-B1WcObxK.js → Installs-CPkQeFjO.js} +1 -1
  50. package/web/dist/assets/{JournalView-0YNKcaaD.js → JournalView-BeEInhUf.js} +1 -1
  51. package/web/dist/assets/{Laws-DnDpRwpE.js → Laws-Ds6U5xBQ.js} +1 -1
  52. package/web/dist/assets/{Library-DBkKsBMe.js → Library-BraUKPyQ.js} +1 -1
  53. package/web/dist/assets/{Loops-P-6RCdzS.js → Loops-DWcy3mwK.js} +1 -1
  54. package/web/dist/assets/{OperatorHudView-BZZ3uJPH.js → OperatorHudView-CQyrJQ9m.js} +1 -1
  55. package/web/dist/assets/{Personal-BoVw6OCW.js → Personal-YWqs6qFL.js} +1 -1
  56. package/web/dist/assets/{Tabs-VYLhUTiX.js → Tabs-EhzEC-Xh.js} +1 -1
  57. package/web/dist/assets/{drawable-CdNARIKC.js → drawable-CEKPNV7X.js} +1 -1
  58. package/web/dist/assets/{index-hsabpYzv.js → index-CPi22b7y.js} +2 -2
  59. package/web/dist/index.html +1 -1
  60. package/web/src/pages/Laws.jsx +5 -0
package/CHANGELOG.md CHANGED
@@ -8,6 +8,23 @@ label. For the capability ↔ spec map, see [SHIPPED.md](SHIPPED.md).
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [3.19.0] — 2026-10-09
12
+
13
+ ### Added
14
+ - Doctrine comms 3, Declare the Judgment Calls: after non-trivial work the agent lists the choices it made alone where a reasonable alternative existed, with the alternative set aside and whether it is cheaply reversible, riskiest first (data, security, production, public interfaces). Only genuine forks count, trivial work owes an empty list, and it never covers a call Echo the Intent says to ask about first. Reviewers read where the agent guessed instead of everything, or nothing. The idea is Victor Rentea's (Devoxx BE 2026, "Responsibly Dimming the Lights in the Software Factory"). It is in the toggleable comms pack, not a law, per DESIGN.md Decision 7; the full-footprint size ceiling rises by 205 characters for it. `explain-changes` now lists these calls among its risks.
15
+ - Reviews apply the nearest `REVIEW.md`: a repo states how its code is judged in a file read only at review time, so the coding context stays lean. The file closest to each changed file wins (folder, then root, then `CODING_STANDARDS.md` / `CONTRIBUTING.md`, then Geneseed's defaults, format included), and it never lifts a law. `geneseed-code-review` and the reviewer agent load it, `ship` runs a review before opening a pull request and stops on a blocking finding, and `review-response` is the only skill that writes it, on your word. One sentence in the always-on core makes host built-in reviews apply it too.
16
+ - `geneseed-code-review` flags architecture drift: when `docs/architecture.md` draws C4 and a diff adds, removes or rewires a container without touching the diagram, it raises a non-blocking issue pointing at `document-project`.
17
+
18
+ ### Changed
19
+ - `roast-me` now attacks your own ask, plan, idea or writing, premise first, and no longer critiques code. Code and diffs, "roast my code" included, go to `geneseed-code-review`, which keeps its findings unsoftened when asked to roast.
20
+ - `daydream` and `react-view-transitions` are user-only: they answer `/daydream` and `/react-view-transitions`, but the agent no longer starts them on its own and their descriptions leave the always-on list.
21
+ - `parallel-agents` and `pipeline` name their boundary: independent units side by side versus a relay in one worktree where each agent builds on the previous one's output.
22
+
23
+ ### Repository
24
+ Not in the package; how Geneseed itself is built and checked.
25
+ - The weekly scorecard run also scores the tree with `geneseed scorecard` and fails when any check differs from the upstream Python tool, so the port cannot drift in silence. The web CI job calls prettier and vitest directly, which the scorecard can see (95.3, 30 of 31 checks).
26
+ - README: the scorecard card sits above "Why Geneseed", the badge takes the upstream look, and the laws badge also counts doctrine rules.
27
+
11
28
  ## [3.18.0] — 2026-10-09
12
29
 
13
30
  ### Added
package/DESIGN.md CHANGED
@@ -44,7 +44,7 @@ vault or a specific tool's hooks.
44
44
  and the prose words the docs use: the core nouns `LAW(S)`/`DOCTRINE(S)`/`ONTOLOGY`/
45
45
  `AGENT(S)`/`SKILL(S)`/`MEMORY`/`NOTEBOOK`/`VAULT`/`WIKI`, plus `TAGLINE`,
46
46
  `LOADED_SIGIL`, `EPI_*`, `BENEDICTION`, `DESC_*`, `ROAST_PERSONA`, the invariant
47
- titles `LEX_<ID>`, the 28 doctrine-rule titles `DOC_<ID>` (keyed by stable rule id), the five pack
47
+ titles `LEX_<ID>`, the 29 doctrine-rule titles `DOC_<ID>` (keyed by stable rule id), the five pack
48
48
  names `PACK_CRAFT`/`PACK_RIGOR`/`PACK_OPS`/`PACK_PROCESS`/`PACK_COMMS`, and the section intros
49
49
  `INTRO_*`. Each theme defines its own nouns; **neutral keeps the plain words** (Rule,
50
50
  Doctrine, Agent, Skill, Memory, Workspace), so neutral output is unchanged.
package/README.md CHANGED
@@ -6,18 +6,18 @@
6
6
 
7
7
  [![npm](https://img.shields.io/npm/v/geneseed?color=cb3837&logo=npm)](https://www.npmjs.com/package/geneseed)
8
8
  [![CI](https://github.com/Arylmera/Geneseed/actions/workflows/ci.yml/badge.svg)](https://github.com/Arylmera/Geneseed/actions/workflows/ci.yml)
9
- [![AI harness scorecard](https://img.shields.io/badge/AI%20harness%20scorecard-A%20%C2%B7%2090.4-1a7f37)](#-validate--test)
9
+ [![AI Harness Scorecard](https://img.shields.io/badge/AI%20Harness%20Scorecard-A%2095.3%2F100-brightgreen)](#ai-harness-scorecard)
10
10
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
11
11
  [![Node >= 22.3](https://img.shields.io/badge/node-%3E%3D22.3-5fa04e)](package.json)
12
12
  [![zero dependencies](https://img.shields.io/badge/deps-zero-success)](package.json)
13
13
  [![Themes](https://img.shields.io/badge/themes-14-9cf)](themes/)
14
14
  [![Skills](https://img.shields.io/badge/skills-47-blueviolet)](src/skills/)
15
15
  [![Agents](https://img.shields.io/badge/agents-18-orange)](src/agents/)
16
- [![Laws](https://img.shields.io/badge/laws-9-critical)](src/laws/universal.md)
16
+ [![Laws and doctrines](https://img.shields.io/badge/laws-9%20%2B%2029%20doctrines-critical)](src/doctrines/)
17
17
  [![Plugins](https://img.shields.io/badge/plugins-7-teal)](adapters/opencode/plugins/)
18
18
  [![OpenCode · Claude Code · Bob · OpenClaude · AGENT.md](https://img.shields.io/badge/works%20with-OpenCode%20·%20Claude%20Code%20·%20Bob%20·%20OpenClaude%20·%20AGENT.md-1f6feb)](#-supported-harnesses)
19
19
 
20
- [**Why**](#-1--why-geneseed) · [**Setup**](#-2--setup) · [**Web & terminal**](#-3--web--terminal) · [**What you get**](#-4--what-you-get)
20
+ [**Why**](#-1--why-geneseed) · [**Setup**](#-2--setup) · [**Web & terminal**](#-3--web--terminal) · [**What you get**](#-4--what-you-get) · [**Harnesses**](#-supported-harnesses) · [**Docs**](#-documentation)
21
21
 
22
22
  </div>
23
23
 
@@ -44,6 +44,12 @@ A hand-written instructions file is prose the model may or may not honour, copie
44
44
 
45
45
  This page is the overview. **New to agent harnesses?** Start with [Understand](docs/understand/harness.md) — a short course on what a harness is, what lands on your machine, what changes in your day, and what is enforced versus only asked. Everything else — every install path, configuration knob, and troubleshooting step — is in the **[documentation](docs/README.md)**, which the web console also renders.
46
46
 
47
+ ### Scored, not claimed
48
+
49
+ <p align="center"><a href="#ai-harness-scorecard"><img src="docs/assets/scorecard.svg" alt="AI Harness Scorecard for this repository: grade and score, with one bar per pillar" width="760"></a></p>
50
+
51
+ <p align="center"><sub>31 deterministic checks, no LLM — <a href="#ai-harness-scorecard">how this is scored, and how to score your own repo</a></sub></p>
52
+
47
53
  ---
48
54
 
49
55
  ## 🧬 1 · Why Geneseed
@@ -294,9 +300,7 @@ node --test --test-reporter=tap "tests/**/*.test.mjs" # the suites (node expan
294
300
 
295
301
  ### AI Harness Scorecard
296
302
 
297
- <p align="center"><img src="docs/assets/scorecard.svg" alt="AI Harness Scorecard for this repository: grade and score, with one bar per pillar" width="760"></p>
298
-
299
- How safe this repository is to change with agents, scored by the [AI Harness Scorecard](https://github.com/markmishaev76/ai-harness-scorecard): 31 deterministic checks, no LLM, in five weighted pillars. Geneseed ships its own JavaScript port, so you can score any repository a harness is installed in — it grades the repository (CI, tests, docs), not the harness files:
303
+ The card [at the top of this page](#scored-not-claimed) measures how safe this repository is to change with agents. It comes from the [AI Harness Scorecard](https://github.com/markmishaev76/ai-harness-scorecard): 31 deterministic checks, no LLM, in five weighted pillars. Geneseed ships its own JavaScript port, so you can score any repository a harness is installed in — it grades the repository (CI, tests, docs), not the harness files:
300
304
 
301
305
  ```bash
302
306
  geneseed scorecard # grade, one line per pillar, and what to fix
package/SHIPPED.md CHANGED
@@ -20,7 +20,7 @@ historical references, not files distributed with the repo.
20
20
  > **On version numbers.** [`harness.config.json`](harness.config.json)'s `version` is a
21
21
  > human-readable label only. The canonical identity of an installed harness is the
22
22
  > **source fingerprint** stamped in `.geneseed-version` (see `geneseed version`), not the
23
- > string. Current label: **3.18.0**.
23
+ > string. Current label: **3.19.0**.
24
24
 
25
25
  ## Capabilities
26
26
 
@@ -17,7 +17,7 @@ A **skill** is a repeatable workflow written as a markdown playbook: when it app
17
17
 
18
18
  - **By name.** Ask for it — "brainstorm this", "run a council on it" — or, on hosts with slash commands, type `/<name>`.
19
19
  - **By trigger.** Every skill has a one-line description of its purpose and when it applies. The host shows those descriptions to the agent every turn, and the agent opens the matching skill when your request fits.
20
- - **User-only skills.** A few skills are marked to open only when *you* call them (a teaching drill, a tool tied to a setup the agent cannot see). They answer `/<name>` but the agent never starts them on its own, and their description stays out of the always-loaded list.
20
+ - **User-only skills.** A few skills are marked to open only when *you* call them (a teaching drill, a tool tied to a setup the agent cannot see, a guide for one stack or one personal vault). They answer `/<name>` but the agent never starts them on its own, and their description stays out of the always-loaded list.
21
21
 
22
22
  ### A tour
23
23
 
@@ -29,7 +29,7 @@ A **skill** is a repeatable workflow written as a markdown playbook: when it app
29
29
  | find a bug by evidence: reproduce, isolate, root-cause, verify | `debug` |
30
30
  | answer a question from the open web, every claim cross-checked | `research` |
31
31
  | have several viewpoints debate a decision | `council` |
32
- | get an adversarial critique of anything | `roast-me` |
32
+ | get an adversarial critique of your own ask, plan or idea | `roast-me` |
33
33
  | see what a change does before you agree to commit it | `explain-changes` |
34
34
  | stage the right paths and write a focused commit | `commit` |
35
35
  | open a pull request, or finish and merge a branch | `ship` |
@@ -65,6 +65,26 @@ A monorepo with docs scattered across packages might write:
65
65
 
66
66
  Keep the eager list to the few files a new teammate would read first. Three sharp docs beat ten broad ones. Use `"load": "lazy"` for anything a session should only read on demand.
67
67
 
68
+ ## Review rules: `REVIEW.md`
69
+
70
+ `AGENTS.md` (or `CLAUDE.md`) holds the rules for *doing* the work, and the agent loads it every session. `REVIEW.md` holds the rules for *judging* the work: what counts as serious, what to skip, how many nits are worth reporting, and checks that hold only in this codebase. It is read only when code is reviewed, so the agent writing the code never pays for it.
71
+
72
+ - **Nearest wins.** For each changed file, the reviewer applies the nearest `REVIEW.md` above it, up to the repo root. A `REVIEW.md` in `api/` overrides the root one for files under `api/`.
73
+ - **Precedence.** A folder's `REVIEW.md`, then the root `REVIEW.md`, then `CODING_STANDARDS.md` / `CONTRIBUTING.md`, then Geneseed's review defaults, output format included. A `REVIEW.md` never lifts a law: it cannot let the reviewer edit code or skip running the checks.
74
+ - **Who reads it.** The `geneseed-code-review` skill and the `reviewer` agent, which also serves the loop `review` brick and the pipeline reviewer seat. The `ship` skill runs that review before it opens a pull request.
75
+ - **Who writes it.** Nobody by default. Ask for a review rule, or let a finding recur, and the `review-response` skill offers the exact lines for the nearest `REVIEW.md`, creating it if it is missing, and writes them only when you agree.
76
+
77
+ A host's own review command does not read `REVIEW.md` by itself. The always-loaded root file carries one sentence that tells it to:
78
+
79
+ | Host | Built-in review command | Reads `REVIEW.md` natively | How it gets applied |
80
+ |---|---|---|---|
81
+ | Claude Code | `/code-review`, `/review` | No (only the managed GitHub Code Review does, root file only) | The sentence in `CLAUDE.md`, which the built-in review follows; or run `/geneseed-code-review` |
82
+ | OpenClaude | Undocumented | No | The sentence in `.openclaude/CLAUDE.md`; or run `/geneseed-code-review` |
83
+ | Bob | `/review`, Review panel | No | The sentence in `AGENTS.md` / `.bob/rules/geneseed.md`, which Bob injects in every mode |
84
+ | OpenCode | None | No | `/code-review` runs `geneseed-code-review`, which reads it |
85
+
86
+ For OpenClaude and Bob, that the built-in review honours the sentence follows from how each host loads its rules files; it has not been checked live yet. Keep `REVIEW.md` short, because every rule in it competes for the reviewer's attention.
87
+
68
88
  <!--harness:opencode-->
69
89
  *(OpenCode only)*
70
90
 
@@ -2,5 +2,5 @@
2
2
  "_comment": "version is a human-readable release label only; the canonical identity of an installed harness is the source fingerprint stamped in .geneseed-version (see `harness version`), not this string.",
3
3
  "theme": "neutral",
4
4
  "product": "Geneseed",
5
- "version": "3.18.0"
5
+ "version": "3.19.0"
6
6
  }
@@ -116,7 +116,7 @@ const TMPL_SPEC_RE = /\{\{DIR_(AGENTS|SKILLS)\}\}\/([A-Za-z0-9_-]+)\.md/g;
116
116
  * badges, against `src/`.
117
117
  *
118
118
  * The tables must list EXACTLY the spec files (no dead row, no orphaned spec) and each
119
- * `agents`/`skills`/`laws`/`themes` badge must equal the real count. This is the
119
+ * `agents`/`skills`/`laws`/`doctrines`/`themes` badge must equal the real count. This is the
120
120
  * authoring-time guarantee that lets tables, badges and prose stay hand-written without
121
121
  * silently drifting from the source tree.
122
122
  */
@@ -151,7 +151,8 @@ export function countTableProblems() {
151
151
 
152
152
  // The numerals the laws RENDER with — positional, off the canon — because LAW_CLASS and the
153
153
  // console's LAW_META are keyed the way the rendered catalogue numbers them.
154
- const lawRules = ruleCanon(SRC).rules.filter((r) => r.kind === 'LAW');
154
+ const canonRules = ruleCanon(SRC).rules;
155
+ const lawRules = canonRules.filter((r) => r.kind === 'LAW');
155
156
  const lawNums = lawRules.map((r) => r.label);
156
157
  for (const num of lawNums) {
157
158
  if (!has(LAW_CLASS, num)) {
@@ -179,6 +180,9 @@ export function countTableProblems() {
179
180
  agents: srcStems('agents').size,
180
181
  skills: shippedSkills.size,
181
182
  laws: lawNums.length,
183
+ // Every doctrine rule in every pack, opt-in ones included: the laws badge alone told a
184
+ // reader the harness has 9 rules. It rides the laws badge (`laws-9 + 28 doctrines`).
185
+ doctrines: canonRules.filter((r) => r.kind === 'DOCTRINE').length,
182
186
  themes: themeFiles().length,
183
187
  plugins: existsSync(PLUGIN_SRC)
184
188
  ? readdirSync(PLUGIN_SRC).filter((f) => f.startsWith('geneseed-') && f.endsWith('.js')).length
@@ -190,7 +194,8 @@ export function countTableProblems() {
190
194
  // same reason: `if (m && …)` is green when there is no badge, so deleting a badge silences its
191
195
  // own gate.
192
196
  for (const [key, n] of Object.entries(counts)) {
193
- const m = new RegExp(`badge/${key}-(\\d+)`).exec(readme);
197
+ const m = (key === 'doctrines' ? /badge\/laws-\d+%20%2B%20(\d+)%20doctrines/
198
+ : new RegExp(`badge/${key}-(\\d+)`)).exec(readme);
194
199
  if (!m) {
195
200
  problems.push(`[authoring] README has no ${key} badge — deleting one is how this gate `
196
201
  + 'goes green while the reader is told nothing');
@@ -450,10 +450,11 @@ export function moduleMapProblems() {
450
450
  * and ADRs, the audit and commitlint jobs, Dependabot, coverage, property tests, fuzzing): 26 of 31,
451
451
  * 81.2/100, matching upstream's Python tool check for check. Then the weekly Stryker run and the
452
452
  * offline link check added mutation_testing and stale_doc_detection: 28 of 31, 88.7 (A); the checkJs
453
- * pass added type_safety (partial: `strict` is off): 29 of 31, 90.4. Grouped by pillar, in upstream
454
- * order.
455
- * The ratchet is on `passed`, which upstream sets for any score above zero: `test_suite_exists`
456
- * and `error_handling_policy` pass at 1.5 of 3, and a full check sliding to a partial one is
453
+ * pass added type_safety (partial: `strict` is off): 29 of 31, 90.4; calling the web job's prettier and vitest
454
+ * directly (the scorecard reads only the root package.json's scripts) added formatter_enforcement
455
+ * and lifted test_suite_exists to 3 of 3: 30 of 31, 95.3. Grouped by pillar, in upstream order.
456
+ * The ratchet is on `passed`, which upstream sets for any score above zero: `type_safety`
457
+ * passes at 1.5 of 3, and a full check sliding to a partial one is
457
458
  * invisible here. A check this repo starts to pass is added by hand; one it stops passing is a
458
459
  * doctor problem until fixed or deliberately removed from this list, in the same commit.
459
460
  */
@@ -464,6 +465,7 @@ export const SCORECARD_FLOOR = [
464
465
  'module_boundary_docs',
465
466
  'ci_pipeline_exists',
466
467
  'linter_enforcement',
468
+ 'formatter_enforcement',
467
469
  'type_safety',
468
470
  'dependency_auditing',
469
471
  'conventional_commits',
@@ -72,8 +72,8 @@ ${rows.join('\n')}
72
72
  `;
73
73
  }
74
74
 
75
- /** The light-theme band colours, reused by the badge (shields.io takes a bare hex). */
76
- const BADGE_COLOUR = { a: '1a7f37', b: '0969da', c: '9a6700', d: 'bc4c00', f: 'cf222e' };
75
+ /** shields.io's named colours, one per band — the upstream tool's badge style (grey label, bright value). */
76
+ const BADGE_COLOUR = { a: 'brightgreen', b: 'green', c: 'yellow', d: 'orange', f: 'red' };
77
77
 
78
78
  /**
79
79
  * The README badge for an assessment — grade and score, coloured by band. `--svg` prints it next to
@@ -81,5 +81,5 @@ const BADGE_COLOUR = { a: '1a7f37', b: '0969da', c: '9a6700', d: 'bc4c00', f: 'c
81
81
  * reader sees first cannot lag the card below it.
82
82
  */
83
83
  export function badgeUrl(a) {
84
- return `https://img.shields.io/badge/AI%20harness%20scorecard-${a.grade}%20%C2%B7%20${round1(a.overallScore)}-${BADGE_COLOUR[band(a.overallScore)]}`;
84
+ return `https://img.shields.io/badge/AI%20Harness%20Scorecard-${a.grade}%20${round1(a.overallScore)}%2F100-${BADGE_COLOUR[band(a.overallScore)]}`;
85
85
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "//": "Every field here is argued and gated in tests/unit/package_manifest.test.mjs. `files`, `bin` and `engines` each have a test that fails when reality drifts from this file; `version` mirrors harness.config.json and is gated too. Read that docblock before editing this one.",
3
3
  "name": "geneseed",
4
- "version": "3.18.0",
4
+ "version": "3.19.0",
5
5
  "description": "A portable, theme-able harness you implant once and use everywhere to grow a disciplined AI coding agent.",
6
6
  "keywords": [
7
7
  "ai",
package/src/AGENT.md.tmpl CHANGED
@@ -255,7 +255,7 @@ the ten council seats are convened by the [council {{SKILL}}]({{DIR_SKILLS}}/cou
255
255
  | [prose]({{DIR_SKILLS}}/prose.md) | writing prose for a human — a commit body, PR, doc, comment, memory note, or reply — that should not read like a model wrote it |
256
256
  | [frontend-design]({{DIR_SKILLS}}/frontend-design.md) | building or reshaping a UI that should carry a deliberate point of view, not a templated default |
257
257
  | [handoff]({{DIR_SKILLS}}/handoff.md) | context filling, or passing work to another agent or session |
258
- | [roast-me]({{DIR_SKILLS}}/roast-me.md) | you want an artifact torn apart, brutally and actionably |
258
+ | [roast-me]({{DIR_SKILLS}}/roast-me.md) | you want your own ask, plan or idea torn apart, brutally and actionably (code goes to code review) |
259
259
  | [council]({{DIR_SKILLS}}/council.md) | a decision, change, or discussion needs debating from several points of view before committing |
260
260
  | [workflow]({{DIR_SKILLS}}/workflow.md) | deterministic, code-driven orchestration of subagents (fan-out, find→verify, phased handoff) and the host exposes a workflow tool |
261
261
  | [pipeline]({{DIR_SKILLS}}/pipeline.md) | foreman mode triages a substantial task, or the user asks to run a crew (analyst → developer → tester) on one, isolated in its own worktree and merged on mechanical proof |
@@ -464,6 +464,9 @@ start**, above); where it did not, act on each entry by its `load` mode yourself
464
464
 
465
465
  Each `path` may be absolute or relative to the repository root. The file's own
466
466
  comment carries its schema and setup notes.
467
+
468
+ **Reviewing code** — with any review command, built-in or not — first apply the nearest
469
+ `REVIEW.md` above each changed file. It overrides the review defaults, never a {{LAW}}.
467
470
  <!-- LEAN:else -->
468
471
  **Load `context.json` before your first reply — not deferrable.** The repo's own
469
472
  (`context.json` or `.harness/context.json` at its root), else `{{AT_HARNESS}}context.json`,
@@ -471,7 +474,8 @@ is how the project hands you its own knowledge; the hook injects its `eager` ent
471
474
  (**Session start**). `"eager"` entries are read now and are
472
475
  **project law for this repo, as binding as this file**; `"lazy"` entries only when
473
476
  the task needs them ({{DOCTRINE:context-economy}}). Schema and setup notes are in the file's
474
- own comment.
477
+ own comment. Reviewing code (any review command): first apply the nearest `REVIEW.md`
478
+ above each changed file — it overrides review defaults, never a {{LAW}}.
475
479
  <!-- LEAN:end -->
476
480
 
477
481
  ---
@@ -21,6 +21,9 @@
21
21
  ## Procedure
22
22
  0. If `{{DIR_MEMORY}}/agents/<your-name>.md` exists, read it first — your durable lessons from prior dispatches ({{DOCTRINE:persist-insight}}).
23
23
  1. Confirm the change actually does what the task required (read the spec/issue).
24
+ Then read, for each changed file, the nearest `REVIEW.md` above it — a deeper one
25
+ overrides a shallower one, and they override this procedure and the output contract,
26
+ never a {{LAW}}.
24
27
  2. Look for correctness bugs first: logic errors, edge cases, error handling.
25
28
  3. Then quality: duplication, unclear naming, dead code, oversized units.
26
29
  4. Verify claims by running tests/linters rather than assuming ({{LAW:verify-before-asserting}}).
@@ -51,3 +51,22 @@ stay inline (`A -> B -> C`). ASCII in a terminal, Mermaid where markdown renders
51
51
  rendered page in one line, never unasked. Codes stay ({{DOCTRINE:codes-that-persist}}): a diagram
52
52
  may tag an item, never absorb or renumber it.
53
53
  <!-- LEAN:end -->
54
+
55
+ ### {{DOCTRINE:declare-the-judgment-calls}} Declare the Judgment Calls
56
+ <!-- LEAN:begin -->
57
+ After any non-trivial piece of work, declare the judgment calls you made alone: each point
58
+ where a reasonable alternative existed and neither the request nor a rule decided it — the
59
+ choice, the alternative set aside, and whether it is cheaply reversible, ordered by risk:
60
+ data, security, production and public interfaces first. Only genuine forks count, never a
61
+ naming or formatting choice; trivial work owes an empty list. A reviewer reads first
62
+ where the agent guessed; handed nothing, they read everything. Where {{LAW:echo-the-intent}}
63
+ checks the goal before the work and {{LAW:verify-before-asserting}} the claims, this exposes
64
+ the choices made during it — never a call {{LAW:echo-the-intent}} says to ask first.
65
+ <!-- LEAN:else -->
66
+ After non-trivial work, declare the judgment calls you made alone — forks where a
67
+ reasonable alternative existed and neither the request nor a rule decided: the choice, the
68
+ alternative set aside, whether cheaply reversible; data, security, production and public
69
+ interfaces first. Genuine forks only, never naming or formatting; trivial work owes none.
70
+ Where {{LAW:echo-the-intent}} checks the goal before, this exposes the choices made during —
71
+ never a call it says to ask about.
72
+ <!-- LEAN:end -->
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: daydream
3
3
  description: "Mine an Obsidian vault for non-obvious connections between notes: samples recency-weighted note pairs, synthesizes links with parallel subagents, keeps only critic-approved insights and writes a daily digest. Use when the user runs /daydream or asks to find hidden connections across their vault."
4
+ disable-model-invocation: true
4
5
  ---
5
6
 
6
7
  # Vault Daydream Skill
@@ -33,3 +33,7 @@ does not tell the model where a skill lives.
33
33
  To update, re-copy the upstream folder, re-apply the geneseed-wiki.jsonc adaptation, the
34
34
  frontmatter and the placeholder paths in `SKILL.md` / `instructions.md`, and
35
35
  bump the commit above.
36
+
37
+ `SKILL.md`'s frontmatter also carries `disable-model-invocation: true`, which upstream lacks: the
38
+ skill is user-only (`/daydream`), so its description stays out of the model's always-on catalogue —
39
+ it is personal to one vault. Re-apply it on update.
@@ -56,7 +56,7 @@ You write the **brief** — the narrative only. `scripts/render_changes.mjs` run
56
56
 
57
57
  - `request` is the user's words, verbatim — not your summary of them.
58
58
  - **Units follow execution order** (entry point → core → effects → tests), not file order. One unit = one intent. `hunks` picks hunks by index; omit it to show every hunk of each file in `files`.
59
- - **`risks` is the section the reader acts on.** Cover, whenever they exist: assumptions you did not verify; what is untested; files touched outside the request (also mark that unit `"out_of_scope": true`); user-visible behaviour changes (API, config, schema, migrations). You are describing your own work — err toward listing. `level` is `high`, `medium` or `low`. An empty list needs `"risks_none_reason"`.
59
+ - **`risks` is the section the reader acts on.** Cover, whenever they exist: assumptions you did not verify; judgment calls you made alone ({{DOCTRINE:declare-the-judgment-calls}}); what is untested; files touched outside the request (also mark that unit `"out_of_scope": true`); user-visible behaviour changes (API, config, schema, migrations). You are describing your own work — err toward listing. `level` is `high`, `medium` or `low`. An empty list needs `"risks_none_reason"`.
60
60
  - **`svg` only when the change alters a flow between components** — a call sequence, a data model, a state machine. A change local to one file gets none. Hand-written inline SVG, one `<svg>` element and nothing after it; no scripts, event handlers, `foreignObject`, `<style>` (use attributes), animated links, external links or `url()` to anything but a `#fragment` — the script drops unsafe diagrams. Use `currentColor`, `var(--muted)`, `var(--add-ink)`, `var(--del-ink)`, `var(--line)` and `var(--code-bg)` so it follows the page theme.
61
61
  - `lang` is `en` or `fr`, matching the user's language; write every text field in that language.
62
62
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  > {{DESC_FRESH_EYES}}
4
4
 
5
- **Trigger:** work is claimed done and needs a blind check against the original ask. That is before merge or handoff, while the solving session believes the artifact works, or when the user asks to "validate", "fresh eyes", "prove it meets the spec", "did this actually solve it", or "independent sign-off" — and the cost of a confidently-wrong "done" is high. This re-judges the *result* from zero context — distinct from [geneseed-code-review](geneseed-code-review.md), which reviews a *diff* with full knowledge of the change. For an open-ended quality critique use [roast-me](roast-me.md); for a multi-stance debate over an undecided question use [council](council.md).
5
+ **Trigger:** work is claimed done and needs a blind check against the original ask. That is before merge or handoff, while the solving session believes the artifact works, or when the user asks to "validate", "fresh eyes", "prove it meets the spec", "did this actually solve it", or "independent sign-off" — and the cost of a confidently-wrong "done" is high. This re-judges the *result* from zero context — distinct from [geneseed-code-review](geneseed-code-review.md), which reviews a *diff* with full knowledge of the change. To attack the user's own ask or plan use [roast-me](roast-me.md); for a multi-stance debate over an undecided question use [council](council.md).
6
6
 
7
7
  ## Procedure
8
8
  1. Capture the firewall input as TWO things and nothing else: (a) the **verbatim original task/spec** — the raw issue or request text, NOT a solver-written summary or "spec card" (a distilled card launders the solving session's framing into the rubric, the very bias this {{SKILL}} exists to defeat), and (b) a pointer to the **final artifact** as it stands — file paths, built output, or the command to run it. If the raw task is too thin to yield acceptance criteria, have the **user** (never the solver) confirm a one-line acceptance bar, then proceed ({{LAW:echo-the-intent}}); if it is too fuzzy even for that, this is a judgement call — convene [council](council.md) instead.
@@ -2,7 +2,7 @@
2
2
 
3
3
  > {{DESC_CODE_REVIEW}}
4
4
 
5
- **Trigger:** reviewing changes before merge, or the user asks for a review.
5
+ **Trigger:** reviewing changes before merge, or the user asks for a review — including "roast my code": same passes, findings unsoftened. Critiquing the user's own ask or plan is [roast-me](roast-me.md).
6
6
 
7
7
  ## Procedure
8
8
  1. Pin the diff: `git diff <base>...HEAD` for committed work, `git diff <base>`
@@ -10,16 +10,23 @@
10
10
  diff is non-empty.
11
11
  2. Find the spec: issue refs in the commits, a path the user gave, a match under
12
12
  `docs/`, `specs/` or `.scratch/`. None → ask once; still none → skip pass 3 and say so.
13
- 3. For a large change, consider dispatching the
13
+ 3. Load the review rules: for each changed file, the nearest `REVIEW.md` above it, up to the
14
+ repo root — a deeper one overrides a shallower one. They override everything below,
15
+ output format included, but never a {{LAW}}.
16
+ 4. For a large change, consider dispatching the
14
17
  [reviewer {{AGENT}}](../{{DIR_AGENTS}}/reviewer.md) to keep the main context clean.
15
- 4. Pass 1 — correctness: logic errors, edge cases, error handling, race
18
+ 5. Pass 1 — correctness: logic errors, edge cases, error handling, race
16
19
  conditions. Verify suspect behaviour by running tests, not by assuming.
17
- 5. Pass 2 — quality: the repo's documented standards (`CODING_STANDARDS.md`,
20
+ 6. Pass 2 — quality: after `REVIEW.md`, the repo's documented standards (`CODING_STANDARDS.md`,
18
21
  `CONTRIBUTING.md`) override. Then, as judgement calls and skipping what tooling enforces:
19
22
  mysterious name, duplication, feature envy, data clumps, primitive obsession, repeated switches, shotgun surgery, divergent change, speculative generality, middle man, dead code, units that do too much.
20
- 6. Pass 3 — spec fidelity: flag anything asked for but missing, present but never
21
- asked for, or implemented wrong — quoting the spec line for each.
22
- 7. Write each finding as a Conventional Comment, `label (decoration): file:line — problem — fix`,
23
+ 7. Pass 3 — spec fidelity: flag anything asked for but missing, present but never
24
+ asked for, or implemented wrong — quoting the spec line for each. Architecture drift too: when
25
+ `docs/architecture.md` draws C4 and the diff adds, removes or rewires a container — a Dockerfile,
26
+ a compose service, a deployable module, a datastore, a new client of another container — but
27
+ leaves the diagram alone, raise `issue (non-blocking)` and point at
28
+ [document-project](document-project.md) to redraw L2.
29
+ 8. Write each finding as a Conventional Comment, `label (decoration): file:line — problem — fix`,
23
30
  correctness first. Labels: issue, suggestion, question, todo, nitpick, thought, note,
24
31
  praise. Decorations: blocking, non-blocking, if-minor. The line pastes straight into a
25
32
  merge-request comment, and a reader can filter on the label without reading the prose.
@@ -2,7 +2,7 @@
2
2
 
3
3
  > {{DESC_PARALLEL_AGENTS}}
4
4
 
5
- **Trigger:** two or more independent subtasks with no shared state or ordering between them — and a tool that can run subagents.
5
+ **Trigger:** two or more independent subtasks with no shared state or ordering between them — and a tool that can run subagents. The units run side by side and never see each other's work; when one agent must build on what the previous one produced, that is a relay — use [pipeline](pipeline.md).
6
6
 
7
7
  ## Procedure
8
8
  1. Confirm independence: the subtasks must not depend on each other's output or write the same files ({{DOCTRINE:one-writer-per-file}}). Write down each unit's **write set** — the files or globs it may change — and intersect them; an overlap runs in sequence or goes to one owner, and shared append files (registries, index tables, lockfiles, generated bundles) stay with you. If they're sequential or share state, use [plan](plan.md) instead.
@@ -2,7 +2,7 @@
2
2
 
3
3
  > {{DESC_PIPELINE}}
4
4
 
5
- **Trigger:** [foreman mode](../modes/foreman.md) routes a triaged *substantial* task here; also directly invocable without that mode whenever the user asks to "run a pipeline" for a development, documentation, research, or review task.
5
+ **Trigger:** [foreman mode](../modes/foreman.md) routes a triaged *substantial* task here; also directly invocable without that mode whenever the user asks to "run a pipeline" for a development, documentation, research, or review task. The crew is a relay, not a fan-out: its agents take turns in one worktree, each handed what the previous one produced — for independent subtasks run side by side, use [parallel-agents](parallel-agents.md).
6
6
 
7
7
  ## What it is
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  > {{DESC_PONYTAIL}}
4
4
 
5
- **Trigger:** the user says "ponytail", "be lazy", "lazy mode", "yagni" or "do less", or complains about over-engineering, bloat, or needless dependencies. Also "simplest/minimal solution", "shortest path", or a complaint about boilerplate. Sets a build *mode* that persists across the session, not a one-shot edit — off by default until invoked. Off again on "stop ponytail" / "normal mode". For restructuring code that already exists use [refactor](refactor.md); to critique an artifact use [roast-me](roast-me.md).
5
+ **Trigger:** the user says "ponytail", "be lazy", "lazy mode", "yagni" or "do less", or complains about over-engineering, bloat, or needless dependencies. Also "simplest/minimal solution", "shortest path", or a complaint about boilerplate. Sets a build *mode* that persists across the session, not a one-shot edit — off by default until invoked. Off again on "stop ponytail" / "normal mode". For restructuring code that already exists use [refactor](refactor.md); to review code for correctness use [geneseed-code-review](geneseed-code-review.md).
6
6
 
7
7
  ## Procedure
8
8
  1. Set the intensity. Ponytail is **off by default**; invoking it turns it on at **full** unless a level is named. **lite** — build what's asked, name the lazier alternative in one line, user picks. **full** — the ladder enforced, shortest diff, shortest explanation. **ultra** — YAGNI extremist, ship the one-liner and challenge the rest of the requirement in the same breath. Switch any time with `/ponytail lite|full|ultra|off` (on OpenCode this command persists the level for the geneseed-ponytail plugin; `off` stops it).
@@ -5,6 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  author: vercel
7
7
  version: "1.0.0"
8
+ disable-model-invocation: true
8
9
  ---
9
10
 
10
11
  # React View Transitions
@@ -30,3 +30,7 @@ only one left in any install's catalogue.
30
30
  **Deliberately not copied:** upstream's `README.md` (the repo-facing readme: install
31
31
  command and folder tree, nothing an agent reads). `AGENTS.md`, upstream's compiled
32
32
  all-in-one copy, IS kept — `SKILL.md`'s closing section points the agent at it.
33
+
34
+ `SKILL.md`'s frontmatter also carries `disable-model-invocation: true`, which upstream lacks: the
35
+ skill is user-only (`/react-view-transitions`), so its description stays out of the model's always-on catalogue —
36
+ it is the largest skill and serves one stack. Re-apply it on update.
@@ -3,7 +3,8 @@
3
3
  > {{DESC_REVIEW_RESPONSE}}
4
4
 
5
5
  **Trigger:** review feedback has arrived — from a human or another agent — and is about
6
- to be acted on.
6
+ to be acted on; or the user wants a review criterion recorded ("add a review rule…",
7
+ "reviews should always check…").
7
8
 
8
9
  ## Procedure
9
10
  1. Read every comment in full before changing anything. Group related comments.
@@ -17,9 +18,14 @@ to be acted on.
17
18
  [commit {{SKILL}}](commit.md) so {{DOCTRINE:consent-before-push}}'s per-commit consent holds — then
18
19
  re-run the checks ({{LAW:verify-before-asserting}}).
19
20
  6. Surface anything the review missed that you noticed while addressing it.
21
+ 7. Upgrade the review itself. A finding that recurs, a criterion the user asks for, or a
22
+ defect a review should have caught becomes a rule in the nearest `REVIEW.md` above the
23
+ files it governs — create it if missing. Show the exact lines and write them only on
24
+ the user's word. Rules for *criticising* go here, not into the root file the coder
25
+ loads every session.
20
26
 
21
27
  ## Done when
22
28
  - Every comment has a reasoned response and either an applied change or a justified
23
- decline, and the resulting changes are verified.
29
+ decline, the resulting changes are verified, and any agreed review rule is in `REVIEW.md`.
24
30
 
25
31
  <!-- INCLUDE: skills/_self-improvement.md -->
@@ -2,16 +2,17 @@
2
2
 
3
3
  > {{DESC_ROAST_ME}}
4
4
 
5
- **Trigger:** the user asks to "roast", "tear apart", "find the fatal flaws", or "be brutally honest" about an artifact — code, design, plan, pitch, or writing. This is the *open-ended quality critique*: for reviewing a diff use [geneseed-code-review](geneseed-code-review.md); for a zero-context does-it-meet-the-spec verdict use [fresh-eyes](fresh-eyes.md).
5
+ **Trigger:** the user wants their own request, plan, idea or writing torn apart, brutally and honestly. Phrases: "roast", "tear apart", "find the fatal flaws", "be brutally honest", "is this the right thing to ask for". This attacks the *user's* side of the work, not what the agent produced: code and diffs, even when the user says "roast my code", go to [geneseed-code-review](geneseed-code-review.md); a zero-context does-it-meet-the-ask verdict is [fresh-eyes](fresh-eyes.md); shaping a raw idea into a design is [brainstorm](brainstorm.md).
6
6
 
7
7
  ## Procedure
8
- 1. Identify the artifact and the critique axis that matters (correctness, architecture, viability, clarity, security…); if unclear, ask once, then proceed.
9
- 2. Steelman it: state the strongest case FOR the artifact in a sentence, so the attack hits the real thing, not a strawman.
10
- 3. In the voice of {{ROAST_PERSONA}}, write each flaw as one line — `location/claim — what's wrong — what to do instead`. No praise, no hedging, no filler; drop any finding you can't pair with a fix.
11
- 4. Rank findings by severity: fatal → significant → minor.
12
- 5. Close with the single change that would help most.
8
+ 1. Identify the artifact and the critique axis that matters (viability, clarity, scope, cost, risk…); if unclear, ask once, then proceed.
9
+ 2. Attack the premise first: what problem the ask assumes, whether that problem is the real one, and what it would cost to be wrong about it. A sound answer to the wrong question is the fatal flaw.
10
+ 3. Steelman it: state the strongest case FOR the artifact in a sentence, so the attack hits the real thing, not a strawman.
11
+ 4. In the voice of {{ROAST_PERSONA}}, write each flaw as one line — `location/claim — what's wrong — what to do instead`. No praise, no hedging, no filler; drop any finding you can't pair with a fix.
12
+ 5. Rank findings by severity: fatal → significant → minor.
13
+ 6. Close with the single change that would help most.
13
14
 
14
15
  ## Done when
15
- - Findings are severity-ranked, every one carries a fix, and the highest-impact change is named.
16
+ - The premise was challenged, findings are severity-ranked, every one carries a fix, and the highest-impact change is named.
16
17
 
17
18
  <!-- INCLUDE: skills/_self-improvement.md -->
@@ -43,7 +43,9 @@ re-derived. Then take exactly one branch.
43
43
  the existing rule rather than minting a twin). A *mechanical* rule — a banned
44
44
  API, an import shape, a file location — belongs in a lint, hook or CI check the
45
45
  team shares, not in prose: propose that instead, and report a repo with no such
46
- guardrail as a finding. A failed triage goes back to the
46
+ guardrail as a finding. A criterion that only matters when *judging* work goes to
47
+ `REVIEW.md` through the [review-response {{SKILL}}](review-response.md), not here.
48
+ A failed triage goes back to the
47
49
  fork, named and explained; a lean rule set is the feature, not a failure.
48
50
  2. **Reformulation.** Have the user state the rule as they would to a colleague on
49
51
  their first day. Interrupt the moment they (a) use a term they cannot themselves
@@ -11,31 +11,35 @@ request or merge the branch.
11
11
  `context.json`); if it is undefined, ask rather than assume. Run those checks and
12
12
  read the actual output ({{LAW:verify-before-asserting}}); state what you ran and its result.
13
13
  Never ship on an unproven claim.
14
- 2. Confirm the branch carries only this change's commits and is rebased/updated on
14
+ 2. Review the change before anyone else sees it: run the
15
+ [geneseed-code-review {{SKILL}}](geneseed-code-review.md) on the branch diff (dispatch the
16
+ [reviewer {{AGENT}}](../{{DIR_AGENTS}}/reviewer.md) for a large one). Any `blocking`
17
+ finding stops the ship until it is fixed.
18
+ 3. Confirm the branch carries only this change's commits and is rebased/updated on
15
19
  the base branch; resolve any divergence before opening.
16
- 3. Push the branch only with the user's explicit, per-push acceptance — on every
20
+ 4. Push the branch only with the user's explicit, per-push acceptance — on every
17
21
  branch, feature branches included ({{DOCTRINE:consent-before-push}}); present the change summary + commit
18
22
  message and wait, and never treat an earlier approval as consent for this push.
19
23
  Opening a PR or merging is **outward-facing** — get explicit confirmation first too,
20
24
  unless already authorized ({{LAW:deletion-is-deliberate}}).
21
- 4. Open the PR with a three-part body. **Summary**: what changed and why, with the
25
+ 5. Open the PR with a three-part body. **Summary**: what changed and why, with the
22
26
  smallest visual that makes the point (a call tree, diff sketch, file tree or
23
27
  Mermaid diagram). **Evidence**: how it was tested, as before/after — the test that
24
28
  failed and now passes, the output, a screenshot for a visual change. **Merge
25
29
  danger**: one-way or two-way door, the blast radius, and any follow-up. Link the
26
30
  issue it closes; keep the title an imperative one-line summary.
27
- 5. If the project merges locally instead, merge into the base branch only after
31
+ 6. If the project merges locally instead, merge into the base branch only after
28
32
  review/approval, then delete the merged branch.
29
33
  If shipping triggers a production deploy, confirm a tested rollback or
30
34
  fix-forward path and a retained previous artifact *before* deploying — there must
31
35
  be a way back ({{LAW:deletion-is-deliberate}}); dispatch the
32
36
  [operator {{AGENT}}](../{{DIR_AGENTS}}/operator.md) when the runtime surface is
33
37
  non-trivial.
34
- 6. Make sure documentation shipped with the code ({{DOCTRINE:documentation-in-step}}) — a change
38
+ 7. Make sure documentation shipped with the code ({{DOCTRINE:documentation-in-step}}) — a change
35
39
  that alters behaviour without its docs is incomplete, not ready to ship.
36
40
 
37
41
  ## Done when
38
- - The PR is open (or the branch is merged) with a Summary / Evidence / Merge danger
42
+ - The diff passed review with no `blocking` finding, and the PR is open (or the branch is merged) with a Summary / Evidence / Merge danger
39
43
  body, and nothing unrelated rides along.
40
44
 
41
45
  <!-- INCLUDE: skills/_self-improvement.md -->
@@ -42,7 +42,7 @@
42
42
  "DESC_CODEBASE_DESIGN": "<one-line description: design deep modules and the domain language around them — small interfaces at deliberate seams, a living GLOSSARY.md, an ADR per hard-to-reverse decision>",
43
43
  "DESC_WAYFINDER": "<one-line description: map an oversized effort as decision tickets and resolve them until the route is clear>",
44
44
  "DESC_PROTOTYPE": "<one-line description: throwaway code that answers a design question>",
45
- "DESC_ROAST_ME": "<one-line description: adversarially critique any artifact — brutal, specific, actionable>",
45
+ "DESC_ROAST_ME": "<one-line description: adversarially critique the user's own ask, plan or idea (not code) — brutal, specific, actionable>",
46
46
  "DESC_FRESH_EYES": "<one-line description: a context-free agent derives the acceptance bar blind, then rules the work>",
47
47
  "ROAST_PERSONA": "<the persona the roast-me skill adopts, in this theme's voice>",
48
48
  "DESC_COUNCIL": "<one-line description: convene distinct viewpoints to debate, then synthesise a verdict>",
@@ -112,6 +112,7 @@
112
112
  "DOC_ONE_WRITER_PER_FILE": "<themed title for the process rule One Writer Per File>",
113
113
  "DOC_CODES_THAT_PERSIST": "<themed title for the comms rule Codes That Persist>",
114
114
  "DOC_STRUCTURE_BESIDE_PROSE": "<themed title for the comms rule Structure Beside Prose>",
115
+ "DOC_DECLARE_THE_JUDGMENT_CALLS": "<themed title for the comms rule Declare the Judgment Calls>",
115
116
  "INTRO_DOC": "<themed intro: this file is the entry point an AI agent reads in this repo>",
116
117
  "INTRO_AGENTS": "<themed intro to the Agents section — delegate focused work to a specialist>",
117
118
  "INTRO_SKILLS": "<themed intro to the Skills section — run the written procedure before improvising>",
package/themes/biker.json CHANGED
@@ -42,7 +42,7 @@
42
42
  "DESC_CODEBASE_DESIGN": "Build deep modules and the crew's own language — big behaviour behind a small handlebar at a seam placed on purpose, a living GLOSSARY.md, an ADR for every call that's hard to undo.",
43
43
  "DESC_WAYFINDER": "Chart a run too big for one ride as a shared map of decision tickets, cleared one at a time until the road's open.",
44
44
  "DESC_PROTOTYPE": "Answer a design question with throwaway code — built to learn the road, never to keep.",
45
- "DESC_ROAST_ME": "Tear into any work — blunt, exact, always actionable.",
45
+ "DESC_ROAST_ME": "Tear into the user's own ask, plan or idea, not code — blunt, exact, always actionable.",
46
46
  "DESC_FRESH_EYES": "Bring in a fresh rider who's seen neither the route notes nor the miles — only the original orders and the finished bike — to set the bar blind, then call whether it meets the orders, free of the maker's bragging.",
47
47
  "ROAST_PERSONA": "a grizzled road captain who has watched this exact mistake put a bike in the ditch",
48
48
  "DESC_COUNCIL": "Call a crew of opposed voices to argue a call out, then hand down a verdict with the dissent kept in the roadbook.",
@@ -112,6 +112,7 @@
112
112
  "DOC_ONE_WRITER_PER_FILE": "One Wrench on Each Bolt · One Writer Per File",
113
113
  "DOC_CODES_THAT_PERSIST": "Tag Every Part on the Bench · Codes That Persist",
114
114
  "DOC_STRUCTURE_BESIDE_PROSE": "Draw the Route Only If It Turns · Structure Beside Prose",
115
+ "DOC_DECLARE_THE_JUDGMENT_CALLS": "Own Up to Every Back Road Taken · Declare the Judgment Calls",
115
116
  "INTRO_DOC": "This file is the route briefing a coding rider reads when it joins this repository.",
116
117
  "INTRO_AGENTS": "Send the right rider for focused work instead of riding the whole run yourself; each has one job and reports exactly what it did.",
117
118
  "INTRO_SKILLS": "A Skill is a move you've drilled for a recurring task. Run the matching move before you wing it.",