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,43 @@
|
|
|
1
|
+
# {{SKILL}}: release
|
|
2
|
+
|
|
3
|
+
> {{DESC_RELEASE}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** cutting a release — a version bump, a changelog entry, and a tag.
|
|
6
|
+
|
|
7
|
+
## Procedure
|
|
8
|
+
1. Decide the version from the changes since the last tag, following the project's
|
|
9
|
+
scheme (semver: breaking → major, feature → minor, fix → patch). Verify the
|
|
10
|
+
current version and the last tag rather than guessing (universal {{LAW}} III).
|
|
11
|
+
**Never ship a breaking change under a non-major bump** — honest versions are a
|
|
12
|
+
promise to downstream consumers, and a quiet break is a broken one.
|
|
13
|
+
2. Update the version wherever it is declared (manifest, package metadata, a VERSION
|
|
14
|
+
constant) — find *every* occurrence so they cannot drift (universal {{LAW}} XII).
|
|
15
|
+
3. Update the changelog: a dated section for the new version summarising the
|
|
16
|
+
user-visible changes, grouped (added / changed / fixed), derived from the commits
|
|
17
|
+
since the last tag.
|
|
18
|
+
4. Commit the version bump and changelog as one focused commit, through the
|
|
19
|
+
[commit {{SKILL}}](commit.md) — summary and exact message presented for
|
|
20
|
+
acceptance (universal {{LAW}} II, {{LAW}} XX).
|
|
21
|
+
5. Tag the release (annotated, matching the version). Tagging and publishing are
|
|
22
|
+
**outward-facing** (universal {{LAW}} IV), and the push itself needs explicit
|
|
23
|
+
per-push acceptance — a release lands on a shared branch, where {{LAW}} XX
|
|
24
|
+
applies with extra care and grants no standing consent.
|
|
25
|
+
6. With that acceptance, push the commit and the tag together; trigger or verify
|
|
26
|
+
the publish/release pipeline.
|
|
27
|
+
|
|
28
|
+
## Done when
|
|
29
|
+
- Version, changelog, and tag all name the same number, and the release is pushed
|
|
30
|
+
(or staged for the pipeline) with no unrelated changes bundled in.
|
|
31
|
+
|
|
32
|
+
## Self-improvement
|
|
33
|
+
|
|
34
|
+
Close each run with one beat of reflection on the {{SKILL}} itself:
|
|
35
|
+
- A step misled, a needed step was missing, or the trigger fired wrongly — that
|
|
36
|
+
is a flaw in this file. Propose the exact edit (trigger, procedure, or
|
|
37
|
+
done-when) and apply it with the user's assent ({{LAW}} II).
|
|
38
|
+
- A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
|
|
39
|
+
clears {{LAW}} VI's bar: it would change how a future session behaves, and a
|
|
40
|
+
fresh read of the repo would not re-derive it. Update an existing memory over
|
|
41
|
+
adding one; when in doubt, leave it out.
|
|
42
|
+
- No friction, nothing learned — move on; this loop earns no ceremony. Most
|
|
43
|
+
runs end here.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# {{SKILL}}: repo-map
|
|
2
|
+
|
|
3
|
+
> {{DESC_REPO_MAP}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** onboarding to a repo that has no map, or after a structural change.
|
|
6
|
+
|
|
7
|
+
## Procedure
|
|
8
|
+
1. If `ARCHITECTURE.md` exists, read it first — it is the cheapest orientation
|
|
9
|
+
(universal {{LAW}} XV).
|
|
10
|
+
2. Locate the project's own documentation — a `docs/`, `doc/`, `documentation/`,
|
|
11
|
+
or `wiki/` folder at the root, or the top-level README. Note where it lives and
|
|
12
|
+
what it covers, and record that in the map. Read the pages relevant to the work
|
|
13
|
+
at hand before changing the code they describe (universal {{LAW}} XVII) — the
|
|
14
|
+
relevant pages, not the whole tree ({{LAW}} XV).
|
|
15
|
+
3. If `ARCHITECTURE.md` is absent or stale, build or refresh it: entry points, the
|
|
16
|
+
key directories and what each holds, how to build / test / run, external
|
|
17
|
+
services, and the one or two non-obvious conventions a newcomer must know.
|
|
18
|
+
4. Keep it short — a map, not documentation. Link out for detail.
|
|
19
|
+
5. Update it in the same change whenever structure shifts (universal {{LAW}} XI).
|
|
20
|
+
|
|
21
|
+
## Done when
|
|
22
|
+
- `ARCHITECTURE.md` reflects the current structure, and a fresh agent could orient
|
|
23
|
+
from it in a single read.
|
|
24
|
+
|
|
25
|
+
## Self-improvement
|
|
26
|
+
|
|
27
|
+
Close each run with one beat of reflection on the {{SKILL}} itself:
|
|
28
|
+
- A step misled, a needed step was missing, or the trigger fired wrongly — that
|
|
29
|
+
is a flaw in this file. Propose the exact edit (trigger, procedure, or
|
|
30
|
+
done-when) and apply it with the user's assent ({{LAW}} II).
|
|
31
|
+
- A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
|
|
32
|
+
clears {{LAW}} VI's bar: it would change how a future session behaves, and a
|
|
33
|
+
fresh read of the repo would not re-derive it. Update an existing memory over
|
|
34
|
+
adding one; when in doubt, leave it out.
|
|
35
|
+
- No friction, nothing learned — move on; this loop earns no ceremony. Most
|
|
36
|
+
runs end here.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# {{SKILL}}: research
|
|
2
|
+
|
|
3
|
+
> {{DESC_RESEARCH}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** a question needs current, external, or wide-ranging information that is
|
|
6
|
+
not in this repository or your own knowledge — facts to gather and verify from the
|
|
7
|
+
open web.
|
|
8
|
+
|
|
9
|
+
**Requires:** a host web-search or web-fetch capability ({{LAW}} XIX) — without one,
|
|
10
|
+
stop and report it ({{LAW}} VII); never substitute recall for verified research.
|
|
11
|
+
|
|
12
|
+
## Procedure
|
|
13
|
+
1. State the question and what a complete answer must contain. Break a broad question
|
|
14
|
+
into specific sub-questions.
|
|
15
|
+
2. Search the web — use the host's web-search tool or a connected search provider
|
|
16
|
+
({{LAW}} XIX). Query from several angles; one search is not research. If the host
|
|
17
|
+
exposes no web capability at all, stop and report that ({{LAW}} VII) — never
|
|
18
|
+
substitute your own knowledge for verified research.
|
|
19
|
+
3. Open the most promising sources and extract only the relevant slice, not the whole
|
|
20
|
+
page ({{LAW}} XV). Prefer primary and recent sources.
|
|
21
|
+
4. Cross-check every material claim against at least two independent sources. Treat a
|
|
22
|
+
single-source or unsourced claim as unverified, and say so ({{LAW}} III).
|
|
23
|
+
5. Note recency — flag anything that may be out of date, and prefer the most current
|
|
24
|
+
authority.
|
|
25
|
+
6. Synthesise a concise answer with each claim attributed to its source (title or URL).
|
|
26
|
+
|
|
27
|
+
## Done when
|
|
28
|
+
- The question is answered, every material claim is traceable to a cited,
|
|
29
|
+
cross-checked source, and remaining uncertainties are flagged explicitly.
|
|
30
|
+
|
|
31
|
+
## Self-improvement
|
|
32
|
+
|
|
33
|
+
Close each run with one beat of reflection on the {{SKILL}} itself:
|
|
34
|
+
- A step misled, a needed step was missing, or the trigger fired wrongly — that
|
|
35
|
+
is a flaw in this file. Propose the exact edit (trigger, procedure, or
|
|
36
|
+
done-when) and apply it with the user's assent ({{LAW}} II).
|
|
37
|
+
- A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
|
|
38
|
+
clears {{LAW}} VI's bar: it would change how a future session behaves, and a
|
|
39
|
+
fresh read of the repo would not re-derive it. Update an existing memory over
|
|
40
|
+
adding one; when in doubt, leave it out.
|
|
41
|
+
- No friction, nothing learned — move on; this loop earns no ceremony. Most
|
|
42
|
+
runs end here.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# {{SKILL}}: review-response
|
|
2
|
+
|
|
3
|
+
> {{DESC_REVIEW_RESPONSE}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** you have received review feedback — from a human or another agent — and
|
|
6
|
+
are about to act on it.
|
|
7
|
+
|
|
8
|
+
## Procedure
|
|
9
|
+
1. Read every comment in full before changing anything. Group related comments.
|
|
10
|
+
2. Classify each comment: correct, partially correct, wrong, or unclear.
|
|
11
|
+
3. For anything you judge wrong or unclear, verify it against the code or a test before
|
|
12
|
+
responding — do not comply blindly and do not dismiss blindly ({{LAW}} III,
|
|
13
|
+
{{LAW}} VIII).
|
|
14
|
+
4. Respond to each comment: the change you will make and why, or a reasoned decline
|
|
15
|
+
with evidence.
|
|
16
|
+
5. Apply the accepted changes — one intent per commit ({{LAW}} II), each through the
|
|
17
|
+
[commit {{SKILL}}](commit.md) so {{LAW}} XX's per-commit consent holds — then
|
|
18
|
+
re-run the checks ({{LAW}} III).
|
|
19
|
+
6. Surface anything the review missed that you noticed while addressing it.
|
|
20
|
+
|
|
21
|
+
## Done when
|
|
22
|
+
- Every comment has a reasoned response and either an applied change or a justified
|
|
23
|
+
decline, and the resulting changes are verified.
|
|
24
|
+
|
|
25
|
+
## Self-improvement
|
|
26
|
+
|
|
27
|
+
Close each run with one beat of reflection on the {{SKILL}} itself:
|
|
28
|
+
- A step misled, a needed step was missing, or the trigger fired wrongly — that
|
|
29
|
+
is a flaw in this file. Propose the exact edit (trigger, procedure, or
|
|
30
|
+
done-when) and apply it with the user's assent ({{LAW}} II).
|
|
31
|
+
- A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
|
|
32
|
+
clears {{LAW}} VI's bar: it would change how a future session behaves, and a
|
|
33
|
+
fresh read of the repo would not re-derive it. Update an existing memory over
|
|
34
|
+
adding one; when in doubt, leave it out.
|
|
35
|
+
- No friction, nothing learned — move on; this loop earns no ceremony. Most
|
|
36
|
+
runs end here.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# {{SKILL}}: roast-me
|
|
2
|
+
|
|
3
|
+
> {{DESC_ROAST_ME}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** the user asks to "roast", "tear apart", "find the fatal flaws", or "be brutally honest" about an artifact — code, design, plan, pitch, or writing. This is the *open-ended quality critique*: for reviewing a diff use [geneseed-code-review](geneseed-code-review.md); for a zero-context does-it-meet-the-spec verdict use [fresh-eyes](fresh-eyes.md).
|
|
6
|
+
|
|
7
|
+
## Procedure
|
|
8
|
+
1. Identify the artifact and the critique axis that matters (correctness, architecture, viability, clarity, security…); if unclear, ask once, then proceed.
|
|
9
|
+
2. Steelman it: state the strongest case FOR the artifact in a sentence, so the attack hits the real thing, not a strawman.
|
|
10
|
+
3. In the voice of {{ROAST_PERSONA}}, write each flaw as one line — `location/claim — what's wrong — what to do instead`. No praise, no hedging, no filler; drop any finding you can't pair with a fix.
|
|
11
|
+
4. Rank findings by severity: fatal → significant → minor.
|
|
12
|
+
5. Close with the single change that would help most.
|
|
13
|
+
|
|
14
|
+
## Done when
|
|
15
|
+
- Findings are severity-ranked, every one carries a fix, and the highest-impact change is named.
|
|
16
|
+
|
|
17
|
+
## Self-improvement
|
|
18
|
+
|
|
19
|
+
Close each run with one beat of reflection on the {{SKILL}} itself:
|
|
20
|
+
- A step misled, a needed step was missing, or the trigger fired wrongly — that
|
|
21
|
+
is a flaw in this file. Propose the exact edit (trigger, procedure, or
|
|
22
|
+
done-when) and apply it with the user's assent ({{LAW}} II).
|
|
23
|
+
- A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
|
|
24
|
+
clears {{LAW}} VI's bar: it would change how a future session behaves, and a
|
|
25
|
+
fresh read of the repo would not re-derive it. Update an existing memory over
|
|
26
|
+
adding one; when in doubt, leave it out.
|
|
27
|
+
- No friction, nothing learned — move on; this loop earns no ceremony. Most
|
|
28
|
+
runs end here.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# {{SKILL}}: rule
|
|
2
|
+
|
|
3
|
+
> {{DESC_RULE}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** anything the user wants to outlive this session — a standing rule of
|
|
6
|
+
their own ("always…", "never…", "from now on…", "make that a rule") or a durable
|
|
7
|
+
fact ("remember that…", "note that…", "keep in mind…"). Also fires when a
|
|
8
|
+
`feedback` {{MEMORY}} lesson keeps recurring and deserves promotion, or when
|
|
9
|
+
`user-rules.md` needs review — a trial rule past its date, a stale rule, a bloated
|
|
10
|
+
set. Nothing reaches `user-rules.md` or {{MEMORY}} except through here ({{LAW}} VI).
|
|
11
|
+
|
|
12
|
+
## Procedure
|
|
13
|
+
|
|
14
|
+
### 0 — The fork
|
|
15
|
+
Ask first, always: **a standing rule, or a fact to remember?** Never infer it. The
|
|
16
|
+
two stores bind differently and the choice belongs to the user. If they hesitate,
|
|
17
|
+
draw the line in one sentence: a rule changes how you *act* and binds every future
|
|
18
|
+
session; a memory records something *true* that would otherwise be lost or
|
|
19
|
+
re-derived. Then take exactly one branch.
|
|
20
|
+
|
|
21
|
+
### Branch A — a fact to remember
|
|
22
|
+
1. Search {{MEMORY}} for a file that already covers it. If one exists, update that
|
|
23
|
+
file — never mint a twin.
|
|
24
|
+
2. Ask which **binding force** the fact carries, in plain words, not jargon:
|
|
25
|
+
*imposed by you, not mine to relax* (`constraint`) · *a choice taken among real
|
|
26
|
+
alternatives* (`choice`) · *a stance I hold until evidence overturns it*
|
|
27
|
+
(`conviction`) · *a constraint you deliberately relaxed* (`tempered`).
|
|
28
|
+
3. Infer the `type` (`user` | `feedback` | `project` | `reference`), draft the file
|
|
29
|
+
per the {{MEMORY}} convention, and **show the exact content, frontmatter
|
|
30
|
+
included** — so a wrong inference is visible before it is written, not after.
|
|
31
|
+
4. On the user's word, write the file and add its one-line entry to `MEMORY.md`.
|
|
32
|
+
|
|
33
|
+
### Branch B — a standing rule
|
|
34
|
+
1. **Triage.** A rule earns its place only if it is all three of: *standing
|
|
35
|
+
behaviour* (how to act — a fact belongs in Branch A, a pointer to documentation
|
|
36
|
+
in `context.json`), *recurring* (it will bind many future tasks, not just this
|
|
37
|
+
one), and *not already covered* (not a {{LAW}}, not an existing rule — extend
|
|
38
|
+
the existing rule rather than minting a twin). A failed triage goes back to the
|
|
39
|
+
fork, named and explained; a lean rule set is the feature, not a failure.
|
|
40
|
+
2. **Reformulation.** Have the user state the rule as they would to a colleague on
|
|
41
|
+
their first day. Interrupt the moment they (a) use a term they cannot themselves
|
|
42
|
+
unpack, (b) skip a step — it says what to do but not when it bites, or the
|
|
43
|
+
reverse — or (c) simplify so far that the rule becomes false. Name which of the
|
|
44
|
+
three it was, each time. Then ask only about the axes still open — scope,
|
|
45
|
+
trigger, action, conflict, cost — one question at a time.
|
|
46
|
+
3. **The counter-example.** Always, even for a rule that came out clean: build the
|
|
47
|
+
case where this rule would do harm, put it to the user, and make them choose —
|
|
48
|
+
accept it ("yes, even there") or narrow the rule. A rule that cannot survive its
|
|
49
|
+
own worst case was never generic, only never contradicted.
|
|
50
|
+
4. **Legality.** A user rule may *tighten* a {{LAW}}, never repeal or weaken one.
|
|
51
|
+
If the rule conflicts — "push without asking", "skip the tests" — refuse, cite
|
|
52
|
+
the {{LAW}} it would repeal, and offer the nearest compliant version. Never write
|
|
53
|
+
rules into the {{LAWS}} file itself: it is regenerated on every update and the
|
|
54
|
+
edit would be silently lost.
|
|
55
|
+
5. **Destination.** Scope decides the file: a rule that holds across all the user's
|
|
56
|
+
work goes to the *global* install's `user-rules.md`, a rule bound to this
|
|
57
|
+
codebase to the project's. Read the target first ({{LAW}} III — the real current
|
|
58
|
+
rules, not a remembered copy). The build seeds it once and never overwrites it;
|
|
59
|
+
if it is genuinely absent, create it with a `# User rules` header and note that a
|
|
60
|
+
rebuild would have seeded it.
|
|
61
|
+
6. **Draft in the file's own format**: the next free `## R<n> — Title` heading, an
|
|
62
|
+
optional `(scope: user|project | source: …)` metadata line, then the rule in one
|
|
63
|
+
short paragraph, plain and testable. For a promotion from {{MEMORY}}, set
|
|
64
|
+
`source:` to the memory's name and add `trial until:` about a month out — a
|
|
65
|
+
promoted rule starts on probation.
|
|
66
|
+
7. Show the exact text to the user and wait for explicit consent ({{LAW}} IV) before
|
|
67
|
+
appending it. For a promotion, after the rule lands, delete or archive the source
|
|
68
|
+
memory (with the same consent) so the lesson is not loaded twice.
|
|
69
|
+
8. **Keep the set lean.** After writing, if the file holds more than ~15 rules or
|
|
70
|
+
any rule no longer changes behaviour, say so and propose merges or prunes — every
|
|
71
|
+
rule is loaded every session, and a bloated set dilutes the rules that matter.
|
|
72
|
+
|
|
73
|
+
The asymmetry is deliberate: Branch A costs one question, Branch B costs several.
|
|
74
|
+
The price is the safeguard — make remembering cheap and legislating expensive, or
|
|
75
|
+
the user picks "rule" out of impatience and the set inflates.
|
|
76
|
+
|
|
77
|
+
**Review flow** (on request, or when a `trial until:` date has passed): for each rule
|
|
78
|
+
due, ask whether it actually fired since adoption — graduate it (drop the trial
|
|
79
|
+
marker), demote it back to a {{MEMORY}} fact, or delete it. Same consent gate as
|
|
80
|
+
adoption.
|
|
81
|
+
|
|
82
|
+
## Done when
|
|
83
|
+
- The fork was put to the user, and then either a {{MEMORY}} file exists carrying its
|
|
84
|
+
`force`, its `type` and its `MEMORY.md` line — or a rule stands in the right
|
|
85
|
+
`user-rules.md`, having survived reformulation, its own counter-example and the
|
|
86
|
+
{{LAWS}}, consented to explicitly, with any promoted source memory archived. The
|
|
87
|
+
{{LAWS}} file is untouched either way.
|
|
88
|
+
|
|
89
|
+
## Self-improvement
|
|
90
|
+
|
|
91
|
+
Close each run with one beat of reflection on the {{SKILL}} itself:
|
|
92
|
+
- A step misled, a needed step was missing, or the trigger fired wrongly — that
|
|
93
|
+
is a flaw in this file. Propose the exact edit (trigger, procedure, or
|
|
94
|
+
done-when) and apply it with the user's assent ({{LAW}} II).
|
|
95
|
+
- A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
|
|
96
|
+
clears {{LAW}} VI's bar: it would change how a future session behaves, and a
|
|
97
|
+
fresh read of the repo would not re-derive it. Update an existing memory over
|
|
98
|
+
adding one; when in doubt, leave it out.
|
|
99
|
+
- No friction, nothing learned — move on; this loop earns no ceremony. Most
|
|
100
|
+
runs end here.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# {{SKILL}}: ship
|
|
2
|
+
|
|
3
|
+
> {{DESC_SHIP}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** the change is committed and verified, and it is time to open a pull
|
|
6
|
+
request or merge the branch.
|
|
7
|
+
|
|
8
|
+
## Procedure
|
|
9
|
+
1. Confirm the work is actually done before shipping. Find the project's Definition
|
|
10
|
+
of Done — its test, lint, and build commands (often pointed at from
|
|
11
|
+
`context.json`); if it is undefined, ask rather than assume. Run those checks and
|
|
12
|
+
read the actual output (universal {{LAW}} III); state what you ran and its result.
|
|
13
|
+
Never ship on an unproven claim.
|
|
14
|
+
2. Confirm the branch carries only this change's commits and is rebased/updated on
|
|
15
|
+
the base branch; resolve any divergence before opening.
|
|
16
|
+
3. Push the branch only with the user's explicit, per-push acceptance — on every
|
|
17
|
+
branch, feature branches included ({{LAW}} XX); present the change summary + commit
|
|
18
|
+
message and wait, and never treat an earlier approval as consent for this push.
|
|
19
|
+
Opening a PR or merging is **outward-facing** — get explicit confirmation first too,
|
|
20
|
+
unless already authorized (universal {{LAW}} IV).
|
|
21
|
+
4. Open the PR with a structured body: *what* changed and *why*, *how it was
|
|
22
|
+
tested*, and any risk or follow-up. Link the issue it closes; keep the title an
|
|
23
|
+
imperative one-line summary.
|
|
24
|
+
5. If the project merges locally instead, merge into the base branch only after
|
|
25
|
+
review/approval, then delete the merged branch.
|
|
26
|
+
If shipping triggers a production deploy, confirm a tested rollback or
|
|
27
|
+
fix-forward path and a retained previous artifact *before* deploying — there must
|
|
28
|
+
be a way back (universal {{LAW}} IV); dispatch the
|
|
29
|
+
[operator {{AGENT}}](../{{DIR_AGENTS}}/operator.md) when the runtime surface is
|
|
30
|
+
non-trivial.
|
|
31
|
+
6. Make sure documentation shipped with the code (universal {{LAW}} XI) — a change
|
|
32
|
+
that alters behaviour without its docs is incomplete, not ready to ship.
|
|
33
|
+
|
|
34
|
+
## Done when
|
|
35
|
+
- The PR is open (or the branch is merged) with a body stating what / why / how it
|
|
36
|
+
was tested, and nothing unrelated rides along.
|
|
37
|
+
|
|
38
|
+
## Self-improvement
|
|
39
|
+
|
|
40
|
+
Close each run with one beat of reflection on the {{SKILL}} itself:
|
|
41
|
+
- A step misled, a needed step was missing, or the trigger fired wrongly — that
|
|
42
|
+
is a flaw in this file. Propose the exact edit (trigger, procedure, or
|
|
43
|
+
done-when) and apply it with the user's assent ({{LAW}} II).
|
|
44
|
+
- A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
|
|
45
|
+
clears {{LAW}} VI's bar: it would change how a future session behaves, and a
|
|
46
|
+
fresh read of the repo would not re-derive it. Update an existing memory over
|
|
47
|
+
adding one; when in doubt, leave it out.
|
|
48
|
+
- No friction, nothing learned — move on; this loop earns no ceremony. Most
|
|
49
|
+
runs end here.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# {{SKILL}}: tdd
|
|
2
|
+
|
|
3
|
+
> {{DESC_TDD}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** implementing a feature or fixing a bug whose behaviour can be expressed as a test — before writing implementation code.
|
|
6
|
+
|
|
7
|
+
## Procedure
|
|
8
|
+
1. Agree the seams first: name the public interfaces the tests will target and
|
|
9
|
+
confirm them with the user — no test is written at an unconfirmed seam.
|
|
10
|
+
Testing effort belongs on critical paths and complex logic, not every edge.
|
|
11
|
+
2. Write one failing test that pins the next small slice of behaviour; be specific about the expected output. For a bug, the test reproduces it.
|
|
12
|
+
3. Run it and watch it fail for the RIGHT reason — a test that passes immediately proves nothing.
|
|
13
|
+
4. Write the minimum code to make it pass; add nothing the test doesn't demand ({{LAW}} XXV).
|
|
14
|
+
5. With the suite green, tidy up via the [refactor {{SKILL}}](refactor.md) — the tests are your safety net.
|
|
15
|
+
6. Repeat one slice at a time, committing each green cycle with the [commit {{SKILL}}](commit.md).
|
|
16
|
+
|
|
17
|
+
## Done when
|
|
18
|
+
- The behaviour is covered by tests written before the code, the suite is green, and each cycle was committed.
|
|
19
|
+
|
|
20
|
+
## Self-improvement
|
|
21
|
+
|
|
22
|
+
Close each run with one beat of reflection on the {{SKILL}} itself:
|
|
23
|
+
- A step misled, a needed step was missing, or the trigger fired wrongly — that
|
|
24
|
+
is a flaw in this file. Propose the exact edit (trigger, procedure, or
|
|
25
|
+
done-when) and apply it with the user's assent ({{LAW}} II).
|
|
26
|
+
- A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
|
|
27
|
+
clears {{LAW}} VI's bar: it would change how a future session behaves, and a
|
|
28
|
+
fresh read of the repo would not re-derive it. Update an existing memory over
|
|
29
|
+
adding one; when in doubt, leave it out.
|
|
30
|
+
- No friction, nothing learned — move on; this loop earns no ceremony. Most
|
|
31
|
+
runs end here.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# {{SKILL}}: tickets
|
|
2
|
+
|
|
3
|
+
> {{DESC_TICKETS}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** a spec or plan is too big for one session and must be split into
|
|
6
|
+
tracker issues that fresh sessions can pick up independently.
|
|
7
|
+
|
|
8
|
+
## Procedure
|
|
9
|
+
1. Work from the spec or plan already in context; explore the code enough that
|
|
10
|
+
ticket titles and bodies use the project's domain vocabulary (read
|
|
11
|
+
`CONTEXT.md` if it exists).
|
|
12
|
+
2. Cut **tracer-bullet vertical slices**: each ticket cuts a narrow but
|
|
13
|
+
complete path through every layer it touches (schema, API, UI, tests), is
|
|
14
|
+
demoable or verifiable on its own, and fits one fresh context window. Any
|
|
15
|
+
prefactoring gets its own ticket first — make the change easy, then make
|
|
16
|
+
the easy change.
|
|
17
|
+
3. Give every ticket its **blocking edges** — the tickets that must land
|
|
18
|
+
before it can start. A ticket with no blockers can start immediately.
|
|
19
|
+
4. Exception — a **wide refactor** (one mechanical change whose blast radius
|
|
20
|
+
spans the codebase: a rename, a shared retype) cannot land as a green
|
|
21
|
+
vertical slice. Sequence it as **expand–contract**: expand (add the new
|
|
22
|
+
form beside the old, nothing breaks), migrate call sites in batches sized
|
|
23
|
+
by blast radius (each batch its own ticket, blocked by the expand),
|
|
24
|
+
contract (delete the old form, blocked by every batch).
|
|
25
|
+
5. Publish to the repo's tracker (GitHub Issues by default; markdown files
|
|
26
|
+
under `docs/` when the repo has none). Each implementing session then takes
|
|
27
|
+
one unblocked ticket in a fresh context.
|
|
28
|
+
|
|
29
|
+
## Done when
|
|
30
|
+
- Every slice of the spec is a published ticket with explicit blockers, each
|
|
31
|
+
sized for one session, and at least one unblocked ticket exists to start on.
|
|
32
|
+
|
|
33
|
+
## Self-improvement
|
|
34
|
+
|
|
35
|
+
Close each run with one beat of reflection on the {{SKILL}} itself:
|
|
36
|
+
- A step misled, a needed step was missing, or the trigger fired wrongly — that
|
|
37
|
+
is a flaw in this file. Propose the exact edit (trigger, procedure, or
|
|
38
|
+
done-when) and apply it with the user's assent ({{LAW}} II).
|
|
39
|
+
- A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
|
|
40
|
+
clears {{LAW}} VI's bar: it would change how a future session behaves, and a
|
|
41
|
+
fresh read of the repo would not re-derive it. Update an existing memory over
|
|
42
|
+
adding one; when in doubt, leave it out.
|
|
43
|
+
- No friction, nothing learned — move on; this loop earns no ceremony. Most
|
|
44
|
+
runs end here.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: token-report
|
|
3
|
+
description: "Generate a token usage report for the current session — a markdown table breakdown of context window usage: the session-start baseline (harness, system prompt, tools, skills), everything processed since (user messages, replies, thinking, tool calls and results per tool), exact recorded totals, and the heaviest single items. Use this whenever the user asks about token usage, context usage, context window size, session cost in tokens, 'how full is the context', 'what is eating my context', a usage breakdown or usage report — even if they don't say the word 'token'."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Token usage report
|
|
7
|
+
|
|
8
|
+
> Generate the session's token usage breakdown — exact recorded totals, context
|
|
9
|
+
> window occupancy, and an estimated attribution of what filled it — as markdown
|
|
10
|
+
> tables, on any supported host.
|
|
11
|
+
|
|
12
|
+
Produce a token usage report for the current session by running the bundled
|
|
13
|
+
script, then present its markdown output to the user.
|
|
14
|
+
|
|
15
|
+
## How to run
|
|
16
|
+
|
|
17
|
+
Run the script that sits next to this SKILL.md:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
node <this-skill-directory>/scripts/token_report.mjs
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
It auto-detects the host you are running on by locating session data and
|
|
24
|
+
picking the most recently active source:
|
|
25
|
+
|
|
26
|
+
| Host | Session data | Fidelity |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| Claude Code | `~/.claude/projects/<slug>/*.jsonl` | exact usage per request |
|
|
29
|
+
| IBM Bob | `~/.bob/projects/<slug>/*.jsonl` (Claude-shaped, `$BOB_CONFIG_DIR` honoured) | exact usage per request |
|
|
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
|
+
| GitHub Copilot | `~/.copilot/history-session-state/` | best effort — undocumented schema; token-like fields harvested, else estimates only |
|
|
32
|
+
|
|
33
|
+
Useful flags: `--host claude|bob|opencode|copilot` to force a host,
|
|
34
|
+
`--transcript <path>` / `--session <id>` for a specific session,
|
|
35
|
+
`--limit <tokens>` for the context-window limit used in the % columns
|
|
36
|
+
(default 200000), `--top <n>` for the heaviest-items list.
|
|
37
|
+
|
|
38
|
+
## What the report contains, and where the numbers come from
|
|
39
|
+
|
|
40
|
+
Two kinds of numbers — keep the distinction explicit when presenting:
|
|
41
|
+
|
|
42
|
+
1. **Exact numbers** come from the usage the host records with every request:
|
|
43
|
+
session totals (output tokens, fresh input, cache reads/writes), the
|
|
44
|
+
session-start baseline, and the current/peak context size. These are ground
|
|
45
|
+
truth — never contradict them.
|
|
46
|
+
2. **Estimated attribution** (~4 characters per token) explains *what* fills
|
|
47
|
+
the context: user messages, assistant replies, thinking, tool calls, and
|
|
48
|
+
tool results grouped per tool. These are labeled estimates; keep them
|
|
49
|
+
labeled that way.
|
|
50
|
+
|
|
51
|
+
The session-start baseline is the input-side token count of the very first
|
|
52
|
+
request — that is the harness (system prompt, tool schemas, skill/agent
|
|
53
|
+
listings, memory files) plus the user's first message. At the start of a
|
|
54
|
+
fresh session that is the whole story; later, the delta between current and
|
|
55
|
+
start context is the work processed since.
|
|
56
|
+
|
|
57
|
+
## Presenting the result
|
|
58
|
+
|
|
59
|
+
Relay the script's markdown tables directly — they are the deliverable.
|
|
60
|
+
After the tables, add a short interpretation in your own words: what is
|
|
61
|
+
consuming the most context, and one concrete suggestion if something stands
|
|
62
|
+
out (e.g. a single huge file read dominating, or heavy tool results that a
|
|
63
|
+
subagent could have absorbed instead). Do not pad the report with generic
|
|
64
|
+
advice when nothing stands out.
|
|
65
|
+
|
|
66
|
+
If the script errors or reports degraded fidelity (a host that stores its
|
|
67
|
+
sessions elsewhere, or records no usage), say so plainly and fall back to
|
|
68
|
+
reporting what you know: rough context size from any usage information
|
|
69
|
+
available to you, and a qualitative breakdown of what has happened this
|
|
70
|
+
session. Do not invent exact numbers.
|
|
71
|
+
|
|
72
|
+
## Self-improvement
|
|
73
|
+
|
|
74
|
+
If the script failed to find this host's session data, or a host changed its
|
|
75
|
+
storage schema, note the observed layout and fix `scripts/token_report.mjs`
|
|
76
|
+
(or record the finding in memory for the next run) before closing out.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Folder skill — token-report
|
|
2
|
+
|
|
3
|
+
Unlike its siblings in `VENDORED_SKILL_DIRS`, this folder is **Geneseed-authored**,
|
|
4
|
+
not third-party. It rides the vendored-folder mechanism because it bundles an
|
|
5
|
+
executable (`scripts/token_report.mjs`) and Geneseed's flat-skill pipeline renders
|
|
6
|
+
single `.md` files only. Listing it in the generator's `VENDORED_SKILL_DIRS`
|
|
7
|
+
makes the whole folder ride along verbatim into every host emit — Claude Code,
|
|
8
|
+
IBM Bob, OpenCode, GitHub Copilot — which is exactly what a multi-file skill needs.
|
|
9
|
+
|
|
10
|
+
- **Upstream:** this repository (first-party)
|
|
11
|
+
- **License:** same as Geneseed (see repository LICENSE)
|
|
12
|
+
|
|
13
|
+
Consequences of riding this mechanism (deliberate):
|
|
14
|
+
|
|
15
|
+
- exempt from the flat-skill authoring gates (theme DESC tokens, dead-link,
|
|
16
|
+
hermeticity, skill counts) — the SKILL.md here carries its own frontmatter
|
|
17
|
+
`description` and blockquote purpose line instead;
|
|
18
|
+
- listed in AGENT.md's folder-skills section, not the main skills table.
|
|
19
|
+
|
|
20
|
+
The script supports all four emitted hosts (exact usage on Claude Code, Bob and
|
|
21
|
+
OpenCode; best-effort on Copilot, whose session-state schema is undocumented).
|
|
22
|
+
If a host changes its session storage layout, fix the corresponding finder or
|
|
23
|
+
parser in `scripts/token_report.mjs`.
|