Skip to content
Workflow · AI agents

Spec first, then tickets

Lightweight spec-driven flow: a SPEC.md with testable acceptance criteria, small tickets, test-first builds in parallel waves and a review against the spec.

Verified install Not agent-tested v1.0.0 MIT updated any
Equips
  • 1 1 Rules
  • 2 2 Skills
  • – 0 MCP

Spec-driven development was one of the most consistent practices among working developers this autumn, usually in a light form: write the spec with the agent, split it into tickets, build each ticket with a test, review against the spec. This loadout encodes that flow without a framework: when a spec is needed, what a testable acceptance criterion looks like, ticket rules that make parallel work safe, and what to do when the spec turns out to be wrong. It points to Spec Kit and OpenSpec for teams that want more.

What's in it

  • When a spec is required and when it is not
  • SPEC.md and TASKS.md templates with testable acceptance criteria
  • Interview skill: at most five questions at a time, each with a recommended answer
  • Implementation in dependency waves, test first, one commit per ticket
  • Spec drift rule: stop and update the spec instead of improvising
Level 1 · automated

Verification

Verified install

Checked at commit 316f4bc · 8 passed, 0 failed, 2 not applicable

CheckResultWhat we found
Listinglisting.yaml matches the schema and declares every file in the folder. Pass
Schema valid; 6 files declared, none missing or extra
  • tested.status: untested (agent tests are separate from Level 1)
Files parseJSON parses; SKILL.md and .mdc front matter is valid YAML with the fields each agent needs; code fences are closed. Pass All 6 files parse; front matter valid
AdaptersCLAUDE.md imports @AGENTS.md, GEMINI.md imports @./AGENTS.md, and both match the generator. Pass
CLAUDE.md and GEMINI.md import AGENTS.md and are up to date
  • CLAUDE.md: matches the generator
  • GEMINI.md: matches the generator
Install pathsEvery file lands where each agent documents it, with no collisions, and the laid-out project is re-discovered correctly. Pass
Correct paths for all 6 agents; layouts re-discovered
  • Claude Code: 5 files, 2 skills in .claude/skills/
  • Codex CLI: 4 files, 2 skills in .agents/skills/
  • Cursor: 4 files, 2 skills in .agents/skills/
  • Gemini CLI: 5 files, 2 skills in .agents/skills/
  • Antigravity CLI: 4 files, 2 skills in .agents/skills/
  • GitHub Copilot: 4 files, 2 skills in .agents/skills/
MCP configmcp.json is structurally valid, converts to each agent's format, declares no literal secrets, and referenced packages exist on npm/PyPI. Not applicable No MCP servers in this loadout
Safety scanThe intake scanner finds no credentials, risky shell, hidden Unicode or prompt-injection wording, and the listing's network flag is honest. Pass
Clean: no credentials, risky shell or hidden text
  • Scanner intake-precheck/1: verdict clean; network no (listing says no)
ReferencesLinks and file paths between the loadout's files resolve, including for each agent's installed layout. Pass 3 references between files resolve for every agent
Size limitsFile count and sizes are within the submission limits; SKILL.md bodies stay under 500 lines. Pass
6 files, 5.4 KB total; largest AGENTS.md 1.5 KB
  • Limits: 30 files, 32 KB per file, 128 KB total, 500 lines per skill or rule
LicenceA recognised SPDX licence, with the licence text available. Pass MIT, by Agent Loadout; text in the repository LICENSE
Starter buildA minimal fixture project with the loadout applied installs and builds or type-checks, and the loadout's own code examples compile. Not applicable
Not applicable: stack-agnostic workflow rules with no project or code to build
  • The loadout is a spec-driven workflow, two skills and templates for any stack; there is no starter project to compile.
  • Every other Level 1 check still runs on this loadout.

What this means: a script checked the files themselves: they parse, they install where each agent looks, any MCP config is sound, the safety scan is clean, references between files resolve, and, where a free and repeatable fixture exists, a small starter project builds with the loadout applied. No AI agent was run. Per-agent results ("tested with agent") are separate and stay untested until an agent actually runs.

