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,49 @@
|
|
|
1
|
+
# {{SKILL}}: ingest
|
|
2
|
+
|
|
3
|
+
> {{DESC_INGEST}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** a task needs the *content* of a non-markdown document — a PDF, Word
|
|
6
|
+
(`.docx`), PowerPoint (`.pptx`), Excel (`.xlsx`), HTML, EPUB — or a web URL. This is
|
|
7
|
+
the read-before counterpart for documents the convention can't read directly
|
|
8
|
+
(universal {{LAW}} XVII): the context discovery only sees `.md`, so anything else
|
|
9
|
+
must be converted first.
|
|
10
|
+
|
|
11
|
+
## Procedure
|
|
12
|
+
1. **Don't read the binary.** Convert it to markdown first, then read the markdown —
|
|
13
|
+
reading a raw PDF/Office file wastes context and garbles structure.
|
|
14
|
+
2. **Use the best available converter** (check what's installed; do not assume):
|
|
15
|
+
- **An MCP converter**, if the tool exposes one (e.g. `markitdown-mcp`,
|
|
16
|
+
`docling-mcp`) — zero install, preferred on an MCP-capable host.
|
|
17
|
+
- **MarkItDown** (Microsoft) — broadest coverage (PDF, Office, HTML, images,
|
|
18
|
+
URLs): `markitdown <file> -o out.md`. Fast; shallow on complex tables.
|
|
19
|
+
- **Pandoc** — excellent for Office/HTML/EPUB (headings, tables preserved):
|
|
20
|
+
`pandoc <file> -t gfm -o out.md`. Not for PDFs.
|
|
21
|
+
- **Docling** (IBM) — when tables, formulas, multi-column, or scanned pages
|
|
22
|
+
matter and the above output is garbled: `docling <file> --to md`.
|
|
23
|
+
(Exact flags vary by version — confirm with `--help`; universal {{LAW}} III.)
|
|
24
|
+
3. **For a URL**, convert the page to markdown (MarkItDown takes a URL; or use the
|
|
25
|
+
tool's own web-fetch) rather than pasting raw HTML.
|
|
26
|
+
4. **Never install a converter silently.** They are external dependencies and the
|
|
27
|
+
host's choice. If none is available, report which one to install and stop — do
|
|
28
|
+
not run `pip install`/`brew install` without the user's say-so.
|
|
29
|
+
5. **Read the slice you need**, not the whole dump — locate the relevant section in
|
|
30
|
+
the markdown, then read it (universal {{LAW}} XV).
|
|
31
|
+
6. **Treat the converted file as a scratch artifact.** Don't commit it unless the
|
|
32
|
+
task calls for it (universal {{LAW}} IV); prefer a temp path or `.gitignore` it.
|
|
33
|
+
|
|
34
|
+
## Done when
|
|
35
|
+
- The document's content is available as markdown and the slice the task needs has
|
|
36
|
+
been read — without reading the binary or committing a stray conversion.
|
|
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,26 @@
|
|
|
1
|
+
# {{SKILL}}: learning-path
|
|
2
|
+
|
|
3
|
+
> {{DESC_LEARNING_PATH}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** the user wants to learn a skill toward a *specific* result by a deadline and asks for a plan or route — "build me a learning path", "how do I get to X in N days", "I need to be able to do Y by [date]". For pressure-testing a mastery the user already claims, use [gap-detector](gap-detector.md); for checking whether something just-studied stuck, use [feynman](feynman.md).
|
|
6
|
+
|
|
7
|
+
## Procedure
|
|
8
|
+
1. Pin the *real* goal, not the subject: the specific result wanted, the deadline, and what the user already masters. Ask once if any of the three is missing — do not plan around "learn X in general".
|
|
9
|
+
2. Build a day-by-day path to that result. Each day carries exactly three things: one task that fits the user's stated time budget (default 45 minutes), a concrete criterion so they can tell whether they did it correctly, and one explicit *what not to do* that day so time is not wasted.
|
|
10
|
+
3. Trace the whole path against the goal. If finishing every day would not actually deliver the result, rebuild it until it does.
|
|
11
|
+
|
|
12
|
+
## Done when
|
|
13
|
+
- The user has a dated, day-by-day path where each day has a timed task, a correctness criterion, and a what-not-to-do — and the path provably reaches the stated goal.
|
|
14
|
+
|
|
15
|
+
## Self-improvement
|
|
16
|
+
|
|
17
|
+
Close each run with one beat of reflection on the {{SKILL}} itself:
|
|
18
|
+
- A step misled, a needed step was missing, or the trigger fired wrongly — that
|
|
19
|
+
is a flaw in this file. Propose the exact edit (trigger, procedure, or
|
|
20
|
+
done-when) and apply it with the user's assent ({{LAW}} II).
|
|
21
|
+
- A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
|
|
22
|
+
clears {{LAW}} VI's bar: it would change how a future session behaves, and a
|
|
23
|
+
fresh read of the repo would not re-derive it. Update an existing memory over
|
|
24
|
+
adding one; when in doubt, leave it out.
|
|
25
|
+
- No friction, nothing learned — move on; this loop earns no ceremony. Most
|
|
26
|
+
runs end here.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# {{SKILL}}: migrate
|
|
2
|
+
|
|
3
|
+
> {{DESC_MIGRATE}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** upgrading a dependency, framework, language version, or moving code
|
|
6
|
+
onto a new API.
|
|
7
|
+
|
|
8
|
+
## Procedure
|
|
9
|
+
1. Read the upstream migration guide and changelog *first* (universal {{LAW}} XVII);
|
|
10
|
+
list the breaking changes that actually touch this codebase.
|
|
11
|
+
2. Work on a dedicated branch, never directly on a shared one, so a failed
|
|
12
|
+
migration rolls back cleanly (universal {{LAW}} XX applies its shared-branch
|
|
13
|
+
care to anything that does land there).
|
|
14
|
+
3. Migrate one dependency — or one breaking change — at a time. Never batch
|
|
15
|
+
unrelated bumps into a single step (universal {{LAW}} II).
|
|
16
|
+
4. Run the project's checks after *each* step. A green suite between steps is what
|
|
17
|
+
lets you bisect a later failure to the exact change that caused it
|
|
18
|
+
(universal {{LAW}} III).
|
|
19
|
+
5. Keep the version bump itself a separate commit from any code changes it forces,
|
|
20
|
+
each through the [commit {{SKILL}}](commit.md) (universal {{LAW}} XX), so each
|
|
21
|
+
diff is reviewable in isolation.
|
|
22
|
+
|
|
23
|
+
**Schema migrations stay backward-compatible.** For a database or stored-format
|
|
24
|
+
change, move in expand → backfill → contract phases so every migration is
|
|
25
|
+
compatible with the currently running code, and never bundle a destructive schema
|
|
26
|
+
change into the same deploy as the code that depends on it (universal {{LAW}} II,
|
|
27
|
+
{{LAW}} IV) — the old code must keep working until the new code is live.
|
|
28
|
+
|
|
29
|
+
## Done when
|
|
30
|
+
- The dependency or API is on the target version, every check passes, and the
|
|
31
|
+
changelog / lockfile reflect the new state with its docs updated
|
|
32
|
+
(universal {{LAW}} XI).
|
|
33
|
+
|
|
34
|
+
## Self-improvement
|
|
35
|
+
|
|
36
|
+
Close each run with one beat of reflection on the {{SKILL}} itself:
|
|
37
|
+
- A step misled, a needed step was missing, or the trigger fired wrongly — that
|
|
38
|
+
is a flaw in this file. Propose the exact edit (trigger, procedure, or
|
|
39
|
+
done-when) and apply it with the user's assent ({{LAW}} II).
|
|
40
|
+
- A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
|
|
41
|
+
clears {{LAW}} VI's bar: it would change how a future session behaves, and a
|
|
42
|
+
fresh read of the repo would not re-derive it. Update an existing memory over
|
|
43
|
+
adding one; when in doubt, leave it out.
|
|
44
|
+
- No friction, nothing learned — move on; this loop earns no ceremony. Most
|
|
45
|
+
runs end here.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# {{SKILL}}: opencode-theme
|
|
2
|
+
|
|
3
|
+
> {{DESC_THEME}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** the user wants their own OpenCode colour theme — "make me a theme",
|
|
6
|
+
"create a custom theme", "I want my own colours", "a theme that matches <brand>", "a
|
|
7
|
+
darker/transparent version of <theme>", or asks to tweak the shipped colours. For
|
|
8
|
+
changing the agent's *voice* (imperial, pirate…) that is a different concept — point
|
|
9
|
+
them at `--theme` / the setup wizard, not this {{SKILL}}.
|
|
10
|
+
|
|
11
|
+
## Procedure
|
|
12
|
+
1. **Pick a starting palette.** Fastest is to clone a shipped one and tweak a few hues —
|
|
13
|
+
`catppuccin tokyonight rosepine gruvbox nord everforest kanagawa dracula`. If the user
|
|
14
|
+
describes a vibe ("warm terminal green", "my brand is #ff0066"), derive the full
|
|
15
|
+
palette yourself: fill all 19 roles in `themes/opencode/README.md` (`bg bgPanel
|
|
16
|
+
bgElement fg fgMuted accent secondary border ok warn err kw str fn num type comment
|
|
17
|
+
addBg delBg`), every value a `#rrggbb` hex.
|
|
18
|
+
2. **Respect legibility and semantics.** `fg` on `bg` must stay readable (~7:1), `error`
|
|
19
|
+
stays a red-family hue, `warning` amber, `success` green — users read state from these.
|
|
20
|
+
Keep `addBg`/`delBg` distinct from each other and from the background.
|
|
21
|
+
3. **Write the palette to a small JSON** (a bare `{role: "#hex", …}` map or
|
|
22
|
+
`{"palette": {…}}`) — only the roles you are overriding if you also pass `--from`.
|
|
23
|
+
4. **Run the CLI** — it expands your palette into the full slot set and writes both
|
|
24
|
+
flavours into the live themes dir (per-repo `.opencode/themes/`, else the global
|
|
25
|
+
config dir), using the same logic as the shipped themes:
|
|
26
|
+
```
|
|
27
|
+
geneseed theme <name> --from <shipped> --palette <file.json>
|
|
28
|
+
```
|
|
29
|
+
Use `--from` alone to clone-and-rename, `--palette` alone for a from-scratch palette,
|
|
30
|
+
or both (palette overrides the cloned base). `--solid-only` / `--transparent-only` to
|
|
31
|
+
write just one flavour; `--global` to force the global dir from inside a repo.
|
|
32
|
+
5. **Tell the user how to select it:** the name is branded `geneseed-<name>` so every
|
|
33
|
+
harness theme groups together in the picker — `/theme geneseed-<name>` (opaque) or
|
|
34
|
+
`/theme geneseed-<name>-transparent` (terminal background shows through). A rebuild
|
|
35
|
+
never erases it — preservation keys off the emit set, not the prefix.
|
|
36
|
+
|
|
37
|
+
## Done when
|
|
38
|
+
- Both `<name>.json` (and/or `<name>-transparent.json`) exist in the active themes dir,
|
|
39
|
+
the CLI reported the path, and the user knows the `/theme <name>` command to select it.
|
|
40
|
+
|
|
41
|
+
## Self-improvement
|
|
42
|
+
|
|
43
|
+
Close each run with one beat of reflection on the {{SKILL}} itself:
|
|
44
|
+
- A step misled, a needed step was missing, or the trigger fired wrongly — that
|
|
45
|
+
is a flaw in this file. Propose the exact edit (trigger, procedure, or
|
|
46
|
+
done-when) and apply it with the user's assent ({{LAW}} II).
|
|
47
|
+
- A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
|
|
48
|
+
clears {{LAW}} VI's bar: it would change how a future session behaves, and a
|
|
49
|
+
fresh read of the repo would not re-derive it. Update an existing memory over
|
|
50
|
+
adding one; when in doubt, leave it out.
|
|
51
|
+
- No friction, nothing learned — move on; this loop earns no ceremony. Most
|
|
52
|
+
runs end here.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# {{SKILL}}: parallel-agents
|
|
2
|
+
|
|
3
|
+
> {{DESC_PARALLEL_AGENTS}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** two or more independent subtasks with no shared state or ordering between them — and a tool that can run subagents.
|
|
6
|
+
|
|
7
|
+
## Procedure
|
|
8
|
+
1. Confirm independence: the subtasks must not depend on each other's output or write the same files. If they're sequential or share state, use [plan](plan.md) instead.
|
|
9
|
+
2. Split the work into self-contained units, each with one clear goal and a defined output contract — what it must return.
|
|
10
|
+
3. Dispatch each unit to its own subagent in one batch, each under a handoff envelope: the unit's goal, the inputs it needs, its output contract, and the inherited constraints (no commit/push — {{LAW}} XX stays with you; gaps reported, never invented). Prefer the read-only [explorer {{AGENT}}](../{{DIR_AGENTS}}/explorer.md) for investigation so the heavy reading stays out of the main context ({{LAW}} XV). Where no subagent capability exists, run the units sequentially as personas instead, converging the same way.
|
|
11
|
+
4. Keep the main context lean: collect each subagent's distilled result, not its working transcript.
|
|
12
|
+
5. Converge: reconcile the results, resolve conflicts yourself, and verify the combined outcome.
|
|
13
|
+
|
|
14
|
+
## Done when
|
|
15
|
+
- Independent units ran concurrently, each returned a distilled result, and the reconciled outcome is verified.
|
|
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,52 @@
|
|
|
1
|
+
# {{SKILL}}: pipeline
|
|
2
|
+
|
|
3
|
+
> {{DESC_PIPELINE}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** [foreman mode](../modes/foreman.md) routes a triaged *substantial* task here; also directly invocable without that mode whenever the user asks to "run a pipeline" for a development, documentation, research, or review task.
|
|
6
|
+
|
|
7
|
+
## What it is
|
|
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 re-verifies the crew's work; it checks the crew's own mechanical proof and merges on that.
|
|
10
|
+
|
|
11
|
+
## Crew floors
|
|
12
|
+
|
|
13
|
+
The minimum roster per task type. The parent may add specialists on top — security, architect, reviewer, docs, historian, or any other {{AGENT}} the task genuinely needs — but never dispatches below the floor.
|
|
14
|
+
|
|
15
|
+
| Task type | Floor |
|
|
16
|
+
|---|---|
|
|
17
|
+
| Development | [explorer](../{{DIR_AGENTS}}/explorer.md) (analyst) → [developer](../{{DIR_AGENTS}}/developer.md) → [tester](../{{DIR_AGENTS}}/tester.md) + lint gate |
|
|
18
|
+
| Documentation | [explorer](../{{DIR_AGENTS}}/explorer.md) (analyst) → [docs](../{{DIR_AGENTS}}/docs.md) |
|
|
19
|
+
| Research / investigation | [explorer](../{{DIR_AGENTS}}/explorer.md) (analyst) alone |
|
|
20
|
+
| Review / audit | [reviewer](../{{DIR_AGENTS}}/reviewer.md) + [skeptic](../{{DIR_AGENTS}}/skeptic.md) |
|
|
21
|
+
|
|
22
|
+
## Procedure
|
|
23
|
+
|
|
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
|
+
2. Compose the crew from the floor above, adding specialists only where the task demands them.
|
|
26
|
+
3. Isolate the crew's work in its own git worktree/branch (the SETUP.md worktree add-on). Where worktrees are unavailable, fall back to a single tree, one pipeline at a time, and say so.
|
|
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
|
+
5. **Two execution shapes**, chosen by host capability (same pattern as the [workflow {{SKILL}}](workflow.md)):
|
|
29
|
+
- *Deterministic:* where the host exposes a `workflow` tool, run a saved script encoding analyst → developer → (tester ⇄ developer)×≤5 → proof.
|
|
30
|
+
- *Model-driven fallback:* everywhere else, run the same stages via the [parallel-agents {{SKILL}}](parallel-agents.md) or sequential personas, with the same handoff envelopes and the same delivery contract.
|
|
31
|
+
6. On success, attach the mechanical proof to the branch (test + lint output, exit codes) and hand the result back to the parent for the merge decision — the pipeline never commits, pushes, or merges on its own ({{LAW}} XX).
|
|
32
|
+
|
|
33
|
+
## Delivery contract
|
|
34
|
+
|
|
35
|
+
A branch/worktree containing the work **plus** the mechanical proof: test and lint output with exit codes, either committed alongside the run's notes or handed back in the result envelope. Anything without green proof is surfaced, never merged — merging on proof (not re-verification) is only sound because every {{AGENT}} in the crew inherits all {{LAWS}} through the handoff envelope.
|
|
36
|
+
|
|
37
|
+
## Done when
|
|
38
|
+
|
|
39
|
+
- Green proof: the crew delivered a branch with passing tests and lint, and the parent merged it — or the loop cap was exhausted and the failure was reported with the branch left in place.
|
|
40
|
+
|
|
41
|
+
## Self-improvement
|
|
42
|
+
|
|
43
|
+
Close each run with one beat of reflection on the {{SKILL}} itself:
|
|
44
|
+
- A step misled, a needed step was missing, or the trigger fired wrongly — that
|
|
45
|
+
is a flaw in this file. Propose the exact edit (trigger, procedure, or
|
|
46
|
+
done-when) and apply it with the user's assent ({{LAW}} II).
|
|
47
|
+
- A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
|
|
48
|
+
clears {{LAW}} VI's bar: it would change how a future session behaves, and a
|
|
49
|
+
fresh read of the repo would not re-derive it. Update an existing memory over
|
|
50
|
+
adding one; when in doubt, leave it out.
|
|
51
|
+
- No friction, nothing learned — move on; this loop earns no ceremony. Most
|
|
52
|
+
runs end here.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# {{SKILL}}: plan
|
|
2
|
+
|
|
3
|
+
> {{DESC_PLAN}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** a task with more than a couple of steps, or touching several files
|
|
6
|
+
(universal {{LAW}} XIV).
|
|
7
|
+
|
|
8
|
+
## Procedure
|
|
9
|
+
1. If a design or spec already exists (e.g. from the brainstorm {{SKILL}}), derive the
|
|
10
|
+
plan from it; if the task is design-heavy and none exists yet, run the
|
|
11
|
+
[brainstorm {{SKILL}}](brainstorm.md) first rather than planning blind. Otherwise
|
|
12
|
+
restate the goal in one line. Either way, confirm the actual starting state before
|
|
13
|
+
designing the steps (universal {{LAW}} III — verify before designing).
|
|
14
|
+
2. Write a numbered plan to `WORKLOG.md` (or `plans/<task>.md`): ordered steps, each
|
|
15
|
+
independently checkable. Group the steps into milestones — coherent chunks after
|
|
16
|
+
which the work can be verified and reviewed.
|
|
17
|
+
3. Execute one step at a time. After each, update the worklog — mark it done, note
|
|
18
|
+
the current step, the next step, and any blockers.
|
|
19
|
+
4. At each milestone, stop and verify before continuing — run the project's checks
|
|
20
|
+
and read the output (universal {{LAW}} III); on a consequential or ambiguous
|
|
21
|
+
direction, surface the result for review before pressing on.
|
|
22
|
+
5. If the plan proves wrong, revise the file *before* continuing. The file, not
|
|
23
|
+
your memory, is the source of truth for where you are.
|
|
24
|
+
6. On finishing, clear or archive the worklog.
|
|
25
|
+
|
|
26
|
+
## Done when
|
|
27
|
+
- Every plan step is checked off, each milestone was verified, and the goal's
|
|
28
|
+
done-condition is confirmed.
|
|
29
|
+
|
|
30
|
+
> The worklog is external memory: it lets a context-limited agent recover its
|
|
31
|
+
> place after the window fills, and lets the user correct course early. Consider
|
|
32
|
+
> git-ignoring `WORKLOG.md` if it should stay local to each developer.
|
|
33
|
+
|
|
34
|
+
## Self-improvement
|
|
35
|
+
|
|
36
|
+
Close each run with one beat of reflection on the {{SKILL}} itself:
|
|
37
|
+
- A step misled, a needed step was missing, or the trigger fired wrongly — that
|
|
38
|
+
is a flaw in this file. Propose the exact edit (trigger, procedure, or
|
|
39
|
+
done-when) and apply it with the user's assent ({{LAW}} II).
|
|
40
|
+
- A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
|
|
41
|
+
clears {{LAW}} VI's bar: it would change how a future session behaves, and a
|
|
42
|
+
fresh read of the repo would not re-derive it. Update an existing memory over
|
|
43
|
+
adding one; when in doubt, leave it out.
|
|
44
|
+
- No friction, nothing learned — move on; this loop earns no ceremony. Most
|
|
45
|
+
runs end here.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# {{SKILL}}: ponytail
|
|
2
|
+
|
|
3
|
+
> {{DESC_PONYTAIL}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** the user says "ponytail", "be lazy", "lazy mode", "simplest/minimal solution", "yagni", "do less", or "shortest path", or complains about over-engineering, bloat, boilerplate, or needless dependencies. Sets a build *mode* that persists across the session, not a one-shot edit — off by default until invoked. Off again on "stop ponytail" / "normal mode". For restructuring code that already exists use [refactor](refactor.md); to critique an artifact use [roast-me](roast-me.md).
|
|
6
|
+
|
|
7
|
+
## Procedure
|
|
8
|
+
1. Set the intensity. Ponytail is **off by default**; invoking it turns it on at **full** unless a level is named. **lite** — build what's asked, name the lazier alternative in one line, user picks. **full** — the ladder enforced, shortest diff, shortest explanation. **ultra** — YAGNI extremist, ship the one-liner and challenge the rest of the requirement in the same breath. Switch any time with `/ponytail lite|full|ultra|off` (on OpenCode this command persists the level for the geneseed-ponytail plugin; `off` stops it).
|
|
9
|
+
2. Before writing code, climb the ladder and stop at the first rung that holds — it is a reflex, not a research project: ① does this need to exist at all? Speculative need → skip it, say so in one line ({{LAW}} on scope). ② stdlib does it? ③ native platform feature covers it (`<input type="date">` over a picker lib, CSS over JS, a DB constraint over app code)? ④ an already-installed dependency solves it — never add a new one for what a few lines do? ⑤ can it be one line? ⑥ only then the minimum code that works.
|
|
10
|
+
3. Build the lazy version: no abstraction with one implementation, no scaffolding "for later", deletion over addition, fewest files, shortest working diff. Reuse before authoring ({{LAW}} on reuse).
|
|
11
|
+
4. Mark each deliberate simplification with a `ponytail:` comment naming the ceiling and upgrade path — `# ponytail: global lock, per-account locks if throughput matters` — so the shortcut reads as intent, not ignorance.
|
|
12
|
+
5. Leave the check non-trivial logic needs (a branch, loop, parser, money/security path): one runnable `assert`-based self-check or one small `test_*.py`, the smallest thing that fails if the logic breaks. Trivial one-liners need none. **Never** simplify away input validation at trust boundaries, error handling that prevents data loss, security, accessibility basics, hardware calibration knobs, or anything explicitly requested — if the user insists on the full version, build it without re-arguing.
|
|
13
|
+
6. Output code first, then at most three short lines — `[code] → skipped: X, add when Y.` If the explanation runs longer than the code, cut it; prose defending a simplification is complexity smuggled back in. Explanation the user explicitly asked for is not debt — give it in full.
|
|
14
|
+
|
|
15
|
+
## Done when
|
|
16
|
+
- The shipped solution sits on the highest ladder rung that works, deliberate shortcuts carry a `ponytail:` comment with their upgrade path, non-trivial logic has one runnable check, and nothing on the never-simplify list was cut.
|
|
17
|
+
|
|
18
|
+
## Self-improvement
|
|
19
|
+
|
|
20
|
+
Close each run with one beat of reflection on the {{SKILL}} itself:
|
|
21
|
+
- A step misled, a needed step was missing, or the trigger fired wrongly — that
|
|
22
|
+
is a flaw in this file. Propose the exact edit (trigger, procedure, or
|
|
23
|
+
done-when) and apply it with the user's assent ({{LAW}} II).
|
|
24
|
+
- A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
|
|
25
|
+
clears {{LAW}} VI's bar: it would change how a future session behaves, and a
|
|
26
|
+
fresh read of the repo would not re-derive it. Update an existing memory over
|
|
27
|
+
adding one; when in doubt, leave it out.
|
|
28
|
+
- No friction, nothing learned — move on; this loop earns no ceremony. Most
|
|
29
|
+
runs end here.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# {{SKILL}}: profile
|
|
2
|
+
|
|
3
|
+
> {{DESC_PROFILE}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** the user wants the agent to know who they are — "set up my profile",
|
|
6
|
+
"create my profile", "update my profile" — a fresh install whose `PROFILE.md` is
|
|
7
|
+
still the untouched stub, or an existing profile visibly contradicts how the user
|
|
8
|
+
now works.
|
|
9
|
+
|
|
10
|
+
## Procedure
|
|
11
|
+
1. Locate `PROFILE.md` beside the deployed AGENT.md and read it ({{LAW}} III — the
|
|
12
|
+
real current file, not a remembered copy). The build seeds it once and never
|
|
13
|
+
overwrites it; if it is genuinely absent, start from the stub's three sections
|
|
14
|
+
(below) and note that a rebuild would have seeded it.
|
|
15
|
+
2. **Interview, don't infer.** Ask short, concrete questions a few at a time —
|
|
16
|
+
a conversation, not a form dump — covering the stub's three sections:
|
|
17
|
+
- **Who I am** — role, domains known deeply, domains being learned, what they
|
|
18
|
+
usually come here to do.
|
|
19
|
+
- **How I work** — stack, shell, environment, conventions they hold to, the
|
|
20
|
+
things that reliably annoy them.
|
|
21
|
+
- **Register preferences** — terse or expansive, teach-me or just-do-it, how
|
|
22
|
+
much pushback they want, the language(s) they think in.
|
|
23
|
+
What the session has already shown — their tone, their corrections — may be
|
|
24
|
+
offered back as a *proposal to confirm*, never written as a silent conclusion.
|
|
25
|
+
Every section is optional: a declined question is dropped, not padded.
|
|
26
|
+
3. **Keep identity and rules apart.** When an answer is really a standing rule
|
|
27
|
+
("never push without asking"), route it to `user-rules.md` via the rule
|
|
28
|
+
{{SKILL}} and say so — the profile colours how
|
|
29
|
+
you work, it never binds. A durable project fact belongs in {{MEMORY}}, not here.
|
|
30
|
+
4. Draft the profile in the stub's shape — the `##` sections above, short plain
|
|
31
|
+
prose, no placeholders left standing. Keep it lean: a profile is read every
|
|
32
|
+
session, and bloat dilutes the parts that matter.
|
|
33
|
+
5. Show the full draft and wait for explicit consent ({{LAW}} IV) before writing
|
|
34
|
+
`PROFILE.md`. Remind the user the file is theirs — hand-editable any time, and
|
|
35
|
+
it survives updates, rebuilds, and theme switches.
|
|
36
|
+
|
|
37
|
+
**Refresh flow** (on request, or when the profile has drifted): read the current
|
|
38
|
+
file, name the drift plainly, and propose the specific edits — same consent gate
|
|
39
|
+
as creation, and never discard a section the user wrote by hand.
|
|
40
|
+
|
|
41
|
+
## Done when
|
|
42
|
+
- `PROFILE.md` holds a consented, current picture of who the user is and how they
|
|
43
|
+
like to work — with anything that was really a rule or a fact routed to
|
|
44
|
+
`user-rules.md` or {{MEMORY}} instead — or the user declined, and the file is
|
|
45
|
+
untouched.
|
|
46
|
+
|
|
47
|
+
## Self-improvement
|
|
48
|
+
|
|
49
|
+
Close each run with one beat of reflection on the {{SKILL}} itself:
|
|
50
|
+
- A step misled, a needed step was missing, or the trigger fired wrongly — that
|
|
51
|
+
is a flaw in this file. Propose the exact edit (trigger, procedure, or
|
|
52
|
+
done-when) and apply it with the user's assent ({{LAW}} II).
|
|
53
|
+
- A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
|
|
54
|
+
clears {{LAW}} VI's bar: it would change how a future session behaves, and a
|
|
55
|
+
fresh read of the repo would not re-derive it. Update an existing memory over
|
|
56
|
+
adding one; when in doubt, leave it out.
|
|
57
|
+
- No friction, nothing learned — move on; this loop earns no ceremony. Most
|
|
58
|
+
runs end here.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# {{SKILL}}: prose
|
|
2
|
+
|
|
3
|
+
> {{DESC_PROSE}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** about to hand a human written prose — a commit body, PR description,
|
|
6
|
+
doc, code comment, {{MEMORY}} note, or a written reply — and it should read like a
|
|
7
|
+
person wrote it, not a model.
|
|
8
|
+
|
|
9
|
+
## Procedure
|
|
10
|
+
1. Draft for content first, fix voice on a second pass — don't self-censor while
|
|
11
|
+
the idea is still forming.
|
|
12
|
+
2. Cut throat-clearing and filler: openers like "In today's world", "It's worth
|
|
13
|
+
noting", "I'll help you", and hedges that carry no information.
|
|
14
|
+
3. Active voice, human subject. Don't let inanimate things perform human actions
|
|
15
|
+
("the test wants…", "the code believes…").
|
|
16
|
+
4. Be concrete: swap vague abstractions and intensifiers for the specific fact,
|
|
17
|
+
number, or name. Drop adverbs propping up a weak verb ({{LAW}} XV — every word
|
|
18
|
+
earns its place).
|
|
19
|
+
5. Vary rhythm: don't run three same-length sentences back to back, and break the
|
|
20
|
+
reflex "X, Y, and Z" triad when it shows up in every paragraph.
|
|
21
|
+
6. Trust the reader: cut restatements, summaries of what you just said, and
|
|
22
|
+
quotable-sounding pronouncements. Remove decorative em-dashes.
|
|
23
|
+
7. Read it once as the recipient. Rate 1–10 on directness, rhythm, reader-trust,
|
|
24
|
+
authentic voice, and density (how much is still cuttable); under ~35/50, cut
|
|
25
|
+
and revise before sending.
|
|
26
|
+
|
|
27
|
+
## Done when
|
|
28
|
+
- The text says what it means in the fewest honest words, carries no AI tells,
|
|
29
|
+
and would pass as written by a careful human.
|
|
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,44 @@
|
|
|
1
|
+
# {{SKILL}}: prototype
|
|
2
|
+
|
|
3
|
+
> {{DESC_PROTOTYPE}}
|
|
4
|
+
|
|
5
|
+
**Trigger:** a design question needs a runnable answer — "does this state
|
|
6
|
+
model feel right?" or "what should this look like?" — before committing to a
|
|
7
|
+
real implementation.
|
|
8
|
+
|
|
9
|
+
## Procedure
|
|
10
|
+
1. Name the question the prototype answers; the question decides the shape. A
|
|
11
|
+
logic or state question → a tiny interactive terminal app that pushes the
|
|
12
|
+
state machine through the cases that are hard to reason about on paper. A
|
|
13
|
+
UI question → several radically different variations on one route,
|
|
14
|
+
switchable at runtime. If ambiguous, pick from the surrounding code
|
|
15
|
+
(backend module → logic; page or component → UI) and state the assumption.
|
|
16
|
+
2. Throwaway from day one, and marked as such: place it near the code it
|
|
17
|
+
prototypes for, but name it so a casual reader sees it is not production.
|
|
18
|
+
No persistence (state lives in memory), no tests, no error handling beyond
|
|
19
|
+
what makes it runnable, no abstractions ({{LAW}} XXV).
|
|
20
|
+
3. One command to run, using the project's existing task runner — the user
|
|
21
|
+
must be able to start it without thinking.
|
|
22
|
+
4. Surface the full relevant state after every action or variant switch, so
|
|
23
|
+
the user sees exactly what changed.
|
|
24
|
+
5. When the question is answered: fold the validated decision into the real
|
|
25
|
+
code, record the verdict and the question it settled (issue comment, ADR,
|
|
26
|
+
or commit message), park the prototype on a throwaway branch, and keep the
|
|
27
|
+
main branch clean of prototype code.
|
|
28
|
+
|
|
29
|
+
## Done when
|
|
30
|
+
- The question has a recorded verdict, the decision lives in the real code,
|
|
31
|
+
and no prototype code remains on the main branch.
|
|
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.
|