IntelliJ IDEA plugin for the OpenSpec spec-driven development framework
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗An IDE-native client for the OpenSpec spec-driven development framework by Fission AI. Browse specs, orchestrate the propose → generate → implement → archive lifecycle, and route AI-generated artifacts through the tool of your choice — all without leaving your IDE.
Features:
Compatible with IntelliJ IDEA, PyCharm, GoLand, WebStorm, RubyMine, and the rest of the JetBrains IDE family, 2024.2 and later. Spec browsing and validation are fully language-agnostic.
Maintenance: Living — updated as part of every relevant change. See the documentation index for the full doc map and each doc's maintenance class.
| Persona | You are... | AI setup? | Get started |
|---|---|---|---|
| Spec Browser | A reviewer, lead, or PM who wants to browse specs | None | Getting Started |
| IDE-First Developer | A dev using Copilot, Cursor, Devin Desktop (formerly Windsurf), or Cline inside IntelliJ | None (uses your existing tool) | Getting Started |
| CLI Companion | A dev using Claude Code, Gemini CLI, or another terminal AI | None (uses your existing tool) | Getting Started |
| Standalone API User | A dev with an API key who wants a fully self-contained workflow | API key only | Getting Started |
Install from the JetBrains Marketplace (search for OpenSpec), or build from source:
git clone https://github.com/johnnyblabs/intellij-openspec.git
cd intellij-openspec
./gradlew build
# Install from: build/distributions/OpenSpec-*.zip
Requirements: IntelliJ IDEA 2024.2+ (Community or Ultimate), Java 21 JDK for building from source.
OpenSpec CLI (optional): The plugin works without the CLI via its built-in fallback paths, and AI-tool detection (all 50 tools OpenSpec supports) is plugin-side — it works on any CLI, or none. Minimum supported CLI is 1.3.0 (see the canonical Version support block for the full per-version support list). The plugin tracks the CLI's evolving model per version: on 1.4.x it surfaces the legacy coordination layer (workspaces, context stores, and initiatives, plus the workspace-planning schema) that exists in the [1.4.0, 1.5.0) window; on 1.5.0+ it surfaces the current store/workset model that replaced it. On 1.6.x, 1.7.x, 1.8.x, 1.9.x, 1.10.x, 1.11.x, and 1.12.x that coordination model is unchanged; 1.7.x, 1.8.x, 1.9.x, 1.10.x, 1.11.x, and 1.12.x support is additive — the plugin recognizes the CLI's new optional change-metadata (skip_specs, plus 1.8's retire_capabilities) and config fields (operations, defaultStore, plus 1.8's githubCopilot) and the additive status --json fields, all tolerated without new gates. 1.8 also relaxed one built-in check to stay in step with the CLI: when the CLI isn't installed, a requirement that has a body but no SHALL/MUST is a non-failing warning in default validation (strict still fails it), matching OpenSpec 1.8's default. 1.9 is a strict additive superset of 1.8 — its default and strict validation verdicts are byte-identical, so 1.9 support needed no built-in change. 1.10 is likewise a strict additive superset of 1.9 — its validation engine is byte-identical in source and its verdicts are unchanged, so 1.10 support also needed no built-in change (1.10 is the first two-digit minor, so the plugin's numeric version comparison is tested to order 1.10.0 above 1.9.0). 1.11 is an additive, safe-direction superset of 1.10 — its verdicts over the parity corpus are byte-identical to 1.8, and its one new validation rule (a spec whose ## Purpose is still a placeholder is now a warning, a failure under strict) only makes the CLI stricter, so 1.11 support also needed no built-in change and the new rule is locked by a positive-control fixture. is the same shape — an additive, safe-direction superset of 1.11 with unchanged verdicts; its one new diagnostic (an informational "archive would refuse this delta" note when a change's delta targets a not-yet-existing spec) never affects the verdict and is already surfaced at the correct severity, so 1.12 support also needed no built-in change. keeps the verdicts unchanged but made the CLI more permissive in two places the plugin now mirrors. / delta entries may use any bullet (, , ), and the built-in validator, the editor inspection and spec sync all accept them. Task progress counts every task style the CLI counts (, , , , …), so the plugin's numbers match the CLI's. A rejected item id also no longer reads as a passing validation. reworded the legacy-cleanup notice that prints. The plugin recognizes both wordings, and since 1.14 warns to back up custom content first, its cleanup review starts with no files ticked. Its new output fields are ignored, and its new warnings (an unrecognized key, a very long requirement, text that archiving would drop) only fail under strict, so the built-in fallback leaves them to the CLI. keeps the validation verdicts and output of 1.14, and its new standalone binary (installable without Node.js) reports its version the same way as the npm install. Its new lets the plugin's show what it will change and apply it only when you agree. Note that ; on 1.5.0+ the plugin stops calling the removed commands and instead shows the new model in the Coordination tab — your registered (with id, root, and health) and your local (with their member folders), sourced from the CLI with a built-in fallback that reads OpenSpec's global data directory. Any surviving pre-1.5 state appears in a muted, read-only "Legacy (pre-1.5)" group. With CLI 1.5.0+ the IDE also offers store/workset — creating or registering a store, revealing a workset's member folders, and creating or removing stores/worksets (store Remove is a guarded, destructive delete) — all delegating to the CLI; the plugin never migrates state — it only reflects what the CLI owns. The surface is language-agnostic and works across the JetBrains IDE family. Users on CLI 1.0, 1.1, or 1.2 will see a one-time startup notification recommending upgrade — the plugin continues to function but features that require the CLI are disabled.
Install the CLI with any of OpenSpec's install routes:
# Standalone installer (no Node.js needed), macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/Fission-AI/OpenSpec/main/scripts/binary/install.sh | sh
# Windows (PowerShell):
irm https://raw.githubusercontent.com/Fission-AI/OpenSpec/main/scripts/binary/install.ps1 | iex
# Or with a package manager:
npm install -g @fission-ai/openspec@latest # needs Node.js 20.19+
brew install openspec # macOS and Linux
Keep one copy of the CLI. If you install it a second way, for example the standalone installer after an earlier npm install, your terminal runs whichever comes first in PATH, while the plugin uses the first copy it finds. Upgrade the copy you have the way you installed it: re-run the installer (or openspec install), npm install -g @fission-ai/openspec@latest, or brew upgrade openspec. To make the plugin use a specific copy, set Settings → Tools → OpenSpec → CLI Path. The plugin's Update action runs openspec update, which refreshes your project's instruction files; it doesn't upgrade the CLI.
Windows note: npm installs the launcher as openspec.cmd (not bare openspec). The plugin auto-detects it from %APPDATA%\npm\ and %LOCALAPPDATA%\npm\, plus winget shims. OpenSpec's standalone binary (1.15+, no Node.js needed) is found where its installer puts it: ~/.local/bin/openspec on macOS and Linux, %LOCALAPPDATA%\Programs\openspec\openspec.exe on Windows. After installing the standalone CLI on Windows, restart the IDE: the installer adds itself to your user PATH, which an IDE that's already running doesn't see, so until then the plugin keeps any copy it found before. If auto-detect misses your install, set the manual path in Settings → Tools → OpenSpec → CLI Path to the full .cmd location, e.g. C:\Users\<you>\AppData\Roaming\npm\openspec.cmd.
Contributions are welcome! See CONTRIBUTING.md for development setup, coding standards, and PR process.
./gradlew build # Compile and run tests
./gradlew runIde # Launch sandboxed IDE with plugin
./gradlew test # Tests only
CI verifies the plugin on Windows and macOS in addition to Linux, so platform-specific behavior — Windows data-dir resolution, backslash/UNC path handling, the .cmd launcher shim, and root canonicalization across symlinks and short paths — is exercised on a real host of each OS.
RENAMEDREMOVED-*+*+1.[ x ]openspec update.openspec.yamlupdate --dry-runworkspace-planning schema with a store/workset model