From sdlc
Use this skill when the user wants to implement, build, or code items from an existing plan or checklist — phrases like "implement the plan", "build the plan items", "start coding", "implement the remaining items", or "pair-build". Takes a structured plan and executes each item with a writer+critic pair so builds pass gates on the first run. Trigger on any intent to go from plan to working code. Do NOT trigger for planning, reviewing, shipping, or fixing tests — only active implementation of plan items.
npx claudepluginhub jerrod/agent-plugins --plugin sdlcThis skill is limited to using the following tools:
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
PLUGIN_DIR=$(find . -name "run-gates.sh" -path "*/sdlc/*" -exec dirname {} \; 2>/dev/null | head -1)
[ -z "$PLUGIN_DIR" ] && PLUGIN_DIR=$(find "$HOME/.claude" -name "run-gates.sh" -path "*/sdlc/*" -exec dirname {} \; 2>/dev/null | sort -V | tail -1)
bash "$PLUGIN_DIR/../scripts/audit-trail.sh" log build sdlc:pair-build started --context "$ARGUMENTS"bash "$PLUGIN_DIR/../scripts/audit-trail.sh" log build sdlc:pair-build completed --context="<summary>"For each plan item, deploy two agents:
If the critic finds violations, the writer fixes them. When the critic approves, commit and run gates for proof artifacts. Gates should pass on the first run because the critic already caught violations.
implement → critic reviews → fix violations → commit → gates pass
Same as standard build. Never leave a dirty tree. Conventional commit format. Stage specifically (git add <files>, never -A or .). One commit per plan item.
git commit -m "$(cat <<'EOF'
feat: <what this plan item accomplished>
Co-Authored-By: Claude <noreply@anthropic.com>
EOF
)"
Same as standard build. Every phase transition requires checkpoint save. Every phase start requires checkpoint verify. Proof files are the source of truth. Plan items checked off only via plan-progress.sh mark.
NEVER truncate output with head/tail. When reading PR comments, CI logs, gate output, or any API response — read ALL of it. If the output is too large, redirect to a file and scan the file. Use --jq or grep to filter, not positional truncation. Missing one finding because you cut the output is a critical failure.
if [ -z "$PLUGIN_DIR" ]; then
echo "FATAL: sdlc scripts not found"
exit 1
fi
echo "Plugin scripts at: $PLUGIN_DIR"
mkdir -p .quality/proof .quality/checkpoints
Add .quality/ to .gitignore if not already present.
DEFAULT_BRANCH=$(git remote show origin | grep 'HEAD branch' | awk '{print $NF}')
git fetch origin
BRANCH=$(git branch --show-current)
REPO_NAME=$(_u=$(git remote get-url origin 2>/dev/null) || _u=""; if [ -n "$_u" ]; then basename "${_u%.git}"; else basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)"; fi)
bash "$PLUGIN_DIR/plan-progress.sh" find "$ARGUMENTS"
Resolution priority: exact branch match > Branch: field match > argument match > ask user > STOP.
Set PLAN_FILE and verify structure:
bash "$PLUGIN_DIR/plan-progress.sh" status "$PLAN_FILE"
If the plan header contains **Design Constraints:**, read and apply them to all styling, layout, and animation decisions.
feat/, fix/, etc.). If the plan has an Issue: field, include the issue number in the branch name: feat/123-short-description. If the repo requires a ticket reference, it comes first: PROJ-123/feat/short-description. Never use personal initials./sdlc:planbash "$PLUGIN_DIR/checkpoint.sh" save orient "Phase 0 complete — plan found and verified"
bash "$PLUGIN_DIR/checkpoint.sh" verify orient
bash "$PLUGIN_DIR/plan-progress.sh" status "$PLAN_FILE"
Count the unchecked items (- [ ]). This determines the dispatch mode.
3+ unchecked items → Tech Lead (concurrent pairs)
Dispatch the tech-lead agent using the template (skills/pair-build/tech-lead-prompt.md):
Agent(subagent_type="sdlc:tech-lead", prompt="<filled tech-lead-prompt template>")
The tech-lead will:
When the tech-lead returns, verify all items are marked and proceed to Phase 2.
1-2 unchecked items → Sequential pairs (no coordination overhead)
For each plan item, run the writer+critic loop directly:
Using the writer prompt template (skills/pair-build/writer-prompt.md), dispatch a writer subagent:
Agent(subagent_type="sdlc:builder", prompt="<filled writer-prompt template>")
Provide: full plan item text, project context, working directory, existing patterns.
The writer implements the code and tests but does NOT commit. It reports back with: status, files changed, what was implemented, self-review findings.
If the writer reports BLOCKED or NEEDS_CONTEXT, handle it (provide context, break the task down, or escalate to user) before proceeding.
Using the critic prompt template (skills/pair-build/critic-prompt.md), dispatch a critic subagent:
Agent(subagent_type="sdlc:critic", prompt="<filled critic-prompt template>")
Provide: what was implemented (from writer's report), files changed, quality rules.
The critic reads all changed files and reports APPROVED or FINDINGS.
If the critic reports FINDINGS:
If after 3 rounds the critic still has findings, escalate to the user:
"Writer and critic could not resolve these violations after 3 rounds: [findings]. How would you like to proceed?"
When the critic reports APPROVED:
git add <all files from writer's report>
git commit -m "$(cat <<'EOF'
feat: <plan item description>
Co-Authored-By: Claude <noreply@anthropic.com>
EOF
)"
bash "$PLUGIN_DIR/run-gates.sh" build
Gates should pass because the critic already caught violations. If a gate still fails (the critic missed something), fix it, commit the fix, and re-run.
Metrics are already collected by run-gates.sh build in Step 5 (both per-gate and full summary). No separate call needed.
bash "$PLUGIN_DIR/checkpoint.sh" save build "Completed: <item description>"
bash "$PLUGIN_DIR/plan-progress.sh" mark "$PLAN_FILE" "<search text matching the item>"
bash "$PLUGIN_DIR/plan-progress.sh" status "$PLAN_FILE"
bash "$PLUGIN_DIR/checkpoint.sh" verify build
bash "$PLUGIN_DIR/run-gates.sh" all
Fix any failures. Re-run until all pass.
bash "$PLUGIN_DIR/gate-coverage.sh"
cat .quality/proof/coverage.json
If any file is below 95%, write more tests and re-run.
bash "$PLUGIN_DIR/plan-progress.sh" check "$PLAN_FILE"
bash "$PLUGIN_DIR/collect-proof.sh"
bash "$PLUGIN_DIR/checkpoint.sh" save coverage "Phase 2 complete — all gates pass, coverage verified"
bash "$PLUGIN_DIR/checkpoint.sh" drift
If drift detected, re-run affected gates.
bash "$PLUGIN_DIR/plan-progress.sh" status "$PLAN_FILE"
bash "$PLUGIN_DIR/plan-progress.sh" check "$PLAN_FILE"
Cached gate results are NOT proof the current code is clean — delete the proof directory so every gate runs against the current SHA:
rm -rf .quality/proof
bash "$PLUGIN_DIR/run-gates.sh" all
bash "$PLUGIN_DIR/collect-proof.sh"
bash "$PLUGIN_DIR/checkpoint.sh" save coverage "Phase 3 fresh gate run — pre-review verification"
Every gate line must show PASSED (not pass (cached)) before proceeding. The checkpoint save overwrites Phase 2's coverage checkpoint with the current SHA so /sdlc:review's drift check doesn't flag stale state.
/sdlc:reviewInvoke /sdlc:review. The review skill dispatches 4 parallel reviewers (architect, security, correctness, style), walks findings with the user, re-runs gates after fixes, and hands off to /sdlc:ship when the review round returns zero open issues.
Do NOT skip review. Global CLAUDE.md mandates the workflow: build → review → ship. pair-build's job ends at handing off to review, not ship.