{"id":49308642,"url":"https://github.com/lantisprime/claude-sdlc","last_synced_at":"2026-04-26T11:02:37.165Z","repository":{"id":352163710,"uuid":"1214098192","full_name":"lantisprime/claude-sdlc","owner":"lantisprime","description":"8-phase SDLC workflow plugin for Claude Code — human-in-the-lead gates, surgical edits, stack-agnostic hooks.","archived":false,"fork":false,"pushed_at":"2026-04-25T07:49:02.000Z","size":522,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-25T08:32:09.303Z","etag":null,"topics":["agent-framework","agentic-coding","agentic-workflow","claude-ai","claude-code","claude-code-plugin","claude-code-skills","human-in-the-loop","mcp","sdlc"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lantisprime.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-18T05:47:32.000Z","updated_at":"2026-04-25T07:49:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lantisprime/claude-sdlc","commit_stats":null,"previous_names":["lantisprime/claude-sdlc"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lantisprime/claude-sdlc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lantisprime%2Fclaude-sdlc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lantisprime%2Fclaude-sdlc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lantisprime%2Fclaude-sdlc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lantisprime%2Fclaude-sdlc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lantisprime","download_url":"https://codeload.github.com/lantisprime/claude-sdlc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lantisprime%2Fclaude-sdlc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32294591,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T09:34:17.070Z","status":"ssl_error","status_checked_at":"2026-04-26T09:34:00.993Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-framework","agentic-coding","agentic-workflow","claude-ai","claude-code","claude-code-plugin","claude-code-skills","human-in-the-loop","mcp","sdlc"],"created_at":"2026-04-26T11:02:36.327Z","updated_at":"2026-04-26T11:02:37.156Z","avatar_url":"https://github.com/lantisprime.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SDLC Plugin for Claude Code\nA governance layer for AI-assisted software delivery. Plan, scope, approve, build, test, release — with human sign-off at every gate.\n\n## Why this exists\n\nclaude-sdlc is a **governance layer for AI-assisted software delivery**. It wraps the coding agent and gates every phase of the SDLC: plan, scope, approve, build, test, release.\n\nClaude Code is fast. Sometimes too fast. This plugin trades a little velocity for a lot of discipline:\n\n- No code written before a plan exists.\n- No file touched that is not listed in the plan.\n- No phase advanced without a human signature.\n- No build merged without a traceable work item (REQ ID, ticket, or signed CR).\n\nIt serves teams that need to answer:\n\n- Was there an approved plan before code changed?\n- Was the change within scope?\n- Which requirement does this code satisfy?\n- Who signed off, and against what?\n- What changed after approval?\n\nMost AI coding tools help write code, or review it after. claude-sdlc controls the work *before* code is written, and traces it to release. **Who it's for:** teams shipping software under audit, regulation, or formal change control — financial services, healthcare, government, telecommunications, regulated SaaS, internal enterprise platforms, and consulting delivery.\n\nIf any of that adds friction you would rather avoid, this plugin is not for you. Specifically, **do not use this plugin for**:\n\n- Spikes, prototypes, or exploratory work you plan to throw away\n- Solo-developer or early-stage-startup work optimizing for speed over traceability\n- Research and prototyping where iteration speed is the primary goal\n- Tasks where no clear requirements exist yet (Phase 2 will halt repeatedly)\n\nSee [docs/when-not-to-use.md](docs/when-not-to-use.md) for the full list.\n\nFor how this fits an enterprise engineering organization — role shifts, cost mechanics, audit evidence, and what stays human-in-the-lead — see [docs/claude-sdlc-enterprise-adoption.md](docs/claude-sdlc-enterprise-adoption.md).\n\n## Core principles\n\nEach principle below is essential. The plugin is built around them; changes that violate them usually feel like simplifications but aren't.\n\n1. **Human in the lead, always.** Subagents and hooks never advance a phase on their own.\n2. **Reduce cognitive load.** Artifacts, prompts, and gate summaries surface the essential signal, not everything knowable. Every new field, hook output, or subagent must justify itself by shrinking what the human must hold in their head.\n3. **Plan before code.** `plan-gate.sh` blocks `Edit`/`Write` when no plan exists for the task.\n4. **Surgical edits.** Only plan-listed files and functions are modified. Adjacent functions are never touched. \"While I'm here\" cleanups are a known failure mode.\n5. **Work-item traceability.** Every build references a REQ ID (new work), a ticket (bug), or a signed change request (scope change).\n6. **Graceful degradation.** No Git? No ticket system? No observability platform? The plugin writes local markdown/JSON artifacts and surfaces the gap. It never silently skips a check.\n7. **Stack-agnostic.** Formatter, linter, test runner, scanners — all live in `config/tools.json`. Nothing is hardcoded.\n\n## At a glance\n\nThe 8-phase workflow:\n\n```mermaid\nflowchart LR\n    WI[Work item\u003cbr/\u003eREQ · ticket · CR] --\u003e P1\n    subgraph Discovery\n        P1[1 · Plan\u003cbr/\u003e/plan] --\u003e P2[2 · Analyze\u003cbr/\u003e/analyze] --\u003e P3[3 · Design\u003cbr/\u003e/design]\n    end\n    subgraph Construction\n        P4[4 · Build\u003cbr/\u003e/build] --\u003e P5[5 · Test\u003cbr/\u003e/test]\n    end\n    subgraph Operations\n        P6[6 · Deploy\u003cbr/\u003e/deploy] --\u003e P7[7 · Support\u003cbr/\u003e/support]\n    end\n    P3 --\u003e P4\n    P5 --\u003e P6\n    P7 -.-\u003e P8[8 · Docs\u003cbr/\u003ecross-cutting]\n    FF([/fix-fast\u003cbr/\u003ecollapses Plan+Analyze+Design]) -.-\u003e P4\n\n    classDef disc fill:#a5d8ff,stroke:#1e1e1e,color:#1e1e1e\n    classDef cons fill:#b2f2bb,stroke:#1e1e1e,color:#1e1e1e\n    classDef ops fill:#ffd8a8,stroke:#1e1e1e,color:#1e1e1e\n    classDef docs fill:#eebefa,stroke:#1e1e1e,color:#1e1e1e\n    classDef fast fill:#ffc9c9,stroke:#1e1e1e,color:#1e1e1e,stroke-dasharray: 5 5\n    classDef item fill:#fff3bf,stroke:#1e1e1e,color:#1e1e1e\n    class P1,P2,P3 disc\n    class P4,P5 cons\n    class P6,P7 ops\n    class P8 docs\n    class FF fast\n    class WI item\n```\n\nHow the pieces connect:\n\n```mermaid\nflowchart TB\n    H((Human — lead)) \u003c--\u003e|prompts · approvals| CC[Claude Code session]\n    CC --\u003e CMD[Slash Commands\u003cbr/\u003e/plan /analyze /design /build /test\u003cbr/\u003e/deploy /support /docs /review /fix-fast]\n    CMD --\u003e|loads| SK[Skills\u003cbr/\u003e8 phase + surgical-edit, minimal-code,\u003cbr/\u003escoping, security-review,\u003cbr/\u003egate-signoff, api-integration]\n    SK --\u003e|delegate| AG[Subagents\u003cbr/\u003earchitect · test-designer\u003cbr/\u003esecurity-reviewer · observability\u003cbr/\u003epropose only — never advance a phase]\n    SK --\u003e|shaped by| TPL[Templates\u003cbr/\u003eplan · gate · sign-off · requirements\u003cbr/\u003etech-spec · test-case · ticket\u003cbr/\u003edefect · change-request · deployment]\n    SK --\u003e|writes| ART[(Artifacts under .claude/sdlc/\u003cbr/\u003eplans · gates · followups\u003cbr/\u003etickets · defects · change-requests)]\n\n    CC -.-\u003e|every tool call| HK\n    subgraph HK [Hooks — intercept tool calls · block vs. warn]\n        direction LR\n        PRE[PreToolUse\u003cbr/\u003eplan-gate BLOCK\u003cbr/\u003ework-item-validation\u003cbr/\u003ebash-safety]\n        POST[PostToolUse\u003cbr/\u003ediff-scope-check\u003cbr/\u003eadjacent-function-detector\u003cbr/\u003eformat-on-write\u003cbr/\u003esecret-scan BLOCK]\n        STOP[Stop\u003cbr/\u003emodified-code-test-gate\u003cbr/\u003ephase-gate · token-tracker]\n        SESS[SessionStart\u003cbr/\u003eenv-detect]\n    end\n    HK -.-\u003e|parses| ART\n    CFG[config/tools.json\u003cbr/\u003eformatter · linter · runner\u003cbr/\u003ecoverage · scanners] -.-\u003e|read by| HK\n    CFG -.-\u003e|read by| SK\n```\n\nCommands load skills, skills delegate to bounded subagents and write artifacts shaped by templates. Hooks intercept every tool call — blocking on severe issues, warning otherwise — and parse the artifacts back on later calls. `config/tools.json` keeps the plugin stack-agnostic.\n\n## Prerequisites\n\nThis plugin runs inside Claude Code — it has no standalone runtime.\n\n| Requirement | Notes |\n|---|---|\n| **Claude Code** | Required. [Install Claude Code](https://docs.anthropic.com/en/docs/claude-code). All commands, skills, and hooks run inside a Claude Code session. |\n| **Bash** | macOS and Linux: built-in. **Windows:** [Git Bash](https://git-scm.com/downloads) (included with Git for Windows) or WSL2 — all hooks are bash scripts and will not run in cmd or PowerShell. |\n| **Git** _(recommended)_ | Required for scope-check and diff hooks. The plugin degrades gracefully without it, but file-scope and function-scope enforcement is skipped. |\n\n## Install\n\nClone the repo and install as a local plugin:\n\n```bash\n# pin to the latest stable release (recommended)\ngit clone --branch v1.0.0 https://github.com/lantisprime/claude-sdlc.git\n\n# or clone main for the latest unreleased changes\ngit clone https://github.com/lantisprime/claude-sdlc.git\n# then, from your project repo, load it via Claude Code's /plugin command\n```\n\nSee [Claude Code's plugin docs](https://docs.claude.com/en/docs/claude-code/plugins) for the current install flow — plugin distribution is still evolving.\n\n## Quick start\n\n\u003e For a detailed walkthrough with scenarios, prerequisites, and exact user inputs at each step, see [docs/USER-MANUAL.md](docs/USER-MANUAL.md).\n\nFrom inside a repo that has this plugin installed:\n\n**New users — start here:**\n```bash\n/start\n# auto-detects stack · creates .enabled · drafts scope + plan · hands off to /plan\n```\n\n**Experienced users — skip straight to plan:**\n```bash\n/plan \"Add rate-limit headers to the public API\"\n# writes .claude/sdlc/plans/\u003cslug\u003e.md — classification, scope, estimate, tech stack\n# human reviews + signs; plan-gate.sh now permits edits\n\n/analyze    # requirements with stable REQ IDs\n/design     # architecture + tech specs\n/build      # code + unit tests — scoped strictly to plan\n/test       # execution report, defects\n/deploy     # deployment record\n/support    # observability wiring\n/docs       # docs, traceability matrix, changelog\n```\n\nEach command refuses to run until the prior phase's gate file exists and is signed.\n\n## Configure for your stack\n\n**First time?** Run `/start` — it auto-detects your repo, CI, stack, and tracker, then writes `config/tools.json` for you as part of opt-in activation. You don't need to run `/configure` separately unless you want to customise beyond what auto-detection provides.\n\n**Already activated and need to adjust settings:**\n\n```bash\n/configure\n```\n\n`/configure` walks you through each tool slot and rewrites `config/tools.json`. It's also auto-invoked when a skill detects a missing required key (Layer 2).\n\nAlternatively, copy the example config and fill it in by hand:\n\n```bash\ncp config/tools.example.json config/tools.json\n```\n\nEvery hook and skill reads from `config/tools.json`. Leave a value as `null` to skip that check. Tunable knobs include:\n\n- `formatter`, `linter`, `test_runner`, `security_scanner`, `secret_scanner`\n- `coverage.threshold_percent`\n- `artifact_format_fallback` — `markdown` or `json` when rich integrations are missing\n- `adjacent_function_detection` — `git-hunk-headers` (default) or `tree-sitter`\n- `token_tracking.enabled` — when `true`, the `Stop` hook writes per-phase raw token counts to `.claude/sdlc/token-log.json` and `token-history.jsonl` for optimizing skill/prompt cost (default `false`)\n\n## External connectivity\n\nThe plugin talks to outside systems through four channels. Availability is auto-detected by [`env-detect.sh`](hooks/env-detect.sh) on `SessionStart` and written to `.claude/sdlc/env.json`; the `integrations` block in [`config/tools.json`](config/tools.example.json) lets you override the choices.\n\n| Category | System | Transport |\n|---|---|---|\n| **VCS** | Git | Local `git` CLI |\n| | GitHub, GitLab, Bitbucket | Detected via `git remote`; operations use the host's CLI (e.g. `gh`) or native APIs |\n| **Issue tracker** | GitHub / GitLab / Bitbucket Issues | Same transport as VCS |\n| | Jira, Linear | **MCP** (user-provided server) |\n| **CI** | GitHub Actions, GitLab CI, CircleCI, Jenkins | Filesystem sniffing only; the plugin never triggers pipelines |\n| **Observability** | Grafana, Datadog | **MCP** (user-provided server) |\n| | CloudWatch | Infrastructure-as-code proposals — no direct API calls |\n| **UX tooling** | Figma | **MCP** (user-provided server) |\n| **Development-time APIs** | OpenAPI / GraphQL / gRPC endpoints under integration | Direct HTTP probe via the tool configured in `config/tools.json` (see [`api-integration`](skills/api-integration/SKILL.md)) |\n\n**Is MCP required?** No. MCP is used selectively for SaaS platforms without a ubiquitous CLI — Jira/Linear, Grafana/Datadog, Figma. The plugin references these connectors but does not ship or configure MCP servers; you wire those up externally in your Claude Code install. Every MCP-mediated state change is **propose-only** — no MCP tool can advance a phase or auto-apply a production change.\n\n### What happens without it\n\nPer the *graceful degradation* principle, the plugin never silently skips a check when a system is absent — it falls back to local artifacts and surfaces the gap in the phase summary.\n\n| Category | Fallback when nothing is configured or reachable |\n|---|---|\n| **VCS** | Plugin still runs. `env.json` records `vcs: null`; artifacts land locally under `.claude/sdlc/`. Work-item traceability falls back to REQ IDs or local CR files. |\n| **Issue tracker** | Local markdown ticket under `.claude/sdlc/tickets/`. Gate sign-off accepts `no ticket REQ-\u003cn\u003e` as the degraded form. |\n| **CI** | Zero impact — the plugin never triggers pipelines, only sniffs which ones exist. `ci: null` just means no reference links in artifacts. |\n| **Observability** | Platform-neutral markdown/JSON under `.claude/sdlc/monitoring/` — logging deltas, alert configs, dashboard stubs, runbook. |\n| **UX tooling** | **Halts frontend tasks until *some* UX artifact exists** at `.claude/sdlc/architecture/ux/\u003ctask-slug\u003e.md`. Any form works: Figma link, PDF mockups, screenshots, hand-drawn wireframes, or a written description in the markdown file itself. Backend-only tasks are unaffected. |\n| **Development-time APIs** | `api-integration` warns and offers to scaffold a mock (MSW / Prism / WireMock / typed fixture) — never silently stubs. |\n| **MCP servers (none wired)** | Each MCP-routed system falls to its next tier — Jira → local ticket, Grafana → local markdown, Figma → human-provided link or local UX artifact. |\n\n\u003e **One hard rule:** Frontend tasks halt until a UX artifact exists — but any form works (Figma, PDF, screenshots, wireframes, or a written description). This is the only place the plugin blocks on missing external inputs. Everything else degrades to local files. **Backend-only tasks skip the UX track entirely** — no halt in Phase 2, no UX conformance in Phase 5.\n\n## Scope setup\n\nBefore the first `/plan` in a new project, the plugin needs a scope statement. On first run, it will ask you to point at source material:\n\n```\n/plan \"Add rate-limit headers to the public API\"\n# → No scope.md found. Point me at source material:\n#   - a file path (README.md, docs/brief.txt, PRD.pdf…)\n#   - paste text directly in chat\n#   - or type 'skip' to write a one-paragraph statement by hand\n```\n\nThe [`scope-ingest`](agents/scope-ingest.md) agent parses the source, extracts fields (in-scope, out-of-scope, success criteria, constraints, stakeholders, assumptions), and writes a provenance-traced draft to `.claude/sdlc/scope-drafts/\u003ctimestamp\u003e.md`. You review the draft, fill any gaps marked `⚠️`, then copy it to `.claude/sdlc/scope.md` and sign the scope gate. Subsequent `/plan` runs read `scope.md` automatically.\n\n**Accepted source formats (v1):** `.md`, `.txt`, pasted text, or an existing `scope.md` in re-validate mode. PDF, DOCX, PPTX, and Jira/Linear ticket ingest are on the roadmap.\n\n## Adding domain files\n\nDomain files give the `plan` skill specialized knowledge about a business domain — gap questions, NFRs, regulatory flags, security hotspots. The plugin ships seeds for `payments` and `auth`. You add your own for any other domain (insurance, healthcare, real-time bidding, etc.).\n\n**Trigger:** when `/plan` runs and no matching domain is found, it offers once per session:\n\n```\nNo domain file found for this area. Create one?\nA — Source-driven: paste a URL (spec, compliance guide, wiki page)\nB — Guided Q\u0026A: answer 6 questions\nskip — don't ask again this session\n```\n\n**Project-level files take precedence.** Put your domain files in `domains/` at the repo root. They are merged with the plugin's built-in seeds; any file with the same slug as a plugin seed overrides it entirely.\n\nSee [`skills/domain-expert/AUTHORING.md`](skills/domain-expert/AUTHORING.md) for the full authoring flow.\n\n## What the plugin generates\n\nWhat Claude actually produces as you move through the phases — **this plugin generates code and tests, not just documentation**:\n\n| Artifact | Phase | Produced by | Where it lands |\n|---|---|---|---|\n| **Plan** (classification, scope, estimate, tech stack) | 1 Plan | [`plan`](skills/plan/SKILL.md) skill | `.claude/sdlc/plans/\u003cslug\u003e.md` |\n| **Requirements** with stable REQ IDs | 2 Analyze | [`analyze`](skills/analyze/SKILL.md) skill | `.claude/sdlc/requirements/\u003cslug\u003e.md` |\n| **Architecture** (app / data / platform / infra / security / test) | 3 Design | [`design`](skills/design/SKILL.md) skill (+ [`architect`](agents/architect.md) agent) | `.claude/sdlc/architecture/` |\n| **Tech specs** (API contracts, module responsibilities) | 3 Design | [`design`](skills/design/SKILL.md) skill | `.claude/sdlc/tech-specs/` |\n| **Test cases** (preconditions, steps, expected outcome, test type — tied to REQ IDs) | 3 Design | [`test-designer`](agents/test-designer.md) agent | `.claude/sdlc/test-cases/` |\n| **Production code** (the actual feature / fix implementation) | 4 Build | [`build`](skills/build/SKILL.md) skill | The repo's source tree (surgically scoped to plan-listed files) |\n| **Unit test scripts** (executable, for functions actually modified) | 4 Build | [`build`](skills/build/SKILL.md) skill | `.claude/sdlc/test-scripts/` (mirrors source tree) |\n| **Functional / integration / e2e scripts** (when design calls for them) | 4 Build | [`build`](skills/build/SKILL.md) skill | `.claude/sdlc/test-scripts/` |\n| **Test execution report** (pass/fail, coverage, defects) | 5 Test | [`test`](skills/test/SKILL.md) skill | `.claude/sdlc/test/\u003cslug\u003e-report.md` |\n| **Defect records** | 5 Test | [`test`](skills/test/SKILL.md) skill | Git Issues if available, else `.claude/sdlc/defects/` |\n| **Deployment record** | 6 Deploy | [`deploy`](skills/deploy/SKILL.md) skill | Ticket system or `.claude/sdlc/deployments/` |\n| **Observability config** (alerts, dashboards, runbooks) | 7 Support | [`observability`](agents/observability.md) agent | `.claude/sdlc/monitoring/` |\n| **Docs + traceability matrix + changelog** | 8 Docs | [`docs`](skills/docs/SKILL.md) skill | `.claude/sdlc/docs/`, `CHANGELOG.md` |\n\n**Key guarantees Claude follows when generating:**\n\n- **Production code is surgically scoped** — only files and functions listed in the plan are touched. Adjacent-function edits are flagged.\n- **Unit tests cover modified code only** — no coverage-padding by testing untouched code. The `modified-code-test-gate.sh` hook enforces this.\n- **Every test case traces to a REQ ID.** Every defect traces to a test case and a REQ ID.\n- **Coverage threshold** is configurable (`config/tools.json` → `coverage.threshold_percent`, default 80%) and checked in Phase 5.\n- **The plugin never deploys on its own.** `/deploy` produces a proposal; the human triggers execution.\n\n**What's not auto-generated** (still human-authored or plugin-scaffolded on request):\n\n- Load / performance test scripts beyond what the test architecture explicitly calls for\n- Test fixtures and synthetic test data (design-phase decision)\n- Richer framework scaffolding (Playwright / Cypress / k6 via a dedicated skill) — a future addition\n\n## Providing input\n\nYou can supply plans, requirements, tech specs, and other artifacts in whichever way fits your workflow. All four routes funnel into the same template shape so downstream hooks can parse them consistently.\n\n### 1. Slash-command prompt\n\n```bash\n/plan \"Add rate-limit headers to the public API\"\n```\n\nThe phase skill drafts the artifact at `.claude/sdlc/\u003cfolder\u003e/\u003cslug\u003e.md` from your prompt. You open the file, edit in place, and sign the gate at the bottom. Fastest path for well-understood work.\n\n### 2. Conversation, then artifact\n\nDescribe the work in chat — \"we need to add rate-limit headers, probably on the gateway layer, concerned about cache poisoning.\" Claude runs the skill, drafts the artifact, and shows it back. You redirect (\"scope should exclude the admin API\") until it's right, then Claude writes the file. Best when the shape of the work isn't obvious yet.\n\n### 3. Pre-written artifact\n\nDrop your own artifact into the target folder before running the command:\n\n```\n.claude/sdlc/plans/rate-limit-headers.md\n.claude/sdlc/requirements/rate-limit-headers.md\n.claude/sdlc/tech-specs/rate-limit-headers.md\n```\n\nUse the shape defined in [`templates/`](templates/). The skill detects the existing file, validates its required fields, and asks about gaps rather than starting fresh. Good when your team already authors plans or RFCs in Confluence/Notion/Google Docs and wants to paste them in.\n\n### 4. Reference an external source\n\nPoint Claude at a file, URL, or ticket as input:\n\n```\n/plan \"use the RFC at docs/rfcs/rate-limits.md as the design input\"\n/analyze \"pull requirements from JIRA PROJ-123\"\n```\n\nThe skill reads the source, then writes the artifact in the plugin's template shape. Preserves traceability back to the original document.\n\n### The irrevocable step\n\nIn every route, a **fresh human sign-off** is what advances the phase. Claude drafts; only you sign. There are two sign-off modes:\n\n**Chat sign-off** — the default for `/plan`, `/analyze`, `/design`, `/build`, `/test`, `/support`. At the end of the phase, Claude invokes the [`gate-signoff`](skills/gate-signoff/SKILL.md) skill, which prompts:\n\n```\nPhase artifact: .claude/sdlc/plans/rate-limit-headers.md — please review.\nPaste the URL of the REQ / ticket / CR you're approving against, or\ntype `no ticket REQ-\u003cn\u003e, …` for degraded mode.\n```\n\nYou paste e.g. `https://linear.app/acme/issue/PROJ-1234`. Claude writes the gate file with your raw acknowledgment quoted verbatim, plus an ISO-8601 timestamp. A bare `yes` / `ok` / `lgtm` is rejected — the URL (or REQ-ID list) is the substantive acknowledgment that makes the signature auditable.\n\n**Manual sign-off** — required for `/deploy` and `/fix-fast`. Deploy has blast radius; fix-fast bundles three phases into one mini-gate. Both cases force you to open the gate file and edit it yourself — Claude will not capture the signature via chat.\n\nNo sign-off, no next phase.\n\n## The 8 phases\n\n| # | Phase   | Command    | Gate file                             | Produces |\n|---|---------|------------|---------------------------------------|----------|\n| 1 | Plan    | `/plan`    | `gates/plan-\u003cslug\u003e.md`                | Plan, classification, estimate, tech stack |\n| 2 | Analyze | `/analyze` | `gates/analyze-\u003cslug\u003e.md`             | Requirements with stable REQ IDs, UX ask (if frontend) |\n| 3 | Design  | `/design`  | `gates/design-\u003cslug\u003e.md`              | Architecture bundle, test architecture, tech specs |\n| 4 | Build   | `/build`   | `gates/build-\u003cslug\u003e.md`               | Code + unit tests for modified code only |\n| 5 | Test    | `/test`    | `gates/test-\u003cslug\u003e.md`                | Test execution report, defects, UX conformance (if frontend) |\n| 6 | Deploy  | `/deploy`  | `gates/deploy-\u003cslug\u003e.md`              | Deployment record (ticket or artifact file) |\n| 7 | Support | `/support` | `gates/support-\u003cslug\u003e.md`             | Observability scripts, alerts, dashboards |\n| 8 | Docs    | `/docs`    | (cross-cutting, no dedicated gate)    | Updated SDLC docs, traceability matrix, changelog |\n\nSee [`docs/SDLC.md`](docs/SDLC.md) for the authoritative phase reference, and [`docs/USER-MANUAL.md`](docs/USER-MANUAL.md) for scenario-based walkthroughs.\n\n### `/fix-fast` — the only shortcut\n\nA compressed path for **small bug fixes only**. Collapses Plan + Analyze + Design into one mini-gate; Build through Docs run normally.\n\nEligibility is strict and will not be widened:\n\n- Bug fix only (no new features, no refactors)\n- ≤ 2 files changed\n- ≤ 50 LOC changed\n- No schema, API, security, or UX changes\n\nIf a task doesn't fit, run the full phases. There is no second shortcut.\n\n## Hook strictness: block vs. warn\n\nThe plugin distinguishes two severities:\n\n- **Block (exit 2)** — refuses the tool call. Used only when the consequence is severe: no plan at all, unsigned CR, confirmed secret found.\n- **Warn (stderr, exit 0)** — surfaces the signal; lets the human decide. Scope drift, adjacent-function edits, test-scope mismatches.\n\nWarnings are *warnings*. They're not auto-blockers-in-waiting. The adjacent-function detector in particular uses git hunk headers, which are imperfect — an aggressive block there would halt legitimate work.\n\n## Multi-team sign-offs\n\nWhen a gate requires sign-off from more than one team (e.g. security + product, backend + frontend, compliance + dev), add a `## Required sign-offs` block to the gate file listing one role per line. The `approval-reconcile.sh` hook checks at the end of every session turn that a sign-off file exists for each listed role in `.claude/sdlc/sign-offs/\u003cREQ-ID\u003e-\u003crole\u003e.md`, warns on any missing, and warns if gate content has changed since a sign-off was captured (hash drift). Use [`templates/sign-off-multi.md`](templates/sign-off-multi.md) as the starting point for each sign-off file. The hook regenerates `APPROVALS.md` at the git root as an at-a-glance summary and can sync sign-offs via network share, central git repo, or MCP connector depending on which transport key is set in `config/tools.json` (`approvals.share_path`, `approvals.git_repo`, or `approvals.mcp.connector`).\n\nMulti-team sign-offs are **opt-in per gate** — removing the `## Required sign-offs` block returns a gate to single-signer behavior.\n\n## Review processes\n\nThree artifacts have dedicated review processes: **code**, **test cases**, and **test scripts**. All three share the same shape — scoped to the `git diff`, traced to a REQ ID, and human-signed at a gate.\n\n| Artifact | When reviewed | Primary checks | Blocks on |\n|---|---|---|---|\n| **Code** | PostToolUse (format), `/review`, Build Step 3, Build gate | Formatting, in-scope files/functions, work-item traceability, secrets, quality (naming, complexity, error handling), spec conformance (API signatures, error modes, NFRs), security (10 categories) | Missing plan, missing work item, confirmed secret, critical / high security finding |\n| **Test cases** | Phase 3 Design | Every REQ has ≥1 test case; every test case traces to a REQ ID; required fields (type, priority, preconditions, steps, expected outcome, data needs) | Orphan test cases (no REQ ID) |\n| **Test scripts** | Phase 4 Build (authoring), Phase 5 Test (execution) | Tests added only for *modified* functions; tests reference test cases → REQ IDs; coverage on modified code vs. configured threshold; defects logged with REQ + TC refs; UX conformance for frontend | Coverage below threshold (unless human-signed waiver) |\n\n**Logic concerns (retry, timeout, idempotency):** there is no dedicated logic linter. Resilience behavior is specified in the [tech spec](templates/tech-spec.md) `Error modes` / `NFRs` sections and enforced by Build's Step 3 spec-conformance pass. `security-review` 8 adds the only hard rule: retries must be bounded with backoff.\n\n**Architecture conformance:** architecture is never compared directly to code. The [tech spec](templates/tech-spec.md) is the intermediary contract — architecture decisions are captured per-module in Design (Phase 3), and Build Step 3 validates the code against that spec (API signatures, error modes, side effects, NFRs, security controls). The [`architect`](agents/architect.md) agent produces a drift report during Design when existing architecture has fallen out of sync with the requirements.\n\nFull process detail in [`docs/review-processes.md`](docs/review-processes.md).\n\n## Artifact tree (in the consuming repo)\n\nThe plugin writes to `.claude/sdlc/` in the repo that *uses* the plugin — not in this one:\n\n```\n.claude/sdlc/\n├── env.json                # detected integrations\n├── scope.md                # signed project scope statement\n├── scope-drafts/           # raw scope-ingest output — reviewed before promoting to scope.md\n├── plans/                  # one file per task\n├── requirements/\n├── architecture/\n├── tech-specs/\n├── test-cases/\n├── test-scripts/\n├── tickets/\n├── change-requests/\n├── sign-offs/              # one file per signer per role (\u003cREQ-ID\u003e-\u003crole\u003e.md)\n├── approval-packets/       # compiled reviewer summaries produced at multi-team sign-off time\n├── gates/                  # phase-gate sign-offs (includes scope-\u003cproject\u003e.md)\n├── defects/\n├── deployments/\n├── monitoring/\n├── docs/\n├── token-log.json          # last-run token snapshot (when token_tracking enabled)\n└── token-history.jsonl     # rolling per-session token log\n```\n\n## Validation metrics\n\nWhen iterating on the plugin (or your own tuning of it), measure against these targets:\n\n| Metric                                             | Target    |\n|----------------------------------------------------|-----------|\n| Plan-first compliance                              | 100%      |\n| Work-item validation (REQ / ticket / signed CR)    | 100%      |\n| Scope discipline (files touched ÷ files in scope)  | 1.0       |\n| Adjacent-function modifications per task           | 0         |\n| Test scope ratio (tests modified ÷ code modified)  | ≈ 1.0     |\n\nDetails in [`docs/SDLC.md`](docs/SDLC.md).\n\n## Capabilities reference\n\n### Skills (20)\n\nPhase skills — one per checkpoint:\n\n| Skill | What it does |\n|---|---|\n| [plan](skills/plan/SKILL.md) | Classifies the task, validates scope, estimates effort, locks tech stack |\n| [analyze](skills/analyze/SKILL.md) | Turns the plan into requirements with stable REQ IDs; captures UX ask for frontend work |\n| [design](skills/design/SKILL.md) | Produces architecture bundle, test architecture, and per-component tech specs |\n| [build](skills/build/SKILL.md) | Writes code + unit tests for modified code only; coordinates surgical-edit, minimal-code, security-review |\n| [test](skills/test/SKILL.md) | Runs tests, records defects, checks UX conformance |\n| [deploy](skills/deploy/SKILL.md) | Produces a deployment record; hands off to the configured deploy mechanism |\n| [support](skills/support/SKILL.md) | Wires observability — monitoring, logging, alerts, dashboards, runbooks |\n| [docs](skills/docs/SKILL.md) | Updates SDLC docs, traceability matrix, and changelog |\n\nCross-cutting skills — triggered by context across phases:\n\n| Skill | What it does |\n|---|---|\n| [scoping](skills/scoping/SKILL.md) | Validates scope boundaries on plans and change requests |\n| [surgical-edit](skills/surgical-edit/SKILL.md) | Enforces \"only touch what the plan lists\"; no adjacent-function edits |\n| [minimal-code](skills/minimal-code/SKILL.md) | Discourages speculative abstractions, unused branches, and feature creep |\n| [security-review](skills/security-review/SKILL.md) | Reviews the current diff for OWASP-class issues; runs as part of `/review` |\n| [api-integration](skills/api-integration/SKILL.md) | Verifies API spec + endpoint reachability; offers a mock if unreachable |\n| [gate-signoff](skills/gate-signoff/SKILL.md) | Captures phase sign-off via chat with a work-item URL as substantive acknowledgment |\n| [domain-expert](skills/domain-expert/SKILL.md) | Injects domain-specific gap questions, NFRs, and regulatory flags into the plan (payments, auth, and user-defined domains) |\n\nUtility / navigation skills:\n\n| Skill | What it does |\n|---|---|\n| [configure](skills/configure/SKILL.md) | Guided setup wizard — walks through each tool slot, auto-detects available tools, writes `config/tools.json` |\n| [start](skills/start/SKILL.md) | Front-door intake — six guided questions, fix-fast eligibility check, hands off to plan |\n| [status](skills/status/SKILL.md) | Read-only task state — renders in-flight work and pending sign-offs |\n| [help](skills/help/SKILL.md) | Command reference; `/help \u003ccommand\u003e` for detail on a specific command |\n| [suspend](skills/suspend/SKILL.md) | Pauses enforcement — snapshots governance artifacts, logs the reason, switches `.enabled` → `.suspended` |\n\n### Commands (16)\n\n| Command | Purpose |\n|---|---|\n| [/configure](commands/configure.md) | Guided config setup — replaces manual tools.json editing; auto-invoked on fresh install and when config is missing |\n| [/start](commands/start.md) | Front door — guided intake, fix-fast eligibility check, hands off to /plan |\n| [/plan](commands/plan.md) | Phase 1 — scope, classify, estimate |\n| [/analyze](commands/analyze.md) | Phase 2 — requirements with REQ IDs |\n| [/design](commands/design.md) | Phase 3 — architecture + tech specs |\n| [/build](commands/build.md) | Phase 4 — code + unit tests (scoped) |\n| [/test](commands/test.md) | Phase 5 — test execution + defects |\n| [/deploy](commands/deploy.md) | Phase 6 — deployment record |\n| [/support](commands/support.md) | Phase 7 — observability wiring |\n| [/docs](commands/docs.md) | Phase 8 — SDLC docs + traceability |\n| [/status](commands/status.md) | Show in-flight task state and pending sign-offs (read-only) |\n| [/help](commands/help.md) | Plugin command reference; `/help \u003ccommand\u003e` for detail on a specific command |\n| [/review](commands/review.md) | Cross-cutting diff review (correctness + security) |\n| [/fix-fast](commands/fix-fast.md) | Compressed path for small bug fixes only (≤2 files, ≤50 LOC) |\n| [/suspend](commands/suspend.md) | Pause SDLC enforcement — snapshot governance state, log reason, switch to suspended mode |\n| [/token-review](commands/token-review.md) | Analyze per-phase token usage from the tracking log; surface optimization candidates |\n\n### Agents (5)\n\nBounded subagents with narrow write scope — they propose; humans approve.\n\n| Agent | Role | Write scope |\n|---|---|---|\n| [architect](agents/architect.md) | Validates architecture against requirements; proposes updates | `.claude/sdlc/architecture/` only |\n| [test-designer](agents/test-designer.md) | Generates test cases from approved REQs | `.claude/sdlc/test-cases/` only |\n| [security-reviewer](agents/security-reviewer.md) | Audits the diff against the security checklist | Read-only (proposes remediations) |\n| [observability](agents/observability.md) | Produces monitoring / alerts / runbooks | `.claude/sdlc/monitoring/` only |\n| [scope-ingest](agents/scope-ingest.md) | Parses source material into a provenance-traced scope draft | `.claude/sdlc/scope-drafts/` only |\n\n### Hooks (13)\n\nRegistered in [hooks/hooks.json](hooks/hooks.json). Block vs. warn philosophy documented above.\n\n| Hook | Event | Severity | What it does |\n|---|---|---|---|\n| [plan-gate.sh](hooks/plan-gate.sh) | PreToolUse (Edit/Write) | **Block** / Warn | No-op until `.enabled` exists; then blocks edits when no plan exists; warns when `scope.md` or the scope gate is absent |\n| [work-item-validation.sh](hooks/work-item-validation.sh) | PreToolUse | **Block** | Requires a valid REQ ID, ticket, or signed CR |\n| [secret-scan.sh](hooks/secret-scan.sh) | PreToolUse | **Block** | Blocks writes containing confirmed secrets |\n| [phase-gate.sh](hooks/phase-gate.sh) | PreToolUse (commands) | **Block** | Refuses a phase command until the prior gate is signed |\n| [diff-scope-check.sh](hooks/diff-scope-check.sh) | PostToolUse | Warn | Flags edits to files outside the plan |\n| [adjacent-function-detector.sh](hooks/adjacent-function-detector.sh) | PostToolUse | Warn | Flags edits to functions adjacent to in-scope ones |\n| [modified-code-test-gate.sh](hooks/modified-code-test-gate.sh) | Stop | Warn | Flags modified code without corresponding tests |\n| [bash-safety.sh](hooks/bash-safety.sh) | PreToolUse (Bash) | Warn | Flags risky shell patterns |\n| [format-on-write.sh](hooks/format-on-write.sh) | PostToolUse | — | Runs the configured formatter on written files |\n| [env-detect.sh](hooks/env-detect.sh) | SessionStart | — | Writes `.claude/sdlc/env.json` with detected integrations; sets Layer 0/3 flags for the configure skill |\n| [session-plan-check.sh](hooks/session-plan-check.sh) | SessionStart | — | Shows in-flight task state and personalized sign-off hints at the start of each session |\n| [token-tracker.sh](hooks/token-tracker.sh) | Stop | — | Parses the session transcript; writes raw per-phase token counts to `token-log.json` / `token-history.jsonl`. Off by default; enabled via `config/tools.json` |\n| [approval-reconcile.sh](hooks/approval-reconcile.sh) | Stop | Warn | For every gate with a `## Required sign-offs` block, warns on missing per-role sign-off files and on hash mismatches (gate content changed since signing); regenerates `APPROVALS.md` at the git root; syncs sign-offs via network share (`approvals.share_path`), central git repo (`approvals.git_repo`), or MCP connector (`approvals.mcp.connector`) when configured in `config/tools.json` |\n\n### Templates (13)\n\nShape of the artifacts the plugin produces. Headings and fields are parsed by hooks — don't rename them without checking downstream consumers.\n\n| Template | Artifact |\n|---|---|\n| [plan.md](templates/plan.md) | Plan file under `.claude/sdlc/plans/` |\n| [requirements.md](templates/requirements.md) | Requirements with stable REQ IDs |\n| [tech-spec.md](templates/tech-spec.md) | Per-component tech spec |\n| [test-case.md](templates/test-case.md) | Test case traced to REQ IDs |\n| [ticket.md](templates/ticket.md) | Issue ticket (fallback when no ticket system detected) |\n| [change-request.md](templates/change-request.md) | Scope change with sign-off |\n| [sign-off.md](templates/sign-off.md) | Reusable sign-off block |\n| [gate.md](templates/gate.md) | Phase gate file |\n| [scope-gate.md](templates/scope-gate.md) | Scope sign-off gate (`gates/scope-\u003cproject\u003e.md`) |\n| [approval-packet.md](templates/approval-packet.md) | Compiled reviewer summary produced at multi-team sign-off time |\n| [deployment.md](templates/deployment.md) | Deployment record |\n| [defect.md](templates/defect.md) | Defect report |\n| [sign-off-multi.md](templates/sign-off-multi.md) | Per-signer, per-role sign-off file for multi-team gates — saved to `.claude/sdlc/sign-offs/\u003cREQ-ID\u003e-\u003crole\u003e.md` |\n\n## Repo layout\n\n```\n.\n├── .claude-plugin/plugin.json   # manifest\n├── config/tools.example.json    # copy to tools.json and fill in\n├── docs/SDLC.md                 # full phase reference\n├── domains/                     # built-in domain knowledge seeds (payments, auth)\n├── skills/          (20)        # 8 phase + 7 cross-cutting (incl. domain-expert) + 5 utility (configure, start, status, help, suspend)\n├── commands/        (16)        # one per checkpoint + /status + /help + /review + /fix-fast + /token-review + /suspend\n├── agents/          (5)         # bounded subagents (incl. scope-ingest)\n├── hooks/                       # hooks.json + 14 shell scripts (incl. suspend-snapshot.sh, skill-invoked)\n└── templates/       (13)        # artifact templates (incl. scope-gate, approval-packet, sign-off-multi)\n```\n\n## Related reading\n\n- [docs/SDLC.md](docs/SDLC.md) — authoritative phase reference\n- [docs/GLOSSARY.md](docs/GLOSSARY.md) — plugin-specific terms (scope draft, domain context, gap questions, scope gate, two-source lookup, and more)\n- [docs/USER-MANUAL.md](docs/USER-MANUAL.md) — scenario walkthroughs\n- [docs/when-not-to-use.md](docs/when-not-to-use.md) — anti-patterns; who this plugin is *not* for\n- [docs/claude-sdlc-enterprise-adoption.md](docs/claude-sdlc-enterprise-adoption.md) — enterprise role/cost/audit story\n- [docs/rfcs/pending-analysis.md](docs/rfcs/pending-analysis.md) — open design questions under analysis\n\n## Running the tests\n\n### Prerequisites\n\n- **bats-core** for hook tests: `brew install bats-core` or `npm install -g bats`\n- `python3` or `node` for the manifest JSON validator\n\n### Commands\n\n```bash\n# From the repo root — unit tests only (skips @integration-tagged bats tests)\ntests/run.sh\n\n# Include integration tests\ntests/run.sh --integration\n\n# Run a single hook test file\nbats tests/hooks/plan_gate.bats\n```\n\nExit code is the number of failed suites (0 = all pass).\n\n### What's covered\n\n| Layer | Files | What it checks |\n|---|---|---|\n| **Plugin manifest** | `tests/plugin/validate_manifest.sh` | `plugin.json` is valid JSON; has `name`, `version`, `description`; version is semver |\n| **Skill \u0026 agent frontmatter** | `tests/skills/validate_frontmatter.sh` | Every `SKILL.md` and agent `.md` has `name:` and `description:` |\n| **Template structure** | `tests/templates/validate_structure.sh` | Every template has at least one markdown heading |\n| **Hook behaviour (bats)** | `tests/hooks/*.bats` | `plan-gate`, `diff-scope-check`, `adjacent-function-detector`, `secret-scan`, `bash-safety`, `env-detect`, `work-item-validation`, `session-plan-check`, `approval-reconcile` |\n\nSkills, commands, and templates beyond frontmatter/structure checks require manual end-to-end testing — see [`CLAUDE.md`](CLAUDE.md) for the validation checklist.\n\n## Contributing\n\nBefore submitting a change, read [`CLAUDE.md`](CLAUDE.md) — it documents the design intent and the anti-patterns that look like improvements but aren't.\n\nShort version: the plugin eats its own dog food. Plan before code, surgical edits, one concern per change. Unrelated ideas go in a follow-up, not in the current PR.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flantisprime%2Fclaude-sdlc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flantisprime%2Fclaude-sdlc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flantisprime%2Fclaude-sdlc/lists"}