Skip to content
/

openspec-schemas (intent-driven-dev)

openspec-schemas-intent · intent-driven-dev/openspec-schemas · ★ 43 · last commit 2026-05-11

Extends OpenSpec with domain-specific artifact workflows for BDD, event-driven systems, ADRs, and Linear project management.

Best whenOpenSpec schemas should be domain-specific copyable folders, not a monolithic CLI feature — teams own their workflow graph.
Skip ifInstalling schemas before running openspec init, Treating Linear story as a complete OpenSpec proposal
vs seeds
openspec(same CLI, same command surface, same artifact storage). Extends it with six additional domain-specific artifact graphs:…
Primitive shape
No installable primitives
00

Summary

OpenSpec Custom Schemas (intent-driven-dev) — Summary

OpenSpec Custom Schemas by intent-driven-dev is a community schema library that extends the base OpenSpec CLI with six additional workflow flavors, each targeting a different delivery context: minimalist (user-story + Gherkin), event-driven (Event Storming → AsyncAPI), behaviour-driven (Gherkin scenarios throughout), intent-driven (proposal → Gherkin specs → design → ADR → tasks), linearized (Linear issue binding + spec mirroring), and spec-driven-with-ADR. The schemas plug in directly to OpenSpec's schema system via openspec schema validate and are activated by a single schema: key in openspec/config.yaml. The project demonstrates how OpenSpec's pluggable schema architecture lets domain-specific artifact graphs be distributed as copyable folder trees without forking the CLI. With 43 stars, a YouTube walkthrough, and a companion blog post, it is the most visible community schema pack for OpenSpec. The repository is maintained by a single contributor (the intent-driven.dev blog author) and was last updated in May 2026.

Compared to the seed references: closest to openspec (same CLI, same command surface, same artifact storage) but specifically adds the ADR artifact, AsyncAPI specification artifact, Gherkin requirement format mandates, and Linear project management integration — none of which appear in the default OpenSpec schema.

01

Overview

OpenSpec Custom Schemas (intent-driven-dev) — Overview

Origin

