complete - log the finished work, make the work commit, and merge
SkillDev toolsComplete a finished feature, fix, or rollback by running final gates, archiving its spec, updating plans, creating the work commit, and requesting approval before squash merge. Use for /complete or requests to finish, wrap up, merge, or close the current work item.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the complete - log the finished work, make the work commit, and merge skill
What this skill tells your AI
The instructions your AI receives, as published by aiblueprinthq/ai-blueprint in .agents/skills/complete/SKILL.md and read by ahel’s review.
Context reuse: Reuse any required file already loaded in project instructions or the current session. Read it again only if absent, changed, or exact current bytes or line references are needed.
First action: Before project inspection, preflight, or any other tool call,
publish running to blueprint/.state/run.json using the dashboard activity
contract in AGENTS.md.
Where this sits in the workflow:
/feature, /fix, or /rollback -> /implement -> [complete] -> next
(the spec) (build it) (commit + merge + log)
/implement built the feature, fix, or rollback on its branch, with optional per-step commit
checkpoints. This skill closes it out: it logs the work, makes the single
work-level commit, and squash-merges. Run it only when the work is done,
reviewed, and the documented Verify command, or the fallback build and tests,
passes.
Before you start
Read blueprint/config.json. A missing file means the built-in defaults apply.
If the file exists but is invalid, stop and point the user to /doctor.
Configuration can strengthen or shape the completion gates, but it never grants
permission to commit, merge, push, deploy, publish, or take destructive action.
Confirm the work is actually finished: blueprint/context/current-feature.md
holds a real spec, its steps are built on a branch, and Verify, or the fallback
build and tests, passes. Apply the configured regular quality gates below before
logging or committing. Uncommitted step work is expected because per-step
checkpoints are optional; this skill commits it. Don't require the steps to be
pre-committed.
Read blueprint/context/review.md when present. A missing file on an older
install means no independent review has been requested. A pending,
changes-requested, malformed, or stale record is always a blocker because the
user already initiated that gate, even when its configured policy is manual.
Configured regular quality gates
Use qualityGates.regular for this work item:
- Audit:
manualruns only when the user explicitly requests/audit;when-sensitiveruns for authentication, authorization, payments, secrets, personal or user data, migrations, destructive operations, external side effects, security boundaries, or unusually broad changes;alwaysruns for every work item. - Independent review:
manualruns only when the user explicitly requests/audit independent current;when-sensitiverequires it for the same sensitive categories as Audit;alwaysrequires it for every work item. An independent review includes a full current audit, so it satisfies a selected Audit gate instead of repeating the audit in the builder session. - Check:
manualruns only when explicitly requested;when-behavioralruns when a done-when needs observed runtime behavior such as a click, request, CLI command, download, background job, or multi-screen flow;alwaysruns for every work item. - Try guide:
manualruns only when explicitly requested;when-user-facinggenerates a guide when the change affects UI, navigation, copy, a public API or CLI, output, or another workflow a person directly uses;alwaysgenerates one for every work item.
Apply automatic gates in this order: /check, review, then /try. When
independent review is selected, run /audit independent current, stop at its
handoff, and resume Complete only after a fresh reviewer writes a current
passing receipt. Otherwise run /audit current when Audit is selected.
Reuse adequate evidence produced during the current work item instead of
repeating it. A required gate that cannot run is a blocker. /try only generates
instructions for human review; never claim the user performed them. P0 and P1
finding blockers remain enforced regardless of these settings.
Step 0 - final safety pass
Before logging or committing, run a short safety pass and report blockers only:
- active spec exists and the work is not being completed from
mainormaster - the branch name uses the configured feature, fix, or rollback prefix
- changed files are tied to the active spec, with no unrelated dirty work mixed
in (dirty
blueprint/context/findings.mdandblueprint/context/review.mdare expected review evidence) - the exact
Verifycommand fromAGENTS.mdpassed in this session, when one is declared; otherwise the build passed, and tests passed when the project has a declared test command and the change touched logic - any check required by
qualityGates.regularhas evidence, and there is a clear manual try path - with
verification.logicTests: "required", logic changes have a configured runner and passing focused tests; otherwise completion is blocked and/testsis the next setup step - with
verification.uiEvidence: "required", UI done-whens have direct browser evidence, including screenshots and relevant console and network checks - any audit or try guide required by
qualityGates.regularran before completion - a selected independent-review gate has a
passedreceipt whose target equalsHEAD, whose base ref still produces the recorded merge base, whose exact spec SHA-256 still matches, whose reviewer adapter and selected model match the request, whose required Check result passed, whose receipt sections are non-empty, and whose target has no later changes except the review and findings files. Apply the same checks to any explicit receipt even when the configured policy ismanual. Any mismatch is stale and blocks completion. - when a passing independent receipt exists, the active spec is already
verifiedand remains byte-for-byte unchanged through archival - if workflow files changed,
.agentsand.claudestayed in sync where both adapters exist - no P0 or P1 finding in
blueprint/context/findings.mdisopenorfixed.fixedstill blocks on purpose: the repair exists but no review has looked at it - run/auditto close it. The only waivers areaccepted(the user's explicit decision in the current chat, reason recorded; never set it for them) orinvalid(an/auditre-examination verdict with recorded evidence, or the user's explicit call). A missing ledger file means no findings.
Do not claim "passed", "verified", or "working" without naming the command, route, screenshot, or output that proves it. Stop before Step 1 if required evidence is missing.
After this safety pass succeeds, set the active spec's **Status:** to
verified before archiving it when no independent receipt exists. With a
passing independent receipt, it must already be verified; do not rewrite it
after review. Rerun the required final checks either way because /complete
owns the final safety pass.
Step 1 - log the work
Check whether the spec is a feature, fix, or rollback. A fix is marked
Type: Fix and has no build-plan number. A rollback is marked Type: Rollback
and records the exact target feature, archive, commit, and parent.
- Feature - archive
blueprint/context/current-feature.mdtoblueprint/history/features/NN-name.md(NN is the build-plan number), and check it off inblueprint/build-plan.md(and its parent item once all sub-items are checked). Then recompute the overview fingerprint using/overview's checkbox-normalized hash contract and replace only the existingblueprint:source-hashvalue. Do not regenerate or rewrite the overview body. This keeps completion progress from looking like plan drift and migrates older exact-byte fingerprints. - Fix - archive it to
blueprint/history/fixes/name.md. A fix isn't a build-plan item, so there's nothing to check off. - Rollback - archive it to
blueprint/history/rollbacks/YYYY-MM-DD-NN-name.md, preserving the original completed feature archive. Createblueprint/history/rollbacks/first if an older Blueprint installation does not have it yet. Uncheck the exact target item inblueprint/build-plan.mdand its parent when applicable, then append a concise note to the target line with the rollback date and archive path. Keep the feature number stable. If the user later decides the feature is permanently abandoned rather than pending rebuild, that roadmap decision is a separate plan edit.
Archive resolved findings. If blueprint/context/findings.md holds any
findings, append a ## Findings section to the archive file just written with
every closed, accepted, or invalid entry at its final status (accepted
entries keep their recorded reason). Prefix each ID with the archive name for
global uniqueness: feature 12's F-03 becomes 12/F-03; fixes and rollbacks
use their archive filename as the prefix. An entry carried forward from earlier
work archives with the item that resolved it; its Found line preserves
where it came from. Only closed, accepted, and invalid entries are
resolved for archival. A fixed entry is not resolved at any severity: never
append it to the archive or remove it from the live ledger.
Then remove only the archived entries from the ledger. Entries with open,
fixed, or unverified status stay in the ledger with their IDs so they are
never silently dropped. A fixed P2/P3 finding does not block completion, but it
must remain verbatim for a later /audit re-review. When no open, fixed, or
unverified entries remain, reset the ledger to exactly this stub, and create it the
same way if the file is missing (an older install):
# Findings
> **Generated file.** The findings ledger: review findings raised by `/audit`
> against the work in progress, each with a durable ID, severity (P0-P3), and
> status. `/implement` marks repaired findings `fixed`, a later `/audit` pass
> moves them to `closed`, and `/complete` refuses to merge while any P0 or P1
> finding is `open` or `fixed`, then archives resolved findings with the work
> and resets this file.
_No findings recorded. `/audit` appends findings here when it finds them._
Archive independent review. When a current passed receipt exists, append
a ## Independent review section to the archive file with the receipt fields,
commands, safe evidence references, findings, and remaining risk from
blueprint/context/review.md. Preserve the full target and base SHAs, spec
hash, base ref, builder adapter and model, requested reviewer and model, actual
reviewer adapter and model, Check result, fresh-session declaration, and review
time. Do not archive a stale, pending, changes-requested, or malformed record.
Then reset blueprint/context/review.md to exactly this stub, creating it when
an older installation does not have it:
# Independent Review
> **Generated file.** Holds the active independent-review request or latest
> receipt for the current work item. `/audit independent current` prepares a
> handoff against an approved checkpoint, a fresh reviewer session completes it,
> and `/complete` refuses stale, pending, or changes-requested review state.
_No independent review requested. Run `/audit independent current` to prepare one._
Keep every unresolved entry in the ledger. Do not replace it with the empty stub
while it still contains any open, fixed, or unverified finding. After archiving
resolved findings, replace blueprint/context/current-feature.md with
the canonical stub below. Do not paraphrase it or substitute an abbreviated "no
work" stub. Before committing, read the file and confirm it exactly matches:
# Current Feature
> **Generated file.** Holds the one feature, fix, or rollback being built right now. Run
> `/feature <number-or-name>` to spec a build-plan feature, or `/fix "<bug>"` for
> an ad-hoc fix. Use `/rollback <completed-feature>` to plan a safe reversal.
> Build one thing at a time; `/complete` archives it under
> `blueprint/history/` and resets this file.
_Nothing in progress. Run `/feature`, `/fix`, or `/rollback` to start._
When no open, fixed, or unverified ledger entries remain, confirm
blueprint/context/findings.md exactly matches the canonical Findings stub
above. Otherwise, preserve the remaining entries without rewriting them.
Confirm blueprint/context/review.md exactly matches the canonical Independent
Review stub above.
Don't commit yet; the next step makes one work commit covering the code and these documentation changes. The archive is the build history.
Discard consumed prototypes. If this feature built the look from prototypes/
- its Design reference pointed there and an early step ported
prototypes/theme.cssinto the app - delete theprototypes/folder now. The tokens live in the real stylesheet and the HTML mockups were always throwaway; fold the deletion into this feature's commit. Skip this if the feature didn't consume prototypes.
Step 2 - make the work commit
Stage everything on the branch (any uncommitted step work plus the Step 1 logging
changes) and make one conventional work commit (for example feat: <feature>,
fix: <name>, or revert: roll back <feature>). Verify, or the fallback build
and tests, must pass first.
Step 3 - merge
- Squash-merge the branch into main, only with the user's explicit go-ahead, so the feature lands as one clean commit regardless of how many checkpoints the branch carried.
- Delete the branch after a clean merge.
- Stop and ask whether to push local
mainto its upstream. The merge approval does not count as push approval. - Push main only after a separate explicit yes to push main in the current chat. If the repo has no remote or upstream, say so instead of guessing.
Then point the user at /feature, /fix, or /rollback for the next thing.
Finish with a concise How to try it note for the completed work. For a
rollback, explain how to confirm the removed behavior is gone and name one
unaffected regression path. If the
manual path is more than a couple of steps, tell the user to run /try latest;
that command can read the archived feature after current-feature.md is reset.
Rules
- The work item is the unit of history: one squashed feature, fix, or rollback commit on main, even if the branch carried several checkpoint commits.
- A rollback preserves the original feature archive and adds a separate rollback archive. Never rewrite history to make the feature look as if it never existed.
- Don't merge unfinished or failing work. The documented
Verifycommand, or the fallback build and tests, must pass first. - Never merge while a P0 or P1 finding is
openorfixedin the ledger. The recorded ways past the gate without code areaccepted(only by the user's explicit decision, with their reason) orinvalid(only from re-examination evidence or the user's explicit call); both travel into the archive, never a silent drop. - Never merge with a required or explicitly initiated independent review that is missing, pending, changes-requested, malformed, or stale. The user may explicitly cancel a manual review before completion, but the agent never resets or waives it on the user's behalf.
- Merging and pushing are the user's calls: get an explicit yes for the merge,
then ask whether to push main. Do not treat merge approval,
/complete, or "looks good" as permission to push. - Push main only after a separate explicit yes to push main in the current chat.
- One item per completion. If a parent feature still has unchecked sub-features, leave the parent unchecked.
Formatting
Format the output to match the project's conventions in
blueprint/context/ai-interaction.md: concise, scannable markdown, with lists for
enumerations and tables for matrices rather than dense paragraphs.
Signals
- GitHub stars
- 395
- Forks
- 102
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
complete- Source
- github.com/aiblueprinthq/ai-blueprint