~/resources/skills/build-complete
// skill

Build-Complete

End-of-session checklist that closes loops most engineers forget. Updates the changelog, writes what shipped to your state files, reconciles plan drift, captures the decisions worth remembering. Stops the "what did I actually do today?" pattern.

// what it does

The "what did I actually do today?" pattern is universal. You shipped real work, but ten minutes later you couldn't list what changed without diffing. Build-complete is the end-of-session ritual that makes that diff for you and writes it down where it'll be useful later.

It updates the CHANGELOG. It writes new shipped features to your state files (the markdown files you keep for current truth, separate from the historical changelog). It catches plan drift — when work shipped on disk but the plan file still says it's pending, it reconciles automatically with disk evidence. It captures the decisions and lessons worth remembering to your persistent knowledge layer.

The plan-drift sweep is the underrated piece. Most teams keep co-op-style markdown plans with checkboxes, then ship work outside the plan flow, then end up with ghost rows months later — work that's done but appears undone. Build-complete walks every open plan, extracts named output paths from unchecked rows, and checks whether those paths exist on disk. If they do, it flips the row with a Reconciled-by note and the commit SHA.

// how to install
  1. Download the file below — it's a single SKILL.md.
  2. Save it to ~/.claude/skills/build-complete/SKILL.md on your machine. Create the folder if it doesn't exist.
  3. Restart Claude Code so the skill is picked up.
  4. Run /bc or "wrap up" at the end of any build session — before closing the chat, after the last commit.
trigger:/bc·/build-complete·wrap up
~ download SKILL.md
// peek inside — the plan-drift sweep rules
For each open plan in plans/co-op/*.md:

1. Extract named output paths from every [ ] row
   (inline backticks, plain paths, "Output:" / "Write" /
   "Create" fields, migration filenames).

2. Check disk for each path. A path that exists
   against a [ ] row = silent ship.

3. For each silent ship:
   - Flip [ ] → [x] on that row
   - Append Result block with file path + commit SHA
   - Prefix with "Reconciled by build-complete YYYY-MM-DD"
   - If row is *partially* shipped, do NOT flip the box.
     Inject sub-status with ✅/❌ per path.

Rules:
- Never flip a row without disk proof.
- Never flip a row where the path is ambiguous.
- If a file exists but looks incomplete (empty stub,
  imports only), treat as partial.
- Do not touch [⏸] (blocked), [~] (skipped),
  or [→color] (claimed in team mode).