docs/troubleshooting.md
Concrete fixes for concrete problems. Each entry names a symptom, explains the likely cause in a sentence, and gives you the fix. If you don't see your issue here, the FAQ may help, and the Discord definitely will.
openspec: command not foundThe CLI isn't installed, or your shell can't find it. Install it globally and check:
npm install -g @fission-ai/openspec@latest
openspec --version
If it installed but still isn't found, your global npm bin directory probably isn't on your PATH. Run npm bin -g to see where global binaries live, and make sure that path is in your shell profile.
OpenSpec runs on Node 20.19.0+. Check your version and upgrade if needed:
node --version
If you use bun to install OpenSpec, note that OpenSpec still runs on Node, so you need Node 20.19.0+ available on your PATH regardless. See Installation.
openspec init didn't configure my AI toolInit asks which tools to set up. If you skipped your tool or want to add another, just run it again, or use the non-interactive form:
openspec init --tools claude,cursor
The full list of tool IDs is in Supported Tools. Use --tools all for everything, --tools none to skip tool setup.
If /opsx:propose (or your tool's equivalent) doesn't appear or doesn't do anything, work down this list. They're ordered fastest-to-check first.
You may be in the wrong place. Slash commands go in your AI assistant's chat, not your terminal. If you typed /opsx:propose into your shell, that's the issue. See How Commands Work.
Regenerate the files. From your project root:
openspec update
This rewrites the skill and command files for every tool you've configured.
Restart your assistant. Most tools scan for skills and commands at startup. A fresh window often does it.
Confirm the files exist. For Claude Code, check that .claude/skills/ contains openspec-* folders. Other tools use their own directories, all listed in Supported Tools.
Check you initialized this project. Skills are written per project. If you cloned a repo or switched folders, run openspec init (or openspec update) there.
Confirm your tool supports command files. A few tools (Kimi CLI, Trae, ForgeCode, Mistral Vibe) don't get generated opsx-* command files; they use skill-based invocations instead. The forms differ per tool: see Supported Tools and How Commands Work.
The command couldn't tell which change you meant. Name it explicitly, or check what exists:
openspec list # see active changes
/opsx:apply add-dark-mode # name the change in chat
Also confirm you're in the right project directory.
Every artifact is either already created or blocked waiting on a dependency. See what's blocking:
openspec status --change <name>
Then create the missing dependency first. Remember the order: proposal enables specs and design; specs and design together enable tasks.
openspec validate reports warnings or errorsValidation checks your specs and changes for structural problems. Read the message: it names the file and the issue.
openspec validate <name> # validate one item
openspec validate --all # validate everything
openspec validate --all --strict # stricter checks, good for CI
Common causes are a missing required section (like a spec with no scenarios) or a malformed delta header. Fix the file and re-run. The CLI reference documents the output format.
The AI didn't have enough context. A few levers help:
openspec/config.yaml so your stack and conventions are injected into every request. See Customization.rules: for guidance that only applies to, say, specs./opsx:continue to create one artifact at a time and review each, instead of /opsx:ff doing them all at once.Archive won't block on incomplete tasks, but it warns you, because archiving usually means the work is done. If tasks remain on purpose (you're filing a partial change), proceed. Otherwise finish the tasks first. Archive will also offer to sync your delta specs into the main specs if you haven't synced yet; say yes unless you have a reason not to.
config.yaml isn't being appliedThree usual suspects:
openspec/config.yaml, not .yml.A key under rules: doesn't match any artifact in your schema. For the default spec-driven schema the valid IDs are proposal, specs, design, tasks. To see the IDs for any schema:
openspec schemas --json
The context: field is capped at 50KB, on purpose, because it's injected into every request. Summarize it, or link out to longer docs instead of pasting them. Lean context also produces better, faster results.
The schema name you referenced doesn't exist. List what's available and check spelling:
openspec schemas # list available schemas
openspec schema which <name> # see where a schema resolves from
openspec schema init <name> # create a custom one
See Customization.
You're in CI or a non-interactive shell, and OpenSpec found old files to clean up but can't prompt you. Approve automatically:
openspec init --force
Restart your IDE. Skills are detected at startup. If they still don't appear, run openspec update and check the file locations in Supported Tools.
project.md wasn't migratedThat's intentional. OpenSpec never deletes project.md automatically because it may hold context you wrote. Move the useful parts into config.yaml's context: section, then delete it yourself. The Migration Guide walks through this, including a prompt you can hand to your AI to do the distilling.
openspec feedback "what went wrong" opens an issue for you.When you report a problem, include your OpenSpec version (openspec --version), your Node version (node --version), your AI tool, and the exact command and output. It makes help much faster.