sdlc-kit
Anthropic’s AI-native SDLC playbook, as plain files + shell.
Six stages, one artifact each, human approval gates where they count. Your agent reads the files, runs the gates, and stops when a gate is closed. No runtime, no hooks, no lock-in.
pi·Claude Code·Codex CLI·Gemini CLI·Cursor
any of them can read files and run shell commands.
$ ~/sdlc-kit/gates/check-gate.sh spec .sdlc/work/payments/spec.mdGATE CLOSED: no approval for 'spec' of 'payments'.Needed: gates/approve.sh spec … (human decision — AGENTS.md rule 3) $ ~/sdlc-kit/gates/approve.sh spec .sdlc/work/payments/spec.md --delegated # after "approve" in chatAPPROVED: spec of payments (.sdlc/work/payments/spec.md)Recorded on disk. Approval records are gitignored — the trail is .sdlc/approvals/, not git history. $ ~/sdlc-kit/gates/check-gate.sh spec .sdlc/work/payments/spec.mdGATE OPEN: spec (approved @ 2026-08-30T09:12:44Z)
Six stages. One artifact each. Human gates where they count.
Every stage reads its skill file, produces one artifact, and stops at the gate. You approve intent, spec, and the release. A routine plan is approved by an adversary review; risky plans escalate to you. Stage 6 turns an incident into the next intent.
-
Intent intent.md
The agent explores first, then grills you until the intent is exact and evidenced.
- human gate · approve intent
-
Spec spec.md
Generated from the intent, adversarially reviewed before it reaches you.
- human gate · approve spec
-
Plan plan.md
Read-only: which files change, in what order, with what proof it worked.
- tiered gate · human on risk
-
Build code + tests
The build follows the plan, with verification at each step.
- checks green · no gate
-
Ship evidence.md
Adversarial review plus evidence; you approve the release by reading what was flagged.
- incident triggers · no gate
-
Maintain intent.md + lesson
An incident becomes a diagnosed intent and a recorded lesson, not a vague complaint.
- writes the next intent.md
A production issue in stage 6 writes a new intent.md. People triage and review the work; they no longer start it.
What the gates do
The kit adds only the files, scripts, and gates needed to control the next step.
- Grilled intents
- Stage 1 explores before it asks, then labels every claim in
intent.md[verified]with evidence or[assumed]with a reason. Users can be mistaken; this is the cheapest stage to find out. - Approvals on the record
approve.shwrites a plain record — stage, artifact, time, mode — kept on disk in.sdlc/approvals/;check-gate.shprintsGATE CLOSEDuntil it exists.- Delegation stays visible
- At human gates, an agent may run the approval only on your explicit words in chat; the record then carries
mode: delegated-chat. A plan approved by adversary review carriesmode: agent-adversary. Either way, the keystrokes were never silent. - Fresh-context review
- A verifier, adversary, and researcher run in fresh contexts. None authored the work, and they report findings without changing files.
- AS-IS → TO-BE specs
- Specs pair what actually happens today (file:line evidence) with what happens after the change. The delta between the columns is the change.
- Memory that stays bounded
- Record mistakes in the ≤50-line
INDEX.md. Promote lessons into skills when doing so can prevent the same mistake. - Plain speech, by rule
- Rule 8: every message to a human starts with context, keeps to short active sentences, and ends with the one decision you owe.
- Every run gets an ending
close.shrecordsshipped,abandoned,dead-end, orhanded-off, then archives the feature and its approvals to.sdlc/archive/. Failed work requires a lesson; handoffs require the external ticket or PR.
Three commands, then hand it your harness
No installer, no daemon. The kit directory stays framework-only; your project gets a .sdlc/ whose intent, plan, and memory version with your code.
-
git clone https://github.com/cskwork/sdlc-kit ~/sdlc-kit
Once per machine. That’s the whole install. On Windows, run this and every later kit command in Git Bash or WSL.
-
cd /path/to/project
~/sdlc-kit/init.sh
Seeds
.sdlc/(work, approvals, memory, config) and adds the approval and evidence paths to your.gitignore. Then fill in your real build, test, and lint commands in.sdlc/config.md. -
tell your harness:
“read ~/sdlc-kit/AGENTS.md and follow it”
One pointer line in your project’s agent file does it. Pick your harness below.
| Harness | How |
|---|---|
| pi | ln -s ~/sdlc-kit/AGENTS.md .sdlc/SDLC.md, then tell pi to run the SDLC in that file, or add a pointer line to your project AGENTS.md |
| Claude Code | Add to project CLAUDE.md: For SDLC work, read ~/sdlc-kit/AGENTS.md and follow it. |
| Codex CLI | Same one-liner in project AGENTS.md |
| Gemini CLI | Same one-liner in GEMINI.md |
| Anything else | Paste AGENTS.md into the session; the contract is files + scripts, not harness features |
Honest limit: a record, not a lock
Approval records are plain markers. They do not detect later edits and do not prevent a process from forging records. They are gitignored, so the audit trail is the .sdlc/approvals/ files on disk plus the agent rules, not git history. A fresh clone carries none of them; re-cloning mid-feature means approving again.