| 🌐 English Version | 🇨🇳 中文版 |
This project originated from in-depth discussions on AI programming within the “AI Force Injection” community. In response to the community’s vision of “leveraging OpenSpec for Spec-Driven Development,” this project demonstrates the practical application of the OpenSpec specification in AI-assisted programming through a complete hands-on example.
As a learning and practice repository for OpenSpec, this project provides systematic documentation analysis, detailed user manuals, and multi-language examples, aimed at helping developers deeply understand and efficiently apply the specification.
Star History:
This project consists of five core modules:
AI collaboration commands and skills generated via openspec init --tools claude, located in .claude/.
.claude/commands/opsx/: Slash command definitions (/opsx:explore, /opsx:propose, /opsx:apply, /opsx:sync, /opsx:archive)..claude/skills/: Corresponding AI skill files (SKILL.md) with detailed step-by-step instructions.Contains theoretical analysis and practical guides for OpenSpec, helping to understand the ideas and workflows behind the specification.
OpenSpec User Manual: The complete user manual for OpenSpec, covering installation, initialization, documentation standards, validation, best practices, and more.
“OpenSpec is a Spec-Driven Development (SDD) framework designed specifically for AI programming assistants. It ensures that humans and AI reach a shared understanding of requirements by defining specifications before writing code.” — OpenSpec User Manual
Companion slides: Legacy PPT · Current PPT
OpenSpec Practical Guide: A concrete implementation guide for putting OpenSpec into practice.
“OpenSpec is not just a documentation format — it is an engineering practice of Spec-Driven Development. It advocates ‘specification as the source of truth,’ ensuring that code and tests always remain consistent with the design.” — OpenSpec Practical Guide
OpenSpec Practical Guide: A Deep Retrospective on AI-Assisted Software Engineering End-to-End: An in-depth analysis of the role and value of OpenSpec in AI programming workflows.
“The traditional development model is Requirements -> Human -> Code, while the new paradigm is evolving into Intent -> Spec (OpenSpec) -> AI -> Code & Verification.” — OpenSpec AI Workflow Analysis
A minimal multi-language implementation (MVP) based on an e-commerce scenario, demonstrating how the OpenSpec specification drives code delivery.
ecommerce-mini (Node.js)
src/domain: Core business logic, a clean domain layer.src/http: API interface implementation.src/services: Business service layer.src/repo: In-memory data storage.src/persist: File-based persistent storage.__tests__: Accompanying test cases (unit tests, integration tests, performance tests).ecommerce-mini-python (Python)
src/domain: Domain models defined with Pydantic.src/services: Business service layer.src/api: API service implemented with FastAPI.src/repo: In-memory data storage.tests: Pytest test suite.Complete specification files demonstrating the SDD workflow, unified under openspec/.
openspec/config.yaml: Project context configuration (tech stack, conventions, store/references support), automatically injected into each AI planning request.openspec/specs/: Archived master specifications (cart-management, catalog-management, order-management, payment, domain-model, error-handling).openspec/changes/archive/2025-01-27-v1-mvp/: Complete change specifications for the MVP version (archived).
proposal.md: Change proposal (Why / What Changes / Capabilities).design.md: System architecture design.tasks.md: Implementation task checklist.specs/domain-model/spec.md: Core domain model specification.specs/catalog-management/spec.md: Product catalog management specification.specs/cart-management/spec.md: Shopping cart management specification.specs/order-management/spec.md: Order management specification.specs/payment/spec.md: Payment specification.specs/error-handling/spec.md: Error handling specification.Test data files used by the example projects.
examples/ecommerce-mini/data/: Test data for the Node.js version.
products.json: Product data.carts.json: Cart data.orders.json: Order data.This project is based on OpenSpec v1.9.0 and demonstrates the following core features:
/opsx:explore acts as a thinking partner — investigate the codebase, weigh options, and clarify requirements before writing any specs or code. Zero-cost, low-risk exploration.references.The strategic insights of Domain-Driven Design (DDD) combined with the structured specifications of OpenSpec build a highly reliable connection system from domain models to engineering code. The standard mapping paths for converting DDD deliverables into the OpenSpec workflow described below are distilled from the open-source skill repository project domain-driven-design-skills (see the ddd-openspec-mapping.md document for details).
At the strategic level, by introducing DDD’s spatial partitioning methodology into OpenSpec’s directory structure, a natural correspondence between design and specification can be achieved.
The “Bounded Context” in DDD corresponds to the sub-domain directories under the specs/ directory in OpenSpec. This alignment ensures that every business boundary identified by DDD has a clear attribution in the engineering specifications. Meanwhile, declaring this mapping relationship in openspec/config.yaml provides the AI Agent with a global architectural context.
# openspec/config.yaml example: Domain and Bounded Context mapping configuration
context: |
## Project Domain Mapping
This system follows DDD design, and core bounded contexts include:
- User Management Context
- Order Management Context
- Payment Context
Tactical design determines the quality of code implementation. OpenSpec provides a structured expression method to transform DDD building blocks into verifiable and executable task sequences.
The table below shows the specific mapping relationship between OpenSpec core components and DDD deliverables:
| OpenSpec Specification Structure | Corresponding DDD Deliverable | Description and Explanation |
|---|---|---|
| Domain | Bounded Context | A domain directory corresponds to a bounded context. |
| Requirement | Domain Service / Command | Describes a core business function or operation. |
| Scenario | Aggregate Behavior | Uses Given/When/Then format to precisely describe aggregate behavior. |
| Design | Application Service | Coordinates multiple domain services, manages transactions and security. |
| Tasks | Tactical Design Backlog | Tasks for concrete implementations like entities, value objects, repository interfaces, etc. |
OpenSpec v1.5.0’s workflow highly aligns with DDD’s iterative modeling, with special emphasis on explore-first and brownfield-first refactoring capabilities.
/opsx:explore to investigate the codebase, compare options, and clarify requirements at zero cost. DDD’s strategic storming can unfold naturally during exploration./opsx:propose to initialize changes, dynamically fetching templates and context via openspec instructions to consolidate domain modeling conclusions.changes/archive/ via openspec archive, ensuring a single source of truth for domain knowledge.Navigate to the examples/ecommerce-mini directory:
# Install dependencies (no external dependencies in this project, but good practice)
npm install
# Run tests (using Node.js built-in test runner)
npm test
# Start development server (in-memory storage, listening on port 3000 by default)
npm start
# Start production server (file persistence, authentication, listening on port 3002 by default)
npm run start:prod
Navigate to the examples/ecommerce-mini-python directory:
# Install dependencies
pip install -r requirements.txt
# Run tests
pytest
# Start server (listening on port 8000 by default)
python -m uvicorn src.api.server:app --reload
Recommended learning order:
examples/ecommerce-mini and examples/ecommerce-mini-python to experience spec-driven development firsthand. Both implementations are products of the same set of OpenSpec specifications.openspec/changes/archive/2026-07-08-add-product-get-by-id/, a “query product by ID” feature added using the complete v1.5.0 workflow (Explore → Propose → Apply → Sync → Archive). Compare the proposal/design/specs/tasks in this change with the final code changes (server.js, server.py) to understand the complete SDD chain from specification to implementation./opsx:update revises planning artifacts mid-implementation while keeping them coherent. Artifacts in openspec/changes/archive/2026-07-28-add-product-search/.openspec/changes/archive/2025-01-27-v1-mvp/ to learn how a complete system’s specifications are built from scratch.To more efficiently implement OpenSpec specifications in real-world development, this project recommends pairing with a dedicated AI assistant skill.
/opsx command system used in this project.