Published by the intent-driven.dev blog in February 2026 as the companion artifact to a blog post titled "OpenSpec Custom Schemas" (https://intent-driven.dev/blog/2026/02/12/openspec-custom-schemas/). A YouTube video walkthrough accompanies the release.

Philosophy

OpenSpec's default spec-driven schema is intentionally general-purpose. The intent-driven-dev schema pack demonstrates that domain-specific workflows — event-driven systems, behaviour-centric teams, teams using ADRs, teams using Linear — benefit from custom artifact graphs without reinventing the CLI. Each schema defines only the artifacts and their ordering; the delivery infrastructure remains OpenSpec.

Manifest Quote

From the README:

"Default OpenSpec includes the spec-driven schema, which is a strong general-purpose workflow. This repo adds more focused workflows for specific delivery contexts, and also demonstrates how to customise OpenSpec for different styles of work."

And the install guidance:

"Ask your coding agent to read this file and install the schema you want: Read this file: https://raw.githubusercontent.com/intent-driven-dev/openspec-schemas/refs/heads/main/README.md and install schema ."

Included Schemas (6)

Schema Description
minimalist User stories + Given/When/Then; only specs and tasks artifacts
event-driven Event Storming → Event Modeling → Specs → Design → AsyncAPI → Tasks
behaviour-driven Proposal → Gherkin-style specs → Design → Tasks
intent-driven Proposal → Gherkin specs → Design → ADR → Tasks
linearized Linear story binding + archive mirroring to Linear Project Documents
spec-driven-with-adr Standard flow + ADR artifact persisted at <repo>/adr/

Target Audience

Teams using OpenSpec who need a more opinionated workflow for specific delivery types (event-driven services, BDD teams, teams with ADR conventions, Linear shops).

02

Architecture

OpenSpec Custom Schemas (intent-driven-dev) — Architecture

Distribution

  • Type: standalone-repo (copyable schema folders)
  • No CLI binary — schemas are installed manually by copying openspec/schemas/<schema-name>/ into either:
    • Project local: ./openspec/schemas/<schema-name>/
    • User level: $HOME/.openspec/schemas/<schema-name>/
  • Activation: set schema: <schema-name> in openspec/config.yaml
  • Validation: openspec schema validate

Runtime Requirements

  • OpenSpec CLI >= 1.0.0 (npm install -g @fission-ai/openspec@latest)
  • Node.js >= 20.19.0 (inherited from OpenSpec CLI)

Repository Directory Structure

openspec/
├── schemas/
│   ├── minimalist/
│   │   ├── README.md
│   │   ├── schema.yaml
│   │   └── templates/
│   ├── event-driven/
│   │   ├── README.md
│   │   ├── schema.yaml
│   │   └── templates/
│   ├── behaviour-driven/
│   │   ├── README.md
│   │   ├── schema.yaml
│   │   └── templates/
│   ├── intent-driven/
│   │   ├── README.md
│   │   ├── schema.yaml
│   │   └── templates/
│   ├── linearized/
│   │   ├── README.md
│   │   ├── schema.yaml
│   │   └── templates/
│   └── spec-driven-with-adr/
│       ├── README.md
│       ├── schema.yaml
│       └── templates/
├── changes/
├── config.yaml
└── specs/

Target AI Tools

Inherits from OpenSpec: all 29+ supported tools (Claude Code, Cursor, Windsurf, Codex, Cline, Gemini CLI, Kiro, Roo, etc.)

Config Integration

# openspec/config.yaml — example for event-driven
schema: event-driven
context: |
  Tech Stack:
    - Node.js + TypeScript
rules:
  event-storming:
    - Focus on payment domain events
  asyncapi:
    - Validate with asyncapi-cli before marking complete

Portability Notes

  • Schemas carry no runtime code — they are pure YAML artifact definitions + Markdown templates
  • The .codex and .opencode directories in the repo root contain tool-specific skill files for Codex and OpenCode users
03

Components

OpenSpec Custom Schemas (intent-driven-dev) — Components

Schema Definitions (6)

Each schema is a schema.yaml file defining an artifact graph (ordered DAG of artifact IDs with templates and generation instructions).

Schema Artifacts
minimalist specs, tasks (2 artifacts)
event-driven event-storming, event-modeling, specs, design, asyncapi, tasks (6 artifacts)
behaviour-driven proposal, specs (Gherkin-style), design, tasks (4 artifacts)
intent-driven proposal, specs (Gherkin-style), design, adr, tasks (5 artifacts)
linearized proposal (with Linear binding), specs, design, tasks (4 artifacts + archive guidance)
spec-driven-with-adr proposal, specs, design, adr, tasks (5 artifacts)

Templates

Each schema ships a templates/ directory. Template files correspond 1:1 to artifact IDs:

  • spec.md — spec file skeleton with ADDED/MODIFIED/REMOVED sections
  • proposal.md — why/what/impact skeleton
  • design.md — context/goals/decisions/risks skeleton
  • tasks.md — checkbox task list skeleton
  • adr.md — Architecture Decision Record skeleton (intent-driven + spec-driven-with-adr only)
  • asyncapi.yaml — AsyncAPI spec stub (event-driven only)
  • event-storming.md, event-modeling.md — discovery artifacts (event-driven only)

Commands / Skills

None directly provided by this repo. All execution happens via the standard OpenSpec command surface (/opsx:propose, /opsx:apply, etc.).

Codex / OpenCode Integration

  • .codex/ directory: skill files for Codex
  • .opencode/ directory: skill files for OpenCode

MCP Servers

None.

Scripts

None.

05

Prompts

OpenSpec Custom Schemas (intent-driven-dev) — Prompts

Excerpt 1: event-driven AsyncAPI artifact instruction (instructive / constraint-driven)

From openspec/schemas/event-driven/schema.yaml:

- id: asyncapi
  generates: asyncapi.yaml
  description: AsyncAPI technical specification derived from prior artifacts
  template: asyncapi.yaml
  instruction: |
    Author AsyncAPI from event-storming, event-modeling, specs, and design.

    Completion guidance:
    - `asyncapi.yaml` is not complete until validation succeeds.
    - Run `asyncapi-cli validate asyncapi.yaml`.
    - If validation fails, resolve errors before marking this artifact done.
  requires:
    - design

Technique: Gate-enforced completion with external validator requirement. The AI cannot mark the artifact done until a real CLI tool passes — this is machine-enforced quality, not a suggestion.


Excerpt 2: linearized proposal instruction (multi-step setup + story binding)

From openspec/schemas/linearized/schema.yaml:

instruction: |
  Linear setup:
  - Before writing proposal content, look for `openspec/linear.yaml`.
  - If `openspec/linear.yaml` is missing, stop normal proposal discovery and perform Linear setup immediately:
    1. Verify Linear MCP connectivity when the tools are available.
    2. Ask the contributor for the Linear team and project to use for this OpenSpec project.
    3. Optionally ask whether backlog selection should be narrowed by a single Linear issue label.
    4. Write the selected IDs and display names to `openspec/linear.yaml`.
  ...
  - Treat the Linear story contents as initial input for OpenSpec proposal discovery, equivalent to the contributor's first proposal request. Do not treat the story as a complete OpenSpec proposal.

Technique: Conditional setup wizard with graceful fallback ("If Linear is unavailable after setup exists, leave Linear frontmatter blank or null and continue locally"). Demonstrates agent-readable if/else branching in artifact instructions.


Excerpt 3: intent-driven spec instruction (delta format + Gherkin wrapper)

From openspec/schemas/intent-driven/schema.yaml:

instruction: >
  Create OpenSpec Markdown spec files that define WHAT the system should do.
  The Markdown structure is the OpenSpec merge wrapper; the requirement and
  scenario content inside that wrapper should be written in Gherkin style.
  ...
  Delta operations (use ## headers exactly so OpenSpec archive can merge):
  - **ADDED Requirements**: New behaviour capabilities.
  - **MODIFIED Requirements**: Changed behaviour - MUST include the full
    updated requirement content, not a partial diff.

Technique: Layer composition — the outer OpenSpec merge format is mandatory, the inner content format is domain-specific (Gherkin). The instruction explicitly distinguishes structural format from content format.

09

Uniqueness

OpenSpec Custom Schemas (intent-driven-dev) — Uniqueness

differs_from_seeds

Closest seed: openspec. This repo is a direct extension of OpenSpec — it uses the same CLI, same command surface, and same openspec/config.yaml activation mechanism. The architectural delta is the introduction of six domain-specific artifact graphs (schemas) that replace OpenSpec's default spec-driven schema. Key additions not in any seed: (1) AsyncAPI specification as a first-class artifact with an enforced external validator gate (asyncapi-cli validate) — the only machine-gated quality check in the OpenSpec ecosystem; (2) Gherkin-style requirement format mandated inside the standard OpenSpec markdown wrapper; (3) ADR persistence at repository top-level adr/ (survives archive cycles); (4) Linear project management integration with MCP-based story binding and archive document mirroring — a project management tool integration not seen in any seed framework.

Positioning

This is the "enterprise delivery methodology pack" for OpenSpec. Where OpenSpec covers the mechanics of spec-driven development, this pack covers domain-specific process standards (BDD, event storming, ADR conventions, PM tool integration). The closest non-OpenSpec seed is kiro which also emphasizes structured artifact sequences, but kiro is a closed IDE and this repo integrates with any OpenSpec-supported tool.

Observable Failure Modes

  1. Schema install race: if openspec/config.yaml doesn't exist yet (pre-openspec init), installing a schema fails silently. The README explicitly warns about this but it's easy to hit.
  2. asyncapi-cli not installed: the event-driven schema instruction requires asyncapi-cli validate but the tool is not installed by this package. Teams must ensure it's available.
  3. Linear MCP unavailability: linearized schema has graceful fallback, but teams who forget to configure Linear MCP lose the story-binding value proposition.
  4. ADR drift: the intent-driven schema writes ADRs to <repo>/adr/ which is outside openspec/ — these are not automatically archived or versioned by OpenSpec's archive command.
04

Workflow

OpenSpec Custom Schemas (intent-driven-dev) — Workflow

Workflow Varies by Schema

All schemas use the standard OpenSpec command surface. The schema selection determines which artifacts are generated in which order.

minimalist Workflow

Phase Artifact Gate
1. Scaffold (new change)
2. Specs specs/**/*.md Human review before apply
3. Tasks tasks.md
4. Apply Implementation Pause on blockers

event-driven Workflow

Phase Artifact Gate
1. Event Storming event-storming.md Human review
2. Event Modeling event-modeling.md Depends on event-storming
3. Specs specs/**/*.md Depends on event-modeling
4. Design design.md Depends on specs
5. AsyncAPI asyncapi.yaml asyncapi-cli validate must pass
6. Tasks tasks.md Depends on asyncapi
7. Apply Implementation

intent-driven Workflow

Phase Artifact Gate
1. Proposal proposal.md Human review
2. Specs specs/**/*.md (Gherkin) Delta format required
3. Design design.md
4. ADR adr/<name>.md Persisted at repo top-level
5. Tasks tasks.md
6. Apply Implementation

linearized Workflow

Phase Artifact Gate
1. Linear Setup openspec/linear.yaml MCP connectivity check
2. Proposal proposal.md + Linear story bound Story transition to "Todo"
3. Specs specs/**/*.md
4. Design design.md
5. Tasks tasks.md
6. Apply Implementation
7. Archive Canonical specs + Linear mirror Story transition to "Done"

Approval Gates

  • Event-driven: explicit asyncapi-cli validate asyncapi.yaml required before tasks
  • Linearized: Linear MCP connectivity gate before proposal
  • Standard: same gates as default OpenSpec (human review after proposal, before apply)

Spec Format

Gherkin-style for behaviour-driven and intent-driven schemas:

### Requirement: User Authentication
The system SHALL authenticate users with email and password.

#### Scenario: Successful login
- **GIVEN** valid credentials
- **WHEN** user submits the form
- **THEN** system grants access
06

Memory Context

OpenSpec Custom Schemas (intent-driven-dev) — Memory & Context

State Storage

Identical to base OpenSpec — file-based, per-change folder:

openspec/
├── specs/               # Canonical specs (source of truth)
│   └── <capability>/spec.md
├── changes/
│   └── <change-name>/
│       ├── proposal.md
│       ├── specs/**/*.md    (delta specs)
│       ├── design.md
│       ├── adr/             (intent-driven / spec-driven-with-adr only)
│       ├── event-storming.md (event-driven only)
│       ├── event-modeling.md (event-driven only)
│       ├── asyncapi.yaml    (event-driven only)
│       └── tasks.md
└── config.yaml

Additional for linearized:

openspec/
└── linear.yaml          # Project-local Linear configuration (team ID, project ID, label filter)

Additional for intent-driven / spec-driven-with-adr:

adr/                     # Repository top-level ADR folder (not inside openspec/)
└── <adr-title>.md

Persistence

  • Scope: project (per-repository)
  • Cross-session: Yes — files persist between sessions; openspec continue resumes from last completed artifact
  • Compaction: Inherits base OpenSpec behavior (no compaction mechanism defined)

Memory Type

File-based markdown. No database, no vector store, no external service (except linearized which optionally reads Linear via MCP).

Handoffs

Artifact requires: chains create the handoff mechanism — each artifact reads its dependency files before generating its output. Linear MCP availability is gracefully degraded (offline mode continues locally).

07

Orchestration

OpenSpec Custom Schemas (intent-driven-dev) — Orchestration

Multi-Agent

No. Single-agent execution throughout. The schema DAG is sequential; no parallel agent spawning.

Orchestration Pattern

Sequential. Each artifact depends on the previous ones via requires: lists.

The event-driven schema has a linear chain: event-storming → event-modeling → specs → design → asyncapi → tasks → apply

The intent-driven schema: proposal → specs → design → adr → tasks → apply

Isolation Mechanism

None. Edits in-place using the active agent session.

Multi-Model

No. Single model (whatever the AI tool is configured to use).

Execution Mode

Interactive-loop. The agent produces each artifact, stops for human review, continues on /opsx:continue.

Prompt Chaining

Yes. Each artifact's output becomes input for the next artifact's instruction via the requires: mechanism. The linearized schema adds MCP-based Linear reads as additional input.

Special Gate: External Validator (event-driven)

The asyncapi artifact instruction explicitly requires running asyncapi-cli validate asyncapi.yaml before marking the artifact complete. This is the only schema in the pack with an externally-enforced machine gate (not just a human review gate).

Crash Recovery

Inherits from OpenSpec — partial completions are persisted as files; re-running /opsx:continue resumes from the next incomplete artifact.

08

Ui Cli Surface

OpenSpec Custom Schemas (intent-driven-dev) — UI & CLI Surface

Dedicated CLI Binary

No. This repository ships no CLI binary. Installation is via file copy.

Local UI

None.

IDE Integration

Inherits from OpenSpec: command and skill files for all 29+ supported tools are generated by the OpenSpec CLI after schema activation. Additionally:

  • .codex/ directory in this repo provides Codex-specific integration files
  • .opencode/ directory provides OpenCode-specific integration files

Command Surface

None added by this repo. The standard OpenSpec commands apply:

  • /opsx:propose — create/update proposal
  • /opsx:apply — implement based on artifacts
  • /opsx:continue — advance to next artifact
  • /opsx:verify — verify implementation
  • /opsx:archive — archive completed change

Observability

None beyond what OpenSpec provides (file-based artifacts as natural audit trail).

Install Procedure

# Copy schema into project
git clone https://github.com/intent-driven-dev/openspec-schemas.git /tmp/openspec-schemas
cp -R /tmp/openspec-schemas/openspec/schemas/event-driven ./openspec/schemas/event-driven

# Activate
# edit openspec/config.yaml: schema: event-driven

# Validate
openspec schema validate

Or agent-assisted:

Read this file: https://raw.githubusercontent.com/intent-driven-dev/openspec-schemas/refs/heads/main/README.md and install schema event-driven.

Related frameworks

same archetype · same primary tool · same memory type

claude-mem (thedotmack) ★ 78k

Background worker service captures every tool call as an observation, AI-compresses sessions, and auto-injects relevant past…

pi (badlogic/earendil) ★ 55k

A minimal, hackable, multi-provider terminal coding agent that adapts to your workflows via npm-installable TypeScript Extensions…

Agent Skills (Addy Osmani) ★ 46k

Encodes senior-engineer software development lifecycle as 23 auto-routed skills and 7 slash commands for any AI coding agent.

wshobson/agents Plugin Marketplace ★ 36k

Single Markdown source for 83 domain-specialized plugins that auto-generates idiomatic artifacts for five AI coding harnesses.

TabbyML/Tabby ★ 34k

Self-hosted AI coding assistant server (alternative to GitHub Copilot) with admin dashboard, RAG-based completions, and multi-IDE…

Compound Engineering ★ 17k

Make each unit of engineering work compound into easier future work via brainstorm→plan→execute→review→learn cycles.