* docs(explore): stop claiming explore never writes files Sixteen lines across both documentation trees told users that `/opsx:explore` creates no artifacts and writes no files, full stop. That has been false since explore shipped (#467): its capture branch writes the planning artifacts the user asked for, and can edit an existing change's artifacts. #1503 later made it scaffold with `openspec new change` first, closing #668 and #720. The claim appeared in two shapes. Six lines denied the capability outright ("Explore creates no artifacts and writes no code"). Ten more said the same thing as a timing claim ("before any artifact exists"), which reads as ordinary pitch copy and is what escaped the first pass. Every site now carries one guarantee, worded the same way: explore never writes code, and writes nothing else unless you ask, or say yes when it offers. Four sites described only the user-initiated trigger, which left the offer path - the one a reader actually hits - looking like it did not exist. docs/explore.md and docs/commands.md also gain a positive description of capture where the denial used to sit, including what scaffolding creates beyond the artifacts you named, and how capture differs from handing off to propose (propose writes the set your schema requires; capture writes only what you named). Closes #1833 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * test(docs): keep the retired explore wording retired A flat list of the phrasings that actually carried the claim, swept over the eleven pages that pitch explore. Fails on main with all sixteen offenders; clean on this branch. Modeled on test/vocabulary-sweep.test.ts, and deliberately a list rather than a grammar. An earlier draft built the grammar - section splitting, code-fence tracking, a conditional-marker exemption so "creates no artifacts unless you ask" would pass - and measured against realistic prose it was imprecise in both directions while returning the same verdict on the real input. The list has no exemption logic to get wrong, and any maintainer can extend it. Phrasings that are only wrong in the absolute ("writes nothing", "creates nothing") are left to review, since the conditional form of each is the wording the failure message recommends. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * test(docs): pin the explore capture contract, not the word The guide check matched any "capture", so "explore automatically captures every artifact" passed. Both explore.md and commands.md now must name the user trigger, `openspec new change`, and the named-artifacts scope, with no capture line claiming it happens unprompted, and keep "never writes code". Also scope the explore.md guarantee to the setup files a new change needs, and make the commands.md offer name the change and its scope, which the template asks for on main and after #1832. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * test(docs): accept negated unprompted-capture wording, catch non-capture verbs The unprompted check matched "automatically" on any capture line, so the correct "Explore does not automatically capture artifacts" failed, while "Explore automatically writes planning artifacts" was never scanned because it lacks the word capture. Check each clause of lines naming explore or capture for an unprompted write verb with no preceding negation. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
OpenSpec Documentation
Welcome. This is the home for everything OpenSpec.
OpenSpec helps you and your AI coding assistant agree on what to build before any code is written. You describe the change, the AI drafts a short spec and a task list, you both look at the same plan, and then the work happens. No more discovering halfway through that the AI built the wrong thing.
If you read nothing else, read these two pages:
- Getting Started: install, initialize, and ship your first change.
- How Commands Work: where you actually type
/opsx:propose(hint: in your AI chat, not the terminal). This trips up almost everyone once.
That second one matters more than it looks. OpenSpec has two halves: a command line tool you run in your terminal, and slash commands you give to your AI assistant. Knowing which is which saves you the most common moment of confusion.
The best habit to build first: when you're not sure what to build, start with
/opsx:explore. It's a no-stakes thinking partner that reads your code, weighs options, and sharpens a fuzzy idea into a concrete plan before any code gets written. The Explore First guide makes the case.
Pick your path
I'm brand new. Start with Getting Started, then skim the Core Concepts at a Glance. When something feels mysterious, the FAQ and Glossary are nearby.
I have a problem but not a plan. This is the common case, and it has a dedicated answer: Explore First. Use /opsx:explore to think it through with the AI before committing to anything.
I have a big existing codebase. You don't document all of it. Using OpenSpec in an Existing Project shows how to start on real, brownfield code without boiling the ocean.
I just want to get it working. Install, run openspec init, then read How Commands Work so your first slash command lands in the right place. Or hand the setup to your assistant with the AI-assisted install prompt.
I learn by example. The Examples & Recipes page walks through real changes start to finish: a small feature, a bug fix, a refactor, an exploration.
The AI just drafted a plan — now what? Read it. Reviewing a Change shows the two-minute pass that catches a wrong turn while it's still cheap, and Writing Good Specs covers what a plan worth approving is made of.
I work on a team. OpenSpec on a Team shows how a change maps onto a branch and a pull request, and how teammates review a plan before the code.
I'm coming from the old workflow. The Migration Guide explains what changed and why, and promises your existing work is safe.
I want to bend it to my team's process. Customization covers project config, custom schemas, and shared context.
Something's broken. Troubleshooting collects the failures people actually hit, with fixes.
The whole map
Start here
| Doc | What it gives you |
|---|---|
| Getting Started | Install, initialize, and run your first change end to end |
| Explore First | Use /opsx:explore to think through an idea before you commit |
| How Commands Work | Where slash commands run, what "interactive mode" means, terminal vs chat |
| Core Concepts at a Glance | The whole mental model on one page: specs, changes, deltas, archive |
| Installation | npm, pnpm, yarn, bun, Nix, a prompt that hands setup to your AI assistant, and how to verify it worked |
Use it day to day
| Doc | What it gives you |
|---|---|
| Workflows | Common patterns and when to reach for each command |
| Examples & Recipes | Full walkthroughs of real changes, copy-pasteable |
| Writing Good Specs | What a strong requirement and scenario look like, and how to right-size a change |
| Reviewing a Change | The two-minute pass on a drafted plan before any code is written |
| OpenSpec on a Team | How changes fit branches, pull requests, and review |
| Using OpenSpec in an Existing Project | Adopting OpenSpec on a large brownfield codebase |
| Editing & Iterating on a Change | Update artifacts, go back, reconcile manual edits |
| Commands | Reference for every /opsx:* slash command |
| CLI | Reference for every openspec terminal command |
Understand it deeply
| Doc | What it gives you |
|---|---|
| Concepts | The long-form explanation of specs, changes, artifacts, schemas, and archive |
| OPSX Workflow | Why the workflow is fluid instead of phase-locked, plus an architecture deep dive |
| Glossary | Every term defined in one place |
Make it yours
| Doc | What it gives you |
|---|---|
| Customization | Project config, custom schemas, shared context |
| Multi-Language | Generate artifacts in languages other than English |
| Supported Tools | The 30+ AI tools OpenSpec integrates with, and where files land |
| Community Showcase | Projects and resources built with and for OpenSpec |
When you need help
| Doc | What it gives you |
|---|---|
| FAQ | Quick answers to the questions people ask most |
| Troubleshooting | Concrete fixes for concrete failures |
| Migration Guide | Moving from the legacy workflow to OPSX |
Coordinate across repos (beta)
| Doc | What it gives you |
|---|---|
| Stores: User Guide | Plan in its own repo when your work spans repos or teams |
| Agent Contract | The machine-readable CLI surfaces agents drive |
The thirty-second version
1. Install npm install -g @fission-ai/openspec@latest
2. Initialize cd your-project && openspec init
3. Explore (in your AI chat) /opsx:explore ← optional, but a great habit
4. Propose (in your AI chat) /opsx:propose add-dark-mode
5. Build (in your AI chat) /opsx:apply
6. Archive (in your AI chat) /opsx:archive
Steps 1 and 2 happen in your terminal. The rest happen in your AI assistant's chat. That split is the one thing worth memorizing, and How Commands Work explains exactly why. Step 3 is optional, but starting with /opsx:explore when you're unsure is the habit most worth forming.
Where else to get help
- Discord: discord.gg/YctCnvvshC for questions, ideas, and help.
- GitHub Issues: github.com/Fission-AI/OpenSpec/issues for bugs and feature requests.
openspec feedback "your message"sends feedback straight from your terminal (it opens a GitHub issue).
Found something in these docs that's wrong, stale, or confusing? That's a bug. Open an issue or a PR. Documentation improvements are some of the most valuable contributions you can make.