Install

Choose your agent. Run the commands from your project root, or download a zip already laid out in the right folders.

Claude Code reads CLAUDE.md (imports AGENTS.md with @AGENTS.md) and skills from .claude/skills/.

Download zip
curl -fsSL --create-dirs -o AGENTS.md https://loadout.jnw-it.com/raw/spec-first-tickets/1.0.0/AGENTS.md
curl -fsSL --create-dirs -o CLAUDE.md https://loadout.jnw-it.com/raw/spec-first-tickets/1.0.0/CLAUDE.md
curl -fsSL --create-dirs -o .claude/skills/write-spec/SKILL.md https://loadout.jnw-it.com/raw/spec-first-tickets/1.0.0/skills/write-spec/SKILL.md
curl -fsSL --create-dirs -o .claude/skills/write-spec/references/spec-template.md https://loadout.jnw-it.com/raw/spec-first-tickets/1.0.0/skills/write-spec/references/spec-template.md
curl -fsSL --create-dirs -o .claude/skills/implement-spec/SKILL.md https://loadout.jnw-it.com/raw/spec-first-tickets/1.0.0/skills/implement-spec/SKILL.md
FileGoes to
AGENTS.mdAGENTS.md
CLAUDE.mdCLAUDE.md
skills/write-spec/SKILL.md.claude/skills/write-spec/SKILL.md
skills/write-spec/references/spec-template.md.claude/skills/write-spec/references/spec-template.md
skills/implement-spec/SKILL.md.claude/skills/implement-spec/SKILL.md

Already have an AGENTS.md or CLAUDE.md? The commands above overwrite it — download the file instead and merge the sections you want.

Files

Rules AGENTS.md Spec, ticket and implementation rules. 28 lines
Download Raw
# AGENTS.md: spec first, then tickets, then code

For any change bigger than a small fix, agree a written spec with the human before writing code, then implement it
as small tickets with checkable acceptance criteria.

## When a spec is required
- New feature, new endpoint or screen, schema change, cross-module refactor, or anything estimated over ~200 lines.
- Not required: bug fixes with a failing test, copy changes, dependency bumps, one-file refactors.

## Files
- Specs: `specs/<yyyy-mm-dd>-<slug>/SPEC.md`. Tickets: `TASKS.md` in the same folder. Both committed.
- The spec is the source of truth. If implementation reveals the spec is wrong, stop, update the spec and tell the human.

## Spec rules
- Problem and goal first; the solution second. Name what is out of scope.
- Acceptance criteria are observable and testable: "GET /api/orders?status=open returns only open orders, newest first".
  Not "orders are filtered correctly".
- List open questions instead of guessing. Do not start implementation while any are unanswered.
- Keep it short: one to two screens.

## Ticket rules
- Each ticket is independently testable and small (under ~200 changed lines), lists the files it touches, and maps to
  one or more acceptance criteria.
- Mark dependencies. Tickets with no shared files and no dependency can run in parallel.
- A ticket is done when its criteria pass in a test, not when the code compiles.

Use the `write-spec` skill to draft the spec and tickets, and the `implement-spec` skill to build them.
Adapter CLAUDE.md Imports AGENTS.md for Claude Code. 10 lines
Download Raw
# CLAUDE.md

@AGENTS.md

## Claude Code notes
- Skills from this loadout live in `.claude/skills/`: `write-spec`, `implement-spec`. Use them when their description matches the task.
- Follow AGENTS.md above; where this file and AGENTS.md disagree, AGENTS.md wins.

<!-- From the Agent Loadout "Spec first, then tickets" v1.0.0 — https://loadout.jnw-it.com/loadouts/spec-first-tickets/ -->
Adapter GEMINI.md Imports AGENTS.md for Gemini CLI. 10 lines
Download Raw
# GEMINI.md

@./AGENTS.md

