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.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
This skill redirects to /sdlc:pair-build. Invoke it now:
Skill("sdlc:pair-build", args="$ARGUMENTS")
Do NOT continue with the old build workflow below. Invoke pair-build and follow its instructions instead.
Log skill invocation:
Use $PLUGIN_DIR (already detected in Step 1 via find . -name "run-gates.sh"):
bash "$PLUGIN_DIR/../scripts/audit-trail.sh" log build sdlc:build started --context "$ARGUMENTS"bash "$PLUGIN_DIR/../scripts/audit-trail.sh" log build sdlc:build completed --context="<summary>"Correctness is the only measure that matters. Speed is not a factor. Not a preference. Not a tiebreaker. If a gate takes 10 minutes to run, you run it. If a checkpoint reveals drift, you re-run everything from scratch. If coverage is 94.9%, you write more tests. There are no "close enough" results.
Every quality claim in this skill is proven by an executable script that writes machine-readable proof to .quality/proof/. Claude's context window is ephemeral — proof files are not. If you did not run the script, you did not prove anything.
Never leave a dirty tree. Every phase transition, every plan item completion, every fix — commit immediately with conventional commit format. Do not accumulate uncommitted changes. Do not ask the user what to do with uncommitted code. Do not wait for a "good stopping point." The stopping point is NOW.
feat: <description> — new functionality
fix: <description> — bug fix
refactor: <description> — restructuring without behavior change
test: <description> — adding or updating tests
chore: <description> — maintenance, config, scaffolding
Commit granularity: One commit per plan item or logical unit of work. Each commit should be independently deployable. If you implemented a feature and wrote its tests, that's ONE commit (not two). If you fixed a lint issue, commit it immediately — don't batch it with the next feature.
Stage specifically: git add <files> — never git add -A or git add .
Commit message format:
git commit -m "$(cat <<'EOF'
feat: add user authentication endpoint
Co-Authored-By: Claude <noreply@anthropic.com>
EOF
)"
Context rot is when Claude's adherence to quality gates degrades as conversations grow longer. It manifests as:
Prevention:
checkpoint.sh save <phase> after gates pass and BEFORE starting the next phase.checkpoint.sh verify <previous-phase> to confirm no drift occurred.checkpoint.sh drift..quality/proof/tests.json says tests fail, tests fail — regardless of what you remember from earlier in the conversation.plan-progress.sh mark. Never manually edit a checkbox. The script verifies gates passed at the current SHA before allowing the mark.echo "bin/ scripts:"
for cmd in lint format test typecheck coverage; do
[ -x "bin/$cmd" ] && echo " ✓ bin/$cmd" || echo " ✗ bin/$cmd (missing)"
done
If ANY are missing, tell the user: "Run /sdlc:bootstrap to create high-signal bin/ scripts. Gate scripts will produce cleaner output." Do not block — this is a recommendation, not a gate.
If ALL exist, check if they produce noisy output by running one and inspecting for ANSI codes or verbose success messages. If noisy, recommend /sdlc:bootstrap audit.
PLUGIN_DIR=$(find . -name "run-gates.sh" -path "*/sdlc/*" -exec dirname {} \; 2>/dev/null | head -1)
if [ -z "$PLUGIN_DIR" ]; then
PLUGIN_DIR=$(find "$HOME/.claude" -name "run-gates.sh" -path "*/sdlc/*" -exec dirname {} \; 2>/dev/null | sort -V | tail -1)
fi
if [ -z "$PLUGIN_DIR" ]; then
echo "FATAL: sdlc scripts not found"
exit 1
fi
echo "Plugin scripts at: $PLUGIN_DIR"
ls "$PLUGIN_DIR"/*.sh
Initialize the proof directory:
mkdir -p .quality/proof .quality/checkpoints
echo "Proof directory initialized at $(date -u +%Y-%m-%dT%H:%M:%SZ)" > .quality/proof/.init
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:
~/.claude/plans/$REPO_NAME/$BRANCH.md.md file under ~/.claude/plans/ whose Branch: field matches $BRANCH$ARGUMENTS was provided, any plan whose title or Goal matches the arguments/sdlc:plan first.Once found, set PLAN_FILE and verify its structure:
bash "$PLUGIN_DIR/plan-progress.sh" status "$PLAN_FILE"
The plan MUST have checkboxes (- [ ] items). If it has context but no checkboxes, tell the user to run /sdlc:plan adopt to convert it.
If the plan header contains a **Design Constraints:** field, read it before writing any frontend code. These constraints define the visual direction agreed during brainstorm — font choices, palette direction, motion intent, composition approach. Apply them to all component styling, layout decisions, font choices, color values, and animation implementation. They are not suggestions — they are the agreed design language for this project.
If the plan header has no Design Constraints field, proceed normally — this is a non-visual feature or brainstorm was skipped.
/sdlc:plan to create one/sdlc:plan to adopt or create onebash "$PLUGIN_DIR/checkpoint.sh" save orient "Phase 0 complete — plan found and verified"
bash "$PLUGIN_DIR/checkpoint.sh" verify orient
If this fails, re-run Phase 0. No exceptions.
These are hard stops. If code violates any of these, STOP and fix before writing the next line.
Fix violations immediately. Not later. Not in review. Now.
ABSOLUTE BAN — "Pre-existing" framing: There is no such thing as a "pre-existing issue." If a gate flags it, fix it. Do not classify violations by when they were introduced. Do not create a "Pre-existing Issues" section. A gate failure is a gate failure — it has a fix, not an origin story.
Every new source file MUST have a corresponding test file BEFORE you commit it.
Prohibited rationalizations:
For each plan item, follow this loop:
Write the code. Write the tests. Follow the guardrails above.
bash "$PLUGIN_DIR/run-gates.sh" build
If any gate fails, STOP and fix. Do not continue building with failing gates.
Do not proceed without committing. Stage the specific files and commit with conventional format:
git add <source-files> <test-files>
git commit -m "$(cat <<'EOF'
feat: <what this plan item accomplished>
Co-Authored-By: Claude <noreply@anthropic.com>
EOF
)"
This is not optional. This is not "when convenient." Commit NOW, before saving the checkpoint.
bash "$PLUGIN_DIR/checkpoint.sh" save build "Completed: <item description>"
bash "$PLUGIN_DIR/plan-progress.sh" mark "$PLAN_FILE" "<search text matching the item>"
This script will:
- [ ] item → - [x] item <!-- proof: build-latest -->NEVER manually edit a checkbox from [ ] to [x]. Always use the script.
bash "$PLUGIN_DIR/plan-progress.sh" status "$PLAN_FILE"
bash "$PLUGIN_DIR/checkpoint.sh" verify build
bash "$PLUGIN_DIR/run-gates.sh" all
Every gate must pass. If any fails, fix and re-run. Do not proceed with failures.
The gate-tests.sh script checks this. If its proof file shows missing tests, STOP. Write them.
The gate-coverage.sh script measures this. ACTUALLY RUN coverage. Do not estimate. Do not assume. Do not declare "should be fine."
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"
This verifies ALL checked items have valid, non-stale proof anchors. If any item was checked without proof or has drifted, the check fails.
bash "$PLUGIN_DIR/collect-proof.sh"
This generates .quality/proof/PROOF.md — the content that will go into the PR description.
bash "$PLUGIN_DIR/checkpoint.sh" save coverage "Phase 2 complete — all gates pass, coverage verified, plan integrity confirmed"
bash "$PLUGIN_DIR/checkpoint.sh" drift
If any drift detected, re-run affected gates. Do not hand off with stale proof.
bash "$PLUGIN_DIR/plan-progress.sh" status "$PLAN_FILE"
bash "$PLUGIN_DIR/plan-progress.sh" check "$PLAN_FILE"
All items must be checked with valid proof. If unchecked items remain, either implement them or discuss with the user about descoping.
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. build's job ends at handing off to review, not ship.
The proof report MUST be included in the PR description under a ## Quality Proof section. This makes every quality claim independently verifiable by reviewers.