trellis-finish-work — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited trellis-finish-work (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
python3 ./.trellis/scripts/get_context.py --mode recordThis prints:
--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.
Run:
git status --porcelainFilter 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.
For each remaining dirty path, decide whether it belongs to the current task or to other parallel work (e.g., another terminal window editing the same repo). Heuristics:
prd.md / implement.jsonl / check.jsonl → current taskThen route:
"Working tree has uncommitted code changes from this task:<list>. Return to workflow Phase 3.4 to commit them before running `finish-work(Trellis command)`."
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.
"FYI, dirty files outside this task's scope — leaving them for the other window: <list>."<list> this task's work I forgot to commit, or another window's? (commit / ignore)" — then route per their answer.python3 ./.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.
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: <work commits from 3.4> → chore(task): archive ... (one or more) → chore: record journal.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.