shipkit-spec

A feature-specification skill that turns a feature idea into structured requirements. It writes machine-readable JSON with Given/When/Then acceptance scenarios and edge cases.

In plain words
What is it for?
Use it before planning or implementing a feature. It helps define expected behavior, acceptance criteria, and less obvious failure cases.
Why use it?
It makes vague feature requests concrete and checks that the specification covers the systems and integrations needed for a functional result.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/stefan-stepzero/shipkit/shipkit-spec
Any agent
npx skills add stefan-stepzero/shipkit --skill shipkit-spec
Clone the repo
git clone --depth 1 https://github.com/stefan-stepzero/shipkit

Made for: Claude Code, Codex.

Per session 34 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 6,680 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00034 $0.06680
Opus 5 $0.00017 $0.03340
Sonnet 5 $0.00007 $0.01336
Haiku 4.5 $0.00003 $0.00668

Measured 2d ago against content hash b5b20acce4fb, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

shipkit-spec scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

install/skills/shipkit-spec/SKILL.md · 656 lines

How it starts

The opening of the file, as written. The whole thing — 656 lines — stays where its author put it; the contents beside it link to each section on GitHub.

shipkit-spec - Lightweight Feature Specification

Purpose: Transform feature descriptions into structured JSON specifications with Given/When/Then scenarios and comprehensive edge case coverage, creating clear acceptance criteria for implementation. A no-gaps completeness gate (Step 5) ensures the spec names every application, datastore, contract, and integration it implies — so "done" can't mean green-but-not-functional.

Output format: JSON -- structured data readable by Claude, machine-readable by other tools, and queryable by other skills.


When to Invoke

User triggers:

  • "Spec this feature"
  • "Create a specification"
  • "What are the requirements?"
  • "Define the feature properly"
  • User describes a new feature idea

Before:

  • /shipkit-plan (this creates the spec that planning needs)
  • implement (no skill needed) (need spec before implementing)

Workflow position:

  • After feature concept is clear
  • Before implementation planning
  • Can be used standalone for requirement clarification

Prerequisites

Recommended:

  • Stack defined: .shipkit/stack.json (to understand tech constraints)
  • Schema defined: .shipkit/schema.json (to understand data model)

Optional but helpful:

  • Architecture decisions: .shipkit/architecture.json
  • Existing specs: .shipkit/specs/todo/*.json, .shipkit/specs/active/*.json (check for similar patterns)

If missing: Infer tech stack from codebase signals (package.json, imports, config files); return gaps_found if critical context cannot be derived (fork context — no user prompt)


Arguments

If $ARGUMENTS is provided (e.g. /shipkit-spec user login flow), use it as the initial feature description. Skip Question 1 (Feature Type prompt) and infer the type from the description. Proceed directly to deeper clarifying questions.

If $ARGUMENTS is empty, proceed normally from Step -1.


Process

Completion Tracking

After clarifying the feature (Step 1), create tasks:

  • TaskCreate: "Read context + explore affected code (2 agents)"
  • TaskCreate: "Archive existing spec (if overwriting)"
  • TaskCreate: "Generate spec JSON (all 20+ fields)"
  • TaskCreate: "Validate completeness (checklist + no-gaps gate)"
  • TaskCreate: "Write spec to disk"
  • In batch mode, for EACH remaining roadmap feature: TaskCreate: "Spec: {feature-name}"

Read the full file on GitHub · 656 lines

Files

What ships with it

4 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 656 lines · 34 tokens per session scan A b5b20acce4fb

Subscribe to this mod's changes

shipkit-spec is a skill published in the GitHub repository stefan-stepzero/shipkit (1 stars, last pushed 1mo ago), licensed MIT. It adds 34 tokens to every session and 6,680 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.