Turn product questions into testable hypotheses, working prototypes, and evidence-backed PRDs in Cursor, Codex, or OpenCode.
Nautilus keeps discovery work in your repository, where later sessions can reuse what earlier ones learned. Start with a rough question or whatever evidence already exists, including the codebase itself. Run only the workflow you need. Nautilus adds only what the current question requires. The resulting evidence and decisions are still there when you validate, write the PRD, or start implementation.
- Turn rough questions and existing evidence into focused opportunities and hypotheses
- Test assumptions about customer value, usability, technical feasibility, and business viability
- Generate a self-contained HTML prototype grounded in your product context
- Turn validated work into a PRD without losing the evidence and open risks behind it
You need Node.js and Cursor, Codex, or OpenCode.
From your project directory, install Nautilus for the client you use:
| Client | Install command |
|---|---|
| Cursor | npx nautilus-kit install --target cursor |
| Codex | npx nautilus-kit install --target codex |
| OpenCode | npx nautilus-kit install --target opencode |
| All three | npx nautilus-kit install --target all |
npx nautilus-kit install is shorthand for the Cursor installation. Open a new session in the selected client after installation.
Then start with a plain request:
| Goal | Cursor | Codex | OpenCode |
|---|---|---|---|
| Explore a product problem | /recipe-discover Explore why trial users abandon onboarding |
$recipe-discover Explore why trial users abandon onboarding |
/recipe-discover Explore why trial users abandon onboarding |
| Generate a prototype | /recipe-validate Make a prototype for HYPO-001 |
$recipe-validate Make a prototype for HYPO-001 |
/recipe-validate Make a prototype for HYPO-001 |
| Create a PRD | /recipe-define Create a PRD from the validated onboarding hypotheses |
$recipe-define Create a PRD from the validated onboarding hypotheses |
/recipe-define Create a PRD from the validated onboarding hypotheses |
Cursor and OpenCode invoke recipes with /recipe-*; Codex uses the same recipe name with $recipe-*.
Recipes are independent workflows. Run one when you need it, or combine them as the work progresses.
For usability testing, recipe-validate calls a dedicated subagent to build a self-contained HTML prototype in docs/discovery/prototypes/. It uses the hypothesis, persona, design decisions, and existing UI, so the prototype stays focused on what you need to test.
If you need to hand the work off to Lovable, v0, or another external generator, recipe-prototype-prompt writes the prompt instead.
Each recipe reads what already exists and adds only the files needed for the current work. Later sessions and implementation work can use the same record:
docs/
├── product/ # Vision, personas, design decisions, and reusable learnings
├── discovery/ # Opportunities, hypotheses, journeys, evidence, and prototypes
└── prd/ # Product requirements ready for implementation
Validation results stay with their hypotheses. PRDs link back to the opportunities, hypotheses, prototypes, and product decisions they rely on.
Local, reversible work continues without repeated approval. Nautilus asks before recording product scope, strategy, major design choices, or a PRD.
Use the commands in Quick Start to install Nautilus in the current project.
Use --user to make Nautilus available across projects:
npx nautilus-kit install --target cursor --user
npx nautilus-kit install --target codex --user
npx nautilus-kit install --target opencode --user
npx nautilus-kit install --target all --userUser-scoped skills are installed once in ~/.agents/skills/. Cursor agents go to ~/.cursor/agents/, Codex agents to ${CODEX_HOME:-~/.codex}/agents/, and OpenCode agents to ~/.config/opencode/agents/.
Nautilus remembers which clients you installed, so the same update command works for any target:
npx nautilus-kit update --dry-run
npx nautilus-kit updateFor a user installation, add --user. To change the installed clients during an update, specify the target:
npx nautilus-kit update --target cursor
npx nautilus-kit update --target codex
npx nautilus-kit update --target opencode
npx nautilus-kit update --target allUpdates add new managed files and replace unchanged managed files while preserving local modifications and unrelated files.
Open a new session in the selected client after updating so it loads the new workflows and agents.
Check the installed version and selected clients with:
npx nautilus-kit status
npx nautilus-kit status --userMIT

