--- name: trellis-finish-work description: "Wrap up the current session: verify quality gate passed, remind user to commit, archive completed tasks, and record session progress to the developer journal. Use when done coding and ready to end the session." --- # Finish Work Wrap up the current session: archive the active task (and any other completed-but-unarchived tasks the user wants to clean up) and record the session journal. Code commits are NOT done here — those happen in workflow Phase 3.4 before you invoke this command. ## Step 1: Survey current state ```bash python3 ./.trellis/scripts/get_context.py --mode record ``` This prints: - **My active tasks** — review whether any besides the current one are actually done (code merged, AC met) and should be archived this round. - **Git status** — quick visual on what's dirty. - **Recent commits** — you'll need their hashes in Step 4 for `--commit`. If `--mode record` surfaces other completed tasks not tied to the current session, surface them to the user with a one-shot confirmation: "These N tasks look done — archive them too in this round? [y/N]". Default is no; the current active task is always archived in Step 3 regardless. ## Step 2: Sanity check — working tree must be clean Run: ```bash git status --porcelain ``` Filter out paths under `.trellis/workspace/` and `.trellis/tasks/` — those are managed by `add_session.py` and `task.py archive` auto-commits and will appear dirty as part of this skill's own work. If anything else is dirty (any path outside those two prefixes), **stop and bail out** with: > "Working tree has uncommitted code changes. Return to workflow Phase 3.4 to commit them before running `$finish-work`." Do NOT run `git commit` here. Do NOT prompt the user to commit. The user goes back to Phase 3.4 and the AI drives the batched commit there. ## Step 3: Archive task(s) ```bash python3 ./.trellis/scripts/task.py archive ``` At minimum: the current active task (if any). Plus any extra tasks the user confirmed in Step 1. Each archive produces a `chore(task): archive ...` commit via the script's auto-commit. If there is no active task and the user did not confirm any cleanup archives, skip this step. ## Step 4: Record session journal ```bash python3 ./.trellis/scripts/add_session.py \ --title "Session Title" \ --commit "hash1,hash2" \ --summary "Brief summary" ``` Use the work-commit hashes produced in Phase 3.4 (visible in Step 1's `Recent commits` list, or via `git log --oneline`) for `--commit`. Do not include the archive commit hashes from Step 3. This produces a `chore: record journal` commit. Final git log order: `` → `chore(task): archive ...` (one or more) → `chore: record journal`.