geneseed 3.6.0 → 3.8.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 (88) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/DESIGN.md +6 -6
  3. package/QUICKSTART.md +1 -1
  4. package/README.md +33 -31
  5. package/SETUP.md +36 -10
  6. package/SHIPPED.md +3 -3
  7. package/adapters/claude-code/skills/geneseed/SKILL.md +1 -1
  8. package/adapters/openclaude/README.md +64 -0
  9. package/adapters/opencode/plugins/geneseed-workflow.js +1 -1
  10. package/adapters/opencode/workflows/_runtime.js +1 -1
  11. package/docs/extending.md +18 -6
  12. package/docs/web/exclusions.md +1 -0
  13. package/docs/web/footprint.md +1 -1
  14. package/docs/web/harnesses.md +14 -14
  15. package/docs/web/install-quick.md +1 -1
  16. package/docs/web/rules.md +1 -1
  17. package/docs/web/themes-author.md +1 -1
  18. package/docs/web-ui.md +1 -1
  19. package/harness.config.json +1 -1
  20. package/js/README.md +3 -3
  21. package/js/build/driver.mjs +64 -14
  22. package/js/build/emit-claude.mjs +1 -1
  23. package/js/build/generate.mjs +92 -42
  24. package/js/build/source.mjs +5 -4
  25. package/js/cli-table.json +151 -2
  26. package/js/hosts/hooks.mjs +11 -4
  27. package/js/hosts/hosts.mjs +17 -2
  28. package/js/hosts/installs.mjs +32 -2
  29. package/js/hosts/mcp.mjs +8 -1
  30. package/js/hosts/settings.mjs +4 -1
  31. package/js/inspect/diff.mjs +1 -1
  32. package/js/inspect/doctor.mjs +3 -3
  33. package/js/inspect/excludes.mjs +7 -5
  34. package/js/inspect/status.mjs +44 -8
  35. package/js/maintain/migrate.mjs +1 -1
  36. package/js/maintain/setup.mjs +7 -2
  37. package/js/maintain/uninstall.mjs +3 -3
  38. package/js/web/actions.mjs +7 -5
  39. package/js/web/api.mjs +2 -2
  40. package/js/web/docs.mjs +1 -1
  41. package/package.json +2 -1
  42. package/src/doctrines/README.md +3 -2
  43. package/src/doctrines/comms.md +53 -0
  44. package/src/doctrines/process.md +0 -26
  45. package/src/skills/geneseed.md +9 -8
  46. package/src/skills/parallel-agents.md +1 -1
  47. package/src/skills/pipeline.md +1 -1
  48. package/src/skills/token-report/SKILL.md +2 -1
  49. package/src/skills/token-report/VENDOR.md +3 -3
  50. package/src/skills/token-report/scripts/token_report.mjs +14 -7
  51. package/src/skills/workflow.md +2 -2
  52. package/themes/_TEMPLATE.json +5 -3
  53. package/themes/biker.json +5 -3
  54. package/themes/commentator.json +5 -3
  55. package/themes/cyberpunk.json +5 -3
  56. package/themes/gamer.json +5 -3
  57. package/themes/imperial.json +5 -3
  58. package/themes/joker.json +5 -3
  59. package/themes/marvin.json +5 -3
  60. package/themes/mean.json +5 -3
  61. package/themes/military.json +5 -3
  62. package/themes/neutral.json +5 -3
  63. package/themes/pirate.json +5 -3
  64. package/themes/sports.json +5 -3
  65. package/themes/verstappen.json +5 -3
  66. package/themes/wizard.json +5 -3
  67. package/web/dist/assets/{Activity-Flgf4kHy.js → Activity-CH-7cPIM.js} +1 -1
  68. package/web/dist/assets/{ActivityDetail-DIpr85nh.js → ActivityDetail-DZvz0xS5.js} +1 -1
  69. package/web/dist/assets/{CatalogRow-CjyLjaLb.js → CatalogRow-DftXpZHY.js} +1 -1
  70. package/web/dist/assets/{Diff-Deisdha8.js → Diff-DvwdG0L9.js} +1 -1
  71. package/web/dist/assets/{Docs-DGUdY4l4.js → Docs-DrJNDPwI.js} +1 -1
  72. package/web/dist/assets/{Doctor-F74lJ69P.js → Doctor-OTmwmYZg.js} +1 -1
  73. package/web/dist/assets/{GreenhouseView-D072lBiD.js → GreenhouseView-XxrAdriX.js} +1 -1
  74. package/web/dist/assets/Harness-C_LYNk5c.js +1 -0
  75. package/web/dist/assets/{JournalView-DWFqZ0Iw.js → JournalView-BcuyeEaR.js} +1 -1
  76. package/web/dist/assets/{Laws-BN6g3HU7.js → Laws-CWHrTKY4.js} +1 -1
  77. package/web/dist/assets/{Library-CDOv4emM.js → Library-CA9IHghn.js} +1 -1
  78. package/web/dist/assets/{OperatorHudView-CwNIUVX8.js → OperatorHudView-BMRY1Tt4.js} +1 -1
  79. package/web/dist/assets/{Profile-CpP9BTne.js → Profile-wceET1JY.js} +1 -1
  80. package/web/dist/assets/{Rules-DFXsUCB7.js → Rules-BEXvY4Tx.js} +1 -1
  81. package/web/dist/assets/{Settings-BqZVUtJ5.js → Settings-DS2zF0Ez.js} +1 -1
  82. package/web/dist/assets/{Skills-Cu6kBgfF.js → Skills-DahlOJuI.js} +1 -1
  83. package/web/dist/assets/{drawable-BgfrEBer.js → drawable-BTHjTzF7.js} +1 -1
  84. package/web/dist/assets/{index-CAqrWhKl.js → index-AN5Emnrg.js} +2 -2
  85. package/web/dist/assets/{lawCats-BLgxl151.js → lawCats-Btjp3Hk_.js} +1 -1
  86. package/web/dist/index.html +1 -1
  87. package/web/src/pages/Laws.jsx +6 -2
  88. package/web/dist/assets/Harness-DNRP2Va7.js +0 -1
@@ -41,8 +41,8 @@ import { excludeAdd, excludeRemove } from '../inspect/excludes.mjs';
41
41
  import { setupBuildArgs } from '../build/generate.mjs';
42
42
  import { frontmatter, memoryDropIndex } from '../hosts/hooks.mjs';
43
43
  import {
44
- HOSTS, bobConfigDir, claudeConfigDir, copilotConfigDir, expanduser, opencodeConfigDir,
45
- resolvePath,
44
+ HOSTS, bobConfigDir, claudeConfigDir, copilotConfigDir, expanduser, openclaudeConfigDir,
45
+ opencodeConfigDir, resolvePath,
46
46
  } from '../hosts/hosts.mjs';
