Project Finish
Purpose
Finish project work by syncing verified implementation knowledge back into .llm-wiki, artifact registry, and progress dashboard when enabled, then preparing a concise handoff.
This skill does not perform broad code review. Use project-review for review readiness and drift findings.
When to Use
Use when the user says:
- finish, done, sync, update status, prepare handoff
- work is implemented and verification is available or limited
- update wiki, requirement status, bug status, artifact registry, or progress dashboard
- summarize what changed and what remains risky
When Not to Use
- Do not use before implementation or verification exists.
- Do not use for initial project setup; use
project-init.
- Do not use for bug diagnosis; use
project-fix.
- Do not use as a substitute for findings-first review.
Owned Gates
- Verification Gate
- Finish Sync Gate
Initialization Gate
Run after resolving the project root and before reading or updating lifecycle completion state.
wiki_required: true
on_missing_wiki: route project-init
direct_invocation_missing_wiki: dispatch-project-init
- When directly invoked and no parent router is active, treat the bootstrap handoff as an internal routing message, not a terminal user-facing response.
- Unless an explicit no-write constraint or root-confidence check requires confirmation, continue through
project-init in the same turn, consume its return handoff, and resume only at a supported next gate.
pending_primary_stage: project-finish
- Preserve the user's original finish request as
pending_intent.
- If
<project_root>/.llm-wiki/ is absent, stop and return a Context Handoff to project-init; resume only after the router receives initialization readiness and a supported next gate.
- Do not create a partial
.llm-wiki/, completion record, handoff, dashboard status, or verification claim inside this child as a substitute for initialization.
On the missing-wiki branch, emit this minimal handoff:
bootstrap_handoff:
project_root: <resolved project root>
pending_intent: <preserved user request>
pending_primary_stage: project-finish
requested_stage_or_bridge: project-init
bootstrap_mode: automatic-minimal
current_gate: Initialization Gate
Required First Check
- Resolve project root.
- Run the Initialization Gate before resolving child references or completion state.
- Resolve optional shared references from
../references/ or local references/. If flow-record.md, progress-dashboard.md, or templates.md is missing, continue in degraded mode using the minimum rules in this skill; report the missing deep references and update only evidence-backed wiki state.
- Identify active Change Brief, Bug Brief, or working-context.
- Check verification evidence, provenance, raw output, and whether any accepted limitation has a non-agent acceptor.
- Inspect changed files, including whether production code and tests/mocks changed together.
- Decide whether the Verification Gate test-integrity sub-check is required before updating testing status.
- Decide affected wiki pages, artifacts, dashboard sections, and handoff path.
Core Process
Read as needed:
../references/north-star.md
../references/lifecycle-gates.md
../references/flow-record.md
../references/session-digest.md
../references/progress-dashboard.md
../references/progress-dashboard-template.html
../references/base-graph.md
../references/tool-bridge.md
../references/superpowers-bridge.md
../references/templates.md
Reference availability policy:
- Shared references are deep references, not startup requirements.
- Do not stop solely because
../references/ is missing.
- In degraded mode, finish sync may update Change Brief, Bug Brief, Flow Record, log, and handoff with compact Markdown, but must not generate unsupported dashboard claims.
- Dashboard updates require either the dashboard reference/template or a clear existing dashboard data contract.
Workflow:
- Resolve project root and lifecycle session.
- Confirm verification evidence: tests, compile, lint, manual verification, or explicit accepted limitation.
- Record verification provenance: executor, command/check, raw output reference, exit code, scope, authority, trust level, limitation acceptor, and residual risk.
- Treat agent-written summaries as supporting notes, not as independent authority.
- An agent may propose a limitation, but must not self-accept it.
accepted limitation requires user, project owner, CI policy, or external reviewer acceptance.
- Use verification-before-completion when available before claiming completion.
- Summarize actual code and behavior changes.
- Map changed files to affected wiki pages.
- If production code and tests/mocks/fixtures/expected values changed together, run the Verification Gate test-integrity sub-check before marking testing done.
- Update only affected
.llm-wiki pages.
- Update the related working-context, Change Brief, or Bug Brief Flow Record first. Flow Record is the lifecycle status authority; dashboard, handoff, and log entries must be generated from it or linked back to it.
- Mark Flow Record steps as verified, done, blocked, or skipped using evidence-backed step rules and trust level.
- When finishing work linked to a Session Digest, update related requirement, bug, or Flow Record only if selected digest items were explicitly promoted into that lifecycle object. If recall-context items are now confirmed or rejected by implementation evidence, record that outcome in the digest or
.llm-wiki/log.md when useful without silently changing project truth.
- Record verification limitation and residual risk when verification was partial or blocked.
- Register important specs, plans, reports, verification notes, handoffs, and dashboard as artifacts.
- If dashboard is registered or
.llm-wiki/dashboard/progress.html exists, rebuild or refresh only evidence-backed dashboard data/sections from Flow Record plus artifact registry evidence.
- If dashboard is expected but missing, recreate it from
../references/progress-dashboard-template.html and mark status conservatively.
- Prepare or update the handoff in
.llm-wiki/handoff/<flow-id>-handoff.md unless the project already has a more specific handoff filename for that same flow_id; treat handoff as archive/continuation summary, not as the status authority.
- If finishing work changed service responsibility, architecture overview, cross-service ownership, or Base catalog/overview expectations, generate a Base Graph Handoff or update suggestion.
- Do not write Base tracked files from a business-project session. Only write Base files when cwd is the Base Graph repo with
graph_role: base or when the user explicitly enters Base write mode from base-graph.md.
- Write a concise
.llm-wiki/log.md audit entry when sync changes durable state.
- Report implementation summary, verification, sync updates, residual risk, and next action.
LLM Wiki Doctor Finish Check
When a repo contains .llm-wiki/tools/llm_wiki_doctor.py, run it during project-finish after affected wiki pages are synced and before preparing handoff:
python .llm-wiki/tools/llm_wiki_doctor.py validate --root . --changed --phase finish --format text --fail-on error
Record the command, exit code, WARN count, ERROR count, and unresolved WARN rationale in the handoff. Do not use --flow; associate findings with the current flow in the handoff text. WARN findings are visible measurement output and do not fail project-finish unless policy explicitly promotes a check to ERROR.
In --phase finish, unresolved dirty captures become blocking unresolved-dirty-capture ERROR findings. Do not claim a captured wiki item is fresh or source-verified until its dirty capture has been resolved to a clean verified_commit, or explicitly report it as clue-only.
Mode / Entry Selection
| Mode |
Use when |
verified-finish |
verification passed with usable provenance and sync can mark work verified/done |
partial-finish |
verification is partial or blocked and the user/project owner/reviewer accepts limitation |
status-sync |
user wants wiki/artifact/dashboard state updated from known evidence |
handoff-only |
user wants summary without changing files |
Inputs
- active Change Brief, Bug Brief, or working-context
- changed files or git diff
- verification command output or manual verification notes
- verification provenance: executor, raw output reference, exit code, scope, authority, trust level, limitation acceptor
- related Session Digest when historical session context influenced the work
- artifact paths
- dashboard path when enabled
Outputs
Report:
Implementation summary:
Verification:
Wiki updates:
Artifact updates:
Dashboard updates:
Session Digest updates:
Residual risk:
Next action:
Changed file mapping:
Changed file:
Module:
Related requirement:
Related bug:
Related source proxy:
Wiki pages to update:
Reason:
Flow Record update mapping:
flow_id:
development:
status:
evidence:
testing:
status:
evidence:
trust_level:
limitation_acceptor:
archive:
status:
evidence:
unsupported_done_claims_downgraded:
Rules:
development can be done only when changed files or implementation evidence are recorded.
testing can be done only when verification passed with provenance or an explicit accepted limitation is recorded with a non-agent acceptor.
testing should use a conservative note such as passed-agent-local, needs-review, blocked, or done with user-accepted limitation when verification authority is not CI-backed/reviewer-backed.
archive can be done only when a handoff, done note, release/deploy note, or accepted closure exists. Project handoffs belong under .llm-wiki/handoff/, not .llm-wiki/working-context/.
- Partial verification should mark
testing as blocked, active, or done with limitation in notes, not silently complete.
- If tests, mocks, fixtures, snapshots, or expected values changed with production code, do not mark testing done until the Verification Gate records assertion strength and over-mocking risk.
- Dashboard, handoff, and log entries must not introduce stronger status than the Flow Record supports.
Handoff Path Rule
Default handoff path:
.llm-wiki/handoff/<flow-id>-handoff.md
Use a descriptive suffix only when it preserves the same flow_id, for example:
.llm-wiki/handoff/<flow-id>-implementation-handoff.md
Do not store final handoff artifacts in .llm-wiki/working-context/. Working context is for scoped planning and execution notes; handoff is the archive/continuation entry point. After moving or creating handoff, update Flow Record archive evidence, artifact registry, and dashboard links to the .llm-wiki/handoff/ path.
Base Graph Handoff
When Base Graph overview or catalog should change but the current session is a business-project session, generate this handoff instead of editing Base tracked files:
## Base Graph Handoff
- source_project:
- reason:
- affected_projects:
- suggested_catalog_changes:
- suggested_overview_changes:
- evidence:
- verification_status:
Context Handoff
Accept router or stage handoff with lifecycle session, active sources, scope, artifacts, verification notes, and constraints.
Return Handoff
Return:
## Return Handoff
- stage_or_bridge_used: project-finish
- result_summary:
- changed_assumptions:
- recommended_scope_changes:
- artifacts:
- verification_notes:
- lifecycle_updates_needed:
- next_gate:
Boundaries
- Do not claim work is complete without verification evidence or an explicit limitation.
- Do not self-accept a limitation. Agent-proposed limitations stay proposed until accepted by the user, project owner, CI policy, or external reviewer.
- Do not promote agent-local verification to final verified/pre-merge confidence without raw output provenance plus CI, reviewer, or explicit user acceptance.
- Do not write large implementation narratives into
.llm-wiki.
- Do not update unrelated modules or sources.
- Do not update dashboard without evidence links.
- Do not update dashboard status before updating the matching Flow Record status.
- Do not mark Flow Record
testing or archive done without verification or handoff evidence.
- Do not leave dashboard or artifact registry links pointing at old handoff paths after moving a handoff.
- Do not rewrite dashboard layout when a small
dashboardData or marked-section update is enough.
- Do not hide residual risk when tests could not run.
- Do not weaken tests, mocks, fixtures, snapshots, or expected values to bypass a failing verification command without recording the Verification Gate test-integrity risk.
Common Mistakes
- Marking done when verification is partial.
- Treating an agent-written verification note as an external audit.
- Writing
accepted limitation without recording who accepted it.
- Marking tests done after changing mocks or expectations without checking test integrity.
- Updating every wiki page instead of affected pages.
- Writing final handoff into
.llm-wiki/working-context/ instead of .llm-wiki/handoff/.
- Updating Flow Record without updating artifact registry and dashboard links to the same evidence path.
- Forgetting artifact registry entries for plans/reports/dashboards.
- Letting dashboard become the only status record.
- Skipping review when the user asked for merge readiness.
1---2name: project-finish3description: Use when finishing verified project work, syncing actual changes back to LLM Wiki, updating requirement or bug status, recording verification, and preparing handoff.4---56# Project Finish78## Purpose910Finish project work by syncing verified implementation knowledge back into `.llm-wiki`, artifact registry, and progress dashboard when enabled, then preparing a concise handoff.1112This skill does not perform broad code review. Use `project-review` for review readiness and drift findings.1314## When to Use1516Use when the user says:1718- finish, done, sync, update status, prepare handoff19- work is implemented and verification is available or limited20- update wiki, requirement status, bug status, artifact registry, or progress dashboard21- summarize what changed and what remains risky2223## When Not to Use2425- Do not use before implementation or verification exists.26- Do not use for initial project setup; use `project-init`.27- Do not use for bug diagnosis; use `project-fix`.28- Do not use as a substitute for findings-first review.2930## Owned Gates3132- Verification Gate33- Finish Sync Gate3435## Initialization Gate3637Run after resolving the project root and before reading or updating lifecycle completion state.3839- `wiki_required: true`40- `on_missing_wiki: route project-init`41- `direct_invocation_missing_wiki: dispatch-project-init`42- When directly invoked and no parent router is active, treat the bootstrap handoff as an internal routing message, not a terminal user-facing response.43- Unless an explicit no-write constraint or root-confidence check requires confirmation, continue through `project-init` in the same turn, consume its return handoff, and resume only at a supported next gate.44- `pending_primary_stage: project-finish`45- Preserve the user's original finish request as `pending_intent`.46- If `<project_root>/.llm-wiki/` is absent, stop and return a Context Handoff to `project-init`; resume only after the router receives initialization readiness and a supported next gate.47- Do not create a partial `.llm-wiki/`, completion record, handoff, dashboard status, or verification claim inside this child as a substitute for initialization.4849On the missing-wiki branch, emit this minimal handoff:5051```text52bootstrap_handoff:53 project_root: <resolved project root>54 pending_intent: <preserved user request>55 pending_primary_stage: project-finish56 requested_stage_or_bridge: project-init57 bootstrap_mode: automatic-minimal58 current_gate: Initialization Gate59```6061## Required First Check62631. Resolve project root.642. Run the Initialization Gate before resolving child references or completion state.653. Resolve optional shared references from `../references/` or local `references/`. If `flow-record.md`, `progress-dashboard.md`, or `templates.md` is missing, continue in degraded mode using the minimum rules in this skill; report the missing deep references and update only evidence-backed wiki state.664. Identify active Change Brief, Bug Brief, or working-context.675. Check verification evidence, provenance, raw output, and whether any accepted limitation has a non-agent acceptor.686. Inspect changed files, including whether production code and tests/mocks changed together.697. Decide whether the Verification Gate test-integrity sub-check is required before updating testing status.708. Decide affected wiki pages, artifacts, dashboard sections, and handoff path.7172## Core Process7374Read as needed:7576- `../references/north-star.md`77- `../references/lifecycle-gates.md`78- `../references/flow-record.md`79- `../references/session-digest.md`80- `../references/progress-dashboard.md`81- `../references/progress-dashboard-template.html`82- `../references/base-graph.md`83- `../references/tool-bridge.md`84- `../references/superpowers-bridge.md`85- `../references/templates.md`8687Reference availability policy:8889- Shared references are deep references, not startup requirements.90- Do not stop solely because `../references/` is missing.91- In degraded mode, finish sync may update Change Brief, Bug Brief, Flow Record, log, and handoff with compact Markdown, but must not generate unsupported dashboard claims.92- Dashboard updates require either the dashboard reference/template or a clear existing dashboard data contract.9394Workflow:95961. Resolve project root and lifecycle session.972. Confirm verification evidence: tests, compile, lint, manual verification, or explicit accepted limitation.98 - Record verification provenance: executor, command/check, raw output reference, exit code, scope, authority, trust level, limitation acceptor, and residual risk.99 - Treat agent-written summaries as supporting notes, not as independent authority.100 - An agent may propose a limitation, but must not self-accept it. `accepted limitation` requires user, project owner, CI policy, or external reviewer acceptance.1013. Use verification-before-completion when available before claiming completion.1024. Summarize actual code and behavior changes.1035. Map changed files to affected wiki pages.1046. If production code and tests/mocks/fixtures/expected values changed together, run the Verification Gate test-integrity sub-check before marking testing done.1057. Update only affected `.llm-wiki` pages.1068. Update the related working-context, Change Brief, or Bug Brief Flow Record first. Flow Record is the lifecycle status authority; dashboard, handoff, and log entries must be generated from it or linked back to it.1079. Mark Flow Record steps as verified, done, blocked, or skipped using evidence-backed step rules and trust level.10810. When finishing work linked to a Session Digest, update related requirement, bug, or Flow Record only if selected digest items were explicitly promoted into that lifecycle object. If recall-context items are now confirmed or rejected by implementation evidence, record that outcome in the digest or `.llm-wiki/log.md` when useful without silently changing project truth.10911. Record verification limitation and residual risk when verification was partial or blocked.11012. Register important specs, plans, reports, verification notes, handoffs, and dashboard as artifacts.11113. If dashboard is registered or `.llm-wiki/dashboard/progress.html` exists, rebuild or refresh only evidence-backed dashboard data/sections from Flow Record plus artifact registry evidence.11214. If dashboard is expected but missing, recreate it from `../references/progress-dashboard-template.html` and mark status conservatively.11315. Prepare or update the handoff in `.llm-wiki/handoff/<flow-id>-handoff.md` unless the project already has a more specific handoff filename for that same `flow_id`; treat handoff as archive/continuation summary, not as the status authority.114 - If finishing work changed service responsibility, architecture overview, cross-service ownership, or Base catalog/overview expectations, generate a Base Graph Handoff or update suggestion.115 - Do not write Base tracked files from a business-project session. Only write Base files when cwd is the Base Graph repo with `graph_role: base` or when the user explicitly enters Base write mode from `base-graph.md`.11616. Write a concise `.llm-wiki/log.md` audit entry when sync changes durable state.11717. Report implementation summary, verification, sync updates, residual risk, and next action.118119## LLM Wiki Doctor Finish Check120121When a repo contains `.llm-wiki/tools/llm_wiki_doctor.py`, run it during project-finish after affected wiki pages are synced and before preparing handoff:122123```text124python .llm-wiki/tools/llm_wiki_doctor.py validate --root . --changed --phase finish --format text --fail-on error125```126127Record the command, exit code, WARN count, ERROR count, and unresolved WARN rationale in the handoff. Do not use `--flow`; associate findings with the current flow in the handoff text. WARN findings are visible measurement output and do not fail project-finish unless policy explicitly promotes a check to ERROR.128129In `--phase finish`, unresolved dirty captures become blocking `unresolved-dirty-capture` ERROR findings. Do not claim a captured wiki item is fresh or source-verified until its dirty capture has been resolved to a clean `verified_commit`, or explicitly report it as clue-only.130## Mode / Entry Selection131132| Mode | Use when |133|---|---|134| `verified-finish` | verification passed with usable provenance and sync can mark work verified/done |135| `partial-finish` | verification is partial or blocked and the user/project owner/reviewer accepts limitation |136| `status-sync` | user wants wiki/artifact/dashboard state updated from known evidence |137| `handoff-only` | user wants summary without changing files |138139## Inputs140141- active Change Brief, Bug Brief, or working-context142- changed files or git diff143- verification command output or manual verification notes144- verification provenance: executor, raw output reference, exit code, scope, authority, trust level, limitation acceptor145- related Session Digest when historical session context influenced the work146- artifact paths147- dashboard path when enabled148149## Outputs150151Report:152153```text154Implementation summary:155Verification:156Wiki updates:157Artifact updates:158Dashboard updates:159Session Digest updates:160Residual risk:161Next action:162```163164Changed file mapping:165166```text167Changed file:168Module:169Related requirement:170Related bug:171Related source proxy:172Wiki pages to update:173Reason:174```175176Flow Record update mapping:177178```text179flow_id:180development:181 status:182 evidence:183testing:184 status:185 evidence:186 trust_level:187 limitation_acceptor:188archive:189 status:190 evidence:191unsupported_done_claims_downgraded:192```193194Rules:195196- `development` can be `done` only when changed files or implementation evidence are recorded.197- `testing` can be `done` only when verification passed with provenance or an explicit accepted limitation is recorded with a non-agent acceptor.198- `testing` should use a conservative note such as `passed-agent-local`, `needs-review`, `blocked`, or `done with user-accepted limitation` when verification authority is not CI-backed/reviewer-backed.199- `archive` can be `done` only when a handoff, done note, release/deploy note, or accepted closure exists. Project handoffs belong under `.llm-wiki/handoff/`, not `.llm-wiki/working-context/`.200- Partial verification should mark `testing` as `blocked`, `active`, or `done with limitation` in notes, not silently complete.201- If tests, mocks, fixtures, snapshots, or expected values changed with production code, do not mark testing done until the Verification Gate records assertion strength and over-mocking risk.202- Dashboard, handoff, and log entries must not introduce stronger status than the Flow Record supports.203204## Handoff Path Rule205206Default handoff path:207208```text209.llm-wiki/handoff/<flow-id>-handoff.md210```211212Use a descriptive suffix only when it preserves the same `flow_id`, for example:213214```text215.llm-wiki/handoff/<flow-id>-implementation-handoff.md216```217218Do not store final handoff artifacts in `.llm-wiki/working-context/`. Working context is for scoped planning and execution notes; handoff is the archive/continuation entry point. After moving or creating handoff, update Flow Record `archive` evidence, artifact registry, and dashboard links to the `.llm-wiki/handoff/` path.219220## Base Graph Handoff221222When Base Graph overview or catalog should change but the current session is a business-project session, generate this handoff instead of editing Base tracked files:223224```markdown225## Base Graph Handoff226227- source_project:228- reason:229- affected_projects:230- suggested_catalog_changes:231- suggested_overview_changes:232- evidence:233- verification_status:234```235236## Context Handoff237238Accept router or stage handoff with lifecycle session, active sources, scope, artifacts, verification notes, and constraints.239240## Return Handoff241242Return:243244```markdown245## Return Handoff246247- stage_or_bridge_used: project-finish248- result_summary:249- changed_assumptions:250- recommended_scope_changes:251- artifacts:252- verification_notes:253- lifecycle_updates_needed:254- next_gate:255```256257## Boundaries258259- Do not claim work is complete without verification evidence or an explicit limitation.260- Do not self-accept a limitation. Agent-proposed limitations stay proposed until accepted by the user, project owner, CI policy, or external reviewer.261- Do not promote agent-local verification to final verified/pre-merge confidence without raw output provenance plus CI, reviewer, or explicit user acceptance.262- Do not write large implementation narratives into `.llm-wiki`.263- Do not update unrelated modules or sources.264- Do not update dashboard without evidence links.265- Do not update dashboard status before updating the matching Flow Record status.266- Do not mark Flow Record `testing` or `archive` done without verification or handoff evidence.267- Do not leave dashboard or artifact registry links pointing at old handoff paths after moving a handoff.268- Do not rewrite dashboard layout when a small `dashboardData` or marked-section update is enough.269- Do not hide residual risk when tests could not run.270- Do not weaken tests, mocks, fixtures, snapshots, or expected values to bypass a failing verification command without recording the Verification Gate test-integrity risk.271272## Common Mistakes273274- Marking done when verification is partial.275- Treating an agent-written verification note as an external audit.276- Writing `accepted limitation` without recording who accepted it.277- Marking tests done after changing mocks or expectations without checking test integrity.278- Updating every wiki page instead of affected pages.279- Writing final handoff into `.llm-wiki/working-context/` instead of `.llm-wiki/handoff/`.280- Updating Flow Record without updating artifact registry and dashboard links to the same evidence path.281- Forgetting artifact registry entries for plans/reports/dashboards.282- Letting dashboard become the only status record.283- Skipping review when the user asked for merge readiness.