specdriven.sh

πŸ“š Docs

Documentation.

Everything you need to install, use, and contribute skills and specs.

What is specdriven?

specdriven is the home of Spec Driven Development (SDD) β€” a methodology where AI-generated specifications drive your project from day one. Rather than bolting AI assistance onto an existing workflow, SDD treats specs as the source of truth: they describe your stack, your architecture, and the AI skills that come bundled with them.

Concretely, it's a community library of AI skills and project specs you can install into any AI coding agent β€” Claude Code, Cursor, GitHub Copilot, Codex, and 50+ others β€” with a single command.

It is open source and contributor-driven. Submissions are pull requests, reviewed by maintainers, and synced to the marketplace within an hour of merging.

Skills vs Specs

⚑ Skill

Atomic, reusable AI instruction.

A prompt, workflow, or technique that solves one concrete problem β€” code review, API design, security audit. Drop-in and composable.

πŸ“‹ Spec

Full project blueprint.

Tech stack, architecture, and the skills that pair with it. Designed to scaffold a real, shippable project β€” not a toy example.

NoteBoth ship as MDX files with YAML frontmatter, plus optional supporting files (scripts, configs, examples). The on-disk layout is one directory per slug.

Internal vs External

Every skill and spec in the catalog is hosted one of two ways. The install command is identical for both β€” this distinction only matters when you submit a new entry, or when you browse the catalog and notice the External badge on a listing.

πŸ“¦ Internal

Curated in the catalog repo.

The full content β€” SKILL.md / SPEC.md plus any supporting files β€” lives directly in specdriven-skills or specdriven-specs. Maintainers review the body during the PR. The CLI fetches files from the catalog API at install time.

πŸ”— External

Hosted upstream in your own repo.

Only the metadata sidecar lives in the catalog β€” a source field on specdriven-metadata.json points at your GitHub repo. The CLI fetches files directly from upstream. Submitting means adding just the metadata, no body required.

NoteUse internal for small, atomic contributions that benefit from community review and live alongside the rest of the catalog. Use external when you already maintain a larger skill or stack in your own repo and want it discoverable without duplicating content.

Install via CLI

The specdriven CLI is the fastest path. It downloads the skill or spec and places it into your agent's config folder, then reports an anonymous install ping for the counter.

Install the CLI

Run it on demand with npx, or install it globally to drop the prefix. Requires Node 20+.

# Run without installing
npx specdriven <command>

# Or install globally and call it directly
npm install -g specdriven
specdriven <command>

Quick start

# Run interactively - the CLI prompts for kind, slug, and agent
npx specdriven add

# Install a skill into Claude Code (project-local)
npx specdriven add skill code-reviewer -a claude-code

# Install a spec for Cursor, globally
npx specdriven add spec nextjs-saas -a cursor -g

All commands

specdriven add <kind> [slug]      # Install from the catalog
specdriven find <kind> [query]    # Search by partial name
specdriven list <kind>            # Browse alphabetically, 20 per page
specdriven init <kind> [slug]     # Scaffold a new one from the template
specdriven remove <kind> <slug>   # Uninstall

Flags

FlagDescription
-a, --agent <id>Target agent (e.g. claude-code, cursor)
-g, --globalInstall into the user-level config dir
-d, --dest <path>Override the destination root
-f, --forceOverwrite if the destination already exists
-y, --yesSkip prompts; require all args/flags
NoteThe CLI sends a single anonymous POST to /api/installs after each successful add. No personal data, dedup'd per IP per day server-side. Set SPECDRIVEN_API_BASE to point at a different host for local testing.

Install manually

If you don't want the CLI, the marketplace API serves the same files as raw downloads.

Get the manifest

curl https://specdriven.sh/api/content/skill/code-reviewer/manifest

Returns the list of files in the skill bundle (excluding the catalog-only metadata sidecar) and their sizes.

Download a file

curl -O https://specdriven.sh/api/content/skill/code-reviewer/files/SKILL.md

Where to put it

Drop the file(s) into the directory your agent reads. The most common locations:

AgentProject pathGlobal path
Claude Code.claude/skills/~/.claude/skills/
Cursor.agents/skills/~/.cursor/skills/
GitHub Copilot.agents/skills/~/.copilot/skills/
Codex.agents/skills/~/.codex/skills/
OpenClawskills/~/.openclaw/skills/