## Gemini CLI notes
- Skills from this loadout live in `.agents/skills/`: `write-spec`, `implement-spec`. Use them when their description matches the task.
- Follow AGENTS.md above; where this file and AGENTS.md disagree, AGENTS.md wins.

<!-- From the Agent Loadout "Spec first, then tickets" v1.0.0 — https://loadout.jnw-it.com/loadouts/spec-first-tickets/ -->
Skill skills/write-spec/SKILL.md Research, interview and write SPEC.md and TASKS.md. 17 lines
Download Raw
---
name: write-spec
description: Interview the human and research the codebase to write SPEC.md and TASKS.md for a feature before any code. Use when asked to plan or build a non-trivial feature.
---

# Write a spec

1. **Research first, quietly.** Read the relevant code (delegate broad reading to a read-only subagent where available).
   Note existing patterns, data models and tests the feature must fit.
2. **Interview.** Ask the human at most five questions at a time, only ones the code cannot answer: users, edge cases,
   limits, what is out of scope. Offer a recommended answer with each question.
3. **Draft** `specs/<date>-<slug>/SPEC.md` from `references/spec-template.md`. Every acceptance criterion must be testable.
4. **Split into tickets** in `TASKS.md` (format in the template): small, file-scoped, mapped to criteria, dependencies marked.
5. **Review with the human.** Show the spec and tickets; list open questions. Change nothing in source code until the human
   approves the spec.
6. **Commit** the spec folder on its own: `docs(spec): <slug>`.
Skill file skills/write-spec/references/spec-template.md SPEC.md and TASKS.md templates. 35 lines
Download Raw
# SPEC.md template

```markdown
# <Feature name>
Status: draft | approved | done · Owner: <human> · Date: <yyyy-mm-dd>

## Problem
<who has the problem, what happens today, why it matters>

## Goal
<one or two sentences>

## Out of scope
- <explicitly not doing>

## Design
<data model changes, endpoints or screens, key decisions and the alternatives rejected>

## Acceptance criteria
- AC1: <observable, testable statement>
- AC2: ...

## Open questions
- Q1: <question> (recommended answer: <...>)
```

# TASKS.md template

```markdown
# Tasks for <feature>

- [ ] T1 <title> · covers AC1 · files: src/api/orders.ts, tests/api/orders.test.ts · depends on: none
- [ ] T2 <title> · covers AC2 · files: ... · depends on: T1
```
Skill skills/implement-spec/SKILL.md Build tickets test-first in waves and review against the spec. 22 lines
Download Raw
---
name: implement-spec
description: Build an approved SPEC.md ticket by ticket with tests for each acceptance criterion, in parallel where tickets are independent, then review against the spec. Use after a spec has been approved.
---

# Implement a spec

1. **Check approval.** `SPEC.md` status must be `approved` and open questions empty. Otherwise stop.
2. **Plan waves.** From `TASKS.md`, group tickets with no dependencies and no shared files into waves.
3. **Per ticket** (yourself, or one subagent or worktree per ticket in a wave):
   - Write the test for the ticket's acceptance criteria first and see it fail.
   - Implement until it passes; run the full test suite.
   - Tick the ticket in `TASKS.md` and commit: `feat(<slug>): T<n> <title>`.
4. **Between waves** pull in finished work and run the full suite before starting the next wave.
5. **Spec drift.** If a ticket cannot meet its criterion as written, stop that ticket, propose a spec change to the human,
   and continue only with unaffected tickets.
6. **Final review** against the spec, by a reviewer that did not write the code: every AC has a passing test, nothing out of
   scope was built. Set `Status: done` in `SPEC.md`.

Heavier frameworks exist if the team wants more structure: GitHub Spec Kit (`specify` CLI) and OpenSpec
(`npx @fission-ai/openspec`). Use them only if the repository already does; do not mix formats.

All files: source zip · Licence MIT · By Agent Loadout · First listed

Credits

Public work that inspired this loadout. The wording here is our own; follow the links for the originals.

Installing and testing

How do I install Spec first, then tickets in Claude Code?

