Getting started¶
From clone to a first gated commit.
Install¶
claude plugin marketplace add PavelGuzenfeld/agent-sdlc
claude plugin install agent-sdlc@agent-sdlc
git clone https://github.com/PavelGuzenfeld/agent-sdlc
cd agent-sdlc
./install.sh --deps
- The plugin ships the skills, commands and hooks.
--scope useris the default;--scope projector--scope locallimits it to one repo. - To turn a user-scope install off in one repo, put
{"enabledPlugins": {"agent-sdlc@agent-sdlc": false}}in that repo's.claude/settings.local.json. Other repos keep it. Checked withclaude plugin liston Claude Code 2.1.283: it holds from every subdirectory. The same line in.claude/settings.jsonheld only when run from the directory holding.claude/, so don't rely on it. --depsinstallsgit gh jq docker python3 ast-grep pytest pre-commit, plusmutation-gateitself.install.shalso renders the commands as Codex skills under~/.codex/skills. It installs nothing into~/.claude;--target claudeexits and prints the plugin commands above.- An older
install.shlinked into~/.claudeand merged hooks into~/.claude/settings.json. Alongside the plugin those hooks fire twice../install.sh --uninstall-legacyremoves only what it added. - Rerunning it changes nothing.
Verify it worked¶
tests/install.shchecks the Codex tree and the legacy uninstall against a throwaway$HOME. Read it if something here doesn't match.
First real use¶
Start a Claude Code session and park an aside with the ps skill:
- The line goes to a scratchpad file and the session carries on.
- A skill is a
SKILL.mdfile Claude reads on demand, not a program it runs.
Turn on the gate in a repo¶
Three steps, each independent:
| Step | Turns on | How |
|---|---|---|
Add .mutation-gate.toml |
Gating at every session Stop | Even an empty file works; see Config |
| Wire the pre-commit hooks | Gating at every commit | See Hooks and tools |
mutation-gate rules sync |
The rules, as .claude/rules/*.md and AGENTS.md |
Only writes files; gates nothing |
f.py: 1 candidate test file(s), 2 mutant(s)
test tests/test_f.py
mut 2:11: x > 1 => x >= 1
mut 2:15: 1 => 2
--dry-runlists the tests and mutants it would run, and runs nothing.- When it blocks you, see Gate.