Full list of 50+ supported agents in the CLI agent registry. Replace /skills/ with /specs/ for spec installs.

Author a skill or spec

Submissions are pull requests against the source repos. CI validates the frontmatter, file types, and size limits; a maintainer reviews for usefulness and merges.

The fast path

# Scaffold from the official template
npx specdriven init skill my-skill

# Edit my-skill/my-skill.mdx, add supporting files
# Then submit a PR to specdriven-skills

Directory layout

content/skills/<slug>/
β”œβ”€β”€ SKILL.md                    REQUIRED - agent-spec entry (name, description, body)
β”œβ”€β”€ specdriven-metadata.json    REQUIRED - catalog metadata (title, category, tags, ...)
β”œβ”€β”€ scripts/                    OPTIONAL - supporting scripts
β”‚   └── setup.sh
└── examples/                   OPTIONAL - usage examples
    └── prompt.md

The format separates two concerns: SKILL.md is the canonical file that AI agents read β€” it follows the open Agent Skills spec and contains the actual instructions. specdriven-metadata.json is a sidecar with catalog-only fields (title, category, tags). The CLI installs SKILL.md but skips the sidecar β€” agents don't need it.

SKILL.md frontmatter

---
name: api-designer
description: Generate REST and GraphQL specs with proper versioning.
---

## What it does
...100+ words of content...

specdriven-metadata.json

{
  "title": "API Designer",
  "category": "architecture",
  "tools": ["Claude", "GPT", "Gemini"],
  "tags": ["api", "rest", "graphql"],
  "author": "your-name",
  "updated": "2026-05-08"
}
NoteFor specs, the entry file is SPEC.md and the metadata adds stack, skills (slugs of companion skills), and complexity (starter / production / enterprise). Full schema in SKILL_REQUIREMENTS.md and SPEC_REQUIREMENTS.md.

Allowed file types

Supporting files can use: .mdx .md .sh .json .yaml .yml .toml .txt .js .ts .py .xml .xsd .html .pdf .ttf .tar .gz. Per-file max 5Β MB, total per skill or spec 30Β MB.

API for tool builders

Building a third-party CLI, web UI, or editor extension? Hit these endpoints directly. They're public, CDN-cacheable, and require no authentication for read traffic.

EndpointReturns
GET /api/content/{kind}/indexCatalog index: array of { slug, title, description, category, tags, updated }
GET /api/content/{kind}/{slug}/manifestFile list for one entry: { entryPoint, files: [{ path, size }] }
GET /api/content/{kind}/{slug}/files/{...path}Streams one file. Served as attachment with proper content-type.
GET /api/template/{kind}/manifestManifest for the canonical skill/spec template.
GET /api/template/{kind}/files/{...path}Streams one template file.
POST /api/installsReport an install: { kind, slug, agent, os? }. Requires User-Agent: specdriven-cli/X.Y.Z. Rate-limited per IP, dedup'd per day.
GET /api/installs?kind=skill&slug=...Read install count for a slug (or batch via ?slugs=a,b,c).

kind is skill or spec. Slugs are kebab-case, max 60 chars. Files cap out at 5Β MB each.

FAQ

How do I get my skill or spec listed?

Open a PR against specdriven-skills or specdriven-specs. CI validates automatically and a maintainer reviews within 48 hours.

What can I use this for?

Anything. Everything is MIT-licensed. Commercial use, forks, derivatives - all allowed.

How are install counts tracked?

The CLI sends an anonymous POST to /api/installs after each successful install. We store no personal data, hash IPs, and deduplicate per IP per day so a single user hammering the command in a loop still counts as one install.

Why specdriven vs writing prompts inline?

Reusability and discovery. Skills tested across many projects beat ad-hoc prompts. Specs make it trivial to spin up the next project with the same opinionated foundation. Plus the community vets quality before anything lands in the catalog.

Can I use a custom destination?

Yes. Pass --dest <path> to specdriven add, or pick Custom path… in the interactive agent prompt.

What if my agent isn't listed?

Use --dest with the agent's expected path, or open an issue with the path convention and we'll add it to the registry.