Skip to content
Productivity
Skill

/are-we-done

[Adam''s Skills] Deterministic close-out gate for a session or work tree. Sweeps a fixed set of sources — the todo list, this session''s own promises, git state, TODO/FIXME markers the diff introduced, test and build state, and any issue or ticket referenced — and checks that

From plugin
claude-skills
320 skills5 agents

Claude Code

$ npx -y skills add adamlinscott/claude-skills --skill are-we-done --agent claude-code

SKILL.md

are-we-done.SKILL.md
name: are-we-done
description: '[Adam''s Skills] Deterministic close-out gate for a session or work tree. Sweeps a fixed set of sources — the todo list, this session''s own promises, git state, TODO/FIXME markers the diff introduced, test and build state, and any issue or ticket referenced — and checks that every open point has been explicitly decided: done, won''t do, deferred, or handed to another session. Strict by default, with a severity floor that lifts only on evidence of how the project actually works (CI on every push, a user who commits last). A clean sweep returns one line and one sentence, plus a line on any processes it stopped. An unclean one either asks about the genuinely ambiguous points or names the blockers to fix now, with every issue number carrying its title. It decides nothing for the user and fixes nothing, with one exception: when the answer is yes, or no only because of open questions, it stops the background shells and processes left running in the work tree, so the folder can be deleted. Use when work looks finished and you want to confirm the session can actually close — "are we done?", before ending a session, before shipping, or before handing off.'
allowed-tools: Read, Grep, Glob, Bash, AskUserQuestion, TaskStop

are-we-done

Answer one question — *can this session close?* — and answer it the same way every time.

Done does **not** mean everything is finished. It means **nothing is still undecided**: every open point has been settled as done, won't do, deferred, or another session's work. An item parked with a reason is closed. An item nobody ruled on is not, however small.

This skill never edits, commits, or fixes, and never decides on the user's behalf. The one thing it changes is process state: on a close (section 3b) it stops the background shells and processes left running in the work tree, without asking.

1. Sweep (all seven, in order, every run)

Run the full sweep before judging anything — see [REFERENCE.md](REFERENCE.md) for the exact commands and what counts as a hit.

1. **Todo list** — any item not `completed`. 2. **This session's own promises** — "I'll do X next", "leaving Y for now", "we should also Z", plus any question you put to the user that never got an answer. **If the session was compacted or you cannot see its start, that is itself a hit** — an empty result from a transcript you can only half-read is not a clean leg, and reporting it as one is inventing closure. 3. **Work tree** — `git status`: uncommitted edits, untracked files, conflict markers, a half-applied multi-file change, an in-progress merge or rebase. 4. **Markers introduced by this work** — `TODO`/`FIXME`/`XXX`/`HACK` added by this session, in unstaged, staged *and* committed changes; a committed-only sweep misses exactly the markers written last. An empty commit range is a range that did not resolve, not a clean sweep. Pre-existing markers elsewhere in the repo are not this session's business. 5. **Verification state** — did tests, typecheck, lint, or build run *after the last edit*, and what did they say? Never assume; if nothing ran since the last change, that is an open point. 6. **Referenced work items** — every issue, ticket, or PR number named this session, resolved to its **title** (`gh issue view <n> --json title`, or the tracker's equivalent). A bare number never appears in the output. Unresolvable → use the title as stated this session, marked `(unverified)`; a missing `gh` is an environment gap, not an undecided point. 7. **Background processes** — this session's background tasks, plus every process its tool shells (subagents' included) started that is still running, plus orphans whose command line or working directory is inside the work tree. These are what stop the folder being deleted later. Not open points in themselves; they feed section 3b.

2. Classify

Put every hit in exactly one bucket. No item stays unbucketed.

| Bucket | Test | |---|---| | `DONE` | Finished and verified in this session. | | `WON'T DO` | Ruled out on the record, with a reason. | | `DEFERRED` | Parked deliberately — to a later session, an issue, or a follow-up. | | `BLOCKER` | A bug, breakage, or unmet requirement inside the scope just worked on. | | `AMBIGUOUS` | Nobody ruled on it, and skipping it is defensible. |

"On the record" means the user or you said it in this session. Silence is not a decision — an item nobody mentioned again is `AMBIGUOUS`, not `DONE`.

3. Verdict — one rule, one floor

**Yes** iff every item is `DONE`, `WON'T DO`, or `DEFERRED` — and there are zero `BLOCKER` and zero `AMBIGUOUS`. Otherwise **no**. Do not soften a `no` because the remainder is small.

**The severity floor is strict by default.** An uncommitted tree and "not verified since the last edit" are `AMBIGUOUS` and force a no — unless this project's own workflow already answers them. A team whose CI runs the suite on every push has not left testing undecided by not running it locally, and asking every session is how the gate gets ignored. Lift the floor for one ambient state at a time, on evidence only, never on assumption ([REFERENCE.md](REFERENCE.md) lists what counts). A lifted state is still named in the output; it just stops forcing a no.

3b. Clean up — automatic on a close

When the verdict is yes (shape A), or no only because of `AMBIGUOUS` items (shape B), stop every process from leg 7 that nothing still needs. Do not ask; the user wants the folder deletable the moment the session ends. On shape A, clean up before the output. On shape B, clean up after the answers come back, and skip it if any answer is "do it now" — work continues. Never on shape C — its servers may still be in use.

Keep a process only when the session record shows it is still wanted: the user asked for it to stay up, or the session is still waiting on its result (that wait is itself `AMBIGUOUS`). Everything else — finished test runs, dev servers started

Read more
@adamlinscott
Ships withclaude-skills

Each skill lives under skills//SKILL.md, and each agent under agents//.md. These are the single source of truth: an install script links them into ~/.claude/skills/ and ~/.claude/agents/ so Claude loads them in every session, on every machine.

320 skills5 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
3
Star history of adamlinscott/claude-skills on GitHub, a chart by star-history.com

Other skills on claude-skills.

brief-me

brief-me

[Adam''s Skills] DEPRECATED — superseded by /where-are-we. Do not use for new work. Printed a plain-English re-entry briefing for…

build-it

build-it

[Adam''s Skills] Build a piece of work, from wherever it is written down — a ticket number or URL, a plan or spec file, the plan…

context-audit

context-audit

[Adam''s Skills] Audits a repository''s Claude context-injection setup — CLAUDE.md, CONTEXT.md, docs/, .claude/agents/, and the…

debrief

debrief

[Adam''s Skills] BETA / under development. Mine the current project''s Claude Code sessions for recurring corrections, then…

More skills from other plugins.

i-have-adhd

i-have-adhd

Shape output for a reader with ADHD: lead with the next action, number multi-step work, restate state across turns, suppress…

@ayghri@ayghriInstall Skill
ab-test-analysis

ab-test-analysis

Analyze A/B test results with statistical significance, sample size validation, confidence intervals, and ship/extend/stop…

@phuryn@phurynInstall Skill
distilly

distilly

Set up the owner profile so a personal agent knows who it works for (first-run setup, \"get to know me\"), or distill colleague,…

Questions about are-we-done.

Which coding agents can use are-we-done?
are-we-done installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.