Skip to content

Latest commit

Β 

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Trovery πŸ¦‰

Everything you need to build with AI lives in your trove.

Pronounced TROH-ver-ee β€” a trovery is where troves are kept. Bakery, brewery, trovery.

Formerly Demigo. Renamed to Trovery in 2026 β€” the old name's most legible morpheme (demi-, "half") worked against a toolkit whose entire claim is completeness. Existing links and clone URLs still resolve.

An AI-assisted workflow that helps you make decisions β€” and documents them as you go.

Templates are a monologue. Trovery is a dialogue.

You and the model work together β€” you steer, the model interviews you, and every choice you make is captured as a durable decision record: the context you were in, the options you weighed, what you chose, and why. That record is the point. It's documentation both future-you and the AI can look back on β€” so nobody has to reconstruct the reasoning three weeks, or three sessions, later. A chat window forgets. Trovery writes it down.

The atomic unit isn't a document you maintain; it's a decision you record once. Everything else β€” PRDs, Roadmaps, SADs, Delivery Plans, study guides β€” is a generated view computed on demand from the current set of active decisions.

There are no approval gates. There are no status workflows. Conversation β†’ confirm β†’ commit β†’ done. If a decision turns out wrong, you supersede it. If a phase turns out wrong, the retro routes you back to redo it. The framework trusts you to know when to revisit.

Trovery is the decide half of a pair. The build + govern half is trovery-tools β€” the Go platform: trove forge (build agents & MCP servers) and trove vigil (govern AI-assisted work).

For agent builders

Two commands stand on their own, outside the PRD/roadmap workflow:

  • /trove:skill-forge β€” a convergent interview pins one autonomous agent to six facets (trigger Β· task Β· tools Β· guardrails Β· fail-safe Β· output) and emits a self-contained, agent-invocable SKILL.md + decision trail to hand off. Custom-agent authoring, not doc generation.
  • /trove:onboard β€” point it at an existing codebase; it reverse-engineers evidence-cited ADRs plus a contributor onboarding guide. Trovery's brownfield on-ramp.

The substance of the framework is the Markdown in prompts/. The JS/CSS in renderer/ is just an optional HTML viewer β€” don't let GitHub's language bar mislead you.

Prerequisites

  • A supported AI coding harness β€” Claude Code, Gemini CLI, Cursor, Codex CLI, or GitHub Copilot. Trovery installs as slash commands in any of them; see Install (other tools).
  • git β€” to clone and to version your decision files.
  • pandoc + node β€” optional, only for the HTML renderer (/trove:render). Everything else works in plain Markdown without them.
    brew install pandoc node   # macOS; use your package manager elsewhere

Install (Claude Code)

git clone https://github.com/ceasarb/trovery.git ~/Developer/trovery
cd ~/Developer/trovery
./install.sh

Symlinks all Trovery prompts into ~/.claude/commands/trove/. Restart Claude Code; commands are live as /trove:<name> everywhere.

Options:

  • ./install.sh --copy β€” copy files instead of symlinking
  • ./install.sh --uninstall β€” remove ~/.claude/commands/trove/

Install (other tools)

Trovery is harness-agnostic. The prompts/ markdown is the single source of truth; one emitter carries it to every supported target.

node adapters/emit.mjs --list                    # show every target profile
node adapters/emit.mjs --target cursor           # emit for one target
node adapters/emit.mjs --target gemini-cli --dry-run
Target Installs to Invoke as Live edits?
Claude Code ~/.claude/commands/trove/ /trove:brainstorm βœ… symlinked
Gemini CLI ~/.gemini/commands/trove/ /trove:brainstorm ❌ re-run
Cursor ~/.cursor/commands/ /trove-brainstorm ❌ re-run
Codex CLI ~/.codex/prompts/ /trove-brainstorm βœ… symlinked
GitHub Copilot .github/prompts/ /trove-brainstorm βœ… symlinked

Why some update live and some don't. Where a target reads Trovery's own format, the emitter symlinks β€” editing a prompt changes the command instantly. Where a target needs a different format (Gemini CLI stores prompts inside TOML; Cursor inlines the file without frontmatter), files are generated, so changes need another run.

Why two invocation styles. Claude Code and Gemini CLI namespace by directory, so commands land under trove:. Cursor, Codex and Copilot read one flat directory, so the namespace moves into the filename.

Adding a harness is a profile entry in adapters/emit.mjs, not a new directory. Contributions welcome.

Codex note: custom prompts still work but are deprecated upstream in favour of skills.

TL;DR usage

1. /trove:scaffold              # once per project β€” creates .claude/docs/{decisions,views,retros,discovery,design-refs}/
2. /trove:brainstorm            # have a conversation; the model drives Q&A; decisions commit as files
3. /trove:plan phase-1          # break the captured decisions into 5–25 min tasks
4. build the thing
5. /trove:maintain              # comb the repo for drift; every proposed change cites its decision
6. /trove:retro                 # capture learnings, decide what's next