47
47
  import {
48
48
  EMIT_HOST_SCOPE, doctrinesForBuild, excludedRulesOfDir, footprintOfDir, installState,
@@ -644,7 +644,7 @@ export function apiMcpToggle(state, body) {
644
644
  return { ok: false, error: 'config holds comments — edit it by hand to keep them' };
645
645
  }
646
646
  let cfg;
647
- if (['claude', 'bob', 'copilot'].includes(host)) {
647
+ if (['claude', 'bob', 'copilot', 'openclaude'].includes(host)) {
648
648
  if (isFile(p)) {
649
649
  let parsed;
650
650
  try {
@@ -817,6 +817,7 @@ const EMIT_FOR = new Map([
817
817
  ['claude global', 'claude-global'], ['claude project', 'claude'],
818
818
  ['bob global', 'bob-global'], ['bob project', 'bob'],
819
819
  ['copilot global', 'copilot-global'], ['copilot project', 'copilot'],
820
+ ['openclaude global', 'openclaude-global'], ['openclaude project', 'openclaude'],
820
821
  ]);
821
822
 
822
823
  /**
@@ -951,7 +952,8 @@ export function apiDeployCmd(state, body) {
951
952
  return { error: `folder not writable: ${root}` };
952
953
  }
953
954
  const cfgdirs = new Set();
954
- for (const fn of [opencodeConfigDir, claudeConfigDir, bobConfigDir, copilotConfigDir]) {
955
+ for (const fn of [opencodeConfigDir, claudeConfigDir, bobConfigDir, copilotConfigDir,
956
+ openclaudeConfigDir]) {
955
957
  try {
956
958
  cfgdirs.add(resolvePath(fn()));
957
959
  } catch { /* not every host has a resolvable config dir; skip it */ }
@@ -976,7 +978,7 @@ export function apiDeployCmd(state, body) {
976
978
  // and `PreToolUse::Bash` went with them. `doctrinesForBuild` resolves unknown to ALL packs.
977
979
  const doctrines = bodyDoctrines(body) ?? doctrinesForBuild(root);
978
980
  const excludeRules = bodyExcludeRules(body) ?? excludedRulesOfDir(root);
979
- // project-scope emit name == host name (opencode / claude / bob / copilot)
981
+ // project-scope emit name == host name (opencode / claude / bob / copilot / openclaude)
980
982
  const argv = setupBuildArgs(theme || 'neutral', host, root, root, fp, pos, mode, doctrines,
981
983
  PACK_ORDER, excludeRules);
982
984
  return { cmd: [process.execPath, path.join(ROOT, 'bin', 'build-driver.mjs'), ...argv] };
package/js/web/api.mjs CHANGED
@@ -724,7 +724,7 @@ export const apiExcludes = () => excludesSnapshot();
724
724
  * nested-marker host cannot silently read the bare root.
725
725
  */
726
726
  export function viewCfg(host, scope, root) {
727
- if (scope === 'project' && ['claude', 'bob', 'copilot'].includes(host)) {
727
+ if (scope === 'project' && ['claude', 'bob', 'copilot', 'openclaude'].includes(host)) {
728
728
  return path.join(root, HOSTS.find((h) => h.host === host).projectMarker);
729
729
  }
730
730
  return root;
@@ -790,7 +790,7 @@ export function apiOverview(state) {
790
790
  // can re-emit exactly it. Mirrors `viewCfg`'s rule, spelled out separately here.
791
791
  let install = null;
792
792
  for (const [host, scope, root] of installTargets()) {
793
- const data = (scope === 'project' && ['claude', 'bob', 'copilot'].includes(host))
793
+ const data = (scope === 'project' && ['claude', 'bob', 'copilot', 'openclaude'].includes(host))
794
794
  ? path.join(root, HOSTS.find((h) => h.host === host).projectMarker) : root;
795
795
  try {
796
796
  if (samePath(data, state.target)) {
package/js/web/docs.mjs CHANGED
@@ -207,7 +207,7 @@ const HARNESS_HINT_RE = /<!--\s*harness:/;
207
207
  export function normHarness(value, state) {
208
208
  const v = (value || '').trim().toLowerCase();
209
209
  if (HARNESSES.includes(v)) return v;
210
- return String(state.emit || '').startsWith('claude') ? 'claude' : 'opencode';
210
+ return /^(claude|openclaude)/.test(String(state.emit || '')) ? 'claude' : 'opencode';
211
211
  }
212
212
 
213
213
  /**
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.6.0",
4
+ "version": "3.8.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",
@@ -9,6 +9,7 @@
9
9
  "claude-code",
10
10
  "opencode",
11
11
  "copilot",
12
+ "openclaude",
12
13
  "agents-md",
13
14
  "skills",
14
15
  "harness",
@@ -8,7 +8,7 @@ documentation repo and a production service do not need the same practices.
8
8
  The selected packs are inlined into `AGENT.md`'s Doctrines section at build time;
9
9
  every pack ships here as a catalogue so you can read the alternatives and switch.
10
10
  Change the active set by rebuilding with `--doctrines <list>` (or via the setup
11
- wizard); the choice is stored in `harness.config.json`. All four are active by
11
+ wizard); the choice is stored in `harness.config.json`. All five are active by
12
12
  default.
13
13
 
14
14
  A pack is **orthogonal to theme and posture**: the theme sets the *voice*, the
@@ -21,9 +21,10 @@ composes.
21
21
  | [rigor](rigor.md) | How work is proven — idempotence, honest tests, coverage, gates that can fail. |
22
22
  | [ops](ops.md) | How the machine is operated — tool discovery, non-blocking commands, source-layer edits, teardown. |
23
23
  | [process](process.md) | How a task is run — planning, context economy, docs-first, consent before push. |
24
+ | [comms](comms.md) | How answers are presented — stable reference codes, a diagram or a table only where it earns its place. |
24
25
 
25
26
  A rule in one pack may cite a rule in another. That is safe because the **full
26
- catalogue ships in every bundle** — all four pack files are installed whether or not
27
+ catalogue ships in every bundle** — all five pack files are installed whether or not
27
28
  their pack is built into `AGENT.md` — so a cross-pack reference is always readable
28
29
  even when the pack it names is not active.
29
30
 
@@ -0,0 +1,53 @@
1
+ **{{PACK_COMMS}}** — how answers are presented.
2
+
3
+ ### {{DOCTRINE}} comms 1 — {{DOC_COMMS_1}}
4
+ <!-- LEAN:begin -->
5
+ Give every tracked item a short reference code and keep it unchanged for the rest of
6
+ the session — `D` decisions, `O` options, `F` findings, `R` risks, `Q` questions,
7
+ `A` actions. The trigger is countable: any reply naming two or more such items takes
8
+ codes, a {{SKILL}}'s or an {{AGENT}}'s report included, whatever layout its template
9
+ shows; a reply with one item or none takes none. The code opens the item's line —
10
+ `**F1** — the token is logged in plain text`, `**Q2** — keep the v1 route?` — not a
11
+ bare `1.` or a bullet. Number from one within each kind, keep counting across turns
12
+ (the next finding after `F3` is `F4`, even three replies later), invent a new letter
13
+ for a kind the list omits, and never renumber a code once issued — the user will cite
14
+ it back, and a moved code makes their reply mean something you did not say. A code is an address, not an ornament:
15
+ it lets a long exchange be answered by reference, and a decision taken on turn
16
+ three still be named on turn thirty. Where the {{ONTOLOGY}}'s {{ONT_CONDUCT}}
17
+ governs how an answer speaks, this is only the addressing convention — a practice
18
+ a repository adopts or drops like any other rule in these {{DOCTRINES}}.
19
+ <!-- LEAN:else -->
20
+ Give every tracked item a short reference code, unchanged for the session —
21
+ `D` decisions, `O` options, `F` findings, `R` risks, `Q` questions, `A` actions.
22
+ Any reply naming two or more such items takes codes, a {{SKILL}}'s or {{AGENT}}'s
23
+ report included; one item or none takes none. The code opens the line, never a bare
24
+ `1.` or bullet: `**F1** — token logged in plain text`, `**Q2** — keep the v1 route?`
25
+ Number from one within each kind and keep counting across turns (after `F3` comes
26
+ `F4`), invent letters for missing kinds, never renumber a code once issued.
27
+ <!-- LEAN:end -->
28
+
29
+ ### {{DOCTRINE}} comms 2 — {{DOC_COMMS_2}}
30
+ <!-- LEAN:begin -->
31
+ Prose and structure are distinct: beside the prose, pick **either** a diagram **or** a
32
+ table — whichever the matter needs, rarely both — and let the prose keep the context, the
33
+ why, the pitfall and the decision. Draw a boxes-and-arrows diagram only when its arrows
34
+ carry meaning: links to follow (a flow, a sequence, dependencies, a causal chain, a
35
+ topology), a visual or spatial subject, four or more interlinked elements, or when the
36
+ user asks. The test: erase the arrows — if nothing is lost, it was never a diagram.
37
+ Classifications, inventories and attribute comparisons take a table or a list; a chain of
38
+ three steps or fewer stays inline (`A -> B -> C`); a trivial fact stays plain text. A small
39
+ diagram replaces prose only where the prose would run long describing a structure. The
40
+ medium follows the surface: ASCII diagrams and tables in a terminal, Mermaid in markdown
41
+ that renders it; for a situation too dense for ASCII, offer a richer rendered page in one
42
+ line, never build one unasked. This is strictly additive to {{DOCTRINE}} comms 1: tracked
43
+ items keep their codes, one coded line each, and a diagram or table may carry a code as a
44
+ tag but never absorbs, merges or renumbers an item.
45
+ <!-- LEAN:else -->
46
+ Prose and structure are distinct: beside the prose, pick a diagram or a table, rarely
47
+ both; prose keeps the why and the decision. Draw a diagram only when its arrows carry
48
+ meaning — flow, dependencies, topology, a spatial subject, four or more linked elements,
49
+ or on request; if erasing them loses nothing, use a table or list. Three steps or fewer
50
+ stay inline (`A -> B -> C`). ASCII in a terminal, Mermaid where markdown renders; offer a
51
+ rendered page in one line, never unasked. Codes stay ({{DOCTRINE}} comms 1): a diagram
52
+ may tag an item, never absorb or renumber it.
53
+ <!-- LEAN:end -->
@@ -130,32 +130,6 @@ stalls, halt with a structured summary of what was tried, learned, and remains (
130
130
 
131
131
  ### {{DOCTRINE}} process 7 — {{DOC_PROCESS_7}}
132
132
  <!-- LEAN:begin -->
133
- Give every tracked item a short reference code and keep it unchanged for the rest of
134
- the session — `D` decisions, `O` options, `F` findings, `R` risks, `Q` questions,
135
- `A` actions. The trigger is countable: any reply naming two or more such items takes
136
- codes, a {{SKILL}}'s or an {{AGENT}}'s report included, whatever layout its template
137
- shows; a reply with one item or none takes none. The code opens the item's line —
138
- `**F1** — the token is logged in plain text`, `**Q2** — keep the v1 route?` — not a
139
- bare `1.` or a bullet. Number from one within each kind, keep counting across turns
140
- (the next finding after `F3` is `F4`, even three replies later), invent a new letter
141
- for a kind the list omits, and never renumber a code once issued — the user will cite
142
- it back, and a moved code makes their reply mean something you did not say. A code is an address, not an ornament:
143
- it lets a long exchange be answered by reference, and a decision taken on turn
144
- three still be named on turn thirty. Where the {{ONTOLOGY}}'s {{ONT_CONDUCT}}
145
- governs how an answer speaks, this is only the addressing convention — a practice
146
- a repository adopts or drops like any other rule in these {{DOCTRINES}}.
147
- <!-- LEAN:else -->
148
- Give every tracked item a short reference code, unchanged for the session —
149
- `D` decisions, `O` options, `F` findings, `R` risks, `Q` questions, `A` actions.
150
- Any reply naming two or more such items takes codes, a {{SKILL}}'s or {{AGENT}}'s
151
- report included; one item or none takes none. The code opens the line, never a bare
152
- `1.` or bullet: `**F1** — token logged in plain text`, `**Q2** — keep the v1 route?`
153
- Number from one within each kind and keep counting across turns (after `F3` comes
154
- `F4`), invent letters for missing kinds, never renumber a code once issued.
155
- <!-- LEAN:end -->
156
-
157
- ### {{DOCTRINE}} process 8 — {{DOC_PROCESS_8}}
158
- <!-- LEAN:begin -->
159
133
  When several {{AGENTS}} work on the same code — sub-{{AGENTS}}, a pipeline crew, a
160
134
  workflow fan-out, another session or tool in this checkout — each file has one writer at
161
135
  a time. Before dispatch, give every unit a **write set** (the files or globs it may
@@ -2,17 +2,18 @@
2
2
 
3
3
  > {{DESC_GENESEED}}
4
4
 
5
- **Trigger:** the user mentions Geneseed, the harness, `AGENT.md`, or asks you to inspect, read from, or refresh the deployed bundle — or you need to know what {{LAWS}}, {{AGENTS}}, or {{SKILLS}} are available in the current install.
5
+ **Trigger:** the user mentions Geneseed, the harness, or `AGENT.md`; asks how the install is set up; asks to change its theme, footprint, posture, mode, doctrine packs or excluded rules — or you need to know what {{LAWS}}, {{AGENTS}}, or {{SKILLS}} this install carries.
6
6
 
7
7
  ## Procedure
8
- 1. Locate the deployment. Try in order: `command -v geneseed` (use the launcher if found); `$GENESEED_HARNESS`; `$OPENCODE_CONFIG_DIR`; `~/.config/opencode/AGENT.md`; `.opencode/AGENT.md` walking up from `pwd`; any `AGENT.md` at the repo root. Stop and say so if none resolves — do not run `setup`, `build`, or `upgrade` to "fix" this.
9
- 2. For state — install mode, theme, counts, version fingerprint, drift — prefer the CLI: `geneseed status`, `geneseed version`, `geneseed doctor`, `geneseed diff`. All read-only and cheap ({{DOCTRINE}} process 3).
10
- 3. To read a specific piece, read the file directly rather than re-deriving from prose ({{LAW}} III): `<harness>/agents/<name>.md`, `<harness>/skills/<name>/SKILL.md`, `<harness>/memory/<file>.md`, `<harness>/notebook/<file>.md`. The {{ONTOLOGY}}, the {{LAWS}} and the active {{DOCTRINES}} live as their own numbered `## N. …` sections inside `<harness>/AGENT.md`.
11
- 4. Side-effecting verbs need explicit assent ({{DOCTRINE}} process 5): `geneseed learn` (writes to {{MEMORY}}), `geneseed context` (refreshes the project's `context.json`), `geneseed web start|stop` (the local browser UI on `127.0.0.1`). `geneseed web status` is read-only.
12
- 5. Never run `setup`, `build`, `upgrade`, `bootstrap`, `update`, `sync-self`, `link`, `unlink`, or `uninstall` as a side effect — these are scope-changing and only run when the user explicitly asks ({{LAW}} II).
13
- 6. The bundle's directory and section names are theme-independent (plain English everywhere); only voice and prose change per theme. Don't pattern-match on flavour words to find files.
8
+ 1. **Locate.** Run `geneseed status --json` first: `installs` lists every install on this machine — host, scope, root, state, theme, footprint, posture, mode, packs, excluded rules — and `rebuild`, the command that reproduces each one exactly. `geneseed` not on PATH → ask the user before using `npx geneseed` (it downloads the package), and prefix every command below the same way. Still nothing → look for a host root file: `~/.config/opencode/AGENT.md` or `.opencode/AGENT.md` (OpenCode), `~/.claude/CLAUDE.md` or `.claude/` (Claude Code), `.openclaude/` (OpenClaude), `AGENTS.md` beside `.bob/` or `.github/` (Bob, Copilot). None → say so; never install to "fix" it.
9
+ 2. **Read state** with the read-only verbs, cheapest first ({{DOCTRINE}} process 3): `geneseed status --json`, `geneseed version`, `geneseed catalog` (optionally `agents|skills|laws|ontology|doctrines`), `geneseed doctor`, `geneseed diff`, `geneseed mcp`, `geneseed memory list`, `geneseed exclude list`.
10
+ 3. **Read a piece** from disk, not from recall ({{LAW}} III): `<root>/agents/<name>.md`, `<root>/skills/<name>/SKILL.md`, `<root>/memory/`, `<root>/notebook/`. The {{ONTOLOGY}}, the {{LAWS}} and the active {{DOCTRINES}} are numbered `## N. …` sections of the install's root file.
11
+ 4. **Change an install only when the user asked for that change** ({{LAW}} II). Take that install's `rebuild` command from step 1, edit only the flag the user named (add it if the command omits it — `--posture` and `--mode` are left out at their defaults) — `--theme`, `--footprint lean|full`, `--posture`, `--mode direct|foreman`, `--doctrines craft,rigor|none`, `--exclude-rules "process 7"|none` — dry-run it first by running the same flags through `geneseed validate`, show the command, and run it once the user agrees. Never rebuild from a bare `geneseed build`: every omitted flag resets that setting to the generator default. Confirm with `geneseed status`.
12
+ 5. **Other writes also need the user's word:** `geneseed memory rm <name>`, `geneseed exclude add|remove <path>`, `geneseed web start|stop`, `geneseed uninstall --target <root> --yes`. Personal rules and the profile belong to their own {{SKILLS}}; do not edit `user-rules.md` or `PROFILE.md` from here.
13
+ 6. **Never on your own initiative:** `geneseed setup` (interactive only), `geneseed upgrade`, `geneseed update`, `geneseed bootstrap`, `geneseed sync-self`, `geneseed rebuild-all`, `geneseed migrate`, `geneseed link`, `geneseed unlink`. `learn`, `context` and the `*-gate` verbs are `geneseed-hook` verbs the host's hooks run — never run them by hand.
14
+ 7. Directory and section names are plain English in every theme; only prose changes. Do not search by flavour words.
14
15
 
15
16
  ## Done when
16
- - The user's question about the deployed harness is answered from the live install — file paths or CLI output — not from recall.
17
+ - The answer comes from the live install — CLI output or file paths, not recall — or the requested change was rebuilt with every other setting preserved and `geneseed status` shows it.
17
18
 
18
19
  <!-- INCLUDE: skills/_self-improvement.md -->
@@ -5,7 +5,7 @@
5
5
  **Trigger:** two or more independent subtasks with no shared state or ordering between them — and a tool that can run subagents.
6
6
 
7
7
  ## Procedure
8
- 1. Confirm independence: the subtasks must not depend on each other's output or write the same files ({{DOCTRINE}} process 8). 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.
8
+ 1. Confirm independence: the subtasks must not depend on each other's output or write the same files ({{DOCTRINE}} process 7). 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.
9
9
  2. Split the work into self-contained units, each with one clear goal and a defined output contract — what it must return.
10
10
  3. Dispatch each unit to its own subagent in one batch, each under a handoff envelope: the unit's goal, the inputs it needs, its **write set** (edit nothing outside it; return rows for a shared file instead of writing it), the observable check that proves it done, its output contract — naming every file it changed — and the inherited constraints (no commit/push — {{DOCTRINE}} process 5 stays with you; gaps reported, never invented). Hand each unit only the access its goal needs ({{LAW}} VII). Prefer the read-only [explorer {{AGENT}}](../{{DIR_AGENTS}}/explorer.md) for investigation so the heavy reading stays out of the main context ({{DOCTRINE}} process 3). Where no subagent capability exists, run the units sequentially as personas instead, converging the same way.
11
11
  4. Keep the main context lean: collect each subagent's distilled result, not its working transcript.
@@ -23,7 +23,7 @@ The minimum roster per task type. The parent may add specialists on top — secu
23
23
 
24
24
  1. Confirm the task is genuinely substantial — a trivial one-file tweak or a question does not warrant a crew; do it directly instead.
25
25
  2. Compose the crew from the floor above, adding specialists only where the task demands them.
26
- 3. Isolate the crew's work in its own git worktree/branch (the SETUP.md worktree add-on). Where worktrees are unavailable, fall back to a single tree, one pipeline at a time, and say so. Give the crew a **write set** and check it against every other pipeline in flight ({{DOCTRINE}} process 8): two crews whose sets overlap do not run at once, and shared append files (registries, index tables, lockfiles, generated bundles) are the parent's to apply, never a crew's.
26
+ 3. Isolate the crew's work in its own git worktree/branch (the SETUP.md worktree add-on). Where worktrees are unavailable, fall back to a single tree, one pipeline at a time, and say so. Give the crew a **write set** and check it against every other pipeline in flight ({{DOCTRINE}} process 7): two crews whose sets overlap do not run at once, and shared append files (registries, index tables, lockfiles, generated bundles) are the parent's to apply, never a crew's.
27
27
  4. **The dev↔tester loop:** the developer implements, the tester validates — runs the tests and lint, produces raw logs. On failure, the findings go back to the developer. Cap at **5** iterations; on exhaustion, stop, do not merge, and report the failure with the branch left in place for inspection.
28
28
  5. **Two execution shapes**, chosen by host capability (same pattern as the [workflow {{SKILL}}](workflow.md)):
29
29
  - *Deterministic:* where the host exposes a `workflow` tool, run a saved script encoding analyst → developer → (tester ⇄ developer)×≤5 → proof.
@@ -28,9 +28,10 @@ picking the most recently active source:
28
28
  | Claude Code | `~/.claude/projects/<slug>/*.jsonl` | exact usage per request |
29
29
  | IBM Bob | `~/.bob/projects/<slug>/*.jsonl` (Claude-shaped, `$BOB_CONFIG_DIR` honoured) | exact usage per request |
30
30
  | OpenCode | `~/.local/share/opencode/opencode.db` (SQLite, v1.2+; pre-1.2 falls back to `storage/` JSON files) | exact `tokens` per request; child sessions attributed as subagents |
31
+ | OpenClaude | `~/.openclaude/projects/<slug>/*.jsonl` (Claude-shaped, `$OPENCLAUDE_CONFIG_DIR` honoured) | exact usage per request |
31
32
  | GitHub Copilot | `~/.copilot/history-session-state/` | best effort — undocumented schema; token-like fields harvested, else estimates only |
32
33
 
33
- Useful flags: `--host claude|bob|opencode|copilot` to force a host,
34
+ Useful flags: `--host claude|bob|openclaude|opencode|copilot` to force a host,
34
35
  `--transcript <path>` / `--session <id>` for a specific session,
35
36
  `--limit <tokens>` for the context-window limit used in the % columns
36
37
  (default 200000), `--top <n>` for the heaviest-items list.
@@ -5,7 +5,7 @@ not third-party. It rides the vendored-folder mechanism because it bundles an
5
5
  executable (`scripts/token_report.mjs`) and Geneseed's flat-skill pipeline renders
6
6
  single `.md` files only. Listing it in the generator's `VENDORED_SKILL_DIRS`
7
7
  makes the whole folder ride along verbatim into every host emit — Claude Code,
8
- IBM Bob, OpenCode, GitHub Copilot — which is exactly what a multi-file skill needs.
8
+ IBM Bob, OpenCode, GitHub Copilot, OpenClaude — which is exactly what a multi-file skill needs.
9
9
 
10
10
  - **Upstream:** this repository (first-party)
11
11
  - **License:** same as Geneseed (see repository LICENSE)
@@ -17,7 +17,7 @@ Consequences of riding this mechanism (deliberate):
17
17
  `description` and blockquote purpose line instead;
18
18
  - listed in AGENT.md's folder-skills section, not the main skills table.
19
19
 
20
- The script supports all four emitted hosts (exact usage on Claude Code, Bob and
21
- OpenCode; best-effort on Copilot, whose session-state schema is undocumented).
20
+ The script supports all five emitted hosts (exact usage on Claude Code, Bob,
21
+ OpenClaude and OpenCode; best-effort on Copilot, whose session-state schema is undocumented).
22
22
  If a host changes its session storage layout, fix the corresponding finder or
23
23
  parser in `scripts/token_report.mjs`.
@@ -11,6 +11,8 @@
11
11
  * (SQLite, v1.2+: session/message/part tables,
12
12
  * JSON `data` columns; falls back to the pre-1.2
13
13
  * storage/ JSON files when no DB exists)
14
+ * openclaude OpenClaude ~/.openclaude/projects/<slug>/<session>.jsonl exact usage
15
+ * (Claude Code fork; $OPENCLAUDE_CONFIG_DIR honoured)
14
16
  * copilot GitHub Copilot ~/.copilot/history-session-state/ best effort
15
17
  * (schema undocumented; token fields harvested
16
18
  * generically, estimates otherwise)
@@ -485,13 +487,14 @@ class SessionData {
485
487
  }
486
488
 
487
489
  // ---------------------------------------------------------------------------
488
- // Host: Claude Code / IBM Bob (same transcript shape, different config root)
490
+ // Host: Claude Code / IBM Bob / OpenClaude (same transcript shape, different config root)
489
491
  // ---------------------------------------------------------------------------
490
492
 
491
493
  const slugify = (p) => p.replace(/[^A-Za-z0-9]/g, '-');
492
494
 
493
495
  function claudeShapedRoot(host) {
494
- const env = { claude: 'CLAUDE_CONFIG_DIR', bob: 'BOB_CONFIG_DIR' }[host];
496
+ const env = { claude: 'CLAUDE_CONFIG_DIR', bob: 'BOB_CONFIG_DIR',
497
+ openclaude: 'OPENCLAUDE_CONFIG_DIR' }[host];
495
498
  const root = process.env[env] || path.join(homedir(), `.${host}`);
496
499
  return isDir(path.join(root, 'projects')) ? root : null;
497
500
  }
@@ -1017,6 +1020,7 @@ async function detect(hostArg, transcript, session) {
1017
1020
  const finders = {
1018
1021
  claude: () => claudeShapedFind('claude', transcript),
1019
1022
  bob: () => claudeShapedFind('bob', transcript),
1023
+ openclaude: () => claudeShapedFind('openclaude', transcript),
1020
1024
  opencode: () => opencodeFind(session),
1021
1025
  copilot: () => copilotFind(transcript),
1022
1026
  };
@@ -1042,13 +1046,13 @@ async function detect(hostArg, transcript, session) {
1042
1046
  }
1043
1047
  if (!best) {
1044
1048
  sysExit('error: no session data found for any supported host '
1045
- + '(claude, bob, opencode, copilot)');
1049
+ + '(claude, bob, openclaude, opencode, copilot)');
1046
1050
  }
1047
1051
  return [best[0], best[1]];
1048
1052
  }
1049
1053
 
1050
1054
  async function load(host, found) {
1051
- if (host === 'claude' || host === 'bob') return claudeShapedParse(host, found);
1055
+ if (['claude', 'bob', 'openclaude'].includes(host)) return claudeShapedParse(host, found);
1052
1056
  if (host === 'opencode') {
1053
1057
  const [kind, payload] = found;
1054
1058
  if (kind === 'db') return opencodeDbParse(...payload);
@@ -1058,7 +1062,10 @@ async function load(host, found) {
1058
1062
  return copilotParse(found);
1059
1063
  }
1060
1064
 
1061
- const HOST_NAMES = { claude: 'Claude Code', bob: 'IBM Bob', opencode: 'OpenCode', copilot: 'GitHub Copilot' };
1065
+ const HOST_NAMES = {
1066
+ claude: 'Claude Code', bob: 'IBM Bob', openclaude: 'OpenClaude', opencode: 'OpenCode',
1067
+ copilot: 'GitHub Copilot',
1068
+ };
1062
1069
 
1063
1070
  function render(d, limit, topN) {
1064
1071
  const out = [`# Token usage report — ${HOST_NAMES[d.host] ?? d.host}`, ''];
@@ -1188,11 +1195,11 @@ function render(d, limit, topN) {
1188
1195
  // ---------------------------------------------------------------------------
1189
1196
 
1190
1197
  const PROG = path.basename(process.argv[1] ?? 'token_report.mjs');
1191
- const HOST_CHOICES = ['claude', 'bob', 'opencode', 'copilot'];
1198
+ const HOST_CHOICES = ['claude', 'bob', 'openclaude', 'opencode', 'copilot'];
1192
1199
  const OPTIONS = [
1193
1200
  ['-h, --help', 'show this help message and exit'],
1194
1201
  [`--host {${HOST_CHOICES.join(',')}}`, 'force a host instead of auto-detecting by recency'],
1195
- ['--transcript TRANSCRIPT', 'explicit transcript path (claude/bob/copilot)'],
1202
+ ['--transcript TRANSCRIPT', 'explicit transcript path (claude/bob/openclaude/copilot)'],
1196
1203
  ['--session SESSION', 'explicit session id (opencode)'],
1197
1204
  ['--limit LIMIT', 'context window limit for % columns (default 200000)'],
1198
1205
  ['--top TOP', 'how many heaviest single items to list (default 5)'],
@@ -23,7 +23,7 @@ work is worth a crew: a one-file tweak or a question never is.
23
23
  |---|---|---|---|
24
24
  | OpenCode | `workflow` (the `geneseed-workflow` plugin) | **saved only** — `<name>.js` in `.opencode/workflows/` per repo or `<config>/workflows/` global (`GENESEED_WORKFLOWS_DIR` overrides); nothing inline is eval'd | none — call it when the shape fits |
25
25
  | Claude Code | `Workflow` (native) | a saved `.claude/workflows/<name>` by `name`, **or** an inline `script` you author | **required** — the tool refuses unless the user opted in for this task ("use a workflow", "ultracode", a skill that says so) |
26
- | Bob, Copilot | none | — | fall back to [parallel-agents](parallel-agents.md) / [council](council.md) |
26
+ | Bob, Copilot, OpenClaude | none | — | fall back to [parallel-agents](parallel-agents.md) / [council](council.md) |
27
27
  | any, under Orca | Orca orchestration (`orca skills get orchestration`) | tasks, not scripts — each task spec names its target, change, ownership and acceptance | the user asked to supervise or coordinate workers |
28
28
 
29
29
  Both runtimes speak the same primitives — `agent()`, `parallel()`, `pipeline()`,
@@ -60,7 +60,7 @@ carries the script API — load it before writing one).
60
60
  to the primitives, and hold to the host's size guideline unless the user asked for
61
61
  more.
62
62
  4. **Give every editing agent a write set, and isolate parallel editors** ({{DOCTRINE}}
63
- process 8). Name in each editing `agent()` prompt the files it may change and have it
63
+ process 7). Name in each editing `agent()` prompt the files it may change and have it
64
64
  return the files it did change; overlapping sets run in sequence, not in one
65
65
  `parallel()`. Pass `isolation: 'worktree'` to each agent that edits in parallel — both
66
66
  runtimes take it; read-only agents need none. After the fan-out, compare the changed
@@ -73,7 +73,7 @@
73
73
  "DESC_HERDR": "<one-line description: drive herdr from inside it — split panes, spawn agents, read panes>",
74
74
  "DESC_RULE": "<one-line description: ask whether the user wants a standing rule or a durable memory, then write the memory, or pressure-test the rule until it is generic and adopt it in user-rules.md>",
75
75
  "DESC_PROFILE": "<one-line description: interview the user and draft or refresh PROFILE.md — who they are, how they work, how they like answers pitched; identity only, rules go to user-rules.md>",
76
- "DESC_GENESEED": "<one-line description: interact with the deployed Geneseed harness — read files, status, doctor, diff>",
76
+ "DESC_GENESEED": "<one-line description: operate the deployed Geneseed harness — find installs and their settings, read files, status, doctor, diff, rebuild one setting on request>",
77
77
  "DESC_REVIEW_RESPONSE": "<one-line description: respond to review feedback — verify each point, apply or decline with reasons>",
78
78
  "LEX_I": "<themed title for Law I (Sealed Secrets)>",
79
79
  "LEX_II": "<themed title for Law II (One Intent, One Act)>",
@@ -90,6 +90,7 @@
90
90
  "PACK_RIGOR": "<display name of the rigor doctrine pack — how work is proven>",
91
91
  "PACK_OPS": "<display name of the ops doctrine pack — how the machine is driven>",
92
92
  "PACK_PROCESS": "<display name of the process doctrine pack — how a session runs>",
93
+ "PACK_COMMS": "<display name of the comms doctrine pack — how answers are presented>",
93
94
  "DOC_CRAFT_1": "<themed title for craft doctrine 1 (Automate Repetition)>",
94
95
  "DOC_CRAFT_2": "<themed title for craft doctrine 2 (English Configuration)>",
95
96
  "DOC_CRAFT_3": "<themed title for craft doctrine 3 (Documentation in Step)>",
@@ -115,8 +116,9 @@
115
116
  "DOC_PROCESS_4": "<themed title for process doctrine 4 (Read the Docs First)>",
116
117
  "DOC_PROCESS_5": "<themed title for process doctrine 5 (Consent Before Push)>",
117
118
  "DOC_PROCESS_6": "<themed title for process doctrine 6 (Bound the Loop)>",
118
- "DOC_PROCESS_7": "<themed title for process doctrine 7 (Codes That Persist)>",
119
- "DOC_PROCESS_8": "<themed title for process doctrine 8 (One Writer Per File)>",
119
+ "DOC_PROCESS_7": "<themed title for process doctrine 7 (One Writer Per File)>",
120
+ "DOC_COMMS_1": "<themed title for comms doctrine 1 (Codes That Persist)>",
121
+ "DOC_COMMS_2": "<themed title for comms doctrine 2 (Structure Beside Prose)>",
120
122
  "INTRO_DOC": "<themed intro: this file is the entry point an AI agent reads in this repo>",
121
123
  "INTRO_AGENTS": "<themed intro to the Agents section — delegate focused work to a specialist>",
122
124
  "INTRO_SKILLS": "<themed intro to the Skills section — run the written procedure before improvising>",
package/themes/biker.json CHANGED
@@ -73,7 +73,7 @@
73
73
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
74
74
  "DESC_RULE": "Ask first — standing rule, or just something to remember? Then log the memory, or lean on the rule till it holds every corner before bolting it into user-rules.md.",
75
75
  "DESC_PROFILE": "Stamp the rider's plate into PROFILE.md — who they are, what they ride, how they like the road called; identity only, club rules bolt into user-rules.md.",
76
- "DESC_GENESEED": "Interact with the deployed Geneseed harness — locate the install, read its files, run status, doctor, and diff, and drive learn, context, and the local web UI.",
76
+ "DESC_GENESEED": "Operate the deployed Geneseed harness — find each install and its settings, read its files, run status, doctor and diff, and rebuild it with one setting changed when the user asks.",
77
77
  "DESC_REVIEW_RESPONSE": "Take the notes straight — weigh each call, then act on it or push back with reasons.",
78
78
  "LEX_I": "Keep It in the Saddlebag · Sealed Secrets",
79
79
  "LEX_II": "One Move per Corner · One Intent, One Act",
@@ -90,6 +90,7 @@
90
90
  "PACK_RIGOR": "Shakedown",
91
91
  "PACK_OPS": "Throttle",
92
92
  "PACK_PROCESS": "The Ride",
93
+ "PACK_COMMS": "Hand Signals",
93
94
  "DOC_CRAFT_1": "Let the Cruise Control Do It · Automate Repetition",
94
95
  "DOC_CRAFT_2": "Notes in English · English Configuration",
95
96
  "DOC_CRAFT_3": "Roadbook in Sync · Documentation in Step",
@@ -115,8 +116,9 @@
115
116
  "DOC_PROCESS_4": "Read the Route Notes First · Read the Docs First",
116
117
  "DOC_PROCESS_5": "Crew's Nod Before You Push · Consent Before Push",
117
118
  "DOC_PROCESS_6": "Set the Turnaround Before You Roll · Bound the Loop",
118
- "DOC_PROCESS_7": "Tag Every Part on the Bench · Codes That Persist",
119
- "DOC_PROCESS_8": "One Wrench on Each Bolt · One Writer Per File",
119
+ "DOC_PROCESS_7": "One Wrench on Each Bolt · One Writer Per File",
120
+ "DOC_COMMS_1": "Tag Every Part on the Bench · Codes That Persist",
121
+ "DOC_COMMS_2": "Draw the Route Only If It Turns · Structure Beside Prose",
120
122
  "INTRO_DOC": "This file is the route briefing a coding rider reads when it joins this repository.",
121
123
  "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.",
122
124
  "INTRO_SKILLS": "A Skill is a move you've drilled for a recurring task. Run the matching move before you wing it.",
@@ -73,7 +73,7 @@
73
73
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
74
74
  "DESC_RULE": "Ask first — standing house rule, or just one for the notebook? Then log it, or run the rule through the replay from every angle before it goes on the board in user-rules.md.",
75
75
  "DESC_PROFILE": "Build the player profile in PROFILE.md — position, form, how they like the commentary pitched; identity only, the rulebook stays in user-rules.md.",
76
- "DESC_GENESEED": "Interact with the deployed Geneseed harness — locate the install, read its files, run status, doctor, and diff, and drive learn, context, and the local web UI.",
76
+ "DESC_GENESEED": "Operate the deployed Geneseed harness — find each install and its settings, read its files, run status, doctor and diff, and rebuild it with one setting changed when the user asks.",
77
77
  "DESC_REVIEW_RESPONSE": "Take the scrutineer's notes straight — weigh each call, then act on it or push back with reasons.",
78
78
  "LEX_I": "Sealed Garage · Sealed Secrets",
79
79
  "LEX_II": "One Move per Corner · One Intent, One Act",
@@ -90,6 +90,7 @@
90
90
  "PACK_RIGOR": "Scrutineering",
91
91
  "PACK_OPS": "The Pit Lane",
92
92
  "PACK_PROCESS": "Race Control",
93
+ "PACK_COMMS": "Team Radio",
93
94
  "DOC_CRAFT_1": "Automate the Pit Stop · Automate Repetition",
94
95
  "DOC_CRAFT_2": "Regs in English · English Configuration",
95
96
  "DOC_CRAFT_3": "Notes in Sync · Documentation in Step",
@@ -115,8 +116,9 @@
115
116
  "DOC_PROCESS_4": "Read the Briefing First · Read the Docs First",
116
117
  "DOC_PROCESS_5": "Team Orders Before You Push · Consent Before Push",
117
118
  "DOC_PROCESS_6": "Call the Stint Length Before Lights Out · Bound the Loop",
118
- "DOC_PROCESS_7": "Every Car Keeps Its Number · Codes That Persist",
119
- "DOC_PROCESS_8": "One Driver Per Car · One Writer Per File",
119
+ "DOC_PROCESS_7": "One Driver Per Car · One Writer Per File",
120
+ "DOC_COMMS_1": "Every Car Keeps Its Number · Codes That Persist",
121
+ "DOC_COMMS_2": "Track Map Only When the Lines Matter · Structure Beside Prose",
120
122
  "INTRO_DOC": "This file is the race briefing a coding driver reads when it joins this repository.",
121
123
  "INTRO_AGENTS": "Put the right driver in the car for focused work instead of running the whole race yourself; each has one job and reports exactly what it did.",
122
124
  "INTRO_SKILLS": "A Skill is a rehearsed manoeuvre for a recurring task. Run the matching manoeuvre before you improvise.",
@@ -73,7 +73,7 @@
73
73
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
74
74
  "DESC_RULE": "Ask first — standing rule, or just something to keep on file? Then write the memory, or stress the rule till it holds in every sector before flashing it into user-rules.md.",
75
75
  "DESC_PROFILE": "Compile the user's ident into PROFILE.md — who they are, their rig, the bandwidth they want answers at; identity only, hard directives flash to user-rules.md.",
76
- "DESC_GENESEED": "Interact with the deployed Geneseed harness — locate the install, read its files, run status, doctor, and diff, and drive learn, context, and the local web UI.",
76
+ "DESC_GENESEED": "Operate the deployed Geneseed harness — find each install and its settings, read its files, run status, doctor and diff, and rebuild it with one setting changed when the user asks.",
77
77
  "DESC_REVIEW_RESPONSE": "Action the review clean — verify each flag, then patch it or push back with reasons.",
78
78
  "LEX_I": "Encrypt the Cache · Sealed Secrets",
79
79
  "LEX_II": "One Run, One Move · One Intent, One Act",
@@ -90,6 +90,7 @@
90
90
  "PACK_RIGOR": "Diagnostics",
91
91
  "PACK_OPS": "Runtime",
92
92
  "PACK_PROCESS": "Session",
93
+ "PACK_COMMS": "Uplink",
93
94
  "DOC_CRAFT_1": "Script the Grind · Automate Repetition",
94
95
  "DOC_CRAFT_2": "Config in English · English Configuration",
95
96
  "DOC_CRAFT_3": "Docs in Sync · Documentation in Step",
@@ -115,8 +116,9 @@
115
116
  "DOC_PROCESS_4": "Read the Specs First · Read the Docs First",
116
117
  "DOC_PROCESS_5": "Authorize the Upload · Consent Before Push",
117
118
  "DOC_PROCESS_6": "Set the Kill-Switch Before the Loop · Bound the Loop",
118
- "DOC_PROCESS_7": "Every Node Keeps Its Handle · Codes That Persist",
119
- "DOC_PROCESS_8": "One Deck Per Node · One Writer Per File",
119
+ "DOC_PROCESS_7": "One Deck Per Node · One Writer Per File",
120
+ "DOC_COMMS_1": "Every Node Keeps Its Handle · Codes That Persist",
121
+ "DOC_COMMS_2": "Trace the Wires, Skip the Chrome · Structure Beside Prose",
120
122
  "INTRO_DOC": "This file is the boot sequence a coding daemon reads when it jacks into this repository.",
121
123
  "INTRO_AGENTS": "Spin the right daemon for focused work instead of running the whole job on one thread; each has one function and returns a clean log of what it changed.",
122
124
  "INTRO_SKILLS": "A Skill is a proven routine for a recurring task. Run the matching routine before you freestyle.",
package/themes/gamer.json CHANGED
@@ -73,7 +73,7 @@
73
73
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
74
74
  "DESC_RULE": "Ask first — standing house rule, or just something to remember? Then save the memory, or test the rule against its worst case before binding it into user-rules.md.",
75
75
  "DESC_PROFILE": "Fill in the player card in PROFILE.md — main role, loadout, preferred difficulty; identity only, house rules go in user-rules.md.",
76
- "DESC_GENESEED": "Interact with the deployed Geneseed harness — locate the install, read its files, run status, doctor, and diff, and drive learn, context, and the local web UI.",
76
+ "DESC_GENESEED": "Operate the deployed Geneseed harness — find each install and its settings, read its files, run status, doctor and diff, and rebuild it with one setting changed when the user asks.",
77
77
  "DESC_REVIEW_RESPONSE": "Take the review feedback like a coach's notes — verify each call, then apply it or push back with reasons.",
78
78
  "LEX_I": "No-Leak Run · Sealed Secrets",
79
79
  "LEX_II": "One Objective per Run · One Intent, One Act",
@@ -90,6 +90,7 @@
90
90
  "PACK_RIGOR": "Playtest",
91
91
  "PACK_OPS": "Controls",
92
92
  "PACK_PROCESS": "The Run",
93
+ "PACK_COMMS": "Voice Chat",
93
94
  "DOC_CRAFT_1": "Macro the Grind · Automate Repetition",
94
95
  "DOC_CRAFT_2": "Config in English · English Configuration",
95
96
  "DOC_CRAFT_3": "Patch Notes in Sync · Documentation in Step",
@@ -115,8 +116,9 @@
115
116
  "DOC_PROCESS_4": "Read the Quest First · Read the Docs First",
116
117
  "DOC_PROCESS_5": "Ready-Check Before Push · Consent Before Push",
117
118
  "DOC_PROCESS_6": "Set the Retry Cap Before the Grind · Bound the Loop",
118
- "DOC_PROCESS_7": "Every Item Keeps Its Tag · Codes That Persist",
119
- "DOC_PROCESS_8": "No Double-Looting the Chest · One Writer Per File",
119
+ "DOC_PROCESS_7": "No Double-Looting the Chest · One Writer Per File",
120
+ "DOC_COMMS_1": "Every Item Keeps Its Tag · Codes That Persist",
121
+ "DOC_COMMS_2": "Minimap Only When There Is a Route · Structure Beside Prose",
120
122
  "INTRO_DOC": "This file is the loading screen a coding co-op partner reads when it joins this repository.",
121
123
  "INTRO_AGENTS": "Pick the right class for focused work instead of soloing the whole raid; each has one role and reports exactly what it did.",
122
124
  "INTRO_SKILLS": "A Skill is a practiced combo for a recurring task. Run the matching combo before you freestyle.",
@@ -73,7 +73,7 @@
73
73
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
74
74
  "DESC_RULE": "Ask first — a standing edict, or a matter merely to be remembered? Then inscribe the memory, or try the edict against the case that would break it before it enters user-rules.md.",
75
75
  "DESC_PROFILE": "Inscribe the user's identity into PROFILE.md — grant audience, ask who they are and how they will to be served; identity only, edicts belong in user-rules.md.",
76
- "DESC_GENESEED": "Interact with the deployed Geneseed harness — locate the install, read its files, run status, doctor, and diff, and drive learn, context, and the local web UI.",
76
+ "DESC_GENESEED": "Operate the deployed Geneseed harness — find each install and its settings, read its files, run status, doctor and diff, and rebuild it with one setting changed when the user asks.",
77
77
  "DESC_REVIEW_RESPONSE": "Answer the review with discipline — weigh each judgement, then heed it or refute it with cause.",
78
78
  "LEX_I": "Arcana Sigillata · Sealed Secrets",
79
79
  "LEX_II": "Unus Actus · One Intent, One Act",
@@ -90,6 +90,7 @@
90
90
  "PACK_RIGOR": "Ordeal",
91
91
  "PACK_OPS": "Enginery",
92
92
  "PACK_PROCESS": "Observance",
93
+ "PACK_COMMS": "Vox",
93
94
  "DOC_CRAFT_1": "Machina Pro Labore · Automate Repetition",
94
95
  "DOC_CRAFT_2": "Lingua Una · English Configuration",
95
96
  "DOC_CRAFT_3": "Scriptura Concurrens · Documentation in Step",
@@ -115,8 +116,9 @@
115
116
  "DOC_PROCESS_4": "Lege Prius · Read the Docs First",
116
117
  "DOC_PROCESS_5": "Consensus Ante Translationem · Consent Before Push",
117
118
  "DOC_PROCESS_6": "Finis Ante Iter · Bound the Loop",
118
- "DOC_PROCESS_7": "Sigla Perstantia · Codes That Persist",
119
- "DOC_PROCESS_8": "Unus Scriptor Singulis Tabulis · One Writer Per File",
119
+ "DOC_PROCESS_7": "Unus Scriptor Singulis Tabulis · One Writer Per File",
120
+ "DOC_COMMS_1": "Sigla Perstantia · Codes That Persist",
121
+ "DOC_COMMS_2": "Schema Ubi Sagittae Loquuntur · Structure Beside Prose",
120
122
  "INTRO_DOC": "This file is the gene-seed's core — the first writ a servant reads on entering this world.",
121
123
  "INTRO_AGENTS": "Hand focused work to the specialist whose duty it is rather than carrying every burden in one context; each holds one purpose and returns a clear account of what it changed.",
122
124
  "INTRO_SKILLS": "A Skill is a rite proven by repetition. Perform the matching rite before you improvise.",