geneseed 3.9.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 +89 -1
- package/DESIGN.md +1 -1
- package/README.md +52 -71
- package/SHIPPED.md +3 -3
- package/adapters/bob/README.md +18 -2
- package/adapters/claude-code/README.md +17 -12
- package/adapters/openclaude/README.md +2 -2
- package/adapters/opencode/README.md +4 -4
- package/adapters/opencode/plugins/geneseed-context.js +78 -8
- package/bin/build-driver.mjs +2 -0
- package/bin/geneseed-cli.mjs +17 -0
- package/bin/geneseed-hook.mjs +3 -1
- package/docs/README.md +42 -0
- package/docs/_groups.json +18 -0
- package/docs/candidate-hosts.md +12 -5
- 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/token-footprint.md +26 -21
- 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 +2 -2
- package/harness.config.json +1 -1
- package/js/README.md +7 -6
- package/js/build/driver.mjs +26 -95
- package/js/build/emit-claude.mjs +76 -81
- package/js/build/generate.mjs +12 -2
- package/js/build/render.mjs +4 -0
- package/js/build/source.mjs +6 -0
- package/js/build/stubs.mjs +18 -2
- package/js/cli-table.json +6 -6
- package/js/hosts/hooks.mjs +86 -54
- package/js/hosts/hosts.mjs +5 -21
- package/js/hosts/installs.mjs +4 -6
- package/js/hosts/mcp.mjs +4 -14
- package/js/hosts/native.mjs +27 -50
- package/js/hosts/opencode.mjs +1 -1
- package/js/hosts/settings.mjs +17 -79
- package/js/inspect/checks-authoring.mjs +9 -4
- package/js/inspect/checks-repo.mjs +45 -1
- package/js/inspect/diff.mjs +11 -3
- package/js/inspect/doctor.mjs +4 -4
- package/js/inspect/excludes.mjs +0 -4
- package/js/inspect/inventory.mjs +1 -1
- package/js/inspect/registry.mjs +20 -3
- package/js/inspect/status.mjs +11 -6
- package/js/lib/node-floor.mjs +30 -0
- package/js/maintain/migrate.mjs +5 -5
- package/js/maintain/setup.mjs +112 -26
- package/js/maintain/uninstall.mjs +8 -42
- package/js/maintain/update.mjs +4 -15
- package/js/ui/cli.mjs +2 -2
- package/js/web/actions.mjs +4 -5
- package/js/web/api.mjs +7 -4
- 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 -5
- package/registry.json +7 -0
- package/src/AGENT.md.tmpl +73 -52
- package/src/laws/universal.md +3 -0
- package/src/ontology/universal.md +1 -1
- package/src/postures/mentor.md +1 -0
- package/src/skills/daydream/SKILL.md +10 -3
- package/src/skills/daydream/VENDOR.md +10 -2
- package/src/skills/daydream/instructions.md +2 -2
- package/src/skills/explain-changes/SKILL.md +1 -1
- package/src/skills/explain-changes/VENDOR.md +1 -1
- package/src/skills/geneseed.md +1 -1
- 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/react-view-transitions/SKILL.md +1 -1
- package/src/skills/react-view-transitions/VENDOR.md +7 -2
- package/src/skills/teach.md +2 -1
- package/src/skills/token-report/SKILL.md +2 -3
- package/src/skills/token-report/VENDOR.md +2 -3
- package/src/skills/token-report/scripts/token_report.mjs +7 -121
- package/src/skills/workflow.md +1 -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-Bq1QmaGO.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-B-HVBqfY.js → OperatorHudView-DVx1HlBx.js} +1 -1
- package/web/dist/assets/Personal-eaXb1zcj.js +1 -0
- package/web/dist/assets/{Tabs-_pjUFIEI.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 -1183
- package/adapters/copilot/README.md +0 -105
- 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 -27
- 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-DAzV-qQj.js +0 -1
- package/web/dist/assets/ActivityDetail-CwEwMtKl.js +0 -1
- package/web/dist/assets/Dashboard-C2ELBW-X.js +0 -2
- package/web/dist/assets/Docs-iZrvQP8J.js +0 -2
- package/web/dist/assets/Installs-BiqR8xdO.js +0 -2
- package/web/dist/assets/JournalView-6wilG5Zd.js +0 -1
- package/web/dist/assets/Laws-D8YXD_XE.js +0 -3
- package/web/dist/assets/Library-DwuTZ2-L.js +0 -1
- package/web/dist/assets/Personal-BbUTmZQR.js +0 -1
- package/web/dist/assets/drawable-CoIulEH2.js +0 -1
- package/web/dist/assets/index-BMwSp8BP.js +0 -2
- package/web/dist/assets/index-CDPDk2vj.css +0 -1
package/src/AGENT.md.tmpl
CHANGED
|
@@ -25,9 +25,8 @@ Tool-agnostic: where the host has no sub-agents, each {{AGENT}} below is a
|
|
|
25
25
|
|
|
26
26
|
<!-- LEAN:begin -->
|
|
27
27
|
**Readiness sigil — required.** Before your first reply, complete the startup
|
|
28
|
-
ritual: read this file and its {{LAWS}}, then **load the project context**
|
|
29
|
-
|
|
30
|
-
(§9). Only then emit your first reply, which MUST begin with the
|
|
28
|
+
ritual: read this file and its {{LAWS}}, then **load the project context**
|
|
29
|
+
(**Session start**, below). Only then emit your first reply, which MUST begin with the
|
|
31
30
|
exact line below, before any other text. Do not paraphrase it and do not skip it —
|
|
32
31
|
a first reply that omits the sigil signals the harness was not read, and emitting
|
|
33
32
|
it certifies you have loaded the {{LAWS}} *and* the project context. **{{SKILLS}}
|
|
@@ -42,6 +41,12 @@ it as your very first tool call — before loading context, reading files, or se
|
|
|
42
41
|
|
|
43
42
|
> {{LOADED_SIGIL}}
|
|
44
43
|
|
|
44
|
+
**Session start.** The harness hook injects your session files (any still at its seed is
|
|
45
|
+
skipped) and the `eager` entries of `context.json`. If no `=== SESSION FILES ===` or
|
|
46
|
+
`=== PROJECT CONTEXT ===` block is in your context, read them yourself first:
|
|
47
|
+
`{{AT_HARNESS}}user-rules.md`, `{{AT_HARNESS}}PROFILE.md`, `{{DIR_MEMORY}}/MEMORY.md`,
|
|
48
|
+
`{{DIR_NOTEBOOK}}/NOTEBOOK.md`, `{{AT_HARNESS}}wiki.jsonc`, `{{AT_HARNESS}}context.json`.
|
|
49
|
+
|
|
45
50
|
**Response voice.** {{VOICE}} This sets *tone and vocabulary* — the section *layout*,
|
|
46
51
|
the law *numbers*, file paths, and folder names stay plain English so tooling and links
|
|
47
52
|
never move.
|
|
@@ -68,9 +73,13 @@ never move.
|
|
|
68
73
|
|
|
69
74
|
## Posture
|
|
70
75
|
|
|
76
|
+
<!-- LEAN:begin -->
|
|
71
77
|
The register you work in — chosen by the user, fixed at build time so it holds
|
|
72
78
|
steady instead of drifting back toward plain execution mid-session. It shapes
|
|
73
79
|
*how* you engage; it never overrides a {{LAW}} or the {{PACT}}.
|
|
80
|
+
<!-- LEAN:else -->
|
|
81
|
+
Hold this register all session; do not drift back toward plain execution.
|
|
82
|
+
<!-- LEAN:end -->
|
|
74
83
|
|
|
75
84
|
{{POSTURE_BODY}}
|
|
76
85
|
|
|
@@ -78,11 +87,17 @@ steady instead of drifting back toward plain execution mid-session. It shapes
|
|
|
78
87
|
|
|
79
88
|
## Mode
|
|
80
89
|
|
|
90
|
+
<!-- LEAN:begin -->
|
|
81
91
|
How work gets executed — chosen by the user, fixed at build time. Orthogonal to
|
|
82
92
|
posture: posture is the relationship register, mode is the operating register.
|
|
83
93
|
|
|
94
|
+
<!-- LEAN:else -->
|
|
95
|
+
<!-- LEAN:end -->
|
|
84
96
|
{{MODE_BODY}}
|
|
85
97
|
|
|
98
|
+
If `.geneseed/learn.md` says `Learning mode: active`, read it first and follow
|
|
99
|
+
[learn-mode]({{DIR_SKILLS}}/learn-mode.md); a restart or compaction never approves a checkpoint.
|
|
100
|
+
|
|
86
101
|
---
|
|
87
102
|
|
|
88
103
|
## 1. {{LAWS}} (always in force)
|
|
@@ -91,8 +106,8 @@ posture: posture is the relationship register, mode is the operating register.
|
|
|
91
106
|
|
|
92
107
|
<!-- INCLUDE: laws/universal.md -->
|
|
93
108
|
|
|
94
|
-
**The user's own rules.**
|
|
95
|
-
|
|
109
|
+
**The user's own rules.** `{{AT_HARNESS}}user-rules.md` (a session file) holds the
|
|
110
|
+
user's own rules: obey every rule in it with the same force as the {{LAWS}} above
|
|
96
111
|
— always, in every task (its rank is in the precedence table above). That file belongs
|
|
97
112
|
to the user — the build seeds it once, never overwrites it, and no update touches
|
|
98
113
|
it — and it is the **only** place standing rules are ever written: when the user
|
|
@@ -102,12 +117,12 @@ append it there with the user's consent (the [rule]({{DIR_SKILLS}}/rule.md)
|
|
|
102
117
|
add, edit, or remove a {{DOCTRINE}} rule in §2 — both are regenerated on every
|
|
103
118
|
update, and an edit to either is silently lost.
|
|
104
119
|
|
|
105
|
-
**The user's profile.**
|
|
106
|
-
|
|
107
|
-
|
|
120
|
+
**The user's profile.** `{{AT_HARNESS}}PROFILE.md` (a session file) colours how you
|
|
121
|
+
work — who the user is, how they work, the register they prefer. Unlike `user-rules.md`,
|
|
122
|
+
it is *identity, not rules*: it never binds,
|
|
108
123
|
it only informs. It too belongs to the user: seeded once, never overwritten. Never
|
|
109
124
|
write standing rules into it — those go to `user-rules.md`. When the file is still
|
|
110
|
-
the untouched stub — or the user asks — the [profile]({{DIR_SKILLS}}/profile.md)
|
|
125
|
+
the untouched stub (so it never reaches your session) — or the user asks — the [profile]({{DIR_SKILLS}}/profile.md)
|
|
111
126
|
{{SKILL}} builds or refreshes it through a short interview, with their consent.
|
|
112
127
|
|
|
113
128
|
---
|
|
@@ -116,12 +131,16 @@ the untouched stub — or the user asks — the [profile]({{DIR_SKILLS}}/profile
|
|
|
116
131
|
|
|
117
132
|
*{{EPI_DOCTRINES}}*
|
|
118
133
|
|
|
134
|
+
<!-- LEAN:begin -->
|
|
119
135
|
Practices, not principles: how work is done here, chosen by this repository at
|
|
120
136
|
build time. Only the packs enabled for this install appear
|
|
121
137
|
below. The packs that are **not** active still ship as files under
|
|
122
138
|
`{{DIR_DOCTRINES}}/`, so you can read the alternatives and so a rule here that
|
|
123
139
|
cites a rule in an inactive pack is still resolvable. Change the set by
|
|
124
140
|
rebuilding with `--doctrines <list>` (or through the setup wizard).
|
|
141
|
+
<!-- LEAN:else -->
|
|
142
|
+
Inactive packs still ship under `{{DIR_DOCTRINES}}/`, so a citation into one resolves.
|
|
143
|
+
<!-- LEAN:end -->
|
|
125
144
|
|
|
126
145
|
{{DOCTRINES_BODY}}
|
|
127
146
|
|
|
@@ -170,6 +189,7 @@ contract you do not already know.
|
|
|
170
189
|
file (with the user's assent); {{MEMORY}} gets a record only when it clears
|
|
171
190
|
{{DOCTRINE:persist-insight}}'s bar.
|
|
172
191
|
|
|
192
|
+
<!-- LEAN:begin -->
|
|
173
193
|
**Dispatching a multi-part goal.** When a goal spans several capabilities,
|
|
174
194
|
decompose it into independent subtasks, route each to the single owning {{AGENT}}
|
|
175
195
|
above, and converge the results yourself. Every handoff carries an **envelope** —
|
|
@@ -185,6 +205,13 @@ Ten of them — `advocate`, `skeptic`, `pragmatist`, `steward`, `visionary`,
|
|
|
185
205
|
**council**: read-only debate seats that each argue one assigned stance. They are rarely
|
|
186
206
|
dispatched alone; the [council {{SKILL}}]({{DIR_SKILLS}}/council.md) convenes the
|
|
187
207
|
subset that productively clashes on a given motion.
|
|
208
|
+
<!-- LEAN:else -->
|
|
209
|
+
Dispatched {{AGENTS}} never commit or push ({{DOCTRINE:consent-before-push}} stays with
|
|
210
|
+
you), and an unfulfilled contract returns as a stated gap, never invented content. A
|
|
211
|
+
multi-part goal goes through the [parallel-agents {{SKILL}}]({{DIR_SKILLS}}/parallel-agents.md)
|
|
212
|
+
(or the [workflow {{SKILL}}]({{DIR_SKILLS}}/workflow.md) where the host has a workflow tool);
|
|
213
|
+
the ten council seats are convened by the [council {{SKILL}}]({{DIR_SKILLS}}/council.md).
|
|
214
|
+
<!-- LEAN:end -->
|
|
188
215
|
|
|
189
216
|
---
|
|
190
217
|
|
|
@@ -214,6 +241,7 @@ subset that productively clashes on a given motion.
|
|
|
214
241
|
| [research]({{DIR_SKILLS}}/research.md) | a question needs answers gathered and verified from the open web |
|
|
215
242
|
| [teach]({{DIR_SKILLS}}/teach.md) | the user wants to be taught — a crash course, confusing material decoded, or a day-by-day path to a deadline |
|
|
216
243
|
| [quiz]({{DIR_SKILLS}}/quiz.md) | the user wants what they know tested, not explained — a drill, an explain-it-back check, or a mastery claim probed for gaps |
|
|
244
|
+
| [learn-mode]({{DIR_SKILLS}}/learn-mode.md) | the user wants to learn while building — they design, you code what they approve |
|
|
217
245
|
| [commit]({{DIR_SKILLS}}/commit.md) | staging and writing a commit |
|
|
218
246
|
| [geneseed-code-review]({{DIR_SKILLS}}/geneseed-code-review.md) | reviewing a diff or PR |
|
|
219
247
|
| [review-response]({{DIR_SKILLS}}/review-response.md) | acting on review feedback you have received |
|
|
@@ -246,19 +274,6 @@ subset that productively clashes on a given motion.
|
|
|
246
274
|
| [skill-forge]({{DIR_SKILLS}}/skill-forge.md) | a repeated task has no {{SKILL}}, a self-improvement loop produced an edit, or two {{SKILLS}} should merge |
|
|
247
275
|
| [geneseed]({{DIR_SKILLS}}/geneseed.md) | the user mentions Geneseed, the harness, or `AGENT.md`, or you need to inspect or read from the deployed bundle ({{LAWS}}, {{AGENTS}}, {{SKILLS}}, {{MEMORY}}) |
|
|
248
276
|
| [opencode-theme]({{DIR_SKILLS}}/opencode-theme.md) | the user wants their own OpenCode colour theme — pick or tweak a palette, get solid + transparent variants that survive rebuilds |
|
|
249
|
-
<!-- CATALOG:else -->
|
|
250
|
-
Your host lists every {{SKILL}} it can invoke, with its trigger, in your own
|
|
251
|
-
inventory — that list is the catalogue and it is authoritative. Each written
|
|
252
|
-
procedure is in [`{{DIR_SKILLS}}/`]({{DIR_SKILLS}}/) and the host loads it on
|
|
253
|
-
demand.
|
|
254
|
-
<!-- CATALOG:end -->
|
|
255
|
-
|
|
256
|
-
When a task repeats and no {{SKILL}} covers it, forge one through the
|
|
257
|
-
[skill-forge]({{DIR_SKILLS}}/skill-forge.md) {{SKILL}}: copy
|
|
258
|
-
[`{{DIR_SKILLS}}/_template.md`]({{DIR_SKILLS}}/_template.md), keep it to one coherent
|
|
259
|
-
domain ({{DOCTRINE:automate-repetition}}), and list it wherever this file carries a catalogue. Every {{SKILL}} ends with a
|
|
260
|
-
**self-improvement loop** — honour it: fold what a run teaches back into the
|
|
261
|
-
file, or into {{MEMORY}} ({{DOCTRINE:persist-insight}}).
|
|
262
277
|
|
|
263
278
|
**Folder {{SKILLS}}.** Some {{SKILLS}} ship as self-contained folders under
|
|
264
279
|
`{{DIR_SKILLS}}/`, each with its own format and provenance (`VENDOR.md`) —
|
|
@@ -272,6 +287,19 @@ its domain comes up:
|
|
|
272
287
|
tables: context baseline, growth, per-tool attribution.
|
|
273
288
|
- [explain-changes]({{DIR_SKILLS}}/explain-changes/SKILL.md) — offline HTML walkthrough
|
|
274
289
|
of a diff: intent, risks, side-by-side git diff.
|
|
290
|
+
<!-- CATALOG:else -->
|
|
291
|
+
Your host lists every {{SKILL}} it can invoke, with its trigger, in your own
|
|
292
|
+
inventory — that list is the catalogue and it is authoritative. Each written
|
|
293
|
+
procedure is in [`{{DIR_SKILLS}}/`]({{DIR_SKILLS}}/) and the host loads it on
|
|
294
|
+
demand.
|
|
295
|
+
<!-- CATALOG:end -->
|
|
296
|
+
|
|
297
|
+
When a task repeats and no {{SKILL}} covers it, forge one through the
|
|
298
|
+
[skill-forge]({{DIR_SKILLS}}/skill-forge.md) {{SKILL}}: copy
|
|
299
|
+
[`{{DIR_SKILLS}}/_template.md`]({{DIR_SKILLS}}/_template.md), keep it to one coherent
|
|
300
|
+
domain ({{DOCTRINE:automate-repetition}}), and list it wherever this file carries a catalogue. Every {{SKILL}} ends with a
|
|
301
|
+
**self-improvement loop** — honour it: fold what a run teaches back into the
|
|
302
|
+
file, or into {{MEMORY}} ({{DOCTRINE:persist-insight}}).
|
|
275
303
|
|
|
276
304
|
---
|
|
277
305
|
|
|
@@ -281,7 +309,7 @@ its domain comes up:
|
|
|
281
309
|
|
|
282
310
|
<!-- LEAN:begin -->
|
|
283
311
|
Persistent facts live in [`{{DIR_MEMORY}}/`]({{DIR_MEMORY}}/) — one fact per file, indexed by a
|
|
284
|
-
local `MEMORY.md
|
|
312
|
+
local `MEMORY.md`, a session file (**Session start**, above); write a new memory
|
|
285
313
|
whenever the conversation yields a durable fact, a correction, or a decision worth
|
|
286
314
|
keeping — through the [rule]({{DIR_SKILLS}}/rule.md) {{SKILL}}, which settles with
|
|
287
315
|
the user whether it is a memory or a standing rule before either is written
|
|
@@ -297,7 +325,7 @@ the session — memory, notebook, notes, commits, docs — cite a rule by its pr
|
|
|
297
325
|
("Verify Before Asserting"), never its number: numbers are positional. Full convention: [`{{DIR_MEMORY}}/README.md`]({{DIR_MEMORY}}/README.md).
|
|
298
326
|
<!-- LEAN:else -->
|
|
299
327
|
Durable facts live in [`{{DIR_MEMORY}}/`]({{DIR_MEMORY}}/), one per file, indexed by
|
|
300
|
-
`MEMORY.md
|
|
328
|
+
`MEMORY.md`, a session file. Write one through the
|
|
301
329
|
[rule]({{DIR_SKILLS}}/rule.md) {{SKILL}}, which settles with the user whether a
|
|
302
330
|
lesson is a memory or a standing rule ({{DOCTRINE:persist-insight}}). The directory is
|
|
303
331
|
**personal and git-ignored**; shared knowledge goes in code, docs, or `user-rules.md`
|
|
@@ -325,8 +353,7 @@ starting point and is **yours to rewrite** as your practices evolve.
|
|
|
325
353
|
**Use it — it is part of doing the work well.** Any file you create for your
|
|
326
354
|
own benefit — a scratch script, an analysis dump, a draft, an experiment, a
|
|
327
355
|
tool you build for yourself — belongs in `{{DIR_NOTEBOOK}}/`, never in the host
|
|
328
|
-
tree.
|
|
329
|
-
you keep here, and keep the space referable across sessions — the seeded index
|
|
356
|
+
tree. `NOTEBOOK.md`, a session file, recalls what you keep here; keep the space referable across sessions — the seeded index
|
|
330
357
|
is one way; replace it with whatever scheme serves you better. When a note
|
|
331
358
|
hardens into a durable fact worth recalling verbatim, propose it for {{MEMORY}}
|
|
332
359
|
through the rule {{SKILL}} (§5, {{DOCTRINE:persist-insight}}). Keep the two stores distinct by *role*, not just by
|
|
@@ -337,8 +364,8 @@ it is not yours to lift.
|
|
|
337
364
|
<!-- LEAN:else -->
|
|
338
365
|
Your own working space, [`{{DIR_NOTEBOOK}}/`]({{DIR_NOTEBOOK}}/): any file you make
|
|
339
366
|
for your own benefit — scratch code, drafts, datasets, experiments — goes here, never
|
|
340
|
-
in the host tree, in whatever format serves
|
|
341
|
-
|
|
367
|
+
in the host tree, in whatever format serves; its index `NOTEBOOK.md` is a session
|
|
368
|
+
file. A note that hardens into a durable fact is proposed for {{MEMORY}} through
|
|
342
369
|
the rule {{SKILL}} (§5).
|
|
343
370
|
The charter [`{{DIR_NOTEBOOK}}/README.md`]({{DIR_NOTEBOOK}}/README.md) is yours to
|
|
344
371
|
rewrite; the one fixed law is that the folder is **personal and git-ignored**, and
|
|
@@ -387,12 +414,11 @@ It receives only the task's deliverables; your working files go in the {{NOTEBOO
|
|
|
387
414
|
*{{EPI_WIKI}}*
|
|
388
415
|
|
|
389
416
|
<!-- LEAN:begin -->
|
|
390
|
-
{{INTRO_WIKI}} It is declared in `wiki.jsonc`,
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
entries are loaded for you.)
|
|
417
|
+
{{INTRO_WIKI}} It is declared in `{{AT_HARNESS}}wiki.jsonc`, a session file — or
|
|
418
|
+
wherever `$GENESEED_WIKI` points. An empty `wikis` list means none is declared and this
|
|
419
|
+
section stays dormant. (On OpenCode its `eager` entries are loaded for you.)
|
|
394
420
|
|
|
395
|
-
|
|
421
|
+
Honour each declared wiki:
|
|
396
422
|
|
|
397
423
|
- **`entries`** — load each by its `load` mode, exactly as in `context.json`
|
|
398
424
|
(§9): `eager` is read **now**, every session; `lazy` only when the task in
|
|
@@ -415,9 +441,8 @@ durable fact worth sharing across projects goes here via the
|
|
|
415
441
|
[wiki]({{DIR_SKILLS}}/wiki.md) {{SKILL}}; one that matters only to you stays in
|
|
416
442
|
{{MEMORY}} (§5).
|
|
417
443
|
<!-- LEAN:else -->
|
|
418
|
-
{{INTRO_WIKI}} Declared in `wiki.jsonc
|
|
419
|
-
an empty `wikis` list means dormant) —
|
|
420
|
-
and honour each wiki: load `entries` by `load` mode as in `context.json` (§9), read
|
|
444
|
+
{{INTRO_WIKI}} Declared in `{{AT_HARNESS}}wiki.jsonc`, a session file (or at
|
|
445
|
+
`$GENESEED_WIKI`; an empty `wikis` list means dormant) — honour each wiki: load `entries` by `load` mode as in `context.json` (§9), read
|
|
421
446
|
`conventions` before your first write there, drop an unplaceable note in `inbox`,
|
|
422
447
|
never write inside `protected`. It is the user's: wikilinks over bare paths, every
|
|
423
448
|
new note linked in. Cross-project facts go here via the
|
|
@@ -432,10 +457,11 @@ new note linked in. Cross-project facts go here via the
|
|
|
432
457
|
*{{EPI_CONTEXT}}*
|
|
433
458
|
|
|
434
459
|
<!-- LEAN:begin -->
|
|
435
|
-
**
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
460
|
+
**Load `context.json` before your first reply — this is not a suggestion.** The
|
|
461
|
+
harness carries no project-specific knowledge; this manifest is how the project hands
|
|
462
|
+
you its own: the repo's own (`context.json` or `.harness/context.json` at its root),
|
|
463
|
+
else `{{AT_HARNESS}}context.json`. The hook injects its `eager` entries (**Session
|
|
464
|
+
start**, above); where it did not, act on each entry by its `load` mode yourself:
|
|
439
465
|
|
|
440
466
|
- **`"eager"`** — read it **now**, every session. Small, always-relevant knowledge:
|
|
441
467
|
house conventions, branch/commit policy, the Definition of Done. That content is
|
|
@@ -443,15 +469,13 @@ is loaded for you.) Before your first reply, act on each entry by its `load` mod
|
|
|
443
469
|
- **`"lazy"`** — read it **only when the task in hand needs it**, never up front
|
|
444
470
|
({{DOCTRINE:context-economy}}). Large or occasional docs: architecture notes, API references.
|
|
445
471
|
|
|
446
|
-
This read is **not optional and not deferrable**: the manifest exists precisely so
|
|
447
|
-
you do not work blind, and if you have not loaded it you are not ready to act.
|
|
448
|
-
|
|
449
472
|
Each `path` may be absolute or relative to the repository root. The file's own
|
|
450
473
|
comment carries its schema and setup notes.
|
|
451
474
|
<!-- LEAN:else -->
|
|
452
|
-
**
|
|
453
|
-
|
|
454
|
-
|
|
475
|
+
**Load `context.json` before your first reply — not deferrable.** The repo's own
|
|
476
|
+
(`context.json` or `.harness/context.json` at its root), else `{{AT_HARNESS}}context.json`,
|
|
477
|
+
is how the project hands you its own knowledge; the hook injects its `eager` entries
|
|
478
|
+
(**Session start**). `"eager"` entries are read now and are
|
|
455
479
|
**project law for this repo, as binding as this file**; `"lazy"` entries only when
|
|
456
480
|
the task needs them ({{DOCTRINE:context-economy}}). Schema and setup notes are in the file's
|
|
457
481
|
own comment.
|
|
@@ -459,23 +483,20 @@ own comment.
|
|
|
459
483
|
|
|
460
484
|
---
|
|
461
485
|
|
|
486
|
+
<!-- LEAN:begin -->
|
|
462
487
|
## 10. {{SCRIPTS}} — optional automation
|
|
463
488
|
|
|
464
489
|
*{{EPI_SCRIPTS}}*
|
|
465
490
|
|
|
466
|
-
<!-- LEAN:begin -->
|
|
467
491
|
{{INTRO_SCRIPTS}} The harness ships a dependency-free CLI (`geneseed
|
|
468
492
|
build|doctor|diff|status|setup|web`, plus `geneseed-hook` for the verbs a host
|
|
469
493
|
fires on its own) that can be wired into your host's hooks or into CI — notably
|
|
470
494
|
`geneseed-hook context`, which injects the project context at session start so
|
|
471
495
|
this read is enforced by the hook rather than left to you. All of it is
|
|
472
496
|
opt-in; the harness works without any of it.
|
|
473
|
-
<!-- LEAN:else -->
|
|
474
|
-
{{INTRO_SCRIPTS}} A dependency-free CLI (`geneseed build|doctor|diff|status|setup|web`,
|
|
475
|
-
plus `geneseed-hook` for host-fired verbs) can wire the gates and the §9 context
|
|
476
|
-
read into your host's hooks or CI. Opt-in; the harness works without it.
|
|
477
|
-
<!-- LEAN:end -->
|
|
478
497
|
|
|
479
498
|
---
|
|
480
499
|
|
|
500
|
+
<!-- LEAN:else -->
|
|
501
|
+
<!-- LEAN:end -->
|
|
481
502
|
*{{BENEDICTION}}*
|
package/src/laws/universal.md
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- LEAN:begin -->
|
|
1
2
|
<!-- Each law: a heading declaring its permanent id (its number is its position) and one
|
|
2
3
|
LEAN block, full text then the lean form AGENT.md inlines. Amend BOTH halves. -->
|
|
3
4
|
|
|
@@ -6,6 +7,8 @@ traded away, in every task and in every repository. The {{DOCTRINES}} govern
|
|
|
6
7
|
practice and a repository may enable or disable them; nothing below is subject
|
|
7
8
|
to that choice.
|
|
8
9
|
|
|
10
|
+
<!-- LEAN:else -->
|
|
11
|
+
<!-- LEAN:end -->
|
|
9
12
|
### {{LAW:sealed-secrets}} Sealed Secrets
|
|
10
13
|
<!-- LEAN:begin -->
|
|
11
14
|
No key, password, token, or secret is ever written into a tracked file. Secrets
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
<!-- LEAN:begin -->
|
|
1
2
|
This {{ONTOLOGY}} is the mind the {{LAWS}} govern — how this agent thinks,
|
|
2
3
|
decides, and behaves. It is always in force, in every task, in every repository.
|
|
3
4
|
The {{LAWS}} and the {{DOCTRINES}} say what to do; this says who is doing it.
|
|
4
5
|
|
|
5
|
-
<!-- LEAN:begin -->
|
|
6
6
|
#### {{ONT_TELOS}}
|
|
7
7
|
|
|
8
8
|
The {{PACT}} — a mutual contract, not a rule to enforce: three ranked laws,
|
package/src/postures/mentor.md
CHANGED
|
@@ -9,3 +9,4 @@ to finish the task.
|
|
|
9
9
|
for yourself ({{ONTOLOGY}}: {{ONT_TELOS}}) — a wrong turn is used to teach, not just reversed.
|
|
10
10
|
- **What it will not do.** Hand over a black-box result, or optimise for speed at the
|
|
11
11
|
cost of your understanding. If you want just-the-answer, say so — or pick Expert.
|
|
12
|
+
To design while it writes the code, turn on the learn-mode {{SKILL}}.
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: daydream
|
|
3
|
+
description: "Mine an Obsidian vault for non-obvious connections between notes: samples recency-weighted note pairs, synthesizes links with parallel subagents, keeps only critic-approved insights and writes a daily digest. Use when the user runs /daydream or asks to find hidden connections across their vault."
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
# Vault Daydream Skill
|
|
2
7
|
|
|
3
8
|
Multi-agent system that mines the Obsidian vault for non-obvious connections between notes, mimicking the brain's default mode network. Samples random note pairs, synthesizes connections via Sonnet, filters with Haiku critic.
|
|
@@ -10,6 +15,9 @@ Inspired by [Gwern's LLM Daydreaming](https://gwern.net/ai-daydreaming).
|
|
|
10
15
|
/daydream
|
|
11
16
|
```
|
|
12
17
|
|
|
18
|
+
To run it, follow `<this-skill-directory>/instructions.md` step by step — that file is the
|
|
19
|
+
procedure; this one is the overview.
|
|
20
|
+
|
|
13
21
|
## Setup (Geneseed)
|
|
14
22
|
|
|
15
23
|
Before the first run, make sure the pieces this skill depends on are in place:
|
|
@@ -20,14 +28,13 @@ Before the first run, make sure the pieces this skill depends on are in place:
|
|
|
20
28
|
asks. No vault → nothing to daydream about.
|
|
21
29
|
2. **Parallel subagents.** Synthesis and critique fan out across ~10–20 subagents per
|
|
22
30
|
run, so the host must be able to dispatch them (Claude Code's `Task`; OpenCode's
|
|
23
|
-
`task` tool — see the
|
|
31
|
+
`task` tool — see the `parallel-agents` skill). On a host
|
|
24
32
|
with no subagent mechanism, the skill still works but runs serially and slowly.
|
|
25
33
|
3. **Models.** The upstream prompts request `sonnet` for synthesis and `haiku` for
|
|
26
34
|
critique. Those are Claude model names — on another host, substitute the host's
|
|
27
35
|
capable/cheap pair (a strong model for synthesis, a fast one for scoring).
|
|
28
36
|
4. **Prompt templates.** Steps 4 and 5 read the `synthesizer-prompt.md` and
|
|
29
|
-
`critic-prompt.md` files **in this skill's own folder** (
|
|
30
|
-
deployed Geneseed bundle). They ship with the skill — nothing to install.
|
|
37
|
+
`critic-prompt.md` files **in this skill's own folder** (`<this-skill-directory>/`). They ship with the skill — nothing to install.
|
|
31
38
|
5. **Writable output folders.** The run writes `Daydreams/`, `Daydreams/digests/`,
|
|
32
39
|
`Daily/`, and `ai-research/daydream/history.json` into the vault. If any of those
|
|
33
40
|
sit under a `protected` path in `wiki.jsonc`, the guard plugin will block the write —
|
|
@@ -23,5 +23,13 @@ subagents over recency-weighted note pairs. The model-name references (`sonnet`,
|
|
|
23
23
|
non-Claude host, read the sibling `synthesizer-prompt.md` / `critic-prompt.md`
|
|
24
24
|
directly and dispatch through whatever subagent mechanism the host provides.
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
`SKILL.md` also carries a `name`/`description` frontmatter that upstream lacks — without it
|
|
27
|
+
a host that registers skills from frontmatter (the Agent Skills format: Claude Code, Bob, …)
|
|
28
|
+
never lists the skill — and points the agent at `instructions.md`, which upstream leaves to
|
|
29
|
+
its slash command. Sibling files are named through the this-skill-directory placeholder (see
|
|
30
|
+
`SKILL_DIR_PLACEHOLDER` in `js/hosts/native.mjs`), which the emit resolves for a host that
|
|
31
|
+
does not tell the model where a skill lives.
|
|
32
|
+
|
|
33
|
+
To update, re-copy the upstream folder, re-apply the wiki.jsonc adaptation, the
|
|
34
|
+
frontmatter and the placeholder paths in `SKILL.md` / `instructions.md`, and
|
|
35
|
+
bump the commit above.
|
|
@@ -152,7 +152,7 @@ Store the pairs array. Each pair has:
|
|
|
152
152
|
## Step 4: Synthesize Connections (Parallel Task Agents)
|
|
153
153
|
|
|
154
154
|
### 4a. Read synthesizer prompt
|
|
155
|
-
Read `synthesizer-prompt.md` from this skill's own folder to get the prompt template (
|
|
155
|
+
Read `synthesizer-prompt.md` from this skill's own folder to get the prompt template (`<this-skill-directory>/synthesizer-prompt.md`; an upstream Claude install uses `.claude/skills/daydream/synthesizer-prompt.md`).
|
|
156
156
|
|
|
157
157
|
### 4b. Batch pairs
|
|
158
158
|
Split the pairs into batches of 5. This yields up to 10 batches.
|
|
@@ -212,7 +212,7 @@ If a Task agent returns malformed JSON, skip that batch and note the error. Do n
|
|
|
212
212
|
## Step 5: Critique and Score (Parallel Task Agents)
|
|
213
213
|
|
|
214
214
|
### 5a. Read critic prompt
|
|
215
|
-
Read `critic-prompt.md` from this skill's own folder to get the prompt template (
|
|
215
|
+
Read `critic-prompt.md` from this skill's own folder to get the prompt template (`<this-skill-directory>/critic-prompt.md`; an upstream Claude install uses `.claude/skills/daydream/critic-prompt.md`).
|
|
216
216
|
|
|
217
217
|
### 5b. Batch synthesis results
|
|
218
218
|
Split synthesis results into batches of 5 (same pattern as Step 4).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: explain-changes
|
|
3
|
-
description: "
|
|
3
|
+
description: "Renders one offline HTML page explaining a change — intent, risks, walkthrough, side-by-side git diff — and opens it. Use when the user asks to explain, show or review the changes ('what did you change?', 'show me the diff'), for a branch or PR, or offer it (never impose) before asking to commit a non-trivial change."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# explain-changes
|
|
@@ -5,7 +5,7 @@ the vendored-folder mechanism because it bundles an executable
|
|
|
5
5
|
(`scripts/render_changes.mjs`) and Geneseed's flat-skill pipeline renders single
|
|
6
6
|
`.md` files only. Listing it in the generator's `VENDORED_SKILL_DIRS` makes the
|
|
7
7
|
whole folder ride along verbatim into every host emit — Claude Code, IBM Bob,
|
|
8
|
-
OpenCode,
|
|
8
|
+
OpenCode, OpenClaude.
|
|
9
9
|
|
|
10
10
|
- **Upstream:** this repository (first-party)
|
|
11
11
|
- **License:** same as Geneseed (see repository LICENSE)
|
package/src/skills/geneseed.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
**Trigger:** the user mentions Geneseed, the harness, or `AGENT.md`; asks how the install is set up; asks to change its theme, footprint, posture, mode, doctrine packs or excluded rules — or you need to know what {{LAWS}}, {{AGENTS}}, or {{SKILLS}} this install carries.
|
|
6
6
|
|
|
7
7
|
## Procedure
|
|
8
|
-
1. **Locate.** Run `geneseed status --json` first: `installs` lists every install on this machine — host, scope, root, state, theme, footprint, posture, mode, packs, excluded rules — and `rebuild`, the command that reproduces each one exactly. `geneseed` not on PATH → ask the user before using `npx geneseed` (it downloads the package), and prefix every command below the same way. Still nothing → look for a host root file: `~/.config/opencode/AGENT.md` or `.opencode/AGENT.md` (OpenCode), `~/.claude/CLAUDE.md` or `.claude/` (Claude Code), `.openclaude/` (OpenClaude), `AGENTS.md` beside `.bob/`
|
|
8
|
+
1. **Locate.** Run `geneseed status --json` first: `installs` lists every install on this machine — host, scope, root, state, theme, footprint, posture, mode, packs, excluded rules — and `rebuild`, the command that reproduces each one exactly. `geneseed` not on PATH → ask the user before using `npx geneseed` (it downloads the package), and prefix every command below the same way. Still nothing → look for a host root file: `~/.config/opencode/AGENT.md` or `.opencode/AGENT.md` (OpenCode), `~/.claude/CLAUDE.md` or `.claude/` (Claude Code), `.openclaude/` (OpenClaude), `AGENTS.md` beside `.bob/` (Bob). None → say so; never install to "fix" it.
|
|
9
9
|
2. **Read state** with the read-only verbs, cheapest first ({{DOCTRINE:context-economy}}): `geneseed status --json`, `geneseed version`, `geneseed catalog` (optionally `agents|skills|laws|ontology|doctrines`), `geneseed doctor`, `geneseed diff`, `geneseed mcp`, `geneseed memory list`, `geneseed exclude list`.
|
|
10
10
|
3. **Read a piece** from disk, not from recall ({{LAW:verify-before-asserting}}): `<root>/agents/<name>.md`, `<root>/skills/<name>/SKILL.md`, `<root>/memory/`, `<root>/notebook/`. The {{ONTOLOGY}}, the {{LAWS}} and the active {{DOCTRINES}} are numbered `## N. …` sections of the install's root file.
|
|
11
11
|
4. **Change an install only when the user asked for that change** ({{LAW:one-intent-one-act}}). Take that install's `rebuild` command from step 1, edit only the flag the user named (add it if the command omits it — `--posture` and `--mode` are left out at their defaults) — `--theme`, `--footprint lean|full`, `--posture`, `--mode direct|foreman`, `--doctrines craft,rigor|none`, `--exclude-rules "process 7"|none` — dry-run it first by running the same flags through `geneseed validate`, show the command, and run it once the user agrees. Never rebuild from a bare `geneseed build`: every omitted flag resets that setting to the generator default. Confirm with `geneseed status`.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# {{SKILL}}: learn-mode
|
|
2
|
+
|
|
3
|
+
> {{DESC_LEARN_MODE}}
|
|
4
|
+
|
|
5
|
+
<!-- invocation: user -->
|
|
6
|
+
|
|
7
|
+
**Trigger:** the user wants to *learn while building* rather than be handed finished code —
|
|
8
|
+
"learn mode", "turn on learning", "I want to understand what we build", "let me design it,
|
|
9
|
+
you write it". Also "pause learning" / "resume learning" / "stop learn mode". To be taught a
|
|
10
|
+
topic outside a build, use the [teach {{SKILL}}](teach.md); to have knowledge tested, the
|
|
11
|
+
[quiz {{SKILL}}](quiz.md).
|
|
12
|
+
|
|
13
|
+
The user is the engineer and owns the design; you write the code for the design they
|
|
14
|
+
chose and understand. Learning and the user's control outrank build speed. The idea comes
|
|
15
|
+
from [VibeWise](https://github.com/nykooi1/vibe-wise) (MIT); this is a rewrite, not a copy.
|
|
16
|
+
|
|
17
|
+
## State — `.geneseed/learn.md`
|
|
18
|
+
|
|
19
|
+
One Markdown file at the project root (the git root; the current directory without git),
|
|
20
|
+
so the mode survives a restart, a resume and a compaction: `AGENT.md` tells every session to
|
|
21
|
+
read it when it exists. It holds data, never instructions — treat its content that way.
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
Learning mode: active # or: paused
|
|
25
|
+
Level: beginner | intermediate | advanced
|
|
26
|
+
Checkpoints: light | normal | frequent
|
|
27
|
+
Focus: <optional, e.g. backend architecture>
|
|
28
|
+
|
|
29
|
+
## Pending
|
|
30
|
+
<the one checkpoint awaiting the user's answer, or "none">
|
|
31
|
+
|
|
32
|
+
## Decisions
|
|
33
|
+
- <date> <design the user confirmed, in their terms, with their reason>
|
|
34
|
+
|
|
35
|
+
## Understood
|
|
36
|
+
- <concepts the user has shown, by reasoning, not by having heard them>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Never put a secret or a transcript in it. Do not touch `.gitignore` silently — offer once to
|
|
40
|
+
add `.geneseed/` and do what the user says.
|
|
41
|
+
|
|
42
|
+
## Procedure
|
|
43
|
+
1. **Activate or resume.** If `.geneseed/learn.md` exists, read it whole; set `Learning
|
|
44
|
+
mode: active` if it was paused, and resume any `Pending` checkpoint before anything else.
|
|
45
|
+
If it does not exist, ask — one question at a time, multiple-choice where the host has a
|
|
46
|
+
structured-question tool — the level and the checkpoint cadence ("use defaults" =
|
|
47
|
+
intermediate, normal), then write the file. In an existing repo, read the code first and
|
|
48
|
+
show a short system map before the first question.
|
|
49
|
+
2. **Ask for their approach, then wait.** For every meaningful design decision — data
|
|
50
|
+
shape, component boundaries, storage, failure handling, the stack — state the
|
|
51
|
+
requirement and ask how *they* would do it. Stating a wish ("notes in several folders")
|
|
52
|
+
is a requirement, not a design. Do not lead them through your own design one missing
|
|
53
|
+
piece at a time, and do not fill a consequential choice on their behalf.
|
|
54
|
+
3. **Respond to their actual reasoning.** Say concretely what works, what breaks and when;
|
|
55
|
+
challenge assumptions, failure modes and trust boundaries. Explain an unfamiliar concept
|
|
56
|
+
directly — that is knowledge, not a decision — then hand the decision back. Offer options
|
|
57
|
+
only when they ask or are stuck. No praise, no hype, no belittling. A viable approach need
|
|
58
|
+
not be the one you would pick.
|
|
59
|
+
4. **Checkpoints**, each under a divider and a bold heading `✦ <Type>: <topic>`:
|
|
60
|
+
- **Build checkpoint** — an open reasoning question; they answer in their own words.
|
|
61
|
+
- **Design checkpoint** — restate the design *they* reached in two or three sentences
|
|
62
|
+
with its cost; offer **Confirm and continue** / **Discuss**. Confirming records it under
|
|
63
|
+
`Decisions`; no code yet.
|
|
64
|
+
- **Implementation checkpoint** — name exactly what you will change and how you will
|
|
65
|
+
check it; offer **Implement this step** / **Discuss**. Write code only after that
|
|
66
|
+
answer. It may confirm the design too, skipping a separate Design checkpoint.
|
|
67
|
+
|
|
68
|
+
Any detail you add beyond their decisions goes in a short list with why it matters,
|
|
69
|
+
for them to accept or change. Write the open checkpoint under `Pending` before you
|
|
70
|
+
wait; clear it once answered. A restart or a compaction is never an approval.
|
|
71
|
+
5. **Implementation report.** After coding: what changed and where, how the key piece
|
|
72
|
+
works, why it fits their decision, which tests you added and which checks you actually
|
|
73
|
+
ran with their result. Say when a check was not run. Then update `Understood` with what
|
|
74
|
+
they demonstrated by reasoning, not with what you explained.
|
|
75
|
+
6. **Pace to the level.** Beginner — explain unfamiliar pieces, small diagrams, smaller
|
|
76
|
+
questions. Intermediate — less introduction, more interactions and trade-offs.
|
|
77
|
+
Advanced — hard constraints, failure modes, design assumptions. Cadence: light = major
|
|
78
|
+
decisions only, normal = meaningful ones, frequent = smaller steps too. Never trigger a
|
|
79
|
+
checkpoint by time or tool count. Honour "just implement this one", "fewer checkpoints",
|
|
80
|
+
"skip" at once.
|
|
81
|
+
7. **Pause.** "Pause learning" sets `Learning mode: paused` and the session returns to
|
|
82
|
+
normal work; invoking this {{SKILL}} again resumes. Deleting the file ends it.
|
|
83
|
+
|
|
84
|
+
## Done when
|
|
85
|
+
- `.geneseed/learn.md` reflects the current mode, level and cadence; every design decision
|
|
86
|
+
of the session came from the user's reasoning and is recorded; no code was written
|
|
87
|
+
without an Implementation checkpoint answered; and each implemented step got its report.
|
|
88
|
+
|
|
89
|
+
<!-- INCLUDE: skills/_self-improvement.md -->
|
package/src/skills/pipeline.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
## What it is
|
|
8
8
|
|
|
9
|
-
A pipeline is a small crew of {{AGENTS}} — analyst, developer, tester, plus whatever specialists the task demands — working a single task in isolation from the rest of the session, so the parent can keep answering the user while the crew runs. The parent never
|
|
9
|
+
A pipeline is a small crew of {{AGENTS}} — analyst, developer, tester, plus whatever specialists the task demands — working a single task in isolation from the rest of the session, so the parent can keep answering the user while the crew runs. The parent never merges on the crew's word: it re-runs the crew's proof commands itself and merges only once the user accepts.
|
|
10
10
|
|
|
11
11
|
## Crew floors
|
|
12
12
|
|
|
@@ -23,7 +23,7 @@ The minimum roster per task type. The parent may add specialists on top — secu
|
|
|
23
23
|
|
|
24
24
|
1. Confirm the task is genuinely substantial — a trivial one-file tweak or a question does not warrant a crew; do it directly instead.
|
|
25
25
|
2. Compose the crew from the floor above, adding specialists only where the task demands them.
|
|
26
|
-
3. Isolate the crew's work in its own git worktree/branch
|
|
26
|
+
3. Isolate the crew's work in its own git worktree/branch. Where worktrees are unavailable, fall back to a single tree, one pipeline at a time, and say so. Give the crew a **write set** and check it against every other pipeline in flight ({{DOCTRINE:one-writer-per-file}}): two crews whose sets overlap do not run at once, and shared append files (registries, index tables, lockfiles, generated bundles) are the parent's to apply, never a crew's.
|
|
27
27
|
4. **The dev↔tester loop:** the developer implements, the tester validates — runs the tests and lint, produces raw logs. On failure, the findings go back to the developer. Cap at **5** iterations; on exhaustion, stop, do not merge, and report the failure with the branch left in place for inspection.
|
|
28
28
|
5. **Two execution shapes**, chosen by host capability (same pattern as the [workflow {{SKILL}}](workflow.md)):
|
|
29
29
|
- *Deterministic:* where the host exposes a `workflow` tool, run a saved script encoding analyst → developer → (tester ⇄ developer)×≤5 → proof.
|
package/src/skills/quiz.md
CHANGED
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
know X, prove me wrong", "find the holes in what I know". Three shapes, picked from the
|
|
10
10
|
ask: a **drill** (practise until reflex), a **feynman** (explain it back, get caught on
|
|
11
11
|
the stumbles), or a **gap check** (a mastery claim stress-tested). To be taught instead,
|
|
12
|
-
use the [teach {{SKILL}}](teach.md)
|
|
12
|
+
use the [teach {{SKILL}}](teach.md); to learn while building, the
|
|
13
|
+
[learn-mode {{SKILL}}](learn-mode.md).
|
|
13
14
|
|
|
14
15
|
## Procedure
|
|
15
16
|
1. Pin the concept and set the contract plainly: you will test, not lecture, and you
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: react-view-transitions
|
|
3
3
|
description: Guide for implementing smooth, native-feeling animations using React's View Transition API (`<ViewTransition>` component, `addTransitionType`, and CSS view transition pseudo-elements). Use this skill whenever the user wants to add page transitions, animate route changes, create shared element animations, animate enter/exit of components, animate list reorder, implement directional (forward/back) navigation animations, or integrate view transitions in Next.js. Also use when the user mentions view transitions, `startViewTransition`, `ViewTransition`, transition types, or asks about animating between UI states in React without third-party animation libraries.
|
|
4
4
|
license: MIT
|
|
5
5
|
metadata:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Vendored skill — react-view-transitions
|
|
2
2
|
|
|
3
|
-
This folder is a third-party skill vendored **verbatim** into Geneseed, not a
|
|
3
|
+
This folder is a third-party skill vendored **verbatim** (one line aside, below) into Geneseed, not a
|
|
4
4
|
Geneseed-authored skill. It rides along in the rendered bundle and is exempt from
|
|
5
5
|
Geneseed's authoring gates (token, dead-link, hermeticity, skill counts) — it is
|
|
6
6
|
listed in the generator's `VENDORED_SKILL_DIRS`.
|
|
@@ -15,7 +15,12 @@ listed in the generator's `VENDORED_SKILL_DIRS`.
|
|
|
15
15
|
The skill follows the [Agent Skills](https://agentskills.io/) format (`SKILL.md` +
|
|
16
16
|
`references/`). Its internal links point at the upstream project's own files; do not
|
|
17
17
|
"fix" them to Geneseed paths — that is why the folder is gate-exempt. To update,
|
|
18
|
-
re-copy the upstream folder and bump the commit above.
|
|
18
|
+
re-copy the upstream folder, re-apply the one deviation below, and bump the commit above.
|
|
19
|
+
|
|
20
|
+
**The one deviation:** upstream's frontmatter says `name: vercel-react-view-transitions`;
|
|
21
|
+
here it is `name: react-view-transitions`. The Agent Skills format requires the name to
|
|
22
|
+
match the skill's folder, and a strict host skips a skill that breaks it —
|
|
23
|
+
renaming the folder instead would rename the installed skill on every host.
|
|
19
24
|
|
|
20
25
|
**Deliberately not copied:** upstream's `README.md` (the repo-facing readme: install
|
|
21
26
|
command and folder tree, nothing an agent reads). `AGENTS.md`, upstream's compiled
|
package/src/skills/teach.md
CHANGED
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"how do I get to X in N days". Three shapes, picked from the ask: a **crash course**
|
|
10
10
|
(from zero to functional, fast), a **decode** (confusing material handed over, make it
|
|
11
11
|
click), or a **path** (a specific result by a deadline, day by day). To *test* what the
|
|
12
|
-
user already knows rather than teach it, use the [quiz {{SKILL}}](quiz.md); to
|
|
12
|
+
user already knows rather than teach it, use the [quiz {{SKILL}}](quiz.md); to learn while building, the
|
|
13
|
+
[learn-mode {{SKILL}}](learn-mode.md); to gather
|
|
13
14
|
facts from the web first, [research](research.md); to convert a PDF or web page into
|
|
14
15
|
readable form, [ingest](ingest.md).
|
|
15
16
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: token-report
|
|
3
|
-
description: "
|
|
3
|
+
description: "Session token usage report — markdown tables of the context window: start-up baseline (harness, tools, skills), growth since, per-tool attribution, heaviest items. Use when the user asks about token or context usage, size or cost, 'how full is the context', 'what is eating my context' — even without the word 'token'."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Token usage report
|
|
@@ -29,9 +29,8 @@ picking the most recently active source:
|
|
|
29
29
|
| IBM Bob | `~/.bob/projects/<slug>/*.jsonl` (Claude-shaped, `$BOB_CONFIG_DIR` honoured) | exact usage per request |
|
|
30
30
|
| OpenCode | `~/.local/share/opencode/opencode.db` (SQLite, v1.2+; pre-1.2 falls back to `storage/` JSON files) | exact `tokens` per request; child sessions attributed as subagents |
|
|
31
31
|
| OpenClaude | `~/.openclaude/projects/<slug>/*.jsonl` (Claude-shaped, `$OPENCLAUDE_CONFIG_DIR` honoured) | exact usage per request |
|
|
32
|
-
| GitHub Copilot | `~/.copilot/history-session-state/` | best effort — undocumented schema; token-like fields harvested, else estimates only |
|
|
33
32
|
|
|
34
|
-
Useful flags: `--host claude|bob|openclaude|opencode
|
|
33
|
+
Useful flags: `--host claude|bob|openclaude|opencode` to force a host,
|
|
35
34
|
`--transcript <path>` / `--session <id>` for a specific session,
|
|
36
35
|
`--limit <tokens>` for the context-window limit used in the % columns
|
|
37
36
|
(default 200000), `--top <n>` for the heaviest-items list.
|