geneseed 3.10.0 → 3.11.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 +57 -0
- package/DESIGN.md +1 -1
- package/README.md +26 -44
- package/SHIPPED.md +2 -2
- package/adapters/bob/README.md +1 -1
- package/adapters/claude-code/README.md +17 -12
- package/adapters/openclaude/README.md +1 -1
- package/adapters/opencode/README.md +4 -4
- package/bin/build-driver.mjs +2 -0
- package/bin/geneseed-cli.mjs +17 -0
- package/bin/geneseed-hook.mjs +2 -0
- package/docs/README.md +42 -0
- package/docs/_groups.json +18 -0
- package/docs/concepts/agents.md +44 -0
- package/docs/concepts/collaboration.md +62 -0
- package/docs/concepts/exclusions.md +55 -0
- package/docs/concepts/footprint.md +52 -0
- package/docs/concepts/foreman-mode.md +69 -0
- package/docs/concepts/hooks.md +101 -0
- package/docs/concepts/hosts.md +55 -0
- package/docs/concepts/lsp.md +50 -0
- package/docs/{web → concepts}/memory.md +2 -2
- package/docs/{web → concepts}/notebook.md +2 -2
- package/docs/concepts/rules.md +52 -0
- package/docs/concepts/skills.md +49 -0
- package/docs/concepts/themes.md +50 -0
- package/docs/extending.md +27 -21
- package/docs/guides/autostart.md +70 -0
- package/docs/guides/choose-your-setup.md +120 -0
- package/docs/guides/headless.md +22 -0
- package/docs/guides/install.md +161 -0
- package/docs/guides/mcp.md +195 -0
- package/docs/guides/migrate.md +41 -0
- package/docs/guides/project-context.md +87 -0
- package/docs/guides/run-anywhere.md +45 -0
- package/docs/guides/uninstall.md +51 -0
- package/docs/guides/upgrade.md +65 -0
- package/docs/guides/verify.md +65 -0
- package/docs/guides/wiki.md +69 -0
- package/docs/guides/worktree.md +47 -0
- package/docs/reference/about.md +7 -0
- package/docs/reference/cli.md +7 -0
- package/docs/reference/environment.md +99 -0
- package/docs/reference/glossary.md +33 -0
- package/docs/reference/opencode-plugins.md +131 -0
- package/docs/reference/troubleshooting.md +350 -0
- package/docs/understand/a-day.md +77 -0
- package/docs/understand/enforced-vs-asked.md +64 -0
- package/docs/understand/harness.md +36 -0
- package/docs/understand/on-your-machine.md +76 -0
- package/docs/web-ui.md +1 -1
- package/harness.config.json +1 -1
- package/js/README.md +3 -2
- package/js/build/generate.mjs +12 -1
- package/js/build/source.mjs +6 -0
- package/js/cli-table.json +1 -1
- package/js/hosts/mcp.mjs +1 -1
- package/js/hosts/settings.mjs +13 -1
- package/js/inspect/checks-authoring.mjs +5 -3
- package/js/inspect/doctor.mjs +1 -1
- package/js/inspect/inventory.mjs +1 -1
- package/js/inspect/registry.mjs +20 -3
- package/js/inspect/status.mjs +7 -2
- package/js/lib/node-floor.mjs +30 -0
- package/js/maintain/setup.mjs +109 -21
- package/js/maintain/update.mjs +4 -15
- package/js/ui/cli.mjs +2 -2
- package/js/web/api.mjs +3 -0
- package/js/web/daemon.mjs +52 -0
- package/js/web/docs.mjs +149 -65
- package/js/web/server.mjs +5 -2
- package/package.json +6 -4
- package/registry.json +7 -0
- package/src/AGENT.md.tmpl +4 -0
- package/src/postures/mentor.md +1 -0
- package/src/skills/learn-mode.md +89 -0
- package/src/skills/pipeline.md +2 -2
- package/src/skills/quiz.md +2 -1
- package/src/skills/teach.md +2 -1
- package/themes/_TEMPLATE.json +1 -0
- package/themes/biker.json +1 -0
- package/themes/commentator.json +1 -0
- package/themes/cyberpunk.json +1 -0
- package/themes/gamer.json +1 -0
- package/themes/imperial.json +1 -0
- package/themes/joker.json +1 -0
- package/themes/marvin.json +1 -0
- package/themes/mean.json +1 -0
- package/themes/military.json +1 -0
- package/themes/neutral.json +1 -0
- package/themes/pirate.json +1 -0
- package/themes/sports.json +1 -0
- package/themes/verstappen.json +1 -0
- package/themes/wizard.json +1 -0
- package/web/dist/assets/Activity-C52LEb-2.js +1 -0
- package/web/dist/assets/ActivityDetail-CjNLRvXg.js +1 -0
- package/web/dist/assets/Dashboard-B6_sSCHi.js +2 -0
- package/web/dist/assets/Docs-Dj7BmCSA.js +5 -0
- package/web/dist/assets/{GreenhouseView-D0cbCJ5m.js → GreenhouseView-BALwjQsA.js} +1 -1
- package/web/dist/assets/Installs-BbffDQm3.js +2 -0
- package/web/dist/assets/JournalView-JpAQ8Hqe.js +1 -0
- package/web/dist/assets/Laws-DK7eCWSm.js +3 -0
- package/web/dist/assets/Library-CoamHelE.js +1 -0
- package/web/dist/assets/{Markdown-CkFyfgNf.js → Markdown-qjM2_ofS.js} +5 -5
- package/web/dist/assets/{OperatorHudView-CiAkAkQL.js → OperatorHudView-DVx1HlBx.js} +1 -1
- package/web/dist/assets/Personal-eaXb1zcj.js +1 -0
- package/web/dist/assets/{Tabs-B4HNrrCs.js → Tabs-BmGtt8E2.js} +1 -1
- package/web/dist/assets/api-Dc8f3ca-.js +1 -0
- package/web/dist/assets/drawable-Du_PZrQj.js +1 -0
- package/web/dist/assets/index-Bz_KMRDH.css +1 -0
- package/web/dist/assets/index-CNFH7o55.js +2 -0
- package/web/dist/index.html +3 -2
- package/QUICKSTART.md +0 -50
- package/SETUP.md +0 -1148
- package/docs/web/_groups.json +0 -45
- package/docs/web/about.md +0 -6
- package/docs/web/adapters-claude-code.md +0 -8
- package/docs/web/adapters-opencode-loads.md +0 -8
- package/docs/web/adapters-opencode-spec.md +0 -8
- package/docs/web/adapters-opencode.md +0 -8
- package/docs/web/agents.md +0 -8
- package/docs/web/authoring.md +0 -11
- package/docs/web/autostart.md +0 -9
- package/docs/web/claude-hooks.md +0 -37
- package/docs/web/cli.md +0 -6
- package/docs/web/collaboration.md +0 -27
- package/docs/web/configure-wiki.md +0 -9
- package/docs/web/design.md +0 -7
- package/docs/web/env-knobs.md +0 -9
- package/docs/web/exclusions.md +0 -26
- package/docs/web/first-session.md +0 -28
- package/docs/web/footprint.md +0 -38
- package/docs/web/foreman-mode.md +0 -33
- package/docs/web/glossary.md +0 -6
- package/docs/web/harnesses.md +0 -30
- package/docs/web/headless.md +0 -9
- package/docs/web/ingest-docs.md +0 -9
- package/docs/web/install-paths.md +0 -9
- package/docs/web/install-quick.md +0 -35
- package/docs/web/lsp-overview.md +0 -37
- package/docs/web/mcp-claude-code.md +0 -10
- package/docs/web/mcp-filesystem.md +0 -9
- package/docs/web/mcp-gitlab.md +0 -9
- package/docs/web/mcp-markitdown.md +0 -9
- package/docs/web/mcp-overview.md +0 -34
- package/docs/web/mcp-trouble.md +0 -9
- package/docs/web/mcp-verify.md +0 -9
- package/docs/web/migrate.md +0 -39
- package/docs/web/model.md +0 -20
- package/docs/web/pipelines.md +0 -24
- package/docs/web/plugin-activity.md +0 -23
- package/docs/web/plugin-context.md +0 -26
- package/docs/web/plugin-guard.md +0 -24
- package/docs/web/plugin-learn.md +0 -27
- package/docs/web/plugin-notify.md +0 -24
- package/docs/web/plugin-ponytail.md +0 -23
- package/docs/web/plugin-setup.md +0 -7
- package/docs/web/plugin-workflow.md +0 -25
- package/docs/web/plugins.md +0 -17
- package/docs/web/project-context.md +0 -9
- package/docs/web/rules.md +0 -30
- package/docs/web/run-anywhere.md +0 -9
- package/docs/web/self-improve.md +0 -8
- package/docs/web/setup-choices.md +0 -64
- package/docs/web/skills.md +0 -8
- package/docs/web/themes-author.md +0 -20
- package/docs/web/themes.md +0 -9
- package/docs/web/token-footprint.md +0 -7
- package/docs/web/trouble.md +0 -38
- package/docs/web/upgrade.md +0 -9
- package/docs/web/verify.md +0 -30
- package/docs/web/wiki.md +0 -7
- package/docs/web/worktree.md +0 -10
- package/docs/wiki.md +0 -43
- package/web/dist/assets/Activity-BjVp522q.js +0 -1
- package/web/dist/assets/ActivityDetail-8ep1bspW.js +0 -1
- package/web/dist/assets/Dashboard-OkC_PCH6.js +0 -2
- package/web/dist/assets/Docs-CKPWz00o.js +0 -2
- package/web/dist/assets/Installs-BtGGdoTt.js +0 -2
- package/web/dist/assets/JournalView-Ckl4dmzR.js +0 -1
- package/web/dist/assets/Laws-CLpdRRk8.js +0 -3
- package/web/dist/assets/Library-wPPuKQrI.js +0 -1
- package/web/dist/assets/Personal-D8CnDo9v.js +0 -1
- package/web/dist/assets/drawable-BiwaOo6x.js +0 -1
- package/web/dist/assets/index-C1yil5j1.js +0 -2
- package/web/dist/assets/index-CDPDk2vj.css +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,63 @@ label. For the capability ↔ spec map, see [SHIPPED.md](SHIPPED.md).
|
|
|
8
8
|
|
|
9
9
|
## [Unreleased]
|
|
10
10
|
|
|
11
|
+
## [3.11.0] — 2026-10-03
|
|
12
|
+
|
|
13
|
+
**Upgrading:** re-emit after installing (`geneseed rebuild-all`) — it also repairs a dead hook
|
|
14
|
+
shim and restarts a console left running on old code.
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
- **`learn-mode` skill** (user-invoked): you design at checkpoints, the agent writes only what an
|
|
18
|
+
answered checkpoint approved. State lives in `.geneseed/learn.md`, anchored by two lines in
|
|
19
|
+
`AGENT.md`'s Mode section; no hook changes. Inspired by nykooi1/vibe-wise (MIT), rewritten.
|
|
20
|
+
- **One-step installers** — `install` / `install.cmd` / `install.command` check Node ≥ 22.3 and
|
|
21
|
+
git with per-OS hints (they never install anything), then run setup and offer the web console.
|
|
22
|
+
- **Setup lists the tools it can install into** — OpenCode, Claude Code, IBM Bob and OpenClaude,
|
|
23
|
+
each found on PATH or shown with its install link — and asks before going on when none is present.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
- **The documentation is one tree, read on GitHub and in the console.** `docs/understand/`,
|
|
27
|
+
`docs/guides/`, `docs/concepts/` and `docs/reference/` replace `docs/web/`, `SETUP.md`,
|
|
28
|
+
`QUICKSTART.md` and `docs/wiki.md`; `docs/README.md` is the index. Install paths, every
|
|
29
|
+
configuration knob and MCP setup now live in `docs/guides/`; environment variables and
|
|
30
|
+
troubleshooting (organised by symptom) in `docs/reference/`. Every page was audited against
|
|
31
|
+
the code first, and a dozen wrong or stale claims were corrected on the way.
|
|
32
|
+
- **New: Understand**, four pages for developers new to agent harnesses — what a harness is,
|
|
33
|
+
what lands on your machine (per host: every file and hook, what it does, what it costs, how to
|
|
34
|
+
turn it off), a day with it, and what is enforced versus only asked.
|
|
35
|
+
- **Console Docs tab**: a three-column handbook with an "on this page" margin and glossary cards
|
|
36
|
+
for the terms a page uses; Understand renders as a step-by-step track with progress; "what
|
|
37
|
+
lands on your machine" is an interactive map; the Overview offers a dismissible "New here?"
|
|
38
|
+
card. Relative `.md` links work in both places.
|
|
39
|
+
- **The glossary** is a markdown table (`docs/reference/glossary.md`) with a developer analogy
|
|
40
|
+
per term, so GitHub readers get it too.
|
|
41
|
+
|
|
42
|
+
### Fixed
|
|
43
|
+
- **Docs no longer claim a foreman pipeline merges on its own.** It hands back an uncommitted
|
|
44
|
+
worktree; the session re-runs the proof and merges only once you accept. The Claude hooks page
|
|
45
|
+
no longer says dropping the process pack loses the git gate — destructive git is still refused.
|
|
46
|
+
- The console's CLI reference printed every command as `harness <verb>`; it says `geneseed`.
|
|
47
|
+
- The `pipeline` skill said the parent merges on the crew's own proof without re-verifying; it
|
|
48
|
+
re-runs the proof and merges only once you accept, as foreman mode always said.
|
|
49
|
+
- **Dead hooks are said out loud.** When the machine's hook shim points at a folder that no
|
|
50
|
+
longer exists, every Claude Code, Bob and OpenClaude hook is silently off. Every `geneseed`
|
|
51
|
+
command now warns about it on stderr (`GENESEED_NO_SHIM_CHECK=1` silences it), and the `gates`
|
|
52
|
+
row of `geneseed status` reads `DEAD` instead of `armed`. `geneseed rebuild-all` repairs it.
|
|
53
|
+
- **Scratch installs stay out of the install list.** Installs built under the OS temp folder
|
|
54
|
+
(agent scratchpads, throwaway tests) are no longer registered, and existing ones are dropped,
|
|
55
|
+
so `rebuild-all` and `status` only cover real installs.
|
|
56
|
+
- **A console running old code says so.** After an upgrade replaced the console's files, a
|
|
57
|
+
still-running console served a page that could not load. `geneseed web status` and a banner on
|
|
58
|
+
the console now say when it is out of date, the banner restarts it, and `rebuild-all`
|
|
59
|
+
restarts a stale console by itself.
|
|
60
|
+
- **An old Node gets one sentence.** Below Node 22.3 every Geneseed command — including `npx`,
|
|
61
|
+
a global npm install and the hooks — says which Node it needs instead of crashing with a
|
|
62
|
+
stack trace.
|
|
63
|
+
- **The end of setup tells the truth for every host.** It names the file each tool really loads
|
|
64
|
+
and where it is, the hooks wired for Claude Code, Bob and OpenClaude, whether memory learning
|
|
65
|
+
is on, the right tool to restart, and where to read what was installed. A successful Claude
|
|
66
|
+
Code install no longer ends on "expected AGENT.md … but it is not there".
|
|
67
|
+
|
|
11
68
|
## [3.10.0] — 2026-10-01
|
|
12
69
|
|
|
13
70
|
**Upgrading:** re-emit after installing (`geneseed rebuild-all`). A Copilot install is no longer
|
package/DESIGN.md
CHANGED
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
[](package.json)
|
|
11
11
|
[](package.json)
|
|
12
12
|
[](themes/)
|
|
13
|
-
[](src/skills/)
|
|
14
14
|
[](src/agents/)
|
|
15
15
|
[](src/laws/universal.md)
|
|
16
16
|
[](adapters/opencode/plugins/)
|
|
@@ -41,7 +41,7 @@ A hand-written instructions file is prose the model may or may not honour, copie
|
|
|
41
41
|
- **Costs are measured, not guessed.** Zero runtime dependencies. The hook path loads in about 14 ms per tool call. The default *lean* footprint keeps the always-on context small and puts the full rationale one read away — the numbers are in [docs/token-footprint.md](docs/token-footprint.md).
|
|
42
42
|
- **It follows you.** Install once, globally; every repo inherits it. One `git pull` or `npm install -g geneseed@latest` rebuilds every active install.
|
|
43
43
|
|
|
44
|
-
This page is the overview.
|
|
44
|
+
This page is the overview. **New to agent harnesses?** Start with [Understand](docs/understand/harness.md) — four short pages on what a harness is, what lands on your machine, what changes in your day, and what is enforced versus only asked. Everything else — every install path, configuration knob, and troubleshooting step — is in the **[documentation](docs/README.md)**, which the web console also renders.
|
|
45
45
|
|
|
46
46
|
---
|
|
47
47
|
|
|
@@ -83,38 +83,43 @@ npm install -g geneseed # then plain `geneseed <command>` from any directo
|
|
|
83
83
|
npm install -g geneseed@latest # …and that is also the update
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
Every other route (Claude Code, Bob, OpenClaude, plain `AGENT.md`, per-repo installs) is in the **[install guide](docs/guides/install.md)**.
|
|
87
87
|
|
|
88
88
|
### 🧬 The long way — a git checkout
|
|
89
89
|
|
|
90
|
-
Cloning
|
|
90
|
+
Cloning is the route when npm is out of reach (a corporate network with no registry access) or when you intend to *change* the harness rather than use it. It needs **git** and the same **Node ≥ 22.3** as everything else — there is nothing extra to install.
|
|
91
|
+
|
|
92
|
+
**One step: run the installer at the root of the clone.** It checks that Node ≥ 22.3 and git are there and, when one is missing, says exactly what to install and where (on a managed PC: Software Center / Company Portal) — it never installs anything itself. Then it runs the setup wizard — which opens by listing the AI coding tools it can install into (OpenCode, Claude Code, IBM Bob, OpenClaude), each `ok` or with its install link, and asks before going on when none is there — and offers to open the web console.
|
|
91
93
|
|
|
92
94
|
```bash
|
|
93
95
|
git clone https://github.com/Arylmera/Geneseed.git
|
|
94
96
|
cd Geneseed
|
|
95
|
-
./
|
|
97
|
+
./install # prerequisites, then the wizard
|
|
96
98
|
```
|
|
97
99
|
|
|
98
|
-
**
|
|
100
|
+
**macOS** — or double-click `install.command` in the Finder (it opens in Terminal). **Linux** — `./install` from any shell. On both, a missing prerequisite comes with the platform's own fix: Homebrew or the Command Line Tools on macOS, nvm/NodeSource or the package manager on Linux.
|
|
101
|
+
|
|
102
|
+
**Windows** — native, no bash, WSL, curl, unzip or PowerShell script; double-click `install.cmd` in Explorer, or from cmd or PowerShell:
|
|
99
103
|
|
|
100
104
|
```powershell
|
|
101
105
|
git clone https://github.com/Arylmera/Geneseed.git
|
|
102
106
|
cd Geneseed
|
|
103
|
-
.\
|
|
104
|
-
# PowerShell runs a .cmd directly, so this is the PowerShell spelling too
|
|
107
|
+
.\install.cmd # prerequisites, then the wizard
|
|
105
108
|
```
|
|
106
109
|
|
|
110
|
+
Afterwards, `./geneseed setup` (`.\geneseed.cmd setup`) re-runs the wizard and bare `./geneseed` (`.\geneseed.cmd`) opens the web console. PowerShell runs a `.cmd` directly, so that is the PowerShell spelling too.
|
|
111
|
+
|
|
107
112
|
Both launchers are thin shims over the Node CLI: they need `node` (22.3+) on `PATH`, and nothing else. Set `GENESEED_NODE` to an absolute path if `node` is not on `PATH` — under a version manager that only patches interactive shells, say. The wizard is plain text prompts on every console, old or new.
|
|
108
113
|
|
|
109
114
|
### 🟩 One runtime — Node, and nothing else
|
|
110
115
|
|
|
111
|
-
Node ≥ 22.3 is the entire dependency list — every command, all five hook verbs, the web console and both generators run from it, and nothing any bundle ships needs a second interpreter.
|
|
116
|
+
Node ≥ 22.3 is the entire dependency list — every command, all five hook verbs, the web console and both generators run from it, and nothing any bundle ships needs a second interpreter.
|
|
112
117
|
|
|
113
118
|
### ✅ After installing
|
|
114
119
|
|
|
115
|
-
- **Verify** — open your agent in any repo: the first reply starts with the readiness sigil and your project's docs are already in context. `geneseed doctor` should print `ok`.
|
|
116
|
-
- **Run it from anywhere** — a global `npm install -g geneseed` already does this
|
|
117
|
-
- **
|
|
120
|
+
- **Verify** — open your agent in any repo: the first reply starts with the readiness sigil and your project's docs are already in context. `geneseed doctor` should print `ok`. More in [Verify it works](docs/guides/verify.md).
|
|
121
|
+
- **Run it from anywhere** — a global `npm install -g geneseed` already does this; from a checkout see [Run geneseed from anywhere](docs/guides/run-anywhere.md).
|
|
122
|
+
- **Something wrong?** [Troubleshooting](docs/reference/troubleshooting.md) is organised by what you see.
|
|
118
123
|
|
|
119
124
|
---
|
|
120
125
|
|
|
@@ -137,14 +142,7 @@ geneseed web stop # stop the daemon
|
|
|
137
142
|
geneseed web status # is it running, and where
|
|
138
143
|
```
|
|
139
144
|
|
|
140
|
-
The
|
|
141
|
-
|
|
142
|
-
| Group | Views |
|
|
143
|
-
| --- | --- |
|
|
144
|
-
| *(ungrouped)* | **Dashboard** — live readout of what's deployed (voice, capabilities, drift, recent jobs) |
|
|
145
|
-
| **📖 Codex** | **Constitution** · **Rules** · **Profile** · **Skills** · **Agents** · **Library** (Memory, Notebook, the wiki) · **Docs** |
|
|
146
|
-
| **🩺 Care** | **Activity** · **Changes** — diff against the source, export an `improvements.md` · **Doctor** — health check across themes, links, parity and authoring gates |
|
|
147
|
-
| **🎨 Setup** | **Harness** — installs, theme, footprint · **Settings** — MCP servers, server controls |
|
|
145
|
+
The sidebar has six pages: **Overview** (what's deployed, health, recent jobs), **Constitution** (the rules and doctrine switches), **Library** (skills, agents, the wiki), **Personal** (your rules, profile, memory, notebook), **Installs** (hosts, local edits, doctor, server) and **Docs** — this documentation, opening on the Understand track, with a map of what Geneseed put on your machine.
|
|
148
146
|
|
|
149
147
|
It binds to `127.0.0.1` only and runs entirely offline — no npm needed at runtime; the UI build ships in `web/dist/`. Mutating actions run in the background and report back as toasts (fire-and-notify), guarded by a per-session token so other sites can't trigger them. A global **Spotlight** search in the topbar jumps to any agent, skill, rule, doc, or MCP server. Rebuild the UI after changing anything under `web/src/` with `cd web && npm install && npm run build`. If `web/dist/` is missing (fresh clone, never built), `geneseed web` offers to run that build for you — answer `Y` and it installs, builds, and starts the server; in non-interactive shells it prints the manual recipe instead.
|
|
150
148
|
|
|
@@ -166,7 +164,7 @@ The harness ships as a small set of layers, and the web console's rail is the sa
|
|
|
166
164
|
| **🛡️ Rules** (`laws/`) | 9 universal laws — always in force, never toggleable: sealed-secrets, one-intent-one-act, verify-before-asserting, deletion-is-deliberate, surface-failures, data-not-orders, least-privilege, cure-the-cause, echo-the-intent. Each rule has a permanent id; its number is only its position, and the harness cites rules by name |
|
|
167
165
|
| **📐 Doctrines** (`doctrines/`) | practice packs, chosen per install at build time: **craft** (how code is written), **rigor** (how work is proven), **ops** (how the machine is operated), **process** (how a task is run), **comms** (how answers are presented). A doctrine rule may tighten a Rule, never repeal one, and the user's own `user-rules.md` outranks it. Pick with `geneseed-build --doctrines craft,rigor` (or `none`), a single rule with `--exclude-rules "process 7"`, in the setup wizard, or through the switches on the console's Constitution page; all five pack files ship on disk either way, so a citation into a pack you left out still resolves |
|
|
168
166
|
| **🤖 Agents** (18) | capability specialists: `reviewer`, `tester`, `architect`, `docs`, `security`, `explorer`, `researcher`, `developer` — plus a debate **council** the `council` skill convenes: `advocate`, `skeptic`, `pragmatist`, `steward`, `visionary`, `user-advocate`, `framer`, `empiricist`, `operator`, `historian` |
|
|
169
|
-
| **🛠 Skills** (
|
|
167
|
+
| **🛠 Skills** (54) | repeatable workflows: brainstorm · plan · **codebase-design** · **domain-modeling** · **wayfinder** · **tickets** · **develop** · **worktree** · debug · **prototype** · refactor · **ponytail** · **forge-mcp** · **bruno-collection-generator** · **bruno-test-writer** · geneseed-code-review · **fresh-eyes** · **security-audit** · **ci-fix** · **deps-audit** · **review-response** · commit · **ship** · **release** · **migrate** · **git-archaeology** · **git-rescue** · repo-map · document-project · **frontend-design** · **prose** · **ingest** · **research** · **teach** · **quiz** · **learn-mode** · handoff · roast-me · **council** · parallel-agents · **workflow** · **wiki** · **geneseed** · **rule** · **profile** · **consolidate-memory** · **skill-forge** · **opencode-theme** · **herdr** · **pipeline** · **daydream** · **react-view-transitions** · **token-report** · **explain-changes** |
|
|
170
168
|
| **🔌 Plugins** (OpenCode) | `geneseed-context` injects project docs *and your machine wiki* every session (and across compaction); `geneseed-learn` distils memory at session end; `geneseed-guard` enforces the safety Laws and protected wiki folders at the tool boundary; `geneseed-workflow` registers the `workflow` tool that runs saved orchestration scripts; `geneseed-notify` sends a native OS notification when a long run finishes; `geneseed-ponytail` holds a minimal-code mode (`/ponytail lite\|full\|ultra\|off`), opt-in, injecting the laziest-that-works ruleset every turn so it doesn't drift; `geneseed-activity` streams what each session is doing to the web console's Activity view |
|
|
171
169
|
| **🧠 Memory** (`memory/`) | one-fact-per-file durable knowledge, indexed by `MEMORY.md` (git-ignored, personal) |
|
|
172
170
|
| **📓 Notebook** (`notebook/`) | the agent's sovereign space — any medium (code, tools, data, notes), self-ruled via a seed-once charter, always git-ignored; only its `.gitignore` is build-asserted |
|
|
@@ -197,26 +195,11 @@ Fourteen themes ship — each a single JSON file in `themes/` carrying voice tok
|
|
|
197
195
|
| 🏟️ **sports** | play-by-play commentary |
|
|
198
196
|
| 🏍 **biker** · 🎤 **commentator** · 🃏 **joker** · 🤖 **marvin** · 😤 **mean** · 🏎 **verstappen** | community-added voices for fun |
|
|
199
197
|
|
|
200
|
-
Pick with `--theme NAME` or via the setup wizard
|
|
198
|
+
Pick with `--theme NAME` or via the setup wizard; upgrades remember it. More in [Themes](docs/concepts/themes.md).
|
|
201
199
|
|
|
202
200
|
### 🪶 Footprint (lean vs full)
|
|
203
201
|
|
|
204
|
-
A second per-install dial
|
|
205
|
-
|
|
206
|
-
| Footprint | The Ethos + Sections 1–2 of `AGENT.md` | Trade-off |
|
|
207
|
-
| --- | --- | --- |
|
|
208
|
-
| **lean** *(default)* | the Ethos, each Rule and each active doctrine rule in their **authored** short form; then pointers to the full text | lighter every turn; rationale is one on-demand read away |
|
|
209
|
-
| **full** | the Ethos, every Rule and every active doctrine rule at complete text **and** rationale, inlined | maximum guidance density; largest per-turn token cost |
|
|
210
|
-
|
|
211
|
-
**Lean is authored, not cut.** The Ethos, every Rule and every doctrine rule carry a hand-written lean form beside their full text (`LEAN` blocks in `src/`), so a rule's lean footprint is decided by its author and not by where its first full stop happens to fall — the earlier first-sentence cut shipped Rule II as one 36-character line and dropped its stop-and-ask mechanism, and shipped a doctrine rule like *Change as little as the task requires.* as six words with no verb to act on.
|
|
212
|
-
|
|
213
|
-
Both footprints put the full text on disk beside `AGENT.md`: `laws/`, `ontology/` and `doctrines/` all ship in the bundle at **full** text whatever the footprint, and **all five pack files ship whether or not the pack was built in** — which is what lets a citation into an inactive pack resolve. So lean is a context/token optimization, **not** a rules cut.
|
|
214
|
-
|
|
215
|
-
Lean is the default: the rationale is one read away and the context it frees is paid back on every turn. Switch to **full** when token cost is a non-issue or you run a smaller model, which leans harder on always-present rationale. Set it with `--footprint lean|full`, the Settings toggle, the per-harness dropdown in the Harnesses tab, or the setup wizard. It's remembered in a `.geneseed-footprint` marker and preserved across rebuilds, on every host (OpenCode, Claude Code, Bob, OpenClaude).
|
|
216
|
-
|
|
217
|
-
Either way the harness is otherwise identical — same files, Rules, capabilities, and guards; lean only relocates the *reasoning* to on-demand (and adds the standalone law, ontology and doctrine files to global/Claude/Bob installs). The one behavioural edge: with the rationale always in context, **full** applies a rule's nuance more reliably on subtle edge cases — or with a weaker model that may not reach for the pointer.
|
|
218
|
-
|
|
219
|
-
Want to check a build before it touches anything real? `geneseed validate --theme NAME --emit MODE --out TARGET` renders and validates into a throwaway sandbox — nothing under `--out`/`--root` is written — and exits non-zero on any problem. Details: [SETUP.md](SETUP.md#dry-run-a-build-validate).
|
|
202
|
+
A second per-install dial sets how much of the constitution the root file carries *inline* every turn — a token-cost knob, not a change to which Rules apply. **lean** (the default) carries each rule's hand-written short form and points to the full text on disk; **full** inlines every rule with its rationale. Every rule is in force either way. More in [Footprint](docs/concepts/footprint.md) and [Choose your setup](docs/guides/choose-your-setup.md).
|
|
220
203
|
|
|
221
204
|
---
|
|
222
205
|
|
|
@@ -292,7 +275,8 @@ Geneseed/
|
|
|
292
275
|
├── themes/ voice token maps (14 themes shipped)
|
|
293
276
|
├── web/ Vite + React UI source; the committed web/dist/ build is what ships
|
|
294
277
|
├── tests/ Node test suites, golden.mjs (every emit config) and mutate.mjs
|
|
295
|
-
├── docs/ guides
|
|
278
|
+
├── docs/ understand/ guides/ concepts/ reference/ — the docs, also the console's
|
|
279
|
+
│ Docs pages; maintainer notes beside them (extending, design-history…);
|
|
296
280
|
│ specs/, reviews/, superpowers/ are local working docs — git-ignored
|
|
297
281
|
├── adapters/ per-host glue (opencode/, claude-code/, bob/, openclaude/)
|
|
298
282
|
└── .github/workflows/ ci.yml (doctor + tests) · publish.yml (npm, OIDC, manual only)
|
|
@@ -324,19 +308,17 @@ geneseed rebuild-all # re-render every registered install in its own theme + m
|
|
|
324
308
|
./geneseed upgrade # just the content refresh (remembers theme + emit mode)
|
|
325
309
|
```
|
|
326
310
|
|
|
327
|
-
**Local edits survive.**
|
|
328
|
-
|
|
329
|
-
Details and precedence rules: [SETUP.md → Upgrade](SETUP.md#upgrade).
|
|
311
|
+
**Local edits survive.** If the agent refined its deployed agent/skill files in place, an upgrade exports that drift to an `improvements/` file inside the install before overwriting. Details: [Upgrade](docs/guides/upgrade.md).
|
|
330
312
|
|
|
331
313
|
## 📚 Documentation
|
|
332
314
|
|
|
333
315
|
| Page | Read it when… |
|
|
334
316
|
| --- | --- |
|
|
335
|
-
| **[
|
|
317
|
+
| **[docs/](docs/README.md)** | Using Geneseed — Understand, Guides (install, setup choices, MCP, wiki, upgrade, uninstall…), Concepts and Reference (CLI, environment, troubleshooting, glossary) |
|
|
336
318
|
| **[DESIGN.md](DESIGN.md)** | Changing structure — the spec and the decisions behind it |
|
|
337
319
|
| **[SHIPPED.md](SHIPPED.md)** | What's in the harness today — capabilities ↔ the spec behind each |
|
|
320
|
+
| **[docs/extending.md](docs/extending.md)** | Adding to the harness — what each kind of addition costs |
|
|
338
321
|
| **[docs/web-ui.md](docs/web-ui.md)** | The web console — every view, the launch/daemon/PWA surface, security model |
|
|
339
|
-
| **[docs/wiki.md](docs/wiki.md)** | The machine wiki — your personal knowledge base, setup and writing model |
|
|
340
322
|
| **[docs/token-footprint.md](docs/token-footprint.md)** | What the harness costs in context-window tokens, per host |
|
|
341
323
|
| **[docs/opencode-plugin-setup.md](docs/opencode-plugin-setup.md)** | Installing the OpenCode plugins — the one-time wiring they all share |
|
|
342
324
|
| **[CHANGELOG.md](CHANGELOG.md)** | What changed between versions |
|
package/SHIPPED.md
CHANGED
|
@@ -20,7 +20,7 @@ historical references, not files distributed with the repo.
|
|
|
20
20
|
> **On version numbers.** [`harness.config.json`](harness.config.json)'s `version` is a
|
|
21
21
|
> human-readable label only. The canonical identity of an installed harness is the
|
|
22
22
|
> **source fingerprint** stamped in `.geneseed-version` (see `geneseed version`), not the
|
|
23
|
-
> string. Current label: **3.
|
|
23
|
+
> string. Current label: **3.11.0**.
|
|
24
24
|
|
|
25
25
|
## Capabilities
|
|
26
26
|
|
|
@@ -29,7 +29,7 @@ Every row below is present in the tree today; "Spec" names the design record.
|
|
|
29
29
|
| Capability | What it is | Spec |
|
|
30
30
|
| --- | --- | --- |
|
|
31
31
|
| **Themed generator** | One neutral `src/` → 14 themed bundles via `geneseed-build` (zero dependencies); structure stays theme-independent | [DESIGN.md](DESIGN.md) |
|
|
32
|
-
| **Laws / Agents / Skills / Memory / Notebook** | 9 laws, 18 agents,
|
|
32
|
+
| **Laws / Agents / Skills / Memory / Notebook** | 9 laws, 18 agents, 54 skills, the memory convention, and the agent's sovereign notebook | `2026-06-11-notebook-sovereign-space` · `2026-06-10-notebook-agent-own-space` |
|
|
33
33
|
| **Three-tier constitution** | The governance surface splits into an always-on **Ontology** (Telos, Evidence, Decisions, Conduct — the Pact absorbed into Telos), the nine always-on **Invariants**, and five toggleable **Doctrine** packs (craft, rigor, ops, process, comms) addressed `<pack> <n>`. Every rule carries a permanent id; its number is its position, computed at render time, and a citation renders as the rule's principle name. Packs are chosen at build time with `--doctrines` or the setup wizard; the whole catalogue ships on disk either way, so a citation into an inactive pack still resolves. Precedence, in order: Ontology + Invariants, then the user's `user-rules.md`, then the active Doctrines, then `PROFILE.md`. `doctor`'s `constitutionProblems` gates rule ids (declared, unique, never a retired one), the per-rule Principle column, every `{{LAW:<id>}}` / `{{DOCTRINE:<id>}}` citation in `src/`, and the rule that an always-on tier may never cite a toggleable one | `2026-08-19-three-tier-constitution-design` |
|
|
34
34
|
| **`doctor`** | One check: unresolved tokens, dead/non-hermetic links, theme-key parity, authoring gates, rendered-bundle drift | `2026-06-07-theme-aware-doctor-diff` |
|
|
35
35
|
| **`diff` + improvements export** | Deployed-vs-source drift report; export an `improvements.md` back-port | `2026-06-12-improvements-export` |
|
package/adapters/bob/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 🤖 IBM Bob adapter
|
|
2
2
|
|
|
3
|
-
> [← Back to README](../../README.md) · [
|
|
3
|
+
> [← Back to README](../../README.md) · [Install guide](../../docs/guides/install.md) · [Claude Code adapter](../claude-code/README.md) · [OpenCode adapter](../opencode/README.md)
|
|
4
4
|
|
|
5
5
|
[IBM Bob](https://bob.ibm.com) is **Claude-Code-shaped**: a project `.bob/`
|
|
6
6
|
layer, an `AGENTS.md` instructions file, `SKILL.md` skills, subagents, and a
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 🪝 Claude Code adapter
|
|
2
2
|
|
|
3
|
-
> [← Back to README](../../README.md) · [
|
|
3
|
+
> [← Back to README](../../README.md) · [Install guide](../../docs/guides/install.md) · [OpenCode adapter](../opencode/README.md)
|
|
4
4
|
|
|
5
5
|
Optional. Claude Code supports lifecycle **hooks**, so a team using it can make
|
|
6
6
|
parts of the harness fire automatically instead of relying on agent
|
|
@@ -14,10 +14,11 @@ bin/geneseed-hook.mjs …` — so at user scope they would fire and fail in ever
|
|
|
14
14
|
repo that doesn't vendor the harness. A generated global install wires
|
|
15
15
|
absolute-path hooks instead — `geneseed setup` does that for you.) It:
|
|
16
16
|
|
|
17
|
-
- on **PreToolUse** (matcher `Bash`),
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
- on **PreToolUse** (matcher `Bash`), runs `geneseed-hook git-gate` — the tool-boundary
|
|
18
|
+
half of Doctrine process 5 (*consent before every commit and push*) and of the
|
|
19
|
+
destructive-git Rule. Drop the `process` pack (or exclude process 5) and the hook stays,
|
|
20
|
+
wired with `--no-consent`: commits and pushes pass without asking, while the
|
|
21
|
+
invariant-territory refusals (force-push, `reset --hard`) stay in every build. The hook inspects
|
|
21
22
|
command and, when it runs a `git commit` or `git push` (bare, flagged, `-C <path>`,
|
|
22
23
|
or chained like `git add . && git commit … && git push`), returns
|
|
23
24
|
`permissionDecision: "ask"` so Claude Code **prompts on every such call**. Crucially
|
|
@@ -31,27 +32,31 @@ absolute-path hooks instead — `geneseed setup` does that for you.) It:
|
|
|
31
32
|
`create_or_update_file` / `merge_pull_request`, which bypass Bash. To gate those too,
|
|
32
33
|
widen the matcher to `"Bash|mcp__github__.*"` — `git-gate` ignores any payload it
|
|
33
34
|
doesn't recognise as a commit/push, so over-matching the tool surface is harmless.
|
|
35
|
+
- on **PreToolUse** (matcher `Write|Edit|MultiEdit|NotebookEdit`), runs
|
|
36
|
+
`geneseed-hook rule-gate` — refuses a write that would put a credential into a tracked
|
|
37
|
+
file, and asks first on the first write to `user-rules.md` or a memory file (whether
|
|
38
|
+
something you want kept is a rule or a fact is your call). Ordinary edits pass.
|
|
34
39
|
- on **SessionStart** (`startup`/`clear` only — a fresh context), prints `AGENT.md`
|
|
35
|
-
so the harness is in context from the first turn, then runs `
|
|
40
|
+
so the harness is in context from the first turn, then runs `geneseed-hook context` to
|
|
36
41
|
**inject the project context** directly into the session — so the project-context load is
|
|
37
42
|
by the hook, not left to the agent to remember (lazy entries are only listed). On
|
|
38
|
-
**`resume`** it runs `
|
|
43
|
+
**`resume`** it runs `geneseed-hook context` *without* re-`cat`ting `AGENT.md`: the resumed
|
|
39
44
|
conversation already carries the harness, so re-injecting the static file each resume
|
|
40
45
|
is pure token waste — only the (possibly changed) project context is refreshed;
|
|
41
|
-
- on **Stop**, runs `
|
|
46
|
+
- on **Stop**, runs `geneseed-hook learn` over the session to capture durable memories.
|
|
42
47
|
Claude Code pipes the hook payload (with the session's `transcript_path`) to the
|
|
43
48
|
command on stdin; `learn` reads that, flattens the transcript, distils new
|
|
44
49
|
memories, and **writes them into the bundle's `memory/` while updating
|
|
45
50
|
`MEMORY.md`** — deduping against what is already stored. No `< /dev/null` and no
|
|
46
51
|
redirection: the stdin payload is the whole point.
|
|
47
|
-
- on **SubagentStop**, runs the *same* `
|
|
52
|
+
- on **SubagentStop**, runs the *same* `geneseed-hook learn` command. `learn` reads the
|
|
48
53
|
payload's `hook_event_name`, sees a subagent dispatch, and routes it to the
|
|
49
54
|
per-agent lesson path instead of the shared store: it distils at most one durable
|
|
50
55
|
lesson and appends it to `memory/agents/<agent-name>.md` (capped, newest kept). If
|
|
51
56
|
the payload does not name the subagent, the step is a silent no-op — never a
|
|
52
57
|
crash, never a wrong write. This is the parity twin of the OpenCode learn plugin's
|
|
53
58
|
child-session branch.
|
|
54
|
-
- on **PreCompact**, runs the same `
|
|
59
|
+
- on **PreCompact**, runs the same `geneseed-hook learn` once more. `learn` distils the
|
|
55
60
|
*tail* of the transcript, so per-turn Stop is a sliding window over the session —
|
|
56
61
|
and auto-compaction is the moment that window is about to be summarised away.
|
|
57
62
|
This captures memory *before* the summary; the SessionStart `compact` matcher
|
|
@@ -68,11 +73,11 @@ the commands are identical (`node bin/geneseed-hook.mjs …`).
|
|
|
68
73
|
|
|
69
74
|
Why inject rather than instruct? The constitution tells the agent to read the project
|
|
70
75
|
context at startup, but startup rituals are exactly what agents skip. The
|
|
71
|
-
`
|
|
76
|
+
`geneseed-hook context` hook removes the choice: the eager files' contents land in
|
|
72
77
|
context before the first turn regardless of agent discipline. On tools without
|
|
73
78
|
hooks or plugins, the AGENT.md prose still carries the rule.
|
|
74
79
|
|
|
75
|
-
> **Auto-discovery (parity with OpenCode).** `
|
|
80
|
+
> **Auto-discovery (parity with OpenCode).** `geneseed-hook context` no longer needs a
|
|
76
81
|
> hand-filled `context.json`: with no manifest (or just the empty stub) it
|
|
77
82
|
> **auto-discovers the repo's docs by convention** — root `AGENTS.md`/`AGENT.md`/
|
|
78
83
|
> `CLAUDE.md`/`README.md`/`CONTRIBUTING.md` injected eager, `docs/`/`adr/`/monorepo
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 🦀 OpenClaude adapter
|
|
2
2
|
|
|
3
|
-
> [← Back to README](../../README.md) · [
|
|
3
|
+
> [← Back to README](../../README.md) · [Install guide](../../docs/guides/install.md) · [Claude Code adapter](../claude-code/README.md) · [OpenCode adapter](../opencode/README.md)
|
|
4
4
|
|
|
5
5
|
[OpenClaude](https://openclaude.gitlawb.com/) (`@gitlawb/openclaude`, binary
|
|
6
6
|
`openclaude`) is an open-source coding-agent CLI that "originated from the Claude
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 🔌 OpenCode adapter
|
|
2
2
|
|
|
3
|
-
> [← Back to README](../../README.md) · [
|
|
3
|
+
> [← Back to README](../../README.md) · [Install guide](../../docs/guides/install.md) · [How OpenCode loads](HOW-OPENCODE-LOADS.md) · [Global harness spec](GLOBAL-HARNESS-SPEC.md)
|
|
4
4
|
|
|
5
5
|
[OpenCode](https://opencode.ai) is `AGENTS.md`-native and has first-class
|
|
6
6
|
**subagents** and **commands**, so Geneseed fits it cleanly. Pick the depth you
|
|
@@ -211,7 +211,7 @@ the harness live entirely in the global config dir with zero per-repo files.
|
|
|
211
211
|
install). Per wiki: eager entries inject in full, lazy entries list, and the
|
|
212
212
|
`conventions` / `inbox` / `protected` metadata is surfaced — on the **same**
|
|
213
213
|
budgets, compaction and transform paths as the project context. Schema and
|
|
214
|
-
behaviour: [
|
|
214
|
+
behaviour: [the wiki guide](../../docs/guides/wiki.md).
|
|
215
215
|
|
|
216
216
|
It needs no model, writes nothing, skips the learn plugin's throwaway sessions, and
|
|
217
217
|
swallows every error. Output mirrors `geneseed-hook context`.
|
|
@@ -468,9 +468,9 @@ OpenCode runs, so the command has to resolve — the `uvx` form above needs only
|
|
|
468
468
|
call). No uv? `pipx install markitdown-mcp` and swap the command to `["markitdown-mcp"]`.
|
|
469
469
|
Or drop the block entirely — the skill falls back to a CLI converter (MarkItDown /
|
|
470
470
|
Pandoc / Docling) and never installs one silently. Listed but not connecting? The
|
|
471
|
-
command isn't on PATH — see [
|
|
471
|
+
command isn't on PATH — see [the MCP guide](../../docs/guides/mcp.md).
|
|
472
472
|
Full runbook, including the corporate-TLS (`UV_SYSTEM_CERTS`) step and the OCR extras:
|
|
473
|
-
[
|
|
473
|
+
[the MCP guide](../../docs/guides/mcp.md).
|
|
474
474
|
|
|
475
475
|
## Optional add-on — git-worktree isolation (third-party, not vendored)
|
|
476
476
|
|
package/bin/build-driver.mjs
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* which the CLI verbs import too; this file only hands it argv. Keeping the entry this thin is
|
|
5
5
|
* what lets a `js/` module import the driver without running it on the importer's argv.
|
|
6
6
|
*/
|
|
7
|
+
// FIRST, before anything it could fail to run: an old Node gets one sentence, not a stack trace.
|
|
8
|
+
import '../js/lib/node-floor.mjs';
|
|
7
9
|
import { main } from '../js/build/driver.mjs';
|
|
8
10
|
|
|
9
11
|
process.exitCode = main(process.argv.slice(2));
|
package/bin/geneseed-cli.mjs
CHANGED
|
@@ -54,6 +54,8 @@
|
|
|
54
54
|
// table below now holds one LOADER per row (`() => import(…).then(m => m.cmdX)`), so a verb
|
|
55
55
|
// loads its slice of the tree and no other verb's. The spawn allow-list gate still sees the
|
|
56
56
|
// whole graph: `tests/unit/hook_cli.test.mjs`'s `importClosure` follows both import spellings.
|
|
57
|
+
// FIRST, before anything it could fail to run: an old Node gets one sentence, not a stack trace.
|
|
58
|
+
import '../js/lib/node-floor.mjs';
|
|
57
59
|
import { cliSpec, printHelp, printVerbList } from '../js/ui/cli.mjs';
|
|
58
60
|
import { parseIntStrict } from '../js/lib/text.mjs';
|
|
59
61
|
import { printErr } from '../js/lib/fs.mjs';
|
|
@@ -289,6 +291,21 @@ async function main(argv) {
|
|
|
289
291
|
validate: "check the source tree without emitting (the generator's --validate-only)",
|
|
290
292
|
});
|
|
291
293
|
}
|
|
294
|
+
// A DEAD HOOK SHIM, SAID ON EVERY RUN. The shim is machine-wide, so one stale write turns off
|
|
295
|
+
// every hook of every Claude-shaped install, and the hooks fail into a channel nobody reads —
|
|
296
|
+
// `doctor` was the only thing that looked. stderr, so no verb's stdout moves; skipped for help
|
|
297
|
+
// and for scripted callers that opt out. Not in `bin/geneseed-hook.mjs`: a dead shim means
|
|
298
|
+
// that binary is never reached, and its import graph is paid on every tool call.
|
|
299
|
+
if (process.env.GENESEED_NO_SHIM_CHECK !== '1' && verb !== 'help'
|
|
300
|
+
&& !argv.some((t) => t === '-h' || t === '--help')) {
|
|
301
|
+
const { shimDead } = await import('../js/hosts/settings.mjs');
|
|
302
|
+
const dead = shimDead();
|
|
303
|
+
if (dead.length) {
|
|
304
|
+
printErr(`[geneseed] ⚠ hooks are off on this machine: the hook shim points at `
|
|
305
|
+
+ `${dead.join(', ')}, which no longer exists. Fix: geneseed rebuild-all
|
|
306
|
+
`);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
292
309
|
// `validate` — the generator's `--validate-only`, and the one verb this entry answers that is NOT
|
|
293
310
|
// in the table above. It is dispatched here, before the lookup, for a reason that is a
|
|
294
311
|
// property of the gates rather than a preference:
|
package/bin/geneseed-hook.mjs
CHANGED
|
@@ -37,6 +37,8 @@
|
|
|
37
37
|
* every Geneseed hook returns 0 and signals through stdout — so "did nothing" and "worked"
|
|
38
38
|
* are the same observation.
|
|
39
39
|
*/
|
|
40
|
+
// FIRST, before anything it could fail to run: an old Node gets one sentence, not a stack trace.
|
|
41
|
+
import '../js/lib/node-floor.mjs';
|
|
40
42
|
import { cmdContext, cmdGitGate, cmdRuleGate, cmdToolGate, cmdLearn } from '../js/hosts/hooks.mjs';
|
|
41
43
|
// Not a new module on the hot path: `js/hosts/hooks.mjs` above already imports
|
|
42
44
|
// `js/lib/fs.mjs`, so this edge names a file the process has already loaded.
|
package/docs/README.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Geneseed documentation
|
|
2
|
+
|
|
3
|
+
[← Back to README](../README.md)
|
|
4
|
+
|
|
5
|
+
**New to agent harnesses?** Read **Understand** first — four short pages, about ten minutes, and every other page assumes them. The same pages open the **Docs** tab of the web console (`geneseed web`), which adds an interactive map of your own install and filters host-specific passages to the tool you use.
|
|
6
|
+
|
|
7
|
+
## 1 · Understand
|
|
8
|
+
|
|
9
|
+
1. **[What a harness is](understand/harness.md)** — git hooks + CI + a runbook, but for your AI agent.
|
|
10
|
+
2. **[What lands on your machine](understand/on-your-machine.md)** — every file and hook an install writes, what it does for you, what it costs, how to turn it off.
|
|
11
|
+
3. **[A day with the harness](understand/a-day.md)** — the moments you will actually meet: a push that asks first, a skill, a delegation, a memory.
|
|
12
|
+
4. **[Enforced vs. asked](understand/enforced-vs-asked.md)** — what is guaranteed by code, and what the model is only asked to do.
|
|
13
|
+
|
|
14
|
+
## 2 · Guides
|
|
15
|
+
|
|
16
|
+
| Guide | When |
|
|
17
|
+
| --- | --- |
|
|
18
|
+
| [Install](guides/install.md) | First time — npx, a clone, or a specific host |
|
|
19
|
+
| [Choose your setup](guides/choose-your-setup.md) | Theme, doctrine packs, one rule at a time, footprint, posture, mode |
|
|
20
|
+
| [Verify it works](guides/verify.md) | Right after installing, or when something feels off |
|
|
21
|
+
| [Upgrade](guides/upgrade.md) | Getting a new version onto every install |
|
|
22
|
+
| [Uninstall](guides/uninstall.md) | Removing an install — and what stays behind |
|
|
23
|
+
| [Project context](guides/project-context.md) | Choosing which of a repo's docs the agent loads |
|
|
24
|
+
| [Connect your wiki](guides/wiki.md) | Giving the agent your own notes, machine-wide |
|
|
25
|
+
| [MCP servers](guides/mcp.md) | MarkItDown, GitLab, Filesystem — and reading non-markdown docs |
|
|
26
|
+
| [Run geneseed from anywhere](guides/run-anywhere.md) | Putting the CLI on your PATH from a clone |
|
|
27
|
+
| [Start the web console at login](guides/autostart.md) | Keeping the console running |
|
|
28
|
+
| [Run in CI / headless](guides/headless.md) | OpenCode without a terminal |
|
|
29
|
+
| [Add git-worktree isolation](guides/worktree.md) | OpenCode, optional third-party add-on |
|
|
30
|
+
| [Migrate from a clone to npm](guides/migrate.md) | Moving an old clone install to the npm package |
|
|
31
|
+
|
|
32
|
+
## 3 · Concepts
|
|
33
|
+
|
|
34
|
+
[Hosts](concepts/hosts.md) · [Rules](concepts/rules.md) · [Agents](concepts/agents.md) · [Skills](concepts/skills.md) · [Hooks](concepts/hooks.md) · [Memory](concepts/memory.md) · [Notebook](concepts/notebook.md) · [Footprint](concepts/footprint.md) · [Collaboration](concepts/collaboration.md) · [Foreman mode](concepts/foreman-mode.md) · [Exclusions](concepts/exclusions.md) · [Themes](concepts/themes.md) · [Code intelligence (LSP)](concepts/lsp.md)
|
|
35
|
+
|
|
36
|
+
## 4 · Reference
|
|
37
|
+
|
|
38
|
+
[CLI](reference/cli.md) · [Environment variables](reference/environment.md) · [Glossary](reference/glossary.md) · [Troubleshooting](reference/troubleshooting.md) (by symptom) · [OpenCode plugins](reference/opencode-plugins.md) · [About](reference/about.md)
|
|
39
|
+
|
|
40
|
+
## For contributors
|
|
41
|
+
|
|
42
|
+
[Extending Geneseed](extending.md) — what each kind of addition costs · [DESIGN.md](../DESIGN.md) · [Design history](design-history.md) · [Token footprint](token-footprint.md) · [Web console internals](web-ui.md) · [OpenCode plugin wiring](opencode-plugin-setup.md) · [Candidate hosts](candidate-hosts.md) · adapters: [OpenCode](../adapters/opencode/README.md), [Claude Code](../adapters/claude-code/README.md), [Bob](../adapters/bob/README.md), [OpenClaude](../adapters/openclaude/README.md)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: concepts
|
|
3
|
+
order: 3
|
|
4
|
+
title: "Agents"
|
|
5
|
+
kind: "concept"
|
|
6
|
+
link: {"hash": "#/section/agents", "label": "Browse the catalog →"}
|
|
7
|
+
---
|
|
8
|
+
An **agent** is a specialist the main session can hand a piece of work to. Each one is a markdown file with its own instructions, installed where your host looks for subagents (`agents/` in the install). It runs in its own context and returns a result, so its reading and searching does not fill your conversation.
|
|
9
|
+
|
|
10
|
+
> **You already know this:** handing a ticket to a colleague. You do not explain how to review code to the reviewer — you say what to review, and they come back with findings.
|
|
11
|
+
|
|
12
|
+
{N_AGENTS} agents ship, in two groups.
|
|
13
|
+
|
|
14
|
+
### The specialists
|
|
15
|
+
|
|
16
|
+
| Agent | What it does |
|
|
17
|
+
| --- | --- |
|
|
18
|
+
| `explorer` | reads and searches widely in a throwaway context, returns only distilled findings |
|
|
19
|
+
| `researcher` | searches the open web, cross-checks every claim against two sources, returns sourced findings |
|
|
20
|
+
| `architect` | produces a design or implementation plan before code is written |
|
|
21
|
+
| `developer` | implements a scoped change in an isolated worktree, self-checked, ready for the tester |
|
|
22
|
+
| `tester` | writes, runs and diagnoses tests |
|
|
23
|
+
| `reviewer` | reviews a change for correctness and quality before it merges |
|
|
24
|
+
| `security` | audits changes that touch the security surface |
|
|
25
|
+
| `docs` | writes and updates user-facing documentation after code lands |
|
|
26
|
+
|
|
27
|
+
### The council
|
|
28
|
+
|
|
29
|
+
Ten read-only debaters — `advocate`, `skeptic`, `pragmatist`, `steward`, `operator`, `visionary`, `framer`, `empiricist`, `historian`, `user-advocate` — each arguing one fixed stance. You do not call them one by one: the **council** [skill](skills.md) seats the ones that actually disagree on your question, runs bounded rounds of debate, and hands you a verdict with the strongest dissent kept verbatim. The council advises; it writes no code.
|
|
30
|
+
|
|
31
|
+
### Specialists, not folder owners
|
|
32
|
+
|
|
33
|
+
An agent is picked by **what the work needs**, not by **where the file lives**. There is no "agent for `src/api/`": a change to any folder goes to the `developer`, and its review to the `reviewer`. You can name one ("have the reviewer look at this"), or let the main session route the request to the right specialist itself.
|
|
34
|
+
|
|
35
|
+
In [foreman mode](foreman-mode.md) the session chains several of them into a pipeline — explorer, developer and tester, plus whatever specialists the task needs.
|
|
36
|
+
|
|
37
|
+
### Agents learn too
|
|
38
|
+
|
|
39
|
+
When a subagent finishes, the learn step can record a lesson for that agent alone, in `memory/agents/<name>.md` — one bullet per lesson, capped so it never grows unbounded. The next time that agent runs, it starts with what it learned. See [Memory](memory.md). (Not on Bob, which has no subagent-finished event.)
|
|
40
|
+
|
|
41
|
+
<!--harness:opencode-->
|
|
42
|
+
*(OpenCode only)*
|
|
43
|
+
OpenCode also has a **primary agent** — the one your session talks to directly. Geneseed installs it alongside the specialists; the specialists are subagents it delegates to.
|
|
44
|
+
<!--/harness-->
|