Skip to content
STAR ON GITHUB

Spec-to-Ship

NOW STABLE V0.2.x

Your AI coding workflow
with engineer structure.

Spec-to-Ship (s2s) is the stage-gated engineered workflow for AI-assisted development. It brings AI conversations into engineering deliverables.

⚡ Chat-Native ⬡ Isolated Runtime ✓ Stage-Gated
zsh — 80x24
$ brew tap kiniuncorp/s2s
$ brew install s2s
...
$ s2s init
┌─ Spec-To-Ship (s2s) v0.2.x ─────────────────
│ Governed AI-assisted software delivery
│ Target: ~/my-project
└──────────────────────────────────────────────
✓ Git repository detected
✓ Governance files installed in .s2s/
✓ Configuring stage agents...
  pm → research → design → engineering
✓ Stage agents ready
✓ Gates configured and ready
▶ You are now ready to ship production-grade code with AI.
▶ Open your AI chat and happy AI-coding!

Stop vibe coding.

Define the spec, run the stages, ship with confidence — every time.

How s2s Works

From Intent to Code

s2s enforces a stage-gated engineered workflow for AI development, ensuring every code change has clear lineage back to requirements.

ORCHESTRATOR Intent classifier Dynamic stages routing
ORCHESTRATOR Intent classifier Dynamic stages routing

The Orchestrator is s2s's central intelligence layer. It receives your natural language request, classifies the intent across 9 work types, and builds the minimum stage route needed — dispatching only the stages your change actually requires.

Product Manager

Describe what you want to build. s2s captures the intent and classifies it before any code is touched.

research

The agent explores the codebase, maps dependencies, and breaks the work into slices — bounded units tied to your requirements.

design

Architecture decisions are locked in per slice before any code is written. Gates prevent skipping ahead.

engineering

Each slice is executed in an isolated git worktree. Your main branch stays untouched until you approve.

↻ engineering → engineering_exec per-slice iteration

Chat-native by design

Works where you already work

No new UI. No new editor. s2s runs alongside your preferred AI chat tool — Claude, Codex, or any other. Each stage injects exactly the right context into your conversation, so the model always knows what to build, why, and within what scope.

  • Focused, bounded context package per stage
  • No hallucinated scope or stray dependencies
  • You approve the gates — AI does the work
chat — without s2s
you add auth to the app
ai Sure! I'll modify the database schema, update
the API routes, the login page, session middleware,
email verification, OAuth integration — oh and I'll
refactor the user model while I'm at it.
⚠ scope unknown — AI decides blast radius
chat — with s2s
you add auth to the app
┌─ Orchestrator ────────────────────────────
│ Intent: new_feature
│ Route: pm → research → design → engineering
└───────────────────────────────────────────
▶ pm spec captured → spec-a1b2
▶ research scope bounded to src/auth/ · 2 slices
▶ design interfaces locked · gate pending
[s2s] Gate: gate-c3d4 · Review the diff. Tell your AI when ready.

Your AI does the work — s2s makes sure it stays on track.

Works with your stack Drop-in alongside any AI coding client — no migration, no lock-in.
Claude Code
Codex Desktop
Codex CLI
OpenCode CLI
Any AI Chat / CLI
zsh — s2s gate flow
▶ Executing slice: auth-flow-jwt
✓ Worktree: .s2s/worktrees/auth-flow-jwt
✓ Branch: s2s/auth-flow-jwt
✓ Main: untouched
Modified src/auth/jwt.ts +124 -0
Modified src/auth/middleware.ts +45 -12
Created src/auth/types.ts +38 -0
[s2s] Gate: gate-a1b2c3
Review the diff. Tell your AI when ready.
────────────────────────────────────────────
you looks good, proceed
✓ gate-a1b2c3 approved
✓ Changes merged to main
✓ Worktree cleaned up

AI proposes. You decide.

You're always in control

Every code change runs in an isolated git worktree on a dedicated branch. Your main branch stays clean until you review the diff and tell your AI to proceed. Nothing merges without a deliberate human decision.

  • Isolated worktree per slice — main branch untouched
  • Full diff review before anything is merged
  • Gates enforce the human-in-the-loop at every stage
  • Worktree cleaned up automatically after approval
Token Efficiency

Less overhead. Lower cost.

s2s handles orchestration, routing, and state management in the binary — zero LLM tokens charged. Your AI only sees focused context for the work it actually needs to do.

Without s2s
Orient at session start ~800 tok
Reconstruct prior decisions ~1,200 tok
Workflow reasoning ~600 tok
Session overhead ~2,600 tok
Per 2-stage feature. Scales with project complexity.
~94% less overhead
With s2s
Read live.md context ~150 tok
Workflow reasoning 0 tok
State reconstruction 0 tok
Session overhead ~150 tok
AI gets a focused package — not the full conversation history.
These run in the s2s binary — zero tokens, every run:
intent classification stage routing context packaging state management worktree isolation gate lifecycle git delivery artifact storage quality checks
Why s2s

Engineered for Reliability

The difference between an AI that guesses and one that follows a governed engineering workflow.

Challenge Without s2s With s2s
Scope control AI decides what to build and how far to go Intent classified → minimum stage route selected
Execution safety Code lands directly in your workspace Isolated git worktree per slice — main stays clean
State & audit trail Lost when the chat window closes Persistent specs, plans, and diffs in .s2s/
Human oversight Ad-hoc, no approval structure Structured gates — you review the diff, you decide
AI client Locked to one tool or workflow Works with Claude Code, Codex, OpenCode, any chat
Open Source

Built in the open.
Governed by design.

s2s is MIT-licensed and community-driven. The governance layer, the stage agents, and the gate protocol are all auditable — because engineering standards for AI should be transparent.

v0.2.x CURRENT STABLE
MIT LICENSE
4 STAGES
9 INTENT TYPES

Ship with structure.
Starting today.

Install in seconds. Works with your existing AI chat tool. No new UI, no lock-in — just a governed workflow for every change.

$ brew tap kiniuncorp/s2s && brew install s2s
$ s2s init
✓ Open Source · MIT ✓ No Lock-in ✓ Claude Code · Codex · OpenCode · any chat