local-sdlc-kit
A small, harness-neutral AI-native SDLC you can drop into any git project.
Every non-trivial change goes through six stages. Each stage ends in a committed file, and "done" is decided by a gate command, not by opinion.
intent -> spec -> plan -> test -> code -> review
| | | (red) |
intent.md spec.md plan.md seen failing REVIEW.md gate: python3 scripts/sdlc_check.py
Works with Claude Code, Codex, Gemini CLI, GitHub Copilot, Cursor and MiniMax Code: the process lives in AGENTS.md and plain
SKILL.md files, and every other harness file only points there.
Why
- State survives the chat. Intent, spec and plan are files in git, so the work outlives
/clear, context compaction and a switch of agent. - Tests come first, and it is proven.
sdlc_check.py --redexits 0 only when the new test fails now, for the right reason. - Gates decide, not opinion. A plan box is ticked only after the gate exited 0 in the same session; review is done by a fresh agent that sees only the artifacts and the diff.
- Nothing to learn per tool. One
AGENTS.md, one skill directory, thin adapters. Standard library only, POSIX only.
Quick start
pip install local-sdlc-kit
cd my-project
local-sdlc-kit-install # then start with /sdlc (Claude Code) or "use the sdlc skill" (others)
The installer never overwrites a file your project owns and never deletes anything. Not on PyPI yet? Use the git-clone form under Install in detail. Full documentation: https://senssei.github.io/local-sdlc-kit/
Install in detail
The gate runner needs Python 3.11+; on an older python3 it re-runs itself under a python3.11 or newer found on PATH.
pip install local-sdlc-kit # or from a git clone: python3 ~/local-sdlc-kit/install.py
cd my-project
local-sdlc-kit-install # all harnesses; same flags as the git-clone shim
local-sdlc-kit-install --harness claude,codex # a subset
local-sdlc-kit-install --dry-run # see what it would do (it cannot predict OS errors)
Git-clone form (works without a PyPI release):
git clone <this repo> ~/local-sdlc-kit
cd my-project
python3 ~/local-sdlc-kit/install.py # the top-level shim re-exports sdlc_kit.install.main
python3 ~/local-sdlc-kit/install.py --harness claude,codex
python3 ~/local-sdlc-kit/install.py --dry-run
The git-clone shim and the PyPI wheel expose the same installer with the same flags. Both produce the same files in the target project.
Then fill in three things, by hand or by asking an agent to do it:
AGENTS.md: the<!-- TODO -->parts (project, commands, project rules).sdlc.toml: the test command, the one-test command for--red, optional extra checks and the changelog rule.intent.mdandspec.md: the problem, constraints, non-goals, invariants. The operator approvesintent.md.
Optional: git config core.hooksPath .githooks runs the gate before every commit.
What you get
| Path | Owner | Role |
|---|---|---|
AGENTS.md |
project | The process table, the process rules, and your project rules. The single source of truth |
sdlc.toml |
project | Your gate: commands for the checks and for running one test |
intent.md, spec.md, plan.md, REVIEW.md |
project | The stage artifacts (blank templates) |
.agents/skills/sdlc*/SKILL.md |
kit | Five skills: sdlc (find the stage), sdlc-plan, sdlc-implement, sdlc-review, sdlc-release |
scripts/sdlc_check.py |
kit | The gate runner and --red |
.githooks/pre-commit |
kit | Opt-in hook calling the runner |
CLAUDE.md, GEMINI.md, MCODE.md, .github/copilot-instructions.md |
project | Adapters, a few lines that point to AGENTS.md |
.cursor/rules/sdlc.mdc, .claude/skills (symlink) |
kit | Cursor rule, Claude Code skill discovery |
Kit-owned files are refreshed by install.py --update, which prints a diff of what it replaced, so put your customisations in
AGENTS.md (project-owned), not in the skills. Project-owned files are created once and never overwritten; --update only
prints a diff against the current template. The installer never deletes anything.
If your project already has an AGENTS.md, CLAUDE.md, GEMINI.md or Copilot instructions, they are left alone and the installer
ends with a manual step needed list: merge the process section into your AGENTS.md, and make the adapters point to it.
Documentation
Full documentation: https://senssei.github.io/local-sdlc-kit/
- Process: the six stages and the five skills.
- Harnesses: how Claude Code, Codex, Gemini CLI, GitHub Copilot, Cursor and MiniMax Code pick the process up.
- The gate:
sdlc.toml,sdlc_check.pyand the red-first--redproof.
Develop the kit
python3 sdlc_kit/sdlc_check.py # compile + tests
python3 -m build # sdist + wheel into dist/
python3 -m twine check --strict dist/*
pip install -e ".[docs]" && mkdocs serve # preview the documentation site
See AGENTS.md, intent.md, spec.md and plan.md in this repository: the kit follows its own process.
Releasing
Releases use PyPI trusted publishing (no tokens), TestPyPI first, then PyPI from a v<__version__> tag. The procedure is in
Releasing.
License
Release files for local-sdlc-kit 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| local_sdlc_kit-0.1.0.tar.gz | 37.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| local_sdlc_kit-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 80.9 kB
Release files / local_sdlc_kit-0.1.0.tar.gz
| Download URL | local_sdlc_kit-0.1.0.tar.gz |
|---|---|
| Size | 37.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f403a784446d1c9e0976ac58c4c67d1ef1b66aedd802274e02d78c853d463296
|
|
BLAKE2b-256 checksum How to use checksums |
68b0ccc9a4ace3eeadeb8eb4ebd10fb9c5c5703adffc342de5d6dc3db4af2a4e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logRelease files / local_sdlc_kit-0.1.0-py3-none-any.whl
| Download URL | local_sdlc_kit-0.1.0-py3-none-any.whl |
|---|---|
| Size | 43.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bda7a685b754761af7e477bd8199fc0f854de1ded431e67e33a3981c55b6ad81
|
|
BLAKE2b-256 checksum How to use checksums |
b3a18020cef43d11b4d21e892e46209c2776daffda5299c69cc3334a9fc2ccc4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency log