Skill v1.0.0
currentAutomated scan100/100name: sdd-ship description: | Archive a completed feature and close the SDD cycle (Phase 4): verify the build is truly complete, archive every phase artifact, capture lessons learned, update all phase documents to Shipped, and clean the working folders. Carries the full ship methodology — verification order, ship readiness matrix, the concrete archive procedure, status transitions, lessons-learned categories, quality gate, and the end-of-cycle handoff. Executed by ship-agent and the /ship command; loadable directly when closing a feature by hand. Use when completed work needs closing: "ship the feature", "archive the completed feature", "Phase 4", "lessons learned", "finalize the feature". Not for implementation work — writing code, completing tasks, or fixing failing tests is Phase 3; use sdd-build. Shipping starts only after the build report shows 100% completion. metadata: version: "1.0.0"
SDD Ship — feature archival and lessons learned (Phase 4)
Ship closes the 5-phase SDD workflow: it turns a completed feature's working documents into a permanent archive with lessons learned, marks every phase document Shipped, and leaves the working folders clean for the next feature. Nothing ships unless the build is verifiably complete.
Contract
| Aspect | Value | |
|---|---|---|
| Input (required) | .claude/sdd/features/DEFINE_{FEATURE}.md · .claude/sdd/features/DESIGN_{FEATURE}.md · .claude/sdd/reports/BUILD_REPORT_{FEATURE}.md | |
| Input (optional) | .claude/sdd/features/BRAINSTORM_{FEATURE}.md (if Phase 0 was used) | |
| Output | .claude/sdd/archive/{FEATURE}/ containing all artifacts + SHIPPED_{DATE}.md | |
| Template | ${CLAUDE_PLUGIN_ROOT}/sdd/templates/SHIPPED_TEMPLATE.md — the SHIPPED document's required shape; follow it, never improvise the format | |
| Contract source | ${CLAUDE_PLUGIN_ROOT}/sdd/architecture/WORKFLOW_CONTRACTS.yaml (ship:, status_transitions:, folder_structure:, naming:) |
Naming rules (from the contracts): feature names are SCREAMING_SNAKE_CASE (e.g., USER_NOTIFICATIONS); the archive folder is .claude/sdd/archive/{FEATURE_NAME}/; the shipped file is SHIPPED_{YYYY-MM-DD}.md, dated with the ship date.
Verification order
Resolve completeness in this order before anything is archived:
┌─────────────────────────────────────────────────────────────────────┐│ 1. ARTIFACT VERIFICATION (confirm completeness) ││ └─ Read: .claude/sdd/features/DEFINE_{FEATURE}.md ││ └─ Read: .claude/sdd/features/DESIGN_{FEATURE}.md ││ └─ Read: .claude/sdd/reports/BUILD_REPORT_{FEATURE}.md ││ └─ Optional: .claude/sdd/features/BRAINSTORM_{FEATURE}.md ││ ││ 2. BUILD REPORT VALIDATION ││ └─ All tasks completed? ││ └─ All tests passing? ││ └─ No blocking issues? ││ ││ 3. CONFIDENCE ASSIGNMENT ││ ├─ All artifacts present + tests pass → 0.95 → Ship ││ ├─ Artifacts present + minor issues → 0.80 → Ask user ││ └─ Missing artifacts or failures → 0.50 → Cannot ship │└─────────────────────────────────────────────────────────────────────┘
Ship Readiness Matrix
| Artifacts | Tests | Issues | Confidence | Action | |
|---|---|---|---|---|---|
| All present | Pass | None | 0.95 | Ship immediately | |
| All present | Pass | Minor | 0.85 | Ship with notes | |
| All present | Fail | Any | 0.50 | Cannot ship | |
| Missing | Any | Any | 0.30 | Cannot ship |
When NOT to ship
Any of these blocks the ship — stop and route back to /build:
- BUILD_REPORT shows incomplete tasks
- Tests are failing
- Blocking issues documented in the build report
- Missing required artifacts (DEFINE, DESIGN, BUILD_REPORT)
Ship only when all acceptance tests from DEFINE pass, the build report shows 100% completion, and no blocking issues remain.
Process
Step 1 — Verify completion
Read(.claude/sdd/features/DEFINE_{FEATURE}.md)Read(.claude/sdd/features/DESIGN_{FEATURE}.md)Read(.claude/sdd/reports/BUILD_REPORT_{FEATURE}.md)# Verify build report shows success
Run the verification order above. Confidence below 0.85 → do not proceed.
Step 2 — Create archive folder
mkdir -p .claude/sdd/archive/{FEATURE_NAME}/
Step 3 — Copy artifacts to archive
cp .claude/sdd/features/DEFINE_{FEATURE}.md .claude/sdd/archive/{FEATURE}/cp .claude/sdd/features/DESIGN_{FEATURE}.md .claude/sdd/archive/{FEATURE}/cp .claude/sdd/reports/BUILD_REPORT_{FEATURE}.md .claude/sdd/archive/{FEATURE}/
If Phase 0 was used, also archive the brainstorm:
cp .claude/sdd/features/BRAINSTORM_{FEATURE}.md .claude/sdd/archive/{FEATURE}/
Resulting archive structure:
.claude/sdd/archive/{FEATURE}/├── BRAINSTORM_{FEATURE}.md (if exists)├── DEFINE_{FEATURE}.md├── DESIGN_{FEATURE}.md├── BUILD_REPORT_{FEATURE}.md└── SHIPPED_{DATE}.md
Step 4 — Generate SHIPPED document
Compose the SHIPPED document following ${CLAUDE_PLUGIN_ROOT}/sdd/templates/SHIPPED_TEMPLATE.md — the template owns the format; do not improvise sections. It covers the summary, timeline, metrics, what was built, success-criteria verification against DEFINE, lessons learned, recommendations, and the archived-artifact list.
Step 5 — Update document statuses
Per WORKFLOW_CONTRACTS.yaml (status_transitions, trigger /ship completes), ship MUST update ALL phase documents to Shipped — this is the contract obligation that prevents stale "Ready for X" statuses:
| File | Field | Value | |
|---|---|---|---|
DEFINE_{FEATURE}.md | Status | ✅ Shipped | |
DESIGN_{FEATURE}.md | Status | ✅ Shipped | |
BUILD_REPORT_{FEATURE}.md | Status | ✅ Shipped |
Apply the updates to the archived copies (the working copies are removed in Step 6) and add a revision-history note to each:
Edit: archive/{FEATURE}/DEFINE_{FEATURE}.md-Status: → "✅ Shipped"-Add revision: "Shipped and archived"Edit: archive/{FEATURE}/DESIGN_{FEATURE}.md-Status: → "✅ Shipped"-Add revision: "Shipped and archived"Edit: archive/{FEATURE}/BUILD_REPORT_{FEATURE}.md-Status: → "✅ Shipped"
Step 6 — Clean up working files
rm .claude/sdd/features/DEFINE_{FEATURE}.mdrm .claude/sdd/features/DESIGN_{FEATURE}.mdrm .claude/sdd/reports/BUILD_REPORT_{FEATURE}.md
If a BRAINSTORM was archived in Step 3, remove its working copy too:
rm .claude/sdd/features/BRAINSTORM_{FEATURE}.md
Step 7 — Save SHIPPED document
Write(.claude/sdd/archive/{FEATURE}/SHIPPED_{DATE}.md)
Lessons learned
Review all artifacts for insights and capture at least 2 specific lessons in these categories:
| Category | Example | |
|---|---|---|
| Process | "Breaking into 4 independent functions enabled parallel development" | |
| Technical | "Using config.yaml instead of env vars improved testability" | |
| Communication | "Clarifying v1/v2 scope early prevented feature creep" | |
| Tools | "Using X library simplified Y" |
Rules for good lessons:
- Don't skip this — lessons learned prevent future mistakes.
- Be honest — document what didn't work too.
- Be specific and actionable — "Better planning" → "Create architecture diagram before coding".
- Archive everything — future you will thank present you.
Avoid vague lessons:
❌ "Better planning" (too vague)❌ "More testing" (not specific)❌ "Improved communication" (not actionable)
Quality Gate
Before saving the SHIPPED document:
PRE-FLIGHT CHECK├─ [ ] All artifacts verified present (DEFINE, DESIGN, BUILD_REPORT)├─ [ ] BUILD_REPORT shows all tasks complete├─ [ ] All tests passing├─ [ ] Acceptance tests from DEFINE verified├─ [ ] No blocking issues in the build report├─ [ ] Code deployed (if applicable)├─ [ ] Archive directory created├─ [ ] All artifacts copied to archive├─ [ ] ALL archived documents' status updated to "✅ Shipped"├─ [ ] At least 2 specific lessons documented└─ [ ] Working files cleaned up from features/ and reports/
Close the cycle — end-of-cycle handoff
When the archive is complete, report closure to the user:
| Handoff item | Content | |
|---|---|---|
| Archive location | .claude/sdd/archive/{FEATURE}/ with the full artifact list | |
| SHIPPED document | Path to SHIPPED_{DATE}.md + one-line summary of what shipped | |
| Lessons headline | The 2-3 most actionable lessons captured | |
| Statuses | Confirmation that DEFINE, DESIGN, and BUILD_REPORT now read "✅ Shipped" | |
| Workspace | features/ and reports/ clean of this feature's working files | |
| Next step | Start the next feature with /define (or /brainstorm for an unshaped idea) |
Anti-Patterns
| Never Do | Why | Instead | |
|---|---|---|---|
| Ship with failing tests | Broken code archived | Fix tests first — route back to /build | |
| Ship incomplete builds | Missing functionality | Complete build first | |
| Vague lessons learned | Not actionable | Be specific and concrete | |
| Skip artifact verification | May be incomplete | Always verify all exist | |
| Leave working files | Clutter | Clean up after archive | |
| Re-inline the SHIPPED format | Drifts from the template | Follow SHIPPED_TEMPLATE.md |
References
- Template:
${CLAUDE_PLUGIN_ROOT}/sdd/templates/SHIPPED_TEMPLATE.md - Contracts:
${CLAUDE_PLUGIN_ROOT}/sdd/architecture/WORKFLOW_CONTRACTS.yaml - Executor:
${CLAUDE_PLUGIN_ROOT}/agents/workflow/ship-agent.md - Entrypoint:
${CLAUDE_PLUGIN_ROOT}/commands/workflow/ship.md - Previous phase:
${CLAUDE_PLUGIN_ROOT}/commands/workflow/build.md