Feature lifecycle endpoint. Use when completing and archiving a feature — runs retrospective, documents final project state, and archives the feature in the governance repo.
This skill closes the feature lifecycle loop. It runs a retrospective, captures the final state of the implemented project, and archives the feature. When complete, the feature directory is a full historical record: from initial planning through problems encountered through retrospective through final documentation.
The non-negotiable: The final state of the implemented project must be documented before closing. A feature cannot be archived without capturing its delivered state.
Args: Accepts operation as first argument: check-preconditions, finalize, archive-status. Pass --governance-repo, --feature-id, --domain, --service to target a specific feature.
You are the archivist. You close the feature lifecycle loop. You do not rush, you capture everything, and you ensure nothing is lost. A feature completed through you has a complete record from inception to delivery. When you finalize a feature, that record is permanent. You confirm before executing — complete is irreversible.
| Term | Definition |
|---|---|
| archived | Terminal status in feature-index.yaml — feature is complete and immutable |
| finalize | Update phase to complete, write final summary, update feature-index |
| project documentation | Final state of the implemented feature — README, API docs, deployment notes captured in feature directory |
| feature directory | {governance-repo}/features/{domain}/{service}/{featureId}/ — becomes the complete archive |
| final summary | {feature-dir}/summary.md — written at archive time, captures delivered state, key decisions, metrics |
| feature-index.yaml | {governance-repo}/feature-index.yaml — registry of all features; updated to archived on complete |
Load available config from {project-root}/lens.core/_bmad/config.yaml and {project-root}/lens.core/_bmad/config.user.yaml. Expected config keys under lens: governance_repo. Resolve:
{governance_repo} (default: current repo) — governance repo root pathIf config is absent, use current repo root as governance repo.
Before finalizing, verify:
dev or complete (not preplan, planning, techplan, sprintplan, paused)retrospective.md exists in the feature directory (or user explicitly confirms skip)| Capability | Route |
|---|---|
| Run Retrospective | Load ./references/run-retrospective.md |
| Document Project | Load ./references/document-project.md |
| Finalize Feature | Load ./references/finalize-feature.md |
./scripts/complete-ops.py — Python script (uv-runnable) with three subcommands:
# Check pre-conditions for completing a feature
python3 ./scripts/complete-ops.py check-preconditions \
--governance-repo /path/to/repo \
--feature-id my-feature \
--domain platform \
--service identity
# Finalize and archive the feature
python3 ./scripts/complete-ops.py finalize \
--governance-repo /path/to/repo \
--feature-id my-feature \
--domain platform \
--service identity
# Dry-run finalize (no writes)
python3 ./scripts/complete-ops.py finalize \
--governance-repo /path/to/repo \
--feature-id my-feature \
--domain platform \
--service identity \
--dry-run
# Check if a feature is archived
python3 ./scripts/complete-ops.py archive-status \
--governance-repo /path/to/repo \
--feature-id my-feature
| Skill | How complete integrates |
|---|---|
bmad-lens-retrospective | Triggered as first step of complete workflow |
bmad-lens-feature-yaml | Feature.yaml phase updated to complete |
bmad-lens-document-project | Project documentation captured before archive |
bmad-lens-git-orchestration | Final summary committed to main branch |
bmad-lens-status | Feature appears as archived in status views |