openspec init
This commit is contained in:
		
							
								
								
									
										18
									
								
								AGENTS.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								AGENTS.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | <!-- OPENSPEC:START --> | ||||||
|  | # OpenSpec Instructions | ||||||
|  |  | ||||||
|  | These instructions are for AI assistants working in this project. | ||||||
|  |  | ||||||
|  | Always open `@/openspec/AGENTS.md` when the request: | ||||||
|  | - Mentions planning or proposals (words like proposal, spec, change, plan) | ||||||
|  | - Introduces new capabilities, breaking changes, architecture shifts, or big performance/security work | ||||||
|  | - Sounds ambiguous and you need the authoritative spec before coding | ||||||
|  |  | ||||||
|  | Use `@/openspec/AGENTS.md` to learn: | ||||||
|  | - How to create and apply change proposals | ||||||
|  | - Spec format and conventions | ||||||
|  | - Project structure and guidelines | ||||||
|  |  | ||||||
|  | Keep this managed block so 'openspec update' can refresh the instructions. | ||||||
|  |  | ||||||
|  | <!-- OPENSPEC:END --> | ||||||
							
								
								
									
										454
									
								
								openspec/AGENTS.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										454
									
								
								openspec/AGENTS.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,454 @@ | |||||||
|  | # OpenSpec Instructions | ||||||
|  |  | ||||||
|  | Instructions for AI coding assistants using OpenSpec for spec-driven development. | ||||||
|  |  | ||||||
|  | ## TL;DR Quick Checklist | ||||||
|  |  | ||||||
|  | - Search existing work: `openspec spec list --long`, `openspec list` (use `rg` only for full-text search) | ||||||
|  | - Decide scope: new capability vs modify existing capability | ||||||
|  | - Pick a unique `change-id`: kebab-case, verb-led (`add-`, `update-`, `remove-`, `refactor-`) | ||||||
|  | - Scaffold: `proposal.md`, `tasks.md`, `design.md` (only if needed), and delta specs per affected capability | ||||||
|  | - Write deltas: use `## ADDED|MODIFIED|REMOVED|RENAMED Requirements`; include at least one `#### Scenario:` per requirement | ||||||
|  | - Validate: `openspec validate [change-id] --strict` and fix issues | ||||||
|  | - Request approval: Do not start implementation until proposal is approved | ||||||
|  |  | ||||||
|  | ## Three-Stage Workflow | ||||||
|  |  | ||||||
|  | ### Stage 1: Creating Changes | ||||||
|  | Create proposal when you need to: | ||||||
|  | - Add features or functionality | ||||||
|  | - Make breaking changes (API, schema) | ||||||
|  | - Change architecture or patterns   | ||||||
|  | - Optimize performance (changes behavior) | ||||||
|  | - Update security patterns | ||||||
|  |  | ||||||
|  | Triggers (examples): | ||||||
|  | - "Help me create a change proposal" | ||||||
|  | - "Help me plan a change" | ||||||
|  | - "Help me create a proposal" | ||||||
|  | - "I want to create a spec proposal" | ||||||
|  | - "I want to create a spec" | ||||||
|  |  | ||||||
|  | Loose matching guidance: | ||||||
|  | - Contains one of: `proposal`, `change`, `spec` | ||||||
|  | - With one of: `create`, `plan`, `make`, `start`, `help` | ||||||
|  |  | ||||||
|  | Skip proposal for: | ||||||
|  | - Bug fixes (restore intended behavior) | ||||||
|  | - Typos, formatting, comments | ||||||
|  | - Dependency updates (non-breaking) | ||||||
|  | - Configuration changes | ||||||
|  | - Tests for existing behavior | ||||||
|  |  | ||||||
|  | **Workflow** | ||||||
|  | 1. Review `openspec/project.md`, `openspec list`, and `openspec list --specs` to understand current context. | ||||||
|  | 2. Choose a unique verb-led `change-id` and scaffold `proposal.md`, `tasks.md`, optional `design.md`, and spec deltas under `openspec/changes/<id>/`. | ||||||
|  | 3. Draft spec deltas using `## ADDED|MODIFIED|REMOVED Requirements` with at least one `#### Scenario:` per requirement. | ||||||
|  | 4. Run `openspec validate <id> --strict` and resolve any issues before sharing the proposal. | ||||||
|  |  | ||||||
|  | ### Stage 2: Implementing Changes | ||||||
|  | Track these steps as TODOs and complete them one by one. | ||||||
|  | 1. **Read proposal.md** - Understand what's being built | ||||||
|  | 2. **Read design.md** (if exists) - Review technical decisions | ||||||
|  | 3. **Read tasks.md** - Get implementation checklist | ||||||
|  | 4. **Implement tasks sequentially** - Complete in order | ||||||
|  | 5. **Confirm completion** - Ensure every item in `tasks.md` is finished before updating statuses | ||||||
|  | 6. **Update checklist** - After all work is done, set every task to `- [x]` so the list reflects reality | ||||||
|  | 7. **Approval gate** - Do not start implementation until the proposal is reviewed and approved | ||||||
|  |  | ||||||
|  | ### Stage 3: Archiving Changes | ||||||
|  | After deployment, create separate PR to: | ||||||
|  | - Move `changes/[name]/` → `changes/archive/YYYY-MM-DD-[name]/` | ||||||
|  | - Update `specs/` if capabilities changed | ||||||
|  | - Use `openspec archive <change-id> --skip-specs --yes` for tooling-only changes (always pass the change ID explicitly) | ||||||
|  | - Run `openspec validate --strict` to confirm the archived change passes checks | ||||||
|  |  | ||||||
|  | ## Before Any Task | ||||||
|  |  | ||||||
|  | **Context Checklist:** | ||||||
|  | - [ ] Read relevant specs in `specs/[capability]/spec.md` | ||||||
|  | - [ ] Check pending changes in `changes/` for conflicts | ||||||
|  | - [ ] Read `openspec/project.md` for conventions | ||||||
|  | - [ ] Run `openspec list` to see active changes | ||||||
|  | - [ ] Run `openspec list --specs` to see existing capabilities | ||||||
|  |  | ||||||
|  | **Before Creating Specs:** | ||||||
|  | - Always check if capability already exists | ||||||
|  | - Prefer modifying existing specs over creating duplicates | ||||||
|  | - Use `openspec show [spec]` to review current state | ||||||
|  | - If request is ambiguous, ask 1–2 clarifying questions before scaffolding | ||||||
|  |  | ||||||
|  | ### Search Guidance | ||||||
|  | - Enumerate specs: `openspec spec list --long` (or `--json` for scripts) | ||||||
|  | - Enumerate changes: `openspec list` (or `openspec change list --json` - deprecated but available) | ||||||
|  | - Show details: | ||||||
|  |   - Spec: `openspec show <spec-id> --type spec` (use `--json` for filters) | ||||||
|  |   - Change: `openspec show <change-id> --json --deltas-only` | ||||||
|  | - Full-text search (use ripgrep): `rg -n "Requirement:|Scenario:" openspec/specs` | ||||||
|  |  | ||||||
|  | ## Quick Start | ||||||
|  |  | ||||||
|  | ### CLI Commands | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | # Essential commands | ||||||
|  | openspec list                  # List active changes | ||||||
|  | openspec list --specs          # List specifications | ||||||
|  | openspec show [item]           # Display change or spec | ||||||
|  | openspec validate [item]       # Validate changes or specs | ||||||
|  | openspec archive <change-id> [--yes|-y]   # Archive after deployment (add --yes for non-interactive runs) | ||||||
|  |  | ||||||
|  | # Project management | ||||||
|  | openspec init [path]           # Initialize OpenSpec | ||||||
|  | openspec update [path]         # Update instruction files | ||||||
|  |  | ||||||
|  | # Interactive mode | ||||||
|  | openspec show                  # Prompts for selection | ||||||
|  | openspec validate              # Bulk validation mode | ||||||
|  |  | ||||||
|  | # Debugging | ||||||
|  | openspec show [change] --json --deltas-only | ||||||
|  | openspec validate [change] --strict | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ### Command Flags | ||||||
|  |  | ||||||
|  | - `--json` - Machine-readable output | ||||||
|  | - `--type change|spec` - Disambiguate items | ||||||
|  | - `--strict` - Comprehensive validation | ||||||
|  | - `--no-interactive` - Disable prompts | ||||||
|  | - `--skip-specs` - Archive without spec updates | ||||||
|  | - `--yes`/`-y` - Skip confirmation prompts (non-interactive archive) | ||||||
|  |  | ||||||
|  | ## Directory Structure | ||||||
|  |  | ||||||
|  | ``` | ||||||
|  | openspec/ | ||||||
|  | ├── project.md              # Project conventions | ||||||
|  | ├── specs/                  # Current truth - what IS built | ||||||
|  | │   └── [capability]/       # Single focused 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 | ||||||
|  | │   │   ├── design.md       # Technical decisions (optional; see criteria) | ||||||
|  | │   │   └── specs/          # Delta changes | ||||||
|  | │   │       └── [capability]/ | ||||||
|  | │   │           └── spec.md # ADDED/MODIFIED/REMOVED | ||||||
|  | │   └── archive/            # Completed changes | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## Creating Change Proposals | ||||||
|  |  | ||||||
|  | ### Decision Tree | ||||||
|  |  | ||||||
|  | ``` | ||||||
|  | New request? | ||||||
|  | ├─ Bug fix restoring spec behavior? → Fix directly | ||||||
|  | ├─ Typo/format/comment? → Fix directly   | ||||||
|  | ├─ New feature/capability? → Create proposal | ||||||
|  | ├─ Breaking change? → Create proposal | ||||||
|  | ├─ Architecture change? → Create proposal | ||||||
|  | └─ Unclear? → Create proposal (safer) | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ### Proposal Structure | ||||||
|  |  | ||||||
|  | 1. **Create directory:** `changes/[change-id]/` (kebab-case, verb-led, unique) | ||||||
|  |  | ||||||
|  | 2. **Write proposal.md:** | ||||||
|  | ```markdown | ||||||
|  | ## Why | ||||||
|  | [1-2 sentences on problem/opportunity] | ||||||
|  |  | ||||||
|  | ## What Changes | ||||||
|  | - [Bullet list of changes] | ||||||
|  | - [Mark breaking changes with **BREAKING**] | ||||||
|  |  | ||||||
|  | ## Impact | ||||||
|  | - Affected specs: [list capabilities] | ||||||
|  | - Affected code: [key files/systems] | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | 3. **Create spec deltas:** `specs/[capability]/spec.md` | ||||||
|  | ```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 modified requirement] | ||||||
|  |  | ||||||
|  | ## REMOVED Requirements | ||||||
|  | ### Requirement: Old Feature | ||||||
|  | **Reason**: [Why removing] | ||||||
|  | **Migration**: [How to handle] | ||||||
|  | ``` | ||||||
|  | If multiple capabilities are affected, create multiple delta files under `changes/[change-id]/specs/<capability>/spec.md`—one per capability. | ||||||
|  |  | ||||||
|  | 4. **Create tasks.md:** | ||||||
|  | ```markdown | ||||||
|  | ## 1. Implementation | ||||||
|  | - [ ] 1.1 Create database schema | ||||||
|  | - [ ] 1.2 Implement API endpoint | ||||||
|  | - [ ] 1.3 Add frontend component | ||||||
|  | - [ ] 1.4 Write tests | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | 5. **Create design.md when needed:** | ||||||
|  | Create `design.md` if any of the following apply; otherwise omit it: | ||||||
|  | - Cross-cutting change (multiple services/modules) or a new architectural pattern | ||||||
|  | - New external dependency or significant data model changes | ||||||
|  | - Security, performance, or migration complexity | ||||||
|  | - Ambiguity that benefits from technical decisions before coding | ||||||
|  |  | ||||||
|  | Minimal `design.md` skeleton: | ||||||
|  | ```markdown | ||||||
|  | ## Context | ||||||
|  | [Background, constraints, stakeholders] | ||||||
|  |  | ||||||
|  | ## Goals / Non-Goals | ||||||
|  | - Goals: [...] | ||||||
|  | - Non-Goals: [...] | ||||||
|  |  | ||||||
|  | ## Decisions | ||||||
|  | - Decision: [What and why] | ||||||
|  | - Alternatives considered: [Options + rationale] | ||||||
|  |  | ||||||
|  | ## Risks / Trade-offs | ||||||
|  | - [Risk] → Mitigation | ||||||
|  |  | ||||||
|  | ## Migration Plan | ||||||
|  | [Steps, rollback] | ||||||
|  |  | ||||||
|  | ## Open Questions | ||||||
|  | - [...] | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## Spec File Format | ||||||
|  |  | ||||||
|  | ### Critical: Scenario Formatting | ||||||
|  |  | ||||||
|  | **CORRECT** (use #### headers): | ||||||
|  | ```markdown | ||||||
|  | #### Scenario: User login success | ||||||
|  | - **WHEN** valid credentials provided | ||||||
|  | - **THEN** return JWT token | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | **WRONG** (don't use bullets or bold): | ||||||
|  | ```markdown | ||||||
|  | - **Scenario: User login**  ❌ | ||||||
|  | **Scenario**: User login     ❌ | ||||||
|  | ### Scenario: User login      ❌ | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | Every requirement MUST have at least one scenario. | ||||||
|  |  | ||||||
|  | ### Requirement Wording | ||||||
|  | - Use SHALL/MUST for normative requirements (avoid should/may unless intentionally non-normative) | ||||||
|  |  | ||||||
|  | ### Delta Operations | ||||||
|  |  | ||||||
|  | - `## ADDED Requirements` - New capabilities | ||||||
|  | - `## MODIFIED Requirements` - Changed behavior | ||||||
|  | - `## REMOVED Requirements` - Deprecated features | ||||||
|  | - `## RENAMED Requirements` - Name changes | ||||||
|  |  | ||||||
|  | Headers matched with `trim(header)` - whitespace ignored. | ||||||
|  |  | ||||||
|  | #### When to use ADDED vs MODIFIED | ||||||
|  | - ADDED: Introduces a new capability or sub-capability that can stand alone as a requirement. Prefer ADDED when the change is orthogonal (e.g., adding "Slash Command Configuration") rather than altering the semantics of an existing requirement. | ||||||
|  | - MODIFIED: Changes the behavior, scope, or acceptance criteria of an existing requirement. Always paste the full, updated requirement content (header + all scenarios). The archiver will replace the entire requirement with what you provide here; partial deltas will drop previous details. | ||||||
|  | - RENAMED: Use when only the name changes. If you also change behavior, use RENAMED (name) plus MODIFIED (content) referencing the new name. | ||||||
|  |  | ||||||
|  | Common pitfall: Using MODIFIED to add a new concern without including the previous text. This causes loss of detail at archive time. If you aren’t explicitly changing the existing requirement, add a new requirement under ADDED instead. | ||||||
|  |  | ||||||
|  | Authoring a MODIFIED requirement correctly: | ||||||
|  | 1) Locate the existing requirement in `openspec/specs/<capability>/spec.md`. | ||||||
|  | 2) Copy the entire requirement block (from `### Requirement: ...` through its scenarios). | ||||||
|  | 3) Paste it under `## MODIFIED Requirements` and edit to reflect the new behavior. | ||||||
|  | 4) Ensure the header text matches exactly (whitespace-insensitive) and keep at least one `#### Scenario:`. | ||||||
|  |  | ||||||
|  | Example for RENAMED: | ||||||
|  | ```markdown | ||||||
|  | ## RENAMED Requirements | ||||||
|  | - FROM: `### Requirement: Login` | ||||||
|  | - TO: `### Requirement: User Authentication` | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## Troubleshooting | ||||||
|  |  | ||||||
|  | ### Common Errors | ||||||
|  |  | ||||||
|  | **"Change must have at least one delta"** | ||||||
|  | - Check `changes/[name]/specs/` exists with .md files | ||||||
|  | - Verify files have operation prefixes (## ADDED Requirements) | ||||||
|  |  | ||||||
|  | **"Requirement must have at least one scenario"** | ||||||
|  | - Check scenarios use `#### Scenario:` format (4 hashtags) | ||||||
|  | - Don't use bullet points or bold for scenario headers | ||||||
|  |  | ||||||
|  | **Silent scenario parsing failures** | ||||||
|  | - Exact format required: `#### Scenario: Name` | ||||||
|  | - Debug with: `openspec show [change] --json --deltas-only` | ||||||
|  |  | ||||||
|  | ### Validation Tips | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | # Always use strict mode for comprehensive checks | ||||||
|  | openspec validate [change] --strict | ||||||
|  |  | ||||||
|  | # Debug delta parsing | ||||||
|  | openspec show [change] --json | jq '.deltas' | ||||||
|  |  | ||||||
|  | # Check specific requirement | ||||||
|  | openspec show [spec] --json -r 1 | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## Happy Path Script | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | # 1) Explore current state | ||||||
|  | openspec spec list --long | ||||||
|  | openspec list | ||||||
|  | # Optional full-text search: | ||||||
|  | # rg -n "Requirement:|Scenario:" openspec/specs | ||||||
|  | # rg -n "^#|Requirement:" openspec/changes | ||||||
|  |  | ||||||
|  | # 2) Choose change id and scaffold | ||||||
|  | CHANGE=add-two-factor-auth | ||||||
|  | mkdir -p openspec/changes/$CHANGE/{specs/auth} | ||||||
|  | printf "## Why\n...\n\n## What Changes\n- ...\n\n## Impact\n- ...\n" > openspec/changes/$CHANGE/proposal.md | ||||||
|  | printf "## 1. Implementation\n- [ ] 1.1 ...\n" > openspec/changes/$CHANGE/tasks.md | ||||||
|  |  | ||||||
|  | # 3) Add deltas (example) | ||||||
|  | cat > openspec/changes/$CHANGE/specs/auth/spec.md << 'EOF' | ||||||
|  | ## ADDED Requirements | ||||||
|  | ### Requirement: Two-Factor Authentication | ||||||
|  | Users MUST provide a second factor during login. | ||||||
|  |  | ||||||
|  | #### Scenario: OTP required | ||||||
|  | - **WHEN** valid credentials are provided | ||||||
|  | - **THEN** an OTP challenge is required | ||||||
|  | EOF | ||||||
|  |  | ||||||
|  | # 4) Validate | ||||||
|  | openspec validate $CHANGE --strict | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## Multi-Capability Example | ||||||
|  |  | ||||||
|  | ``` | ||||||
|  | openspec/changes/add-2fa-notify/ | ||||||
|  | ├── proposal.md | ||||||
|  | ├── tasks.md | ||||||
|  | └── specs/ | ||||||
|  |     ├── auth/ | ||||||
|  |     │   └── spec.md   # ADDED: Two-Factor Authentication | ||||||
|  |     └── notifications/ | ||||||
|  |         └── spec.md   # ADDED: OTP email notification | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | auth/spec.md | ||||||
|  | ```markdown | ||||||
|  | ## ADDED Requirements | ||||||
|  | ### Requirement: Two-Factor Authentication | ||||||
|  | ... | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | notifications/spec.md | ||||||
|  | ```markdown | ||||||
|  | ## ADDED Requirements | ||||||
|  | ### Requirement: OTP Email Notification | ||||||
|  | ... | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## Best Practices | ||||||
|  |  | ||||||
|  | ### Simplicity First | ||||||
|  | - Default to <100 lines of new code | ||||||
|  | - Single-file implementations until proven insufficient | ||||||
|  | - Avoid frameworks without clear justification | ||||||
|  | - Choose boring, proven patterns | ||||||
|  |  | ||||||
|  | ### Complexity Triggers | ||||||
|  | Only add complexity with: | ||||||
|  | - Performance data showing current solution too slow | ||||||
|  | - Concrete scale requirements (>1000 users, >100MB data) | ||||||
|  | - Multiple proven use cases requiring abstraction | ||||||
|  |  | ||||||
|  | ### Clear References | ||||||
|  | - Use `file.ts:42` format for code locations | ||||||
|  | - Reference specs as `specs/auth/spec.md` | ||||||
|  | - Link related changes and PRs | ||||||
|  |  | ||||||
|  | ### Capability Naming | ||||||
|  | - Use verb-noun: `user-auth`, `payment-capture` | ||||||
|  | - Single purpose per capability | ||||||
|  | - 10-minute understandability rule | ||||||
|  | - Split if description needs "AND" | ||||||
|  |  | ||||||
|  | ### Change ID Naming | ||||||
|  | - Use kebab-case, short and descriptive: `add-two-factor-auth` | ||||||
|  | - Prefer verb-led prefixes: `add-`, `update-`, `remove-`, `refactor-` | ||||||
|  | - Ensure uniqueness; if taken, append `-2`, `-3`, etc. | ||||||
|  |  | ||||||
|  | ## Tool Selection Guide | ||||||
|  |  | ||||||
|  | | Task | Tool | Why | | ||||||
|  | |------|------|-----| | ||||||
|  | | Find files by pattern | Glob | Fast pattern matching | | ||||||
|  | | Search code content | Grep | Optimized regex search | | ||||||
|  | | Read specific files | Read | Direct file access | | ||||||
|  | | Explore unknown scope | Task | Multi-step investigation | | ||||||
|  |  | ||||||
|  | ## Error Recovery | ||||||
|  |  | ||||||
|  | ### Change Conflicts | ||||||
|  | 1. Run `openspec list` to see active changes | ||||||
|  | 2. Check for overlapping specs | ||||||
|  | 3. Coordinate with change owners | ||||||
|  | 4. Consider combining proposals | ||||||
|  |  | ||||||
|  | ### Validation Failures | ||||||
|  | 1. Run with `--strict` flag | ||||||
|  | 2. Check JSON output for details | ||||||
|  | 3. Verify spec file format | ||||||
|  | 4. Ensure scenarios properly formatted | ||||||
|  |  | ||||||
|  | ### Missing Context | ||||||
|  | 1. Read project.md first | ||||||
|  | 2. Check related specs | ||||||
|  | 3. Review recent archives | ||||||
|  | 4. Ask for clarification | ||||||
|  |  | ||||||
|  | ## Quick Reference | ||||||
|  |  | ||||||
|  | ### Stage Indicators | ||||||
|  | - `changes/` - Proposed, not yet built | ||||||
|  | - `specs/` - Built and deployed | ||||||
|  | - `archive/` - Completed changes | ||||||
|  |  | ||||||
|  | ### File Purposes | ||||||
|  | - `proposal.md` - Why and what | ||||||
|  | - `tasks.md` - Implementation steps | ||||||
|  | - `design.md` - Technical decisions | ||||||
|  | - `spec.md` - Requirements and behavior | ||||||
|  |  | ||||||
|  | ### CLI Essentials | ||||||
|  | ```bash | ||||||
|  | openspec list              # What's in progress? | ||||||
|  | openspec show [item]       # View details | ||||||
|  | openspec validate --strict # Is it correct? | ||||||
|  | openspec archive <change-id> [--yes|-y]  # Mark complete (add --yes for automation) | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | Remember: Specs are truth. Changes are proposals. Keep them in sync. | ||||||
							
								
								
									
										31
									
								
								openspec/project.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								openspec/project.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | |||||||
|  | # Project Context | ||||||
|  |  | ||||||
|  | ## Purpose | ||||||
|  | [Describe your project's purpose and goals] | ||||||
|  |  | ||||||
|  | ## Tech Stack | ||||||
|  | - [List your primary technologies] | ||||||
|  | - [e.g., TypeScript, React, Node.js] | ||||||
|  |  | ||||||
|  | ## Project Conventions | ||||||
|  |  | ||||||
|  | ### Code Style | ||||||
|  | [Describe your code style preferences, formatting rules, and naming conventions] | ||||||
|  |  | ||||||
|  | ### Architecture Patterns | ||||||
|  | [Document your architectural decisions and patterns] | ||||||
|  |  | ||||||
|  | ### Testing Strategy | ||||||
|  | [Explain your testing approach and requirements] | ||||||
|  |  | ||||||
|  | ### Git Workflow | ||||||
|  | [Describe your branching strategy and commit conventions] | ||||||
|  |  | ||||||
|  | ## Domain Context | ||||||
|  | [Add domain-specific knowledge that AI assistants need to understand] | ||||||
|  |  | ||||||
|  | ## Important Constraints | ||||||
|  | [List any technical, business, or regulatory constraints] | ||||||
|  |  | ||||||
|  | ## External Dependencies | ||||||
|  | [Document key external services, APIs, or systems] | ||||||
		Reference in New Issue
	
	Block a user