From sdlc
Use this skill to adopt, find, resume, or hook up a plan for the sdlc proof system. Triggers when the user says "adopt this plan", "hook the plan up to sdlc", "find the plan for this branch", "convert my Claude plan into sdlc format", "resume the plan", or "where's the plan? pair-build can't find it". Converts Claude-native plans into sdlc-format plans with proof-anchored checkboxes. Do NOT use for writing plans from scratch (use writing-plans), building plan items (use pair-build), or brainstorming.
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.
Log skill invocation:
Use $PLUGIN_DIR (detected in Step 1 via find . -name "run-gates.sh"):
bash "$PLUGIN_DIR/../scripts/audit-trail.sh" log design sdlc:plan started --context "$ARGUMENTS"bash "$PLUGIN_DIR/../scripts/audit-trail.sh" log design sdlc:plan completed --context="<summary>"This skill bridges Claude's native planning (free-form, context-rich) with sdlc's proof system (executable, verifiable). It runs after Claude creates or identifies a plan and before /sdlc:pair-build starts implementation.
When to invoke this skill:
/sdlc:plan adopt to take over/sdlc:pair-build on existing work → run /sdlc:plan to find and verify the plan/sdlc:plan "feature description" to create a new planWhen Claude transitions from plan mode to implementation:
~/.claude/plans/{random-words}.md but is disconnected from the branch/sdlc:pair-build can't find the plan because it's not at the conventional path/sdlc:plan fixes all of this by adopting the plan, normalizing its location, and wiring it to the proof system.
PLUGIN_DIR=$(find . -path "*/sdlc/scripts/plan-progress.sh" -exec dirname {} \; 2>/dev/null | head -1)
if [ -z "$PLUGIN_DIR" ]; then
PLUGIN_DIR=$(find "$HOME/.claude" -path "*/sdlc/scripts/plan-progress.sh" -exec dirname {} \; 2>/dev/null | head -1)
fi
if [ -z "$PLUGIN_DIR" ]; then
echo "FATAL: sdlc scripts not found"
exit 1
fi
echo "Plugin scripts at: $PLUGIN_DIR"
Run the plan finder:
bash "$PLUGIN_DIR/plan-progress.sh" find "$ARGUMENTS"
$ARGUMENTS is a file path → use it directly$ARGUMENTS is "adopt" → find the most recently modified Claude-native plan (random-word filename in ~/.claude/plans/)~/.claude/plans/$REPO_NAME/$BRANCH.md → existing sdlc-format planBranch: $BRANCH$ARGUMENTS~/.claude/plans/{random-words}.mdIf $ARGUMENTS is "adopt" or empty and you find a Claude-native plan:
bash "$PLUGIN_DIR/plan-progress.sh" adopt "$SOURCE_PLAN"
If multiple candidates exist, show them and ask the user which one.
Read the plan file. Check for these required elements:
Branch: <branch-name> in the first 10 lines- [ ] item in an Implementation Plan sectionIf the plan has context but no checkboxes (common for Claude-native plans):
This is the adoption moment. You must:
## Implementation Plan sectionAdopted-From: <original-filename> if this was a Claude-native plan~/.claude/plans/$REPO_NAME/$BRANCH.mdCritical: The original plan's depth IS the value. Data models, architecture decisions, user preferences, rationale — keep it all. The checkboxes are scaffolding added on top, not a replacement.
If the plan has checkboxes but no Branch field — add the field, copy to conventional path.
If the plan is already sdlc-format — verify it, run status:
bash "$PLUGIN_DIR/plan-progress.sh" status "$PLAN_FILE"
bash "$PLUGIN_DIR/plan-progress.sh" check "$PLAN_FILE"
If the plan has no Issue: field and gh auth status succeeds, create a tracking issue:
ISSUE_REF=$(bash "$PLUGIN_DIR/issue-sync.sh" create "$PLAN_FILE" 2>/dev/null || true)
[ -n "$ISSUE_REF" ] && echo "Tracking issue created: $ISSUE_REF"
Before writing ANY plan, discover the project's test files:
Glob: **/*.test.{ts,tsx,js,jsx}
Glob: **/*.spec.{ts,tsx,js,jsx}
Glob: **/__tests__/**
Glob: **/test_*.py
Glob: **/*_test.go
If you skip this step, you WILL incorrectly conclude the project has no tests.
$ARGUMENTS references a task ID (Jira, GitHub issue), fetch the detailsCreate at: ~/.claude/plans/$REPO_NAME/$BRANCH.md
Required structure:
Branch: <branch-name>
Created: <date>
Updated: <date>
Issue: <owner/repo#N — auto-populated by issue-sync.sh create>
# <Title>
## Context
<Rich context — the WHY, the architecture, the decisions, the constraints.
This section should be detailed enough that a new session with no prior
context can understand the full scope of the work.>
## Implementation Plan
### <Section 1>
- [ ] Step description — what to do, what files to touch
- [ ] Step description
### <Section 2>
- [ ] Step description
## Key Decisions
- Decision and rationale
## Edge Cases
- Edge case and how to handle it
## Test Infrastructure
- Test runner: <detected runner>
- Test file count: <N> files found
- Test patterns: <patterns used in this codebase>
## Progress
Plan created on <date>.
Present the plan to the user. Get confirmation before proceeding.
If $ARGUMENTS contains a parent issue reference (format: owner/repo#N), link the plan's tracking issue as a sub-issue:
if echo "$ARGUMENTS" | grep -qE '[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+#[0-9]+'; then
PARENT_REF=$(echo "$ARGUMENTS" | grep -oE '[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+#[0-9]+' | head -1)
bash "$PLUGIN_DIR/issue-sync.sh" link-parent "$PLAN_FILE" "$PARENT_REF" 2>/dev/null || true
fi
Initialize the quality directory:
mkdir -p .quality/proof .quality/checkpoints
Add .quality/ to .gitignore if not already present.
Save the initial plan checkpoint:
bash "$PLUGIN_DIR/checkpoint.sh" save plan "Plan ready — $(grep -c '\- \[ \]' "$PLAN_FILE") items to implement"
Show the plan status:
bash "$PLUGIN_DIR/plan-progress.sh" status "$PLAN_FILE"
If the plan phase modified any tracked files (e.g., adding .quality/ to .gitignore), commit immediately:
git status --porcelain | grep -q . && git add -u && git commit -m "$(cat <<'EOF'
chore: initialize quality infrastructure for sdlc workflow
Co-Authored-By: Claude <noreply@anthropic.com>
EOF
)"
Tell the user:
$PLAN_FILE/sdlc:pair-build to start implementationDO NOT start building. This skill's job is planning only. Implementation is /sdlc:pair-build's job.
When /sdlc:pair-build completes a plan item:
bash "$PLUGIN_DIR/run-gates.sh" buildbash "$PLUGIN_DIR/checkpoint.sh" save build "Completed: <item description>"bash "$PLUGIN_DIR/plan-progress.sh" mark "$PLAN_FILE" "<search text>"This transforms:
- [ ] Add user auth endpoint
Into:
- [x] Add user auth endpoint <!-- proof: build-latest -->
The proof anchor references a checkpoint file in .quality/checkpoints/ that contains:
To verify any checked item: bash "$PLUGIN_DIR/plan-progress.sh" check "$PLAN_FILE"
This catches: