geneseed 2.0.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 +938 -0
- package/DESIGN.md +1423 -0
- package/LICENSE +21 -0
- package/QUICKSTART.md +48 -0
- package/README.md +336 -0
- package/SETUP.md +1027 -0
- package/SHIPPED.md +70 -0
- package/adapters/bob/README.md +100 -0
- package/adapters/claude-code/README.md +101 -0
- package/adapters/claude-code/settings.json +47 -0
- package/adapters/claude-code/skills/geneseed/SKILL.md +72 -0
- package/adapters/copilot/README.md +76 -0
- package/adapters/opencode/GLOBAL-HARNESS-SPEC.md +434 -0
- package/adapters/opencode/HOW-OPENCODE-LOADS.md +158 -0
- package/adapters/opencode/README.md +582 -0
- package/adapters/opencode/agents/orchestrator.md +25 -0
- package/adapters/opencode/opencode.json +44 -0
- package/adapters/opencode/plugins/geneseed-activity.js +430 -0
- package/adapters/opencode/plugins/geneseed-context.js +876 -0
- package/adapters/opencode/plugins/geneseed-guard.js +290 -0
- package/adapters/opencode/plugins/geneseed-learn.js +396 -0
- package/adapters/opencode/plugins/geneseed-notify.js +142 -0
- package/adapters/opencode/plugins/geneseed-ponytail.js +148 -0
- package/adapters/opencode/plugins/geneseed-workflow.js +183 -0
- package/adapters/opencode/workflows/_runtime.js +277 -0
- package/adapters/opencode/workflows/council.js +64 -0
- package/adapters/opencode/workflows/dispatch.js +89 -0
- package/adapters/opencode/workflows/research-plan-implement.js +43 -0
- package/adapters/opencode/workflows/review.js +57 -0
- package/bin/geneseed-cli.mjs +412 -0
- package/bin/geneseed-hook.mjs +129 -0
- package/bin/geneseed.mjs +1086 -0
- package/docs/declined.md +149 -0
- package/docs/limits.md +270 -0
- package/docs/opencode-plugin-setup.md +64 -0
- package/docs/token-footprint.md +68 -0
- package/docs/web/_groups.json +45 -0
- package/docs/web/about.md +6 -0
- package/docs/web/adapters-claude-code.md +8 -0
- package/docs/web/adapters-opencode-loads.md +8 -0
- package/docs/web/adapters-opencode-spec.md +8 -0
- package/docs/web/adapters-opencode.md +8 -0
- package/docs/web/agents.md +8 -0
- package/docs/web/authoring.md +11 -0
- package/docs/web/autostart.md +9 -0
- package/docs/web/claude-hooks.md +36 -0
- package/docs/web/cli.md +6 -0
- package/docs/web/collaboration.md +27 -0
- package/docs/web/configure-wiki.md +9 -0
- package/docs/web/design.md +7 -0
- package/docs/web/env-knobs.md +9 -0
- package/docs/web/exclusions.md +26 -0
- package/docs/web/first-session.md +28 -0
- package/docs/web/footprint.md +31 -0
- package/docs/web/foreman-mode.md +33 -0
- package/docs/web/glossary.md +6 -0
- package/docs/web/harnesses.md +28 -0
- package/docs/web/headless.md +9 -0
- package/docs/web/ingest-docs.md +9 -0
- package/docs/web/install-paths.md +9 -0
- package/docs/web/install-quick.md +35 -0
- package/docs/web/lsp-overview.md +37 -0
- package/docs/web/mcp-claude-code.md +10 -0
- package/docs/web/mcp-filesystem.md +9 -0
- package/docs/web/mcp-gitlab.md +9 -0
- package/docs/web/mcp-markitdown.md +9 -0
- package/docs/web/mcp-overview.md +34 -0
- package/docs/web/mcp-trouble.md +9 -0
- package/docs/web/mcp-verify.md +9 -0
- package/docs/web/memory.md +7 -0
- package/docs/web/migrate.md +39 -0
- package/docs/web/model.md +20 -0
- package/docs/web/notebook.md +7 -0
- package/docs/web/pipelines.md +24 -0
- package/docs/web/plugin-activity.md +23 -0
- package/docs/web/plugin-context.md +26 -0
- package/docs/web/plugin-guard.md +24 -0
- package/docs/web/plugin-learn.md +27 -0
- package/docs/web/plugin-notify.md +24 -0
- package/docs/web/plugin-ponytail.md +23 -0
- package/docs/web/plugin-setup.md +7 -0
- package/docs/web/plugin-workflow.md +24 -0
- package/docs/web/plugins.md +17 -0
- package/docs/web/project-context.md +9 -0
- package/docs/web/rules.md +8 -0
- package/docs/web/run-anywhere.md +9 -0
- package/docs/web/self-improve.md +8 -0
- package/docs/web/setup-choices.md +39 -0
- package/docs/web/skills.md +8 -0
- package/docs/web/themes-author.md +8 -0
- package/docs/web/themes.md +9 -0
- package/docs/web/token-footprint.md +7 -0
- package/docs/web/trouble.md +38 -0
- package/docs/web/upgrade.md +9 -0
- package/docs/web/verify.md +30 -0
- package/docs/web/wiki.md +7 -0
- package/docs/web/worktree.md +10 -0
- package/docs/web-ui.md +144 -0
- package/docs/wiki.md +43 -0
- package/geneseed +39 -0
- package/geneseed.cmd +34 -0
- package/harness.config.json +6 -0
- package/js/anim.mjs +326 -0
- package/js/catalog.mjs +112 -0
- package/js/checkout.mjs +88 -0
- package/js/cli-table.json +1034 -0
- package/js/cli.mjs +498 -0
- package/js/diff.mjs +384 -0
- package/js/doctor.mjs +1364 -0
- package/js/emit.mjs +1373 -0
- package/js/excludes.mjs +271 -0
- package/js/generate.mjs +379 -0
- package/js/hooks.mjs +1026 -0
- package/js/hosts.mjs +253 -0
- package/js/installs.mjs +378 -0
- package/js/inventory.mjs +175 -0
- package/js/lib/fs.mjs +913 -0
- package/js/lib/proc.mjs +28 -0
- package/js/lib/udiff.mjs +275 -0
- package/js/link.mjs +286 -0
- package/js/mcp.mjs +335 -0
- package/js/memory.mjs +108 -0
- package/js/menu.mjs +118 -0
- package/js/migrate.mjs +251 -0
- package/js/native.mjs +426 -0
- package/js/opencode.mjs +325 -0
- package/js/registry.mjs +110 -0
- package/js/render.mjs +282 -0
- package/js/settings.mjs +924 -0
- package/js/setup.mjs +492 -0
- package/js/status.mjs +281 -0
- package/js/themes.mjs +195 -0
- package/js/tui.mjs +444 -0
- package/js/uninstall.mjs +1137 -0
- package/js/update.mjs +910 -0
- package/js/web/actions.mjs +868 -0
- package/js/web/activity.mjs +284 -0
- package/js/web/api.mjs +873 -0
- package/js/web/docs.mjs +531 -0
- package/js/web/graph.mjs +0 -0
- package/js/web/jobs.mjs +480 -0
- package/js/web/server.mjs +1135 -0
- package/package.json +54 -0
- package/registry.json +474 -0
- package/src/AGENT.md.tmpl +390 -0
- package/src/agents/_template.md +76 -0
- package/src/agents/advocate.md +36 -0
- package/src/agents/architect.md +55 -0
- package/src/agents/developer.md +66 -0
- package/src/agents/docs.md +54 -0
- package/src/agents/empiricist.md +39 -0
- package/src/agents/explorer.md +54 -0
- package/src/agents/framer.md +36 -0
- package/src/agents/historian.md +51 -0
- package/src/agents/operator.md +37 -0
- package/src/agents/pragmatist.md +37 -0
- package/src/agents/reviewer.md +52 -0
- package/src/agents/security.md +57 -0
- package/src/agents/skeptic.md +48 -0
- package/src/agents/steward.md +36 -0
- package/src/agents/tester.md +54 -0
- package/src/agents/user-advocate.md +36 -0
- package/src/agents/visionary.md +36 -0
- package/src/laws/universal.md +387 -0
- package/src/memory/README.md +109 -0
- package/src/memory/gitignore +6 -0
- package/src/modes/README.md +26 -0
- package/src/modes/direct.md +2 -0
- package/src/modes/foreman.md +19 -0
- package/src/notebook/README.md +39 -0
- package/src/notebook/gitignore +7 -0
- package/src/postures/README.md +31 -0
- package/src/postures/artisan.md +14 -0
- package/src/postures/assistant.md +12 -0
- package/src/postures/expert.md +11 -0
- package/src/postures/mentor.md +11 -0
- package/src/postures/peer.md +12 -0
- package/src/skills/_template.md +47 -0
- package/src/skills/brainstorm.md +28 -0
- package/src/skills/clarify.md +28 -0
- package/src/skills/codebase-design.md +44 -0
- package/src/skills/commit.md +48 -0
- package/src/skills/council.md +34 -0
- package/src/skills/crash-course.md +28 -0
- package/src/skills/daydream/.claude-plugin/plugin.json +9 -0
- package/src/skills/daydream/SKILL.md +74 -0
- package/src/skills/daydream/VENDOR.md +25 -0
- package/src/skills/daydream/critic-prompt.md +38 -0
- package/src/skills/daydream/instructions.md +422 -0
- package/src/skills/daydream/synthesizer-prompt.md +41 -0
- package/src/skills/debug.md +37 -0
- package/src/skills/decode.md +28 -0
- package/src/skills/develop.md +29 -0
- package/src/skills/document-project.md +79 -0
- package/src/skills/domain-modeling.md +38 -0
- package/src/skills/drill.md +28 -0
- package/src/skills/feynman.md +26 -0
- package/src/skills/forge-mcp.md +48 -0
- package/src/skills/fresh-eyes.md +29 -0
- package/src/skills/frontend-design.md +58 -0
- package/src/skills/gap-detector.md +27 -0
- package/src/skills/geneseed-code-review.md +33 -0
- package/src/skills/geneseed.md +29 -0
- package/src/skills/git-archaeology.md +47 -0
- package/src/skills/git-rescue.md +68 -0
- package/src/skills/handoff.md +29 -0
- package/src/skills/herdr.md +164 -0
- package/src/skills/ingest.md +49 -0
- package/src/skills/learning-path.md +26 -0
- package/src/skills/migrate.md +45 -0
- package/src/skills/opencode-theme.md +52 -0
- package/src/skills/parallel-agents.md +28 -0
- package/src/skills/pipeline.md +52 -0
- package/src/skills/plan.md +45 -0
- package/src/skills/ponytail.md +29 -0
- package/src/skills/profile.md +58 -0
- package/src/skills/prose.md +42 -0
- package/src/skills/prototype.md +44 -0
- package/src/skills/react-view-transitions/AGENTS.md +955 -0
- package/src/skills/react-view-transitions/README.md +42 -0
- package/src/skills/react-view-transitions/SKILL.md +320 -0
- package/src/skills/react-view-transitions/VENDOR.md +16 -0
- package/src/skills/react-view-transitions/metadata.json +12 -0
- package/src/skills/react-view-transitions/references/css-recipes.md +242 -0
- package/src/skills/react-view-transitions/references/implementation.md +182 -0
- package/src/skills/react-view-transitions/references/nextjs.md +176 -0
- package/src/skills/react-view-transitions/references/patterns.md +262 -0
- package/src/skills/refactor.md +32 -0
- package/src/skills/release.md +43 -0
- package/src/skills/repo-map.md +36 -0
- package/src/skills/research.md +42 -0
- package/src/skills/review-response.md +36 -0
- package/src/skills/roast-me.md +28 -0
- package/src/skills/rule.md +100 -0
- package/src/skills/ship.md +49 -0
- package/src/skills/tdd.md +31 -0
- package/src/skills/tickets.md +44 -0
- package/src/skills/token-report/SKILL.md +76 -0
- package/src/skills/token-report/VENDOR.md +23 -0
- package/src/skills/token-report/scripts/token_report.mjs +1301 -0
- package/src/skills/wayfinder.md +49 -0
- package/src/skills/wiki.md +68 -0
- package/src/skills/workflow.md +38 -0
- package/themes/README.md +69 -0
- package/themes/_TEMPLATE.json +147 -0
- package/themes/biker.json +147 -0
- package/themes/commentator.json +147 -0
- package/themes/cyberpunk.json +147 -0
- package/themes/gamer.json +147 -0
- package/themes/imperial.json +147 -0
- package/themes/joker.json +147 -0
- package/themes/marvin.json +147 -0
- package/themes/mean.json +147 -0
- package/themes/military.json +147 -0
- package/themes/neutral.json +147 -0
- package/themes/opencode/README.md +58 -0
- package/themes/opencode/catppuccin.json +27 -0
- package/themes/opencode/dracula.json +27 -0
- package/themes/opencode/everforest.json +27 -0
- package/themes/opencode/gruvbox.json +27 -0
- package/themes/opencode/kanagawa.json +27 -0
- package/themes/opencode/neon.json +27 -0
- package/themes/opencode/nord.json +27 -0
- package/themes/opencode/rosepine.json +27 -0
- package/themes/opencode/tokyonight.json +27 -0
- package/themes/pirate.json +147 -0
- package/themes/sports.json +147 -0
- package/themes/verstappen.json +147 -0
- package/themes/wizard.json +147 -0
- package/web/dist/assets/About-DX1-VTBP.js +1 -0
- package/web/dist/assets/Activity-Dp9NaXOn.js +1 -0
- package/web/dist/assets/ActivityDetail-HpOBtrXS.js +1 -0
- package/web/dist/assets/Diff-Ct4G3Se8.js +5 -0
- package/web/dist/assets/Doctor-DGjkZFuA.js +1 -0
- package/web/dist/assets/Graph-b8o-S6kv.js +1 -0
- package/web/dist/assets/Harnesses-gr3-aHBF.js +1 -0
- package/web/dist/assets/Laws-DTwF5tTC.js +1 -0
- package/web/dist/assets/Library-BEZscyaQ.js +1 -0
- package/web/dist/assets/Markdown-k_LSLBGq.js +1 -0
- package/web/dist/assets/Profile-DydukTxP.js +1 -0
- package/web/dist/assets/Rules-CIRG4Ldt.js +1 -0
- package/web/dist/assets/Skills-Buoi1IBr.js +1 -0
- package/web/dist/assets/StatusBadge-CE_AJttl.js +1 -0
- package/web/dist/assets/Themes-CI4o3gJC.js +2 -0
- package/web/dist/assets/activity-BCW7e6Cy.js +1 -0
- package/web/dist/assets/audiowide-latin-400-normal-6GFCX7ni.woff2 +0 -0
- package/web/dist/assets/geist-mono-latin-400-normal-DKaoCDn5.woff2 +0 -0
- package/web/dist/assets/geist-mono-latin-500-normal-C3sF8Y1B.woff2 +0 -0
- package/web/dist/assets/geist-mono-latin-600-normal-BHzjB6_C.woff2 +0 -0
- package/web/dist/assets/hanken-grotesk-latin-400-italic-Bserb8X5.woff2 +0 -0
- package/web/dist/assets/hanken-grotesk-latin-400-normal-BG6hkEXj.woff2 +0 -0
- package/web/dist/assets/hanken-grotesk-latin-500-italic-BGfwwhek.woff2 +0 -0
- package/web/dist/assets/hanken-grotesk-latin-500-normal-DrDcrrxK.woff2 +0 -0
- package/web/dist/assets/hanken-grotesk-latin-600-normal-CIXX6EOa.woff2 +0 -0
- package/web/dist/assets/hanken-grotesk-latin-700-normal-CeQ8H3UY.woff2 +0 -0
- package/web/dist/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
- package/web/dist/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
- package/web/dist/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2 +0 -0
- package/web/dist/assets/ibm-plex-serif-latin-400-normal-BIGslYFI.woff2 +0 -0
- package/web/dist/assets/ibm-plex-serif-latin-500-normal-REKAfBVG.woff2 +0 -0
- package/web/dist/assets/ibm-plex-serif-latin-600-normal-DAxitmSu.woff2 +0 -0
- package/web/dist/assets/index-B1PIx7RM.js +1 -0
- package/web/dist/assets/index-BnTQUSUz.js +12 -0
- package/web/dist/assets/index-Ck2iCdaC.js +2 -0
- package/web/dist/assets/index-DUCsDv7z.css +1 -0
- package/web/dist/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
- package/web/dist/assets/inter-latin-500-normal-Cerq10X2.woff2 +0 -0
- package/web/dist/assets/inter-latin-600-normal-LgqL8muc.woff2 +0 -0
- package/web/dist/assets/inter-latin-700-normal-Yt3aPRUw.woff2 +0 -0
- package/web/dist/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
- package/web/dist/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
- package/web/dist/assets/jetbrains-mono-latin-600-normal-C8RAYTDA.woff2 +0 -0
- package/web/dist/assets/marked.esm-JKvyS0Pp.js +46 -0
- package/web/dist/assets/oswald-latin-400-normal-BAFo8sP8.woff2 +0 -0
- package/web/dist/assets/oswald-latin-500-normal-B-eyT0Dw.woff2 +0 -0
- package/web/dist/assets/oswald-latin-600-normal-plFmSr5g.woff2 +0 -0
- package/web/dist/assets/oswald-latin-700-normal-vy6hmKSr.woff2 +0 -0
- package/web/dist/assets/poppins-latin-400-normal-cpxAROuN.woff2 +0 -0
- package/web/dist/assets/poppins-latin-500-normal-C8OXljZJ.woff2 +0 -0
- package/web/dist/assets/poppins-latin-600-normal-zEkxB9Mr.woff2 +0 -0
- package/web/dist/assets/poppins-latin-700-normal-Qrb0O0WB.woff2 +0 -0
- package/web/dist/assets/react-DOpiTn5v.js +32 -0
- package/web/dist/assets/roman-DkYN0LX9.js +1 -0
- package/web/dist/assets/space-grotesk-latin-400-normal-CJ-V5oYT.woff2 +0 -0
- package/web/dist/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2 +0 -0
- package/web/dist/assets/space-grotesk-latin-600-normal-DjKNqYRj.woff2 +0 -0
- package/web/dist/assets/space-grotesk-latin-700-normal-RjhwGPKo.woff2 +0 -0
- package/web/dist/assets/space-mono-latin-400-italic-YylcN9Ay.woff2 +0 -0
- package/web/dist/assets/space-mono-latin-400-normal-Rg4St2Dn.woff2 +0 -0
- package/web/dist/assets/space-mono-latin-700-italic-vNvENeTh.woff2 +0 -0
- package/web/dist/assets/space-mono-latin-700-normal-mWgeinG7.woff2 +0 -0
- package/web/dist/icon-maskable.svg +10 -0
- package/web/dist/icon.svg +8 -0
- package/web/dist/index.html +21 -0
- package/web/dist/manifest.webmanifest +14 -0
- package/web/dist/sw.js +40 -0
- package/web/src/pages/Laws.jsx +230 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: concepts
|
|
3
|
+
order: 2
|
|
4
|
+
title: "Agents"
|
|
5
|
+
kind: "concept"
|
|
6
|
+
link: {"hash": "#/section/agents", "label": "Browse the catalog →"}
|
|
7
|
+
---
|
|
8
|
+
{N_AGENTS} capability specialists — `reviewer`, `tester`, `architect`, `docs`, `security`, `explorer`, plus a debate **council** the [[council]] skill convenes (`advocate`, `skeptic`, `pragmatist`, `steward`, `visionary`, `user-advocate`, `framer`, `empiricist`, `operator`, `historian`). You delegate by capability, not by folder: the harness picks the right specialist from the request.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: extend
|
|
3
|
+
order: 0
|
|
4
|
+
title: "Edit the source"
|
|
5
|
+
kind: "concept"
|
|
6
|
+
---
|
|
7
|
+
Everything theme-independent lives under `src/` — laws, agents, skills, memory and notebook conventions, and the `AGENT.md.tmpl` entrypoint. Voice tokens live under `themes/` as one JSON file per theme. After editing, `geneseed build --emit opencode-global` (or `geneseed update`) re-renders the deployed bundle. The `doctor` action verifies the result: unresolved theme tokens, dead links, hermetic escapes, theme-key parity, and that the committed bundle matches a fresh render.
|
|
8
|
+
|
|
9
|
+
Each agent and skill also carries a lifecycle status — `experimental`, `approved` or `deprecated` — recorded in `registry.json` at the repo root alongside its version, owner and add-date. The file is maintainer-side: it is never rendered into a bundle, so a status costs no session context. Adding a spec means adding its row; `doctor` fails on a spec with no row and on a row with no spec, and the catalog badges anything that is not `approved`. The same pass refuses to let a credential ship, and holds every vendored skill folder to an immutable upstream commit rather than a moving branch.
|
|
10
|
+
|
|
11
|
+
A skill you wrote yourself and dropped into the install has no row and never will — the registry describes what Geneseed ships. Those read **personal** and gather under their own class in the Skills ledger, apart from the six-class taxonomy they were never given a place in. A badge reading **no status** means something else entirely: `registry.json` could not be read at all, so nothing is known about anything — run `doctor`.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: hooks
|
|
3
|
+
order: 0
|
|
4
|
+
title: "How Geneseed binds to Claude Code"
|
|
5
|
+
kind: "concept"
|
|
6
|
+
---
|
|
7
|
+
Claude Code has no `instructions` array and no JS plugin dir — the harness reaches it through **`settings.json` hooks** instead: the same capabilities the OpenCode plugins provide, each driven by a `geneseed-hook` subcommand. `CLAUDE.md` itself auto-loads by location, so it needs no hook at all.
|
|
8
|
+
|
|
9
|
+
### The four hooks
|
|
10
|
+
|
|
11
|
+
- **Context injection** — `SessionStart` (startup, clear, resume) runs `geneseed-hook context`: auto-discovers the repo's docs by convention and injects them before your first turn, plus your machine wiki. It honours the same `GENESEED_CONTEXT` manifest as the OpenCode context plugin.
|
|
12
|
+
- **Git gate** — `PreToolUse` on Bash runs `geneseed-hook git-gate`: enforces the safety Laws at the tool boundary, before a shell command executes.
|
|
13
|
+
- **Rule gate** — `PreToolUse` on the write tools runs `geneseed-hook rule-gate`: a write to `user-rules.md` or to a memory file asks first, because whether something you want kept is a standing rule or a durable fact is *your* call, settled through the [rule skill](#/docs/skills) (**Law VI**). Ordinary edits are untouched.
|
|
14
|
+
- **Learn** — `Stop` and `SubagentStop` run `geneseed-hook learn`: distils durable memories into the install's `memory/` store at session end; a subagent's stop routes to the per-agent lesson path (`memory/agents/<name>.md`).
|
|
15
|
+
|
|
16
|
+
### Where they live
|
|
17
|
+
|
|
18
|
+
The emit merges the hook groups surgically into your `settings.json` (global `~/.claude/settings.json`, or the project's), preserving every other key and any hooks of your own. The install manifest records exactly which groups Geneseed owns, so an upgrade replaces and an uninstall removes precisely those — never yours.
|
|
19
|
+
|
|
20
|
+
### The hook shim
|
|
21
|
+
|
|
22
|
+
Hooks run with the project as their working directory, so every command has to be an absolute path. Rather than write the interpreter and this checkout into your `settings.json`, the emit points all four hooks at one stable file — the **hook shim**, at `~/.geneseed/bin/geneseed-hook` (`geneseed-hook.cmd` on Windows). The shim holds the two volatile paths; the config holds none.
|
|
23
|
+
|
|
24
|
+
That indirection is what lets the checkout move. Before it, relocating or replacing the clone silently broke the gates in every install at once, and the only repair was re-emitting every config. Now a single build rewrites the shim and every install is live again. The shim is refreshed on **every** emit, so an ordinary `geneseed build` is the repair; `geneseed doctor` reports it if it was ever stale.
|
|
25
|
+
|
|
26
|
+
Set `GENESEED_HOME` to keep the shim somewhere other than `~/.geneseed`.
|
|
27
|
+
|
|
28
|
+
The shim prints nothing of its own, deliberately: the gates return success on every path and signal their verdict as JSON on **stdout**, so a single stray byte from the shim would corrupt that verdict and turn a blocking gate into a silently permissive one.
|
|
29
|
+
|
|
30
|
+
### Verify
|
|
31
|
+
|
|
32
|
+
Open Claude Code in any repo: the first reply opens with the readiness sigil and your project's docs are already in context. End a session and check the install's `memory/` dir for distilled files.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
**Deeper:** [Claude Code adapter](#/docs/adapters-claude-code)
|
package/docs/web/cli.md
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: concepts
|
|
3
|
+
order: 11
|
|
4
|
+
title: "The collaboration layer"
|
|
5
|
+
kind: "concept"
|
|
6
|
+
---
|
|
7
|
+
Beyond the Laws, four mechanisms shape *how* the agent works with you — the register, the mutual contract, how memory binds, and who you are. All four are plain content in `AGENT.md` and its neighbours, so they ride to every host (OpenCode, Claude, Bob, Copilot) unchanged.
|
|
8
|
+
|
|
9
|
+
### Postures — the register
|
|
10
|
+
|
|
11
|
+
A **posture** is the relationship register the agent works in, chosen by *you* at setup and fixed at build time so it holds steady instead of drifting back toward plain execution mid-session. Five ship: **peer** (default — a candid equal), **mentor** (explains the why), **expert** (maximum density), **assistant** (precise, low-initiative), **artisan** (peer with toolsmith reflexes). Posture is orthogonal to theme: theme is the *voice*, posture is the *relationship*. Change it in the setup wizard, from the **Harnesses** page here (the per-install posture dropdown, next to voice and footprint), or with `geneseed-build --posture <name>`. A rebuild or re-theme preserves it.
|
|
12
|
+
|
|
13
|
+
### Modes — how work executes
|
|
14
|
+
|
|
15
|
+
A **mode** is the session's operating register — *how* work gets executed, as opposed to posture's *relationship* register. Two ship: **direct** (default — the agent works every task itself, turn by turn) and **foreman** (the session triages incoming tasks: trivial ones get a direct answer, substantial ones spawn an isolated pipeline — a crew of an analyst, a developer, and a tester, plus whatever specialists the task needs — that reports back and merges only once its own tests and lint pass, while the session keeps answering you). Expect foreman mode to cost more per substantial task, in exchange for a session that never blocks on one. Change it in the setup wizard, from the **Harnesses** page here (the per-install mode dropdown, next to posture), or with `geneseed-build --mode <name>`; switch back any time with `--mode direct`. A rebuild or re-theme preserves it. See [Foreman mode](#/docs/foreman-mode) and [agent pipelines](#/docs/pipelines) for the dedicated pages.
|
|
16
|
+
|
|
17
|
+
### The Pact — a two-way contract
|
|
18
|
+
|
|
19
|
+
Where the Laws bind the agent, the **Pact** binds the collaboration. It holds three co-equal protections (you, the truth, the agent) and — unusually — names what *you* owe back: don't punish candour that honours the pact, give context up front, decide when shown a fork. It is framing, not an enforced rule.
|
|
20
|
+
|
|
21
|
+
### Typed memory — binding force
|
|
22
|
+
|
|
23
|
+
A memory may carry an optional `force` — **constraint** (imposed, not the agent's to relax), **choice** (revisable with consent), **conviction** (revisable on evidence), or **tempered** (a relaxed constraint). When new evidence contradicts a forced memory, the Bridge rule requires revising it in the open rather than dropping it silently.
|
|
24
|
+
|
|
25
|
+
### Your profile — identity
|
|
26
|
+
|
|
27
|
+
`PROFILE.md`, seeded once beside `AGENT.md` and never overwritten, holds *who you are*: role, habits, register preferences. It is identity, not rules — it colours how the agent works but never binds (precedence is Laws, then `user-rules.md`, then the profile). Edit it here under the **Profile** tab, or in the file directly — or let the agent draft it: the [[profile]] skill interviews you (who you are, how you work, how you like answers pitched) and writes the file only with your consent, routing anything that is really a standing rule to `user-rules.md` instead.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: concepts
|
|
3
|
+
order: 9
|
|
4
|
+
title: "Sovereign repos (exclusions)"
|
|
5
|
+
kind: "concept"
|
|
6
|
+
link: {"hash": "#/harnesses", "label": "Manage in Harnesses →"}
|
|
7
|
+
---
|
|
8
|
+
A **sovereign repo** is a folder where every GLOBAL harness install goes fully dormant: hooks stay silent and the global preamble (`AGENT.md`/`CLAUDE.md`) is never loaded there. A repo that ships its own agent config you don't want a global harness layered onto is the usual case.
|
|
9
|
+
|
|
10
|
+
### Total dormancy, not a filter
|
|
11
|
+
|
|
12
|
+
Exclusion is all-or-nothing per folder — it doesn't trim which Rules apply or which Skills load, the global harness simply never engages inside that tree. A per-repo Geneseed install in the same folder is unaffected; exclusions only ever suppress GLOBAL installs.
|
|
13
|
+
|
|
14
|
+
### How it's wired, per host
|
|
15
|
+
|
|
16
|
+
- **Claude Code** — native suppression via `claudeMdExcludes` in the repo's `.claude/settings.local.json`.
|
|
17
|
+
- **Bob** — a shadow `rules/geneseed.md` stub that shadows the global one (never overwrites a hand-written stub already there).
|
|
18
|
+
- **OpenCode** — the hook entry's sovereign-bypass guard and its twin in the plugins short-circuit at session start.
|
|
19
|
+
- **Copilot — documented limitation.** GitHub Copilot has no native per-repo suppression hook: the global `copilot-instructions.md` still loads even inside an excluded folder.
|
|
20
|
+
|
|
21
|
+
### Manage it
|
|
22
|
+
|
|
23
|
+
- **CLI** — `harness exclude add <path>` / `remove <path>` / `list`.
|
|
24
|
+
- **This console** — the **Excluded folders** card on the **Harnesses** page (shown once a global install exists).
|
|
25
|
+
|
|
26
|
+
Exclusions live in each global install's own `excludes.json`, so add/remove re-wires every global install in one call — nothing to repeat per host.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: start
|
|
3
|
+
order: 3
|
|
4
|
+
title: "Your first session"
|
|
5
|
+
kind: "concept"
|
|
6
|
+
---
|
|
7
|
+
Once installed, the agent doesn't change *how* you talk to your tool — it changes what the tool already knows when you do.
|
|
8
|
+
|
|
9
|
+
### What loaded automatically
|
|
10
|
+
|
|
11
|
+
- **`AGENT.md`** — {N_LAWS} universal Rules the agent obeys.
|
|
12
|
+
- **Your repo's docs** — `README.md`, `CONTRIBUTING.md`, anything under `docs/` the harness discovers.
|
|
13
|
+
- **Your machine's wiki** (if you [set one up](#/docs/configure-wiki)) — eager entries and a lazy listing of the rest.
|
|
14
|
+
- **The skill and agent catalogue** — invokable by name.
|
|
15
|
+
|
|
16
|
+
### Try these prompts
|
|
17
|
+
|
|
18
|
+
- *"Use the **profile** skill"* — a short interview that drafts `PROFILE.md` (seeded empty at install), so the agent knows who you are and how you like answers pitched.
|
|
19
|
+
- *"Use the **clarify** skill on this feature request."*
|
|
20
|
+
- *"Delegate to the **reviewer** agent on the staged diff."*
|
|
21
|
+
- *"Use **brainstorm** then **plan** for how to add X."*
|
|
22
|
+
- *"Use **council** to debate whether we should ship Y now."*
|
|
23
|
+
|
|
24
|
+
Skills are repeatable workflows; agents are capability specialists. You invoke them by name in plain English.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
**Catalog:** [Skills](#/section/skills) · [Agents](#/section/agents) · [Rules](#/laws)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: concepts
|
|
3
|
+
order: 8
|
|
4
|
+
title: "Footprint (lean vs full)"
|
|
5
|
+
kind: "concept"
|
|
6
|
+
link: {"hash": "#/settings", "label": "Toggle it in Settings →"}
|
|
7
|
+
---
|
|
8
|
+
**Footprint** controls how much of the Rules your agent carries *inline* in `AGENT.md` every turn. Two states — **lean** (the default) and **full** — set per install. It's a token-cost dial, not a change to which Rules apply: every Rule is always in force, and across lean and full the emitted files are otherwise identical — same Agents, Skills, plugins, commands, Memory, and Notebook.
|
|
9
|
+
|
|
10
|
+
### The difference
|
|
11
|
+
|
|
12
|
+
- **Full** — Section 1 of `AGENT.md` inlines every Rule's complete text *and* its reasoning. The agent sees the full law set, rationale included, on every single turn.
|
|
13
|
+
- **Lean** — Section 1 carries each Rule as its **heading + the rule itself** (one line), followed by a pointer to the complete law file (`laws/universal.md`, shipped beside `AGENT.md`) — the agent reads the rationale on demand when a rule's application is unclear. Lean trims Section 1 by roughly 40%.
|
|
14
|
+
|
|
15
|
+
### Which to choose
|
|
16
|
+
|
|
17
|
+
- Keep **full** if token cost is a non-issue, you want the rationale always present, or you run a smaller/cheaper model — with the *why* eagerly in context, a model applies a Rule's nuance more reliably. This is why full is the default.
|
|
18
|
+
- Switch to **lean** to reclaim context and cost on long sessions, large repos, or cost-sensitive runs, trusting the agent to pull the full law when it needs the *why*. Lean is **safe**: the complete law text still ships, and the harness explicitly points the agent there before acting on secrets, deletion, git history, scope, or untrusted content. It's an optimization, not a rules cut.
|
|
19
|
+
|
|
20
|
+
### How to set it
|
|
21
|
+
|
|
22
|
+
It's set-and-forget — stored in the `.geneseed-footprint` marker, preserved across every rebuild, identical on every host (OpenCode, Claude Code, Bob, Copilot). Changing it re-emits the install.
|
|
23
|
+
|
|
24
|
+
- **Settings** — the **Footprint** toggle flips the current install (full ⇄ lean) and rebuilds it in place.
|
|
25
|
+
- **Harnesses tab** — a per-harness dropdown sets it for any one install independently, then **Apply**.
|
|
26
|
+
- **Setup / re-theme wizard** — asks for footprint alongside voice and mode.
|
|
27
|
+
- **CLI** — `geneseed-build --footprint lean` (with any `--emit`).
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
**Related:** [Rules (Laws)](#/laws) · [Voice vs structure](#/docs/themes) · [Token footprint — the numbers](#/docs/token-footprint)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: concepts
|
|
3
|
+
order: 12
|
|
4
|
+
title: "Foreman mode"
|
|
5
|
+
kind: "concept"
|
|
6
|
+
link: {"hash": "#/harnesses", "label": "Set the mode in Harnesses →"}
|
|
7
|
+
---
|
|
8
|
+
**Mode** is the session's *operating* register — how work gets executed — a separate dial from posture (the *relationship* register) and footprint (how much of the Rules loads inline). Two modes ship, set at build time so the choice holds steady instead of drifting mid-session, and preserved across every rebuild and re-theme.
|
|
9
|
+
|
|
10
|
+
### direct — the default
|
|
11
|
+
|
|
12
|
+
The agent works every task itself, turn by turn — exactly as it does without the dial. Nothing spawns; you talk to one agent from start to finish. Keep it unless you specifically want the session managing work for you.
|
|
13
|
+
|
|
14
|
+
### foreman — a session that triages
|
|
15
|
+
|
|
16
|
+
The session becomes a triage layer instead of a single worker. It sorts each incoming request:
|
|
17
|
+
|
|
18
|
+
- **Trivial** — answered directly, in-line, just like direct mode.
|
|
19
|
+
- **Substantial** — handed to an isolated [agent pipeline](#/docs/pipelines): a crew that runs on its own, reports back, and merges only once its own tests and lint pass.
|
|
20
|
+
|
|
21
|
+
Because the crew runs apart from the conversation, the session stays responsive — you keep talking to the foreman while the work proceeds. Expect foreman to cost more per substantial task (a crew runs instead of one agent), in exchange for a session that never blocks on a long job.
|
|
22
|
+
|
|
23
|
+
### How to set it
|
|
24
|
+
|
|
25
|
+
Set-and-forget, stored beside the install and preserved across rebuilds and re-themes:
|
|
26
|
+
|
|
27
|
+
- **Harnesses tab** — the per-install **Mode** dropdown (beside Voice, Footprint, and Posture), then **Apply**.
|
|
28
|
+
- **Setup / re-theme wizard** — asks for mode alongside voice, posture, and footprint.
|
|
29
|
+
- **CLI** — `geneseed-build --mode foreman`; switch back with `--mode direct`.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
**Related:** [Agent pipelines](#/docs/pipelines) · [The collaboration layer](#/docs/collaboration)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: start
|
|
3
|
+
order: 4
|
|
4
|
+
title: "Supported harnesses"
|
|
5
|
+
kind: "concept"
|
|
6
|
+
---
|
|
7
|
+
One source, **five emit targets** — each with a per-repo and a global (`-global`) variant, plus a portable `files` bundle any `AGENT.md`-aware tool can read. **OpenCode** runs its own engine (JS plugins, colour themes, LSP); **Claude Code**, **Bob**, and **Copilot** share one Claude-shaped engine that diverges only by host dialect.
|
|
8
|
+
|
|
9
|
+
The harness itself — Rules, Agents, Skills, Memory, and the preamble voice — is **identical on every host**. What differs is how much of it the host can *automate* (via plugins or hooks) versus carry as preamble discipline.
|
|
10
|
+
|
|
11
|
+
| Capability | OpenCode | Claude | Bob | Copilot |
|
|
12
|
+
| --- | :---: | :---: | :---: | :---: |
|
|
13
|
+
| Agents · Skills · Memory | ✅ | ✅ | ✅ | ✅ |
|
|
14
|
+
| Context injection | ⚙️ plugin | 🪝 hook | 🪝 hook¹ | 📄 preamble |
|
|
15
|
+
| Memory write-back (learn) | ⚙️ plugin | 🪝 hook | 🪝 hook¹ | 📄 preamble |
|
|
16
|
+
| Git-gate consent (Rule XX) | ⚙️ plugin | 🪝 hook | 🪝 hook¹ | 📄 preamble |
|
|
17
|
+
| Sovereign-repo excludes | ⚙️ plugin | ✅ | ✅ | ➖ |
|
|
18
|
+
| MCP server wiring | ✅ | ✅ | ✅ | ✅ |
|
|
19
|
+
| Colour themes | ✅ | ➖ | ➖ | ➖ |
|
|
20
|
+
| LSP · workflows · primary-agent · `/`-commands | ✅ | ➖ | ➖ | ➖ |
|
|
21
|
+
|
|
22
|
+
✅ native · ⚙️ OpenCode plugin · 🪝 `settings.json` hook · 📄 preamble prose only · ➖ no host mechanism (harness discipline still applies). ¹ Bob honours Claude-dialect hooks best-effort — inert if unsupported, harness still holds via the preamble.
|
|
23
|
+
|
|
24
|
+
**No host drops an Agent, Skill, or the memory convention.** The asymmetry is entirely in *automation mechanism*: OpenCode's plugins and Claude/Bob's hooks enforce a few Rules for you, where **Copilot** (no hook mechanism) enforces them through preamble discipline. The OpenCode-only extras (themes, LSP, workflow runner, primary-agent) have no analogue on a Claude-shaped host.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
**Deeper:** [The harness model](#/docs/model) · [Footprint per host](#/docs/footprint)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: start
|
|
3
|
+
order: 0
|
|
4
|
+
title: "Install in 5 minutes"
|
|
5
|
+
kind: "concept"
|
|
6
|
+
---
|
|
7
|
+
Two steps. The only prerequisite is **Node ≥ 22.3** — Geneseed ships as an npm package with zero dependencies.
|
|
8
|
+
|
|
9
|
+
### 1. Run the setup wizard
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
npx geneseed setup
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
The same command on macOS, Linux and Windows (cmd, PowerShell, or any POSIX shell). The wizard asks for a theme and an install mode (OpenCode global is recommended — one install, every repo inherits it), then builds and offers a health check.
|
|
16
|
+
|
|
17
|
+
To keep the command around: `npm install -g geneseed`, then plain `geneseed …` from any directory.
|
|
18
|
+
|
|
19
|
+
### 2. Open your agent
|
|
20
|
+
|
|
21
|
+
Open OpenCode (or Claude Code, Bob, Copilot, or any `AGENT.md`-aware tool) in any repo. The first reply opens with the readiness sigil (`✅` neutral / `🧬` imperial / your theme's equivalent) and your project's docs are already in context.
|
|
22
|
+
|
|
23
|
+
### Prefer a clone?
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
git clone https://github.com/Arylmera/Geneseed.git
|
|
27
|
+
cd Geneseed
|
|
28
|
+
./geneseed setup # Windows: .\geneseed.cmd setup
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
A checkout needs **git** and the same **Node ≥ 22.3** as everything else — there is nothing extra to install — and is what you want if you intend to change the harness rather than use it. Already installed this way? [Migrate to npx](#/docs/migrate) moves every install across in one pass.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
**Next:** [Posture & footprint](#/docs/setup-choices) · [Verify it works](#/docs/verify) · [What you just installed](#/docs/model) · [Install by hand instead](#/docs/install-paths)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: lsp
|
|
3
|
+
order: 0
|
|
4
|
+
title: "Code intelligence (LSP)"
|
|
5
|
+
kind: "concept"
|
|
6
|
+
link: {"hash": "#/docs/adapters-opencode", "label": "OpenCode adapter →"}
|
|
7
|
+
---
|
|
8
|
+
OpenCode can drive Language Server Protocol servers so the agent sees real diagnostics, type errors, and go-to-definition — not just text. Geneseed turns this on for every language OpenCode ships a server for.
|
|
9
|
+
|
|
10
|
+
### What's covered out of the box
|
|
11
|
+
|
|
12
|
+
| Language | Server | You install? |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| JavaScript / TypeScript / React / React Native | typescript-language-server | No — OpenCode self-downloads |
|
|
15
|
+
| Python | pyright | No — OpenCode self-downloads |
|
|
16
|
+
| Java | jdtls | **JDK 21+** (OpenCode downloads jdtls itself) |
|
|
17
|
+
| SQL / PostgreSQL / Oracle | *none — by design* | — |
|
|
18
|
+
|
|
19
|
+
One server covers JavaScript, TypeScript, React, and React Native — they are all TS/JS, so no extra server is needed.
|
|
20
|
+
|
|
21
|
+
### The one prerequisite the harness can't self-install
|
|
22
|
+
|
|
23
|
+
OpenCode downloads the JS-runtime servers automatically on first use. It cannot install a JVM, and jdtls needs one — so the setup wizard checks for it and prints an install hint if missing:
|
|
24
|
+
|
|
25
|
+
- **Java 21+** — `brew install openjdk@21`, SDKMAN `sdk install java 21-tem`, or your distro's JDK.
|
|
26
|
+
|
|
27
|
+
### Why no SQL server
|
|
28
|
+
|
|
29
|
+
A SQL language server is dialect-locked — a Postgres server flags Oracle SQL as errors and vice versa — and a `.sql` file can map to only one server, with no signal for which dialect a repo uses. Rather than guess wrong for half of all SQL codebases, we ship none. A project that knows its dialect can add the matching server in its own `opencode.json` under the `lsp` key.
|
|
30
|
+
|
|
31
|
+
### How it's wired
|
|
32
|
+
|
|
33
|
+
`"lsp": true` in your emitted `opencode.json` enables every built-in server (LSP is off by default). To turn auto-download off (air-gapped machines), set `OPENCODE_DISABLE_LSP_DOWNLOAD=true` and pre-install each server.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
**Verify:** open a `.ts` and a `.py` file in a session and ask the agent for diagnostics — the first open triggers the download.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: mcp
|
|
3
|
+
order: 0
|
|
4
|
+
title: "MCP overview"
|
|
5
|
+
kind: "concept"
|
|
6
|
+
---
|
|
7
|
+
The Harness ships **three** ready-to-wire MCP servers as presets — **MarkItDown** (PDF/Office → Markdown), **GitLab** (shipped as two entries, one per instance), and **Filesystem** (scoped file access) — four config entries in all. Each is a *local* server the agent launches on demand: registering one only points the agent at a command — *you* install the tool (or let `npx`/`pipx` fetch it) and supply any credentials.
|
|
8
|
+
|
|
9
|
+
### Where they live
|
|
10
|
+
|
|
11
|
+
<!--harness:opencode-->
|
|
12
|
+
They sit under the `mcp` key of an `opencode.json` (global `~/.config/opencode/opencode.json` or per-repo), each entry shaped:
|
|
13
|
+
|
|
14
|
+
```json
|
|
15
|
+
"<name>": { "type": "local", "command": ["…"], "environment": {}, "enabled": true }
|
|
16
|
+
```
|
|
17
|
+
<!--/harness-->
|
|
18
|
+
<!--harness:claude-->
|
|
19
|
+
They live in `.mcp.json` under `mcpServers` — note the key is `env` (not `environment`) and the command and its args are split into `command` + `args`. See [Claude Code wiring](#/docs/mcp-claude-code).
|
|
20
|
+
<!--/harness-->
|
|
21
|
+
|
|
22
|
+
<!--harness:opencode-->
|
|
23
|
+
### Toggle them without hand-editing JSON
|
|
24
|
+
|
|
25
|
+
`./geneseed` → **Settings** → **MCP servers** toggles any of the presets into your project or global `opencode.json` — and enables, disables, or removes them — for you. The reference config ships MarkItDown enabled and the GitLab / Filesystem entries disabled, so a merge never activates a credential-less server: fill the blanks, then flip the one(s) you want on.
|
|
26
|
+
<!--/harness-->
|
|
27
|
+
|
|
28
|
+
> **Never commit a real token.** The presets ship with **empty** `GITLAB_PERSONAL_ACCESS_TOKEN` placeholders (and a sample filesystem path) — fill them in your own config, never in a tracked file (universal Law I — secrets).
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
**Wire one up:** [MarkItDown](#/docs/mcp-markitdown) · [GitLab](#/docs/mcp-gitlab) · [Filesystem](#/docs/mcp-filesystem) · [Verify](#/docs/mcp-verify) · [Won't connect?](#/docs/mcp-trouble)
|
|
33
|
+
|
|
34
|
+
> **Listed ≠ working.** A `local` server is just a command the agent runs — it appears in the list whether or not that command actually launches. The usual cause of "shown but not working" is the command not being on PATH (e.g. `markitdown-mcp` with no `uvx`/pipx install) or a filesystem entry left on its placeholder path. [Walk the fixes →](#/docs/mcp-trouble)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: howto
|
|
3
|
+
order: 8
|
|
4
|
+
title: "Migrate an existing install to npx"
|
|
5
|
+
kind: "concept"
|
|
6
|
+
---
|
|
7
|
+
If you installed Geneseed by cloning the repository, your hooks currently run through a small machine-wide shim at `~/.geneseed/bin/geneseed-hook` that hands every call to *your checkout*. Installing from npm changes where that code lives. **`geneseed migrate` moves every install you already have onto the new shape, in one pass, without touching your own settings.**
|
|
8
|
+
|
|
9
|
+
### What it does
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
geneseed migrate --dry-run # survey and print the plan; writes nothing
|
|
13
|
+
geneseed migrate # do it
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
It surveys every registered install, re-emits each one **in its own theme, emit, footprint, posture and mode** — nothing is defaulted, so a rebuild never silently changes what you chose — re-bakes the machine-wide hook shim so it points at the new location, and reports anything it is not allowed to fix for you.
|
|
17
|
+
|
|
18
|
+
Run it once, from the new install. A second run says `already on the npm shape` and writes nothing.
|
|
19
|
+
|
|
20
|
+
### It is all-or-nothing
|
|
21
|
+
|
|
22
|
+
Before it changes anything, `migrate` copies every host settings file and the hook shim into `~/.geneseed/.migrate-backup/`. If any install fails to rebuild, **everything is put back** and the run exits non-zero. You are never left half on one shape and half on the other. `rebuild-all` deliberately continues past a broken install so one failure cannot block the rest; a migration deliberately does the opposite.
|
|
23
|
+
|
|
24
|
+
### It refuses rather than guesses
|
|
25
|
+
|
|
26
|
+
If a registered install carries a `.geneseed-emit` marker that names something this generator does not recognise — a truncated or hand-edited file — `migrate` **refuses the whole run**, names the install, and changes nothing. Rebuilding it would mean guessing which host and scope you installed, and re-emitting an install as something its owner never chose is worse than stopping. Fix or delete the marker and re-run.
|
|
27
|
+
|
|
28
|
+
### What it will not touch
|
|
29
|
+
|
|
30
|
+
Two things are yours, and `migrate` reports them instead of rewriting them:
|
|
31
|
+
|
|
32
|
+
- **Hooks it did not write.** Your own hooks, and any third-party ones, are left exactly as they are — the re-emit only replaces the hook groups Geneseed's own manifest claims.
|
|
33
|
+
- **Autostart entries.** If you set the web UI to [start at login](#/docs/autostart), that VBS script or LaunchAgent is a file you hand-wrote — Geneseed has never created one. If it still names your old checkout, `migrate` prints its path and the command to put there. Edit it yourself.
|
|
34
|
+
|
|
35
|
+
If your `settings.json` has comments in it, Geneseed will not rewrite the file at all (it never has — your edits are safe), so the hooks in it stay pointing at the old shim until you update them by hand.
|
|
36
|
+
|
|
37
|
+
### Your old clone keeps working
|
|
38
|
+
|
|
39
|
+
Nothing breaks the day you install from npm. A cloned checkout continues to work for one full release, printing the migration instructions when you `git pull`. There is no cliff — migrate when it suits you.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
group: concepts
|
|
3
|
+
order: 0
|
|
4
|
+
title: "The harness model"
|
|
5
|
+
kind: "concept"
|
|
6
|
+
---
|
|
7
|
+
Geneseed assembles five runtime pieces around a single `AGENT.md` entrypoint: **Rules** (the laws the agent obeys), **Agents** (capability specialists you delegate to), **Skills** (repeatable workflows the agent can invoke), **Memory** (one-fact-per-file durable knowledge), and a **Notebook** (the agent's own sovereign space).
|
|
8
|
+
<!--harness:opencode-->
|
|
9
|
+
On OpenCode, {N_PLUGINS} **Plugins** bind the pieces to the host: context injection, learn-at-session-end, the safety guard, the saved workflow runner, end-of-run notifications, a live-activity feed for this console, and an opt-in minimal-code mode.
|
|
10
|
+
<!--/harness-->
|
|
11
|
+
<!--harness:claude-->
|
|
12
|
+
On Claude Code, three settings.json **hooks** bind the pieces to the host — context injection, the git safety gate, and learn-at-session-end. See [How Geneseed binds to Claude Code](#/docs/claude-hooks).
|
|
13
|
+
<!--/harness-->
|
|
14
|
+
The structure is theme-independent — a theme only changes the *voice* (banner, sigil, prose), never a folder or a link. A separate dial, the **[footprint](#/docs/footprint)**, sets how much of the Rules load inline each turn (full vs lean), the **[collaboration layer](#/docs/collaboration)** — posture, the Pact, typed memory, your profile — shapes how the agent works *with you*, and the **mode** dial ([direct vs foreman](#/docs/foreman-mode)) sets *how work gets executed* — one agent turn by turn, or a foreman triaging tasks into [pipelines](#/docs/pipelines).
|
|
15
|
+
|
|
16
|
+
### What this UI actually shows
|
|
17
|
+
|
|
18
|
+
The **Library** and **Graph** render the Geneseed source live — they show the harness that *would* be deployed if you rebuilt right now. The **Settings** panes and the **Memory** drawer read from the deployed harness on disk (the harness install dir, e.g. `~/.config/opencode/…` for an OpenCode global install).
|
|
19
|
+
|
|
20
|
+
If you've built recently, the two match. If you edit a file under `src/` and reload this panel, the Library updates immediately — the deployed bundle does not, until the next `geneseed update` or `build`.
|