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.
- package/CHANGELOG.md +74 -0
- package/DESIGN.md +6 -6
- package/QUICKSTART.md +1 -1
- package/README.md +33 -31
- package/SETUP.md +36 -10
- package/SHIPPED.md +3 -3
- package/adapters/claude-code/skills/geneseed/SKILL.md +1 -1
- package/adapters/openclaude/README.md +64 -0
- package/adapters/opencode/plugins/geneseed-workflow.js +1 -1
- package/adapters/opencode/workflows/_runtime.js +1 -1
- package/docs/extending.md +18 -6
- package/docs/web/exclusions.md +1 -0
- package/docs/web/footprint.md +1 -1
- package/docs/web/harnesses.md +14 -14
- package/docs/web/install-quick.md +1 -1
- package/docs/web/rules.md +1 -1
- package/docs/web/themes-author.md +1 -1
- package/docs/web-ui.md +1 -1
- package/harness.config.json +1 -1
- package/js/README.md +3 -3
- package/js/build/driver.mjs +64 -14
- package/js/build/emit-claude.mjs +1 -1
- package/js/build/generate.mjs +92 -42
- package/js/build/source.mjs +5 -4
- package/js/cli-table.json +151 -2
- package/js/hosts/hooks.mjs +11 -4
- package/js/hosts/hosts.mjs +17 -2
- package/js/hosts/installs.mjs +32 -2
- package/js/hosts/mcp.mjs +8 -1
- package/js/hosts/settings.mjs +4 -1
- package/js/inspect/diff.mjs +1 -1
- package/js/inspect/doctor.mjs +3 -3
- package/js/inspect/excludes.mjs +7 -5
- package/js/inspect/status.mjs +44 -8
- package/js/maintain/migrate.mjs +1 -1
- package/js/maintain/setup.mjs +7 -2
- package/js/maintain/uninstall.mjs +3 -3
- package/js/web/actions.mjs +7 -5
- package/js/web/api.mjs +2 -2
- package/js/web/docs.mjs +1 -1
- package/package.json +2 -1
- package/src/doctrines/README.md +3 -2
- package/src/doctrines/comms.md +53 -0
- package/src/doctrines/process.md +0 -26
- package/src/skills/geneseed.md +9 -8
- package/src/skills/parallel-agents.md +1 -1
- package/src/skills/pipeline.md +1 -1
- package/src/skills/token-report/SKILL.md +2 -1
- package/src/skills/token-report/VENDOR.md +3 -3
- package/src/skills/token-report/scripts/token_report.mjs +14 -7
- package/src/skills/workflow.md +2 -2
- package/themes/_TEMPLATE.json +5 -3
- package/themes/biker.json +5 -3
- package/themes/commentator.json +5 -3
- package/themes/cyberpunk.json +5 -3
- package/themes/gamer.json +5 -3
- package/themes/imperial.json +5 -3
- package/themes/joker.json +5 -3
- package/themes/marvin.json +5 -3
- package/themes/mean.json +5 -3
- package/themes/military.json +5 -3
- package/themes/neutral.json +5 -3
- package/themes/pirate.json +5 -3
- package/themes/sports.json +5 -3
- package/themes/verstappen.json +5 -3
- package/themes/wizard.json +5 -3
- package/web/dist/assets/{Activity-Flgf4kHy.js → Activity-CH-7cPIM.js} +1 -1
- package/web/dist/assets/{ActivityDetail-DIpr85nh.js → ActivityDetail-DZvz0xS5.js} +1 -1
- package/web/dist/assets/{CatalogRow-CjyLjaLb.js → CatalogRow-DftXpZHY.js} +1 -1
- package/web/dist/assets/{Diff-Deisdha8.js → Diff-DvwdG0L9.js} +1 -1
- package/web/dist/assets/{Docs-DGUdY4l4.js → Docs-DrJNDPwI.js} +1 -1
- package/web/dist/assets/{Doctor-F74lJ69P.js → Doctor-OTmwmYZg.js} +1 -1
- package/web/dist/assets/{GreenhouseView-D072lBiD.js → GreenhouseView-XxrAdriX.js} +1 -1
- package/web/dist/assets/Harness-C_LYNk5c.js +1 -0
- package/web/dist/assets/{JournalView-DWFqZ0Iw.js → JournalView-BcuyeEaR.js} +1 -1
- package/web/dist/assets/{Laws-BN6g3HU7.js → Laws-CWHrTKY4.js} +1 -1
- package/web/dist/assets/{Library-CDOv4emM.js → Library-CA9IHghn.js} +1 -1
- package/web/dist/assets/{OperatorHudView-CwNIUVX8.js → OperatorHudView-BMRY1Tt4.js} +1 -1
- package/web/dist/assets/{Profile-CpP9BTne.js → Profile-wceET1JY.js} +1 -1
- package/web/dist/assets/{Rules-DFXsUCB7.js → Rules-BEXvY4Tx.js} +1 -1
- package/web/dist/assets/{Settings-BqZVUtJ5.js → Settings-DS2zF0Ez.js} +1 -1
- package/web/dist/assets/{Skills-Cu6kBgfF.js → Skills-DahlOJuI.js} +1 -1
- package/web/dist/assets/{drawable-BgfrEBer.js → drawable-BTHjTzF7.js} +1 -1
- package/web/dist/assets/{index-CAqrWhKl.js → index-AN5Emnrg.js} +2 -2
- package/web/dist/assets/{lawCats-BLgxl151.js → lawCats-Btjp3Hk_.js} +1 -1
- package/web/dist/index.html +1 -1
- package/web/src/pages/Laws.jsx +6 -2
- package/web/dist/assets/Harness-DNRP2Va7.js +0 -1
package/js/web/actions.mjs
CHANGED
|
@@ -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,
|
|
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 || '')
|
|
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.
|
|
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",
|
package/src/doctrines/README.md
CHANGED
|
@@ -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
|
|
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
|
|
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 -->
|
package/src/doctrines/process.md
CHANGED
|
@@ -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
|
package/src/skills/geneseed.md
CHANGED
|
@@ -2,17 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
> {{DESC_GENESEED}}
|
|
4
4
|
|
|
5
|
-
**Trigger:** the user mentions Geneseed, the harness, `AGENT.md
|
|
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
|
|
9
|
-
2.
|
|
10
|
-
3.
|
|
11
|
-
4.
|
|
12
|
-
5.
|
|
13
|
-
6.
|
|
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
|
|
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
|
+
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.
|
package/src/skills/pipeline.md
CHANGED
|
@@ -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
|
|
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
|
|
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'
|
|
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 (
|
|
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 = {
|
|
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)'],
|
package/src/skills/workflow.md
CHANGED
|
@@ -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
|
|
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
|
package/themes/_TEMPLATE.json
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:
|
|
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 (
|
|
119
|
-
"
|
|
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": "
|
|
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": "
|
|
119
|
-
"
|
|
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.",
|
package/themes/commentator.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 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": "
|
|
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": "
|
|
119
|
-
"
|
|
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.",
|
package/themes/cyberpunk.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 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": "
|
|
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": "
|
|
119
|
-
"
|
|
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": "
|
|
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": "
|
|
119
|
-
"
|
|
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.",
|
package/themes/imperial.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 — 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": "
|
|
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": "
|
|
119
|
-
"
|
|
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.",
|