From your project root, put AGENTS.md, CLAUDE.md, skills/write-spec/SKILL.md at .claude/skills/write-spec/SKILL.md, skills/write-spec/references/spec-template.md at .claude/skills/write-spec/references/spec-template.md, skills/implement-spec/SKILL.md at .claude/skills/implement-spec/SKILL.md. The "Claude Code" tab on this page has the curl commands, or download https://loadout.jnw-it.com/download/spec-first-tickets/claude-code.zip, which is already laid out. Do not overwrite an existing AGENTS.md or CLAUDE.md; merge it.

How do I install Spec first, then tickets in Codex CLI?

From your project root, put AGENTS.md, skills/write-spec/SKILL.md at .agents/skills/write-spec/SKILL.md, skills/write-spec/references/spec-template.md at .agents/skills/write-spec/references/spec-template.md, skills/implement-spec/SKILL.md at .agents/skills/implement-spec/SKILL.md. The "Codex CLI" tab on this page has the curl commands, or download https://loadout.jnw-it.com/download/spec-first-tickets/codex.zip, which is already laid out. Do not overwrite an existing AGENTS.md or CLAUDE.md; merge it.

How do I install Spec first, then tickets in Cursor?

From your project root, put AGENTS.md, skills/write-spec/SKILL.md at .agents/skills/write-spec/SKILL.md, skills/write-spec/references/spec-template.md at .agents/skills/write-spec/references/spec-template.md, skills/implement-spec/SKILL.md at .agents/skills/implement-spec/SKILL.md. The "Cursor" tab on this page has the curl commands, or download https://loadout.jnw-it.com/download/spec-first-tickets/cursor.zip, which is already laid out. Do not overwrite an existing AGENTS.md or CLAUDE.md; merge it.

How do I install Spec first, then tickets in Gemini CLI?

From your project root, put AGENTS.md, GEMINI.md, skills/write-spec/SKILL.md at .agents/skills/write-spec/SKILL.md, skills/write-spec/references/spec-template.md at .agents/skills/write-spec/references/spec-template.md, skills/implement-spec/SKILL.md at .agents/skills/implement-spec/SKILL.md. The "Gemini CLI" tab on this page has the curl commands, or download https://loadout.jnw-it.com/download/spec-first-tickets/gemini-cli.zip, which is already laid out. Do not overwrite an existing AGENTS.md or CLAUDE.md; merge it.

How do I install Spec first, then tickets in Antigravity CLI?

From your project root, put AGENTS.md, skills/write-spec/SKILL.md at .agents/skills/write-spec/SKILL.md, skills/write-spec/references/spec-template.md at .agents/skills/write-spec/references/spec-template.md, skills/implement-spec/SKILL.md at .agents/skills/implement-spec/SKILL.md. The "Antigravity CLI" tab on this page has the curl commands, or download https://loadout.jnw-it.com/download/spec-first-tickets/antigravity-cli.zip, which is already laid out. Do not overwrite an existing AGENTS.md or CLAUDE.md; merge it.

How do I install Spec first, then tickets in GitHub Copilot?

From your project root, put AGENTS.md, skills/write-spec/SKILL.md at .agents/skills/write-spec/SKILL.md, skills/write-spec/references/spec-template.md at .agents/skills/write-spec/references/spec-template.md, skills/implement-spec/SKILL.md at .agents/skills/implement-spec/SKILL.md. The "GitHub Copilot" tab on this page has the curl commands, or download https://loadout.jnw-it.com/download/spec-first-tickets/copilot.zip, which is already laid out. Do not overwrite an existing AGENTS.md or CLAUDE.md; merge it.

Has Spec first, then tickets been tested?

It passed the Level 1 automated install checks on 2026-10-17: the files parse, install to each agent's documented paths, and pass the safety scan. No AI agent has run it yet, so no agent pass or fail is claimed.

More for Claude Code, Codex, Cursor, Gemini CLI, Antigravity CLI and GitHub Copilot.