| 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
python ./.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:
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)
python ./.trellis/scripts/task.py archive <task-name>
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
python ./.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: <work commits from 3.4> → chore(task): archive ... (one or more) → chore: record journal.