OpenSpec: spec-driven development for Claude Code and Codex Fission AI maintains OpenSpec, an MIT-licensed open-source tool that makes AI coding agents such as Claude Code and Codex write proposals, requirement specs, design docs and task lists before implementing code. The tool, at version 1.14.0 with roughly 71,000 GitHub stars as of October 5, 2026, installs its workflow as ordinary SKILL.md agent skills and stores specs and proposed changes as plain Markdown under an openspec/ directory. It requires Node.js 20.19.0 or later and is installed via npm or Homebrew. OpenSpec is a free, open-source tool that makes your AI coding agent write down what it is going to build before it builds it. This tutorial covers the /opsx:propose workflow in Claude Code and Codex, and the hosted OpenSpec Propose skill https://skillgild.dev/skills/openspec-propose . Each change gets a short proposal, requirement specs, a design and a task list that you review first. Then the agent implements the tasks, and the agreed specs become the project's record of how the software should behave. It is maintained by Fission AI under the MIT license. On October 5, 2026 the GitHub repository https://github.com/Fission-AI/OpenSpec had about 71,000 stars and the current npm release was 1.14.0. This guide walks through the workflow, shows what openspec init actually creates, and explains where the OpenSpec Propose https://skillgild.dev/skills/openspec-propose skill fits. AI agents are fast but drift when the requirements live only in chat history. OpenSpec adds a thin layer of Markdown files to your repository: openspec/specs/ holds the current truth: requirements and scenarios for each part of the system. openspec/changes/ holds proposed changes, one folder each, until they ship. openspec/config.yaml holds optional project rules, such as "keep proposals under 500 words". The specs are plain Markdown, with no special syntax to learn. OpenSpec's README https://github.com/Fission-AI/OpenSpec readme describes the goal as agreeing on what to build "before any code is written". That planning step is called spec-driven development. /opsx:explore lets the agent read your code and weigh options before anything is written down. /opsx:propose add-dark-mode creates openspec/changes/add-dark-mode/ with four artifacts: proposal.md why and what , specs/ requirement changes , design.md technical approach and tasks.md the checklist . /opsx:apply works through /opsx:archive moves the finished change into openspec/changes/archive/ and merges its spec changes into OpenSpec calls itself "fluid not rigid": there are no phase gates, so you can update any artifact during apply. OpenSpec needs Node.js 20.19.0 or later. Install it globally with npm, or with Homebrew on macOS and Linux: npm install -g @fission-ai/openspec@latest or brew install openspec Then initialize it inside your project. The --tools flag skips the interactive picker: cd your-project openspec init --tools claude,codex We ran exactly that on October 5, 2026, with OpenSpec 1.14.0, in an empty Git repository. This is the replayed output: The run wrote these files: .claude/ commands/opsx/ apply, archive, explore, propose, sync, update .md skills/ openspec-apply-change, openspec-archive-change, openspec-explore, openspec-propose, openspec-sync-specs, openspec-update-change SKILL.md each .agents/skills/ the same 6 skills, for Codex openspec/ config.yaml specs/ changes/archive/ Two things are worth knowing from that output. First, OpenSpec installs its workflow as ordinary agent skills, the same SKILL.md format covered in how to install Claude Code skills https://skillgild.dev/learn/install-claude-code-skills and the Codex skills guide https://skillgild.dev/learn/install-codex-skills . Second, the default profile installs six workflows; six more new , continue , ff , bulk-archive , verify , onboard are added with openspec config profile . The command is the same idea everywhere, but the spelling differs. openspec init prints the right form for the tools you chose. | Agent | Start a change | Source | |---|---|---| | Claude Code | /opsx:propose "your idea" | init output | | Codex CLI or IDE | $openspec-propose "your idea" | init output | | Codex desktop app | Pick openspec-propose under Skills in the sidebar | init output | | Cursor, GitHub Copilot | /opsx-propose | OpenSpec README | | Amazon Q | @opsx-propose | OpenSpec README | OpenSpec lists support for more than 30 tools. Check its supported tools page https://github.com/Fission-AI/OpenSpec/blob/main/docs/supported-tools.md for yours. A spec change is written as a delta: what is added, modified or removed. This example is from OpenSpec's own README, for a dark-mode change: js ADDED Requirements Requirement: Theme selection The app SHALL let users switch between light and dark themes, defaulting to the system preference. Scenario: User toggles dark mode - WHEN the user clicks the theme toggle - THEN the app switches to dark mode and persists the choice Each requirement has at least one scenario in WHEN and THEN form, so a reviewer can check the behaviour without reading code. When you archive the change, this block is merged into the matching file in openspec/specs/ . The slash commands run inside your agent. The openspec CLI runs in your terminal and helps you inspect and check the files. These come from openspec --help in version 1.14.0: | Command | What it does | |---|---| | openspec list | Lists active changes; add --specs to list specs | | openspec show