Files
Maestro/docs/openspec-commands.md
Pedram Amini ace8e2beaa fix(docs): standardize image paths to use ./screenshots/ format
All image references now consistently use relative ./screenshots/ paths
instead of mixed formats (some were /screenshots/ or screenshots/).
2026-02-02 17:32:12 -06:00

179 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: OpenSpec Commands
description: Spec-driven development workflow for managing code changes with AI-assisted proposal, implementation, and archival.
icon: code-pull-request
---
OpenSpec is a spec-driven development tool from [Fission-AI/OpenSpec](https://github.com/Fission-AI/OpenSpec) that ensures alignment between humans and AI coding assistants before any code is written. Maestro bundles these workflow commands and keeps them updated automatically.
## OpenSpec vs. Spec-Kit
Maestro offers two complementary spec-driven development tools:
| Feature | OpenSpec | Spec-Kit |
|---------|----------|----------|
| **Focus** | Change management & proposals | Feature specifications |
| **Workflow** | Proposal → Apply → Archive | Constitution → Specify → Plan → Tasks |
| **Best For** | Iterative changes, brownfield projects | New features, greenfield development |
| **Output** | Change proposals with spec deltas | Feature specifications and task lists |
| **Directory** | `openspec/` | `specs/` or project root |
**Use OpenSpec when:**
- Making iterative changes to existing features
- You need explicit change proposals before implementation
- Working on brownfield projects with existing specifications
- You want a clear archive of completed changes
**Use Spec-Kit when:**
- Defining new features from scratch
- Establishing project constitutions and principles
- Creating detailed feature specifications
- Breaking down work into implementation tasks
Both tools integrate with Maestro's Auto Run for autonomous execution.
## Core Workflow
OpenSpec follows a three-stage cycle:
### Stage 1: Proposal (`/openspec.proposal`)
Create a change proposal before writing any code:
1. Reviews `openspec/project.md` for project conventions
2. Runs `openspec list` to see active changes and `openspec list --specs` for existing capabilities
3. Scaffolds `proposal.md`, `tasks.md`, and optional `design.md`
4. Creates spec deltas showing what will be ADDED, MODIFIED, or REMOVED
5. Validates with `openspec validate <change-id> --strict`
**Creates:** A `openspec/changes/<change-id>/` directory with:
- `proposal.md` — Why and what
- `tasks.md` — Implementation checklist
- `specs/<capability>/spec.md` — Spec deltas
### Stage 2: Apply (`/openspec.apply`)
Implement the approved proposal:
1. Reads proposal and tasks
2. Implements tasks sequentially
3. Updates task checkboxes as work completes
4. Ensures approval gate is passed before starting
**Tip:** Only start implementation after the proposal is reviewed and approved.
### Stage 3: Archive (`/openspec.archive`)
After deployment, archive the completed change:
1. Moves `changes/<name>/` to `changes/archive/YYYY-MM-DD-<name>/`
2. Updates source-of-truth specs if capabilities changed
3. Validates the archived change with `openspec validate --strict`
**CLI command:** `openspec archive <change-id> --yes` (use `--skip-specs` for tooling-only changes that don't affect capabilities)
## Maestro-Specific Commands
### `/openspec.implement` — Generate Auto Run Documents
Bridges OpenSpec with Maestro's Auto Run:
1. Reads the proposal and tasks from a change
2. Converts tasks into Auto Run document format with phases
3. Saves to `Auto Run Docs/` with task checkboxes (filename: `OpenSpec-<change-id>-Phase-XX-[Description].md`)
4. Preserves task IDs (T001, T002, etc.) for traceability
5. Groups related tasks into logical phases (515 tasks each)
### `/openspec.help` — Workflow Overview
Get help with OpenSpec concepts and Maestro integration.
## Directory Structure
OpenSpec uses a clear separation between current truth and proposed changes:
```
openspec/
├── project.md # Project conventions
├── specs/ # Current truth - what IS built
│ └── <capability>/
│ ├── spec.md # Requirements and scenarios
│ └── design.md # Technical patterns
└── changes/ # Proposals - what SHOULD change
├── <change-name>/
│ ├── proposal.md # Why, what, impact
│ ├── tasks.md # Implementation checklist
│ └── specs/ # Spec deltas (ADDED/MODIFIED/REMOVED)
└── archive/ # Completed changes
```
## Spec Delta Format
Changes use explicit operation headers:
```markdown
## ADDED Requirements
### Requirement: New Feature
The system SHALL provide...
#### Scenario: Success case
- **WHEN** user performs action
- **THEN** expected result
## MODIFIED Requirements
### Requirement: Existing Feature
[Complete updated requirement text]
## REMOVED Requirements
### Requirement: Old Feature
**Reason**: [Why removing]
**Migration**: [How to handle]
```
## OpenSpec CLI Commands
The OpenSpec CLI provides these essential commands:
| Command | Purpose |
|---------|---------|
| `openspec list` | Display active changes in `changes/` |
| `openspec list --specs` | List existing capability specs |
| `openspec show <change-id>` | View change or spec details |
| `openspec validate <change-id> --strict` | Comprehensive validation |
| `openspec archive <change-id> --yes` | Archive after deployment |
| `openspec spec list --long` | Enumerate all specifications |
## Viewing & Managing Commands
Access OpenSpec commands via **Settings → AI Commands** tab. Here you can:
- **View all commands** — Click the chevron to expand and see the full prompt
- **Check for Updates** — Pull the latest workflow from GitHub
- **Edit prompts** — Customize prompts for your workflow
- **Reset to default** — Restore modified prompts to bundled version
Commands marked with a **Maestro** badge are Maestro-specific additions to the upstream workflow.
<Frame>
<img src="./screenshots/openspec-commands.png" alt="OpenSpec commands in the AI Commands panel" />
</Frame>
## Auto-Updates
OpenSpec prompts are synced from the [Fission-AI/OpenSpec repository](https://github.com/Fission-AI/OpenSpec):
1. Open **Settings → AI Commands**
2. Click **Check for Updates** in the OpenSpec section
3. New workflow improvements are downloaded
4. Your custom modifications are preserved
## Tips for Best Results
- **Proposal first** — Never start implementation without an approved proposal
- **Keep changes focused** — One logical change per proposal
- **Use verb-led IDs** — `add-user-auth`, `update-api-schema`, `remove-legacy-handler`
- **Include scenarios** — Every requirement needs at least one `#### Scenario:` block
- **Check existing work** — Run `openspec list` before creating proposals to avoid conflicts
- **Validate early** — Run `openspec validate <change-id> --strict` before sharing
- **Archive promptly** — Archive changes after deployment to keep `changes/` clean