For client work with existing material: replace step 2 with /trove:discovery <notes-file>.

Step 5 needs /trove:maintain --init once, to establish the conventions it enforces β€” see Keep the repo consistent.

Commands

Setup

Command Purpose
/trove:scaffold Create .claude/docs/{decisions,views,retros,discovery,design-refs}/ + project CLAUDE.md. Once per project.

Capture decisions (write to decisions/)

All top-of-funnel commands drive a conversation, draft PDRs/ADRs inline, and ask "commit? (y / edit / drop)". The interview script is what differs.

Command When to use
/trove:brainstorm Self-directed work. You arrive with an idea. Model drives product Q&A then tech Q&A.
/trove:discovery Client work. You arrive with material. Raw preserved verbatim; conflicts/ambiguities/unstated gaps surfaced.
/trove:design Visual refinement phase. Reference-first interview (admired apps, anti-references), then structural design decisions.
/trove:decide-product Focused PDR interview. Direct invocation or called inline.
/trove:decide-tech Focused ADR interview. Direct invocation or called inline.
/trove:refine <ID> Iterate on an existing decision. In-place if unshipped; supersede if shipped.
/trove:onboard Existing codebase. Reverse-engineer it into evidence-cited ADRs + a contributor onboarding guide. Trovery's brownfield on-ramp.

Read decisions (write to views/)

Views are always regenerated, never hand-edited.

Command Produces
/trove:rollup prd <phase> PRD view from PDRs tagged with the phase
/trove:rollup roadmap Roadmap view from sequencing PDRs + phase tags
/trove:rollup sad Solution Architecture view from active ADRs
/trove:rollup study-guide <topic> Aggregated HTML study guide from concepts (for exam prep)
/trove:plan <phase> CRAWL/WALK/RUN delivery plan; 5–25 min tasks with energy tags; first WALK task is deploy

Render & publish

Command Produces
/trove:render A navigable static HTML site from a project's .claude/docs/ (decisions, generated views, onboarding guide). Local, static, read-only; Mermaid diagrams render offline.

Forge agent skills

Command Produces
/trove:skill-forge A bespoke, agent-invocable skill bundle. A convergent interview pins one autonomous agent to six facets (trigger Β· task Β· tools Β· guardrails Β· fail-safe Β· output) and emits a self-contained SKILL.md + decision trail to hand off. Trovery's engine aimed at authoring agents β€” not distributing Trovery itself.

Keep the repo consistent

AI-assisted repos drift: each session makes locally reasonable structural choices, and nothing arbitrates between them. These commands make the arbiter explicit.

Command Purpose
/trove:maintain --init Establish. Surveys the repo, makes you resolve competing layouts, and writes convention records β€” layout rules, naming patterns, and tool pins carrying a vendored docs snapshot. Run once.
/trove:maintain Enforce. Combs the repo against those records and proposes a plan where every item cites the decision behind it. Applies nothing until you approve; never invents a convention it wasn't given.

Close the loop

Command Purpose
/trove:retro <phase> 3-question retro. Proposes supersede/consolidate/deprecate actions on decisions. Names the next move.

Directory layout in a Trovery project

After /trove:scaffold in a project:

.claude/docs/
β”œβ”€β”€ decisions/           # PDRs (product) and ADRs (technical). The source of truth.
β”œβ”€β”€ views/               # Generated PRDs, Roadmaps, SADs, Delivery Plans. Do not edit.
β”œβ”€β”€ retros/              # End-of-phase retros.
β”œβ”€β”€ discovery/           # Raw client material (verbatim) + open-questions.md
β”œβ”€β”€ design-refs/         # Visual references β€” admired apps, screenshots, notes
└── snapshots/           # Vendored docs snapshots backing /trove:maintain tool pins

snapshots/ appears only once /trove:maintain --init has captured a tool pin. Everything else is created by /trove:scaffold.

Mental model

Decisions are atoms. Every meaningful piece of thinking is a decision β€” a choice between alternatives with consequences. PDRs and ADRs capture decisions. Same shape (Context β†’ Options β†’ Choice β†’ Consequences); different interview scripts. That captured shape is the documentation β€” a durable record you and the AI read back to remember why a path was taken, long after the conversation has scrolled away.

Views are derived, never authored. PRDs, Roadmaps, SADs, and Delivery Plans are read-only outputs computed from the current state of active decisions. To change a view, change the decisions and re-run /trove:rollup or /trove:plan.

The lifecycle rule. Before code ships against a decision, in-place edit. After code ships, meaningful changes create a NEW decision that supersedes the old one. Old file stays in the repo as history.

Self-filter at draft time. Before drafting any decision, the model asks itself: "Is this a real decision, or a preference / fact / minor detail?" If there's no real alternative, no meaningful consequence, or it's reversible in under an hour β€” the model says so and suggests inlining as a code comment instead.

