Visual interface for managing OpenSpec workflows in VSCode, Cursor.
English | 简体中文
A VSCode/Cursor extension that provides a visual dashboard for OpenSpec, making it easier to manage changes, view specs, and track tasks without leaving your editor.
- Visual Dashboard: Changes grouped by status, progress bars, Proposal Why summaries, and search
- Change Detail: Tabs for Proposal, Specs, Design, Tasks, and Verify; markdown viewer; task execution controls
- CLI Integration: OpenSpec CLI (list, status, new, archive) with retry, timeout, and
openspec.cliPathfallback - Quick Actions: Continue, FF, Apply, Verify, Archive, Open in Editor, Refresh
- Commands: Open Dashboard, Refresh Data, Create New Change, Archive Change
- Logging: Output panel "OpenSpec" channel
The sidebar shows active changes grouped by status, searchable change cards, task progress, artifact badges, and Proposal Why summaries.
The change detail view provides workflow actions, artifact tabs, task execution, and a webview confirmation dialog before changing task completion state.
- From marketplace: Install OpenSpec from the VS Code Marketplace or Open VSX (e.g. in Cursor).
- Requirements: OpenSpec CLI; a workspace that contains (or will contain)
openspec/config.yaml. The extension activates when it finds an OpenSpec workspace.
If Cursor or VS Code cannot see the CLI that works in your terminal, set openspec.cliPath to the absolute executable path, for example /opt/homebrew/bin/openspec or /usr/local/bin/openspec.
- Open a workspace that contains
openspec/config.yaml. - Open Command Palette (
Cmd+Shift+P/Ctrl+Shift+P). - Run OpenSpec: Open Dashboard.
- Select a change to inspect Proposal, Specs, Design, Tasks, and Verify tabs.
- Use the action bar or change-card actions to copy/fill
/opsx:continue,/opsx:ff,/opsx:apply, and/opsx:verifycommands.
Open Command Palette (Cmd+Shift+P / Ctrl+Shift+P):
| Command | Description |
|---|---|
| OpenSpec: Open Dashboard | Open visual dashboard (sidebar or editor) |
| OpenSpec: Refresh Data | Manually refresh from CLI |
| OpenSpec: Create New Change | Create new change (with validation) |
| OpenSpec: Archive Change | Archive completed change |
Cmd+Shift+P(Mac) /Ctrl+Shift+P(Windows/Linux): Command Palette — then type "OpenSpec" to run any command.- No default keybindings; you can assign them in Keyboard Shortcuts (e.g. for "OpenSpec: Open Dashboard").
| Setting | Default | Description |
|---|---|---|
openspec.focusSidebarViewWhenOpeningChangeDetail |
false |
Focus OpenSpec sidebar when opening change detail |
openspec.focusSidebarViewWhenOpeningDashboard |
false |
Focus OpenSpec sidebar when opening dashboard |
openspec.cliPath |
"" |
Optional absolute path to OpenSpec CLI; empty = auto-detect from PATH and login shell |
openspec.taskExecutionMode |
fillChat |
When clicking task execute: auto = run via adapter; fillChat = fill chat or copy to clipboard |
openspec.preferredAgentAdapter |
"" |
Preferred agent executor adapter id (e.g. cursor, clipboard). Empty = use first available |
openspec.taskDependencyPolicy |
block |
When preceding tasks are incomplete: block = prevent execution; warn = show warning and allow proceed |
openspec.agentModel |
auto |
Cursor agent CLI model (only when using Cursor adapter). Use auto or a specific model name |
openspec.debug |
false |
Enable debug: Verify tab and full prompt in Output when executing tasks |
Task execution & Adapters
- Clipboard (
clipboard): Always available. In fillChat mode it copies the prompt to the clipboard and notifies you; in auto mode it also copies (no direct execution). - Cursor (
cursor): Available when the CursoragentCLI is on PATH (e.g. in Cursor IDE). Executes tasks via the agent CLI or fills chat / copies to clipboard. - You can choose the adapter in the change detail UI (Adapter dropdown) or set
openspec.preferredAgentAdapterin settings. If the selected adapter is unavailable, the extension falls back to the first available one (often clipboard).
- Search changes by name, status, artifact, or Proposal Why text.
- Review progress, status, artifact badges, and Proposal Why summaries in the sidebar.
- Open change details with Proposal / Specs / Design / Tasks / Verify tabs.
- Execute tasks through the selected adapter, or fill/copy workflow commands into chat.
- Toggle task completion only after confirming in the webview dialog.
- Open Output panel:
View > OutputorCmd+Shift+U - Select "OpenSpec" from dropdown
- View timestamped logs (INFO, WARN, ERROR, DEBUG)
- Extension doesn’t activate: Open a folder that contains (or will contain) an OpenSpec workspace (
openspec/config.yaml). The extension only activates in OpenSpec workspaces. - "OpenSpec CLI not found": Install OpenSpec CLI and ensure it’s on your PATH.
- Dashboard empty: Run OpenSpec: Refresh Data; check the OpenSpec output channel for errors.
Extension Host (Node.js) Webview (Browser)
├── DataManager ├── HTML (current)
│ ├── OpenSpecCliService └── React App (Phase 7-9)
│ ├── FileManagerService ├── Dashboard
│ └── FileWatcherService ├── TaskList
├── CommandManager └── ArtifactViewer
└── DashboardProvider
Design Decisions:
- Data Source: Hybrid (CLI + FileWatcher + Direct reads)
- Backend: OpenSpec CLI via
child_process - Frontend: React + Tailwind CSS + Radix UI (planned)
- Build: esbuild + Vite
- Package Manager: pnpm
See ARCHITECTURE.md for details.
- Node.js 18.0.0+
- pnpm 8.0.0+ (
npm install -g pnpm) - VSCode 1.85.0+
- OpenSpec CLI 1.1.0+ (installation)
# Clone and install
git clone <repo-url>
cd openspce-ui
pnpm install
# Build
pnpm run compile # One-time build
pnpm run watch # Watch mode
# Debug
# Press F5 in VSCode to launch Extension Development HostTo package and publish the extension to VS Code Marketplace and Open VSX (e.g. for Cursor), see docs/PUBLISHING.md for publisher setup, tokens, and release steps.
openspce-ui/
├── src/
│ ├── extension/ # Extension host (Node.js)
│ │ ├── services/ # CLI, FileManager, DataManager
│ │ ├── commands/ # Command handlers
│ │ ├── providers/ # Webview providers
│ │ └── utils/ # Logger, helpers
│ └── webview/ # React app (coming)
├── openspec/ # OpenSpec workspace
│ ├── changes/
│ │ └── vscode-extension-mvp/ # This project
│ ├── specs/
│ └── config.yaml
├── .vscode/
│ ├── launch.json # Debug config
│ └── tasks.json # Build tasks
├── esbuild.js # Extension bundler
├── vite.config.ts # Webview bundler
└── package.json
pnpm run compile # Build extension once
pnpm run watch # Watch extension changes
pnpm run build # Build everything (future)| Layer | Technology |
|---|---|
| Backend | TypeScript, Node.js, VSCode API |
| Frontend | React 19, Tailwind CSS, Radix UI (planned) |
| Build | esbuild (extension), Vite (webview) |
| Tools | pnpm, ESLint, Prettier |
Current: MVP complete (Phases 1–12). Post-MVP: Sidebar tree, Spec diff, Archive browser.
- ✅ Phase 1–6: Setup, CLI, File system, Cache, Commands, Dashboard provider
- ✅ Phase 7–10: React webview, Dashboard & Change detail UI, UI component library
- ✅ Phase 11: Testing & polish (manual checklist, edge cases, performance, docs)
- ✅ Phase 12: Documentation, package config, release prep
Detailed progress: tasks.md
-
Extension doesn’t activate
Ensure the workspace root containsopenspec/config.yaml. Check Output → Extension Host. -
Dashboard or webview blank
Runpnpm run buildand ensuredist/webview/exists. In Extension Development Host, use "Developer: Toggle Developer Tools" and check the webview iframe console. -
OpenSpec CLI not found
Install OpenSpec CLI and ensureopenspecis on PATH in the environment where VSCode is launched. -
Tasks don’t update on disk
Ensure the workspace has write access toopenspec/changes/<name>/tasks.md. Check Output → OpenSpec for errors. -
Build or test failures
rm -rf dist node_modules && pnpm install && pnpm run build && pnpm test
- ✅ JSON parse error with "No specs found" (v0.1.0)
| Document | Description |
|---|---|
| ARCHITECTURE.md | High-level architecture |
| PROGRESS.md | Development log |
| proposal.md | Project proposal |
| design.md | Technical design |
| tasks.md | Task breakdown |
Currently in active development. Contributions welcome after MVP release.
To contribute:
- Review ARCHITECTURE.md
- Check tasks.md
- Follow code style (ESLint + Prettier)
MIT (TBD)
- OpenSpec - Spec-driven workflow tool
- VSCode Extension Samples
Version: 0.1.0
Last Updated: 2026-02
Status: 🟢 MVP complete

