Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Spec Driven

ASecurity

Default OpenSpec change workflow — scaffold a change through proposal → specs → design → tasks, apply it, then archive once merged. Use to start a change, write a proposal/spec/design/tasks, implement a tasks checklist, or archive a merged change.

4 stars
0 votes
0 copies
1 views
Added 9/19/2026
developmentshellgitapifrontendbackend

Works with

apimcp

Security Analysis

A100/100

Pro scans all 11 files and shows the line behind each finding

Scanned 9/19/2026

$npx -y skills add jgamaraalv/delivery-loop --skill spec-driven --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Spec Driven?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Spec Driven
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jgamaraalv-spec-driven/badge)](https://www.skillsdirectory.com/skills/jgamaraalv-spec-driven)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: spec-driven
description: Default OpenSpec change workflow — scaffold a change through proposal → specs → design → tasks, apply it, then archive once merged. Use to start a change, write a proposal/spec/design/tasks, implement a tasks checklist, or archive a merged change.
---

# Spec-Driven Change Workflow (OpenSpec)

A change moves through four authored artifacts, an execution phase, and a closing phase. Each
artifact answers a different question, and each builds on the one before it:

```
proposal.md → specs/**/*.md → design.<side>.md → tasks.<side>.md → apply → archive
WHY           WHAT            HOW                 WORK BREAKDOWN    EXECUTE  RECONCILE & SHIP
```

The whole point of doing this up front is that decisions get cheaper the earlier you make them.
The proposal pins down *why* and *what scope*; the specs pin down *observable behavior*; the
design pins down *technical approach*; the tasks turn all of that into a checklist someone can
execute and track. Skipping straight to code loses the contract these documents create with
each other — most notably the **Capabilities** contract between the proposal and the specs.
And the lifecycle only closes at **archive**: until the implemented change is merged and its
delta specs are folded into the shipped specs, the source of truth is not yet updated.

## Where artifacts live

The OpenSpec tree root resolves through **`SPEC_VAULT_PATH`** — set it in the host repo's
`.claude/settings.json` `env` block or the shell — and falls back to `./openspec` in the host
repo when unset. Pointing it at a shared **vault** (a plain folder of Markdown that is itself a
git repository, typically also opened in Obsidian as the human's reader) lets sessions in
different host repos — a backend repo and a frontend repo — read and write the *same* truth.
Access is always plain filesystem (Read/Write/Glob/git) against the local checkout; the operative
truth never depends on an MCP being available.

A change lives in its own directory under `<root>/changes/<slug>/`. Generated artifacts:

```
proposal.md          ← the change proposal, with `status:` frontmatter (always)
specs/<capability>/spec.md   ← one delta spec file per capability (always)
design.<side>.md     ← per-side technical design (only when warranted)
tasks.<side>.md      ← per-side implementation checklist (always)
```

`<side>` is `backend` or `frontend`. The suffix applies **always** — even when a feature touches
only one side — so every consumer (architects, delivery loops, archive) parses exactly one
format instead of detecting variants. `proposal.md` and `specs/` are never split per side: they
are product truth (a requirement like "user exports CSV" doesn't belong to a repo), while design
and tasks are execution truth that each repo's loop owns and updates without write contention.

What makes the per-side split *pull its weight* (not just mirror the folders) are two artifacts the
references detail: each side's design carries a machine-readable **task manifest**
(`files_owned` / `deps` / `exports_promised`, in [`references/tasks-and-apply.md`](references/tasks-and-apply.md)),
and any shared boundary (a contract field, an enum like the set of cancellable states) is named in
a **cross-side ripple note** so a change on one side is visibly tracked on the other (see
[`references/loop-integration.md`](references/loop-integration.md)). When you author a cross-side
change, produce both — they're the difference between two task lists and two *coordinated* task lists.

Existing, already-shipped specs live under `<root>/specs/<capability>/spec.md`. Read those
before proposing changes to existing capabilities — the proposal and the delta specs reference
them by their exact folder name. When the feature carries an API contract, it lives as OpenAPI
YAML under `<root>/contracts/` (the archive phase projects it to Postman; the file is master,
Postman is never edited directly).

## The change lifecycle

`status:` frontmatter in `proposal.md` tracks the change through four states (a missing field
reads as `in-progress`, for changes authored before this convention):

```
draft → in-progress → in-review → archived
```

- **draft** — being authored: proposal → specs → design → tasks.
- **in-progress** — under implementation. The delivery loops act as the apply phase: they check
  off `tasks.<side>.md` as their gates pass, and the spec is the **authority** — an approved
  deviation is amended into the change folder and committed at approval time, never deferred
  (product/UX/contract drift is approved synchronously by the human; purely technical
  reconciliations are auto-amended with a marker and ratified asynchronously — the two-tier
  gate in [`references/loop-integration.md`](references/loop-integration.md)).
- **in-review** — every `tasks.<side>.md` is complete; the human is reviewing/merging the MR(s).
  Review feedback re-enters through the loops as `## R<n>` task sections and flips the change
  back to `in-progress` until the round closes.
- **archived** — the MR(s) merged and the archive phase ran. Shipped specs describe **merged
  code only**: archive is gated on the merge, not on task completion.

The loop orchestrators maintain the field; only the archive phase may set `archived`.

## Templates

Each artifact has a starter template in [`templates/`](templates/) — read the relevant one
before authoring and copy its skeleton into the target file, then fill it in. The templates
carry the exact section headers and HTML-comment guidance the workflow expects, so starting
from them keeps the artifacts parseable downstream.

## Dependency order

Honor the `requires` chain — never author a downstream artifact before its inputs exist:

- **proposal** requires nothing — it is the foundation.
- **specs** require the proposal (one spec per capability the proposal names).
- **design** requires the proposal. The design phase is a **routing gate, not hand-authoring**:
  it detects which side(s) the change touches and dispatches `frontend-architect` /
  `backend-architect` to author each side's `design.<side>.md` — skipping a side whose design
  already exists, or whose slice is too small to warrant one. See
  [`references/design.md`](references/design.md).
- **tasks** require both specs and design.
- **apply** requires tasks.
- **archive** requires the change to be `in-review` with the MR(s) merged — see
  [`references/archive.md`](references/archive.md) for the full precondition gate.

If the user asks for a later artifact and an earlier one is missing or stale, say so and offer
to create or refresh it first rather than guessing at the missing contract.

## References

Read the reference for the phase you're authoring — each carries the sections, format rules,
and worked examples for that artifact:

- [`references/proposal.md`](references/proposal.md) — the WHY: sections, the load-bearing
  **Capabilities** contract, researching existing specs · read before writing `proposal.md`.
- [`references/specs.md`](references/specs.md) — the WHAT: delta operations
  (ADDED/MODIFIED/REMOVED/RENAMED), requirement/scenario format (`####` exactly), the MODIFIED
  full-block workflow · read before writing any `specs/<capability>/spec.md`.
- [`references/design.md`](references/design.md) — the HOW: the **architect-routing gate**
  (detect side(s) → dispatch the architect, skip a side whose design exists), when a design is
  warranted (it's conditional — skip it when not), and its sections · read before deciding on /
  writing `design.<side>.md`.
- [`references/tasks-and-apply.md`](references/tasks-and-apply.md) — the checklist format the
  apply phase parses (`- [ ] X.Y`), how execution is delegated to the delivery loops, and the
  inline fallback · read before writing `tasks.<side>.md` or applying.
- [`references/archive.md`](references/archive.md) — the RECONCILE & SHIP: the precondition
  gate (merged MRs, no open review round, clean vault tree), merging delta specs into shipped
  specs, the Postman contract sync, the **project-doc reconciliation sweep** (catch the
  `CLAUDE.md` / ADRs / runbooks / architecture blueprints / tech-debt / config the change made
  stale), and filing the change away · read before archiving.
- [`references/loop-integration.md`](references/loop-integration.md) — how a delivery loop
  drives a change through the lifecycle: attach, cycle-boundary vault sync, task tracking, the
  drift gate, cross-side ripple, the closing protocol, MR-review re-entry · read by the
  delivery-loop orchestrators (all three loops link here so the rules live in one place).

Attribution

jgamaraalvjgamaraalv
View sourceSee grades on GitHubMore from jgamaraalv →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Clean Code

Pragmatic coding standards - concise, direct, no over-engineering, no unnecessary comments

304955 votes

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

285172 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2222 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Tanstack Start

Build a full-stack TanStack Start app on Cloudflare Workers from scratch — SSR, file-based routing, server functions, D1+Drizzle, better-auth, Tailwind v4+shadcn/ui. Use whenever the user mentions TanStack Start, asks to scaffold a full-stack Cloudflare app with SSR, wants an SSR dashboard, or asks for a React 19 + Cloudflare Workers app with file-based routing and server functions — even if they don't name TanStack Start specifically. No template repo — Claude generates every file fresh per ...

10341 votes
View all in development →