References β‰  decisions. discovery/ and design-refs/ hold raw material β€” client notes, admired apps, screenshots. These are working inputs, freely appendable and deletable. Decisions extracted from them cite the source file/quote in their Context section.

No gates, anywhere. No /approve, no /status, no /whats-stale. Every command is conversation β†’ commit β†’ done.

Session shape

                /trove:scaffold          (once per project)
                       β”‚
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β–Ό               β–Ό               β–Ό
   brainstorm      discovery         design       ← top-of-funnel (pick one)
       β”‚               β”‚               β”‚
       β”‚   (handoff to decide-* inline as decisions surface)
       β–Ό               β–Ό               β–Ό
                decide-product / decide-tech      ← commit decisions
                       β”‚
                       β–Ό
              refine (when you change your mind)
                       β”‚
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β–Ό                               β–Ό
   rollup (PRD/Roadmap/SAD)         plan (CRAWL/WALK/RUN)   ← derived views
                       β”‚
                       β–Ό
                build the thing
                       β”‚
                       β–Ό
                   maintain          ← comb for drift; every change cites its decision
                       β”‚
                       β–Ό
                     retro
                       β”‚
                  decide what's next

/trove:maintain sits between building and the retro because that's when drift has accumulated and is still cheap to undo. It needs /trove:maintain --init once first β€” it enforces conventions you gave it and never invents its own.

Philosophy

Trovery evolved out of a 12-artifact gated framework where the gates themselves became the paralysis trap. Strip the gates, collapse the artifacts into atoms, let the conversation do the structuring work. Every design decision in Trovery falls out of that:

  • Trust over gates β€” the model asks confirmation, not permission.
  • Decide, then document β€” every choice is written down once as a record of the why, not just the what. The paperwork is a byproduct of thinking, not a separate chore.
  • A shared memory for human and AI β€” the same decision records orient future-you and keep the model consistent across sessions. Nobody re-derives what was already settled, and nobody silently contradicts it.
  • Conversation over templates β€” templates are passive; interviews are active.
  • Derived over authored β€” views (PRDs, Roadmaps, plans) are regenerated from decisions, never hand-maintained.
  • Reversibility scales the ceremony β€” cheap decisions get lightweight capture; expensive ones warrant a full record.

See docs/methodology.md for a longer treatment.

Troubleshooting

Symptom Fix
/trove:* commands don't appear Restart Claude Code after ./install.sh β€” commands load at startup. Confirm the install with ls ~/.claude/commands/trove/.
Commands appear but the model doesn't "drive" Invoke the command on its own line (e.g. type /trove:brainstorm and send) rather than embedding it in a longer message.
/trove:render produces no HTML Install the renderer deps: brew install pandoc node. Everything else works without them.
Want it out of the way ./install.sh --uninstall removes ~/.claude/commands/trove/. Your project .claude/docs/ decisions are untouched.

Repo layout

trovery/
β”œβ”€β”€ prompts/                    # source-of-truth markdown (the actual framework)
β”œβ”€β”€ adapters/
β”‚   β”œβ”€β”€ emit.mjs                # the emitter β€” one source, five target profiles
β”‚   β”œβ”€β”€ emit.test.mjs           #   round-trip, escaping, and lint tests
β”‚   β”œβ”€β”€ claude-code/            # bash installer (being replaced by the emitter)
β”‚   └── skill/                  # project a Trovery prompt into a Claude Code SKILL.md
β”œβ”€β”€ renderer/                   # MDβ†’HTML renderer (needs pandoc + node)
β”‚   β”œβ”€β”€ build-docs.mjs          #   project-docs builder (/trove:render)
β”‚   β”œβ”€β”€ lib.mjs                 #   shared rendering helpers
β”‚   β”œβ”€β”€ template.html           #   page shell (sidebar nav + on-this-page TOC)
β”‚   β”œβ”€β”€ style.css               #   stylesheet
β”‚   └── mermaid.min.js          #   vendored client-side Mermaid (offline diagrams)
β”œβ”€β”€ docs/
β”‚   └── methodology.md          # long-form on the philosophy
β”œβ”€β”€ install.sh                  # convenience wrapper β†’ adapters/claude-code/install.sh
β”œβ”€β”€ LICENSE                     # MIT
└── README.md                   # you are here

The prompts/ directory is the framework. The adapters are distribution mechanisms β€” each translates the prompts into a form the target tool understands.

Contributing

The prompts/ markdown is the framework. Improvements to the interview scripts, better self-filter heuristics, or new command types all belong there.

New harnesses are a profile entry in adapters/emit.mjs β€” output path, extension, field mapping, naming, emission class, escaping, and any reserved sequences. If a target needs changes to the emitter itself rather than a config entry, that is worth discussing first: the abstraction is meant to hold.

Open issues and PRs welcome.

License

MIT. See LICENSE.

About

Trovery πŸ¦‰ β€” everything you need to build with AI lives in your trove. A decision-first, conversation-driven workflow for building and learning, installed as Claude Code /trove: commands.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages