Assumption Inventory
ASecurity[Adam''s Skills] DEPRECATED — superseded by /build-it. Do not use for new work. Surfaced the load-bearing assumptions behind a task before a long run — goal, root, what may be edited, what is off-limits, what done means, open questions — tagging each as cited fact or guess, and gating the load-bearing guesses on confirmation. Its six slots are now the four headings of the scope note /build-it writes before any code, so running both duplicated most of a pass; the root and platform check and th...
- 3 stars
- 0 votes
- 0 copies
- 1 view
- Added September 5, 2026
Works with
Security analysis
100/100Pro scans all 2 files and shows the line behind each finding
npx -y skills add adamlinscott/claude-skills --skill assumption-inventory --agent claude-codeAre you the author of Assumption Inventory?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/adamlinscott-assumption-inventory)---
name: assumption-inventory
description: '[Adam''s Skills] DEPRECATED — superseded by /build-it. Do not use for new work. Surfaced the load-bearing assumptions behind a task before a long run — goal, root, what may be edited, what is off-limits, what done means, open questions — tagging each as cited fact or guess, and gating the load-bearing guesses on confirmation. Its six slots are now the four headings of the scope note /build-it writes before any code, so running both duplicated most of a pass; the root and platform check and the cite-or-flag discipline moved across with it. Kept installable only so existing setups are redirected rather than broken. If invoked, say it is deprecated and offer /build-it instead.'
disable-model-invocation: true
---
# Assumption Inventory — DEPRECATED
> **This skill is deprecated. Use [`/build-it`](../build-it/SKILL.md) instead.**
>
> If someone has invoked this, do not run the protocol below. Tell them in two lines that it is
> retired and why, then offer `/build-it` — pointed at a ticket number if they have one, or at a
> plan file, a spec, or just a description of the work if they do not. Run this one only if they
> explicitly say they want it anyway, having been told.
>
> **Why it was retired.** It was built as the preflight for a long autonomous run, and the run it
> fed (`/goal-workflow`) is retired too. `/build-it` now does the same work earlier and in one
> pass: its scope note carries this skill's six slots as four headings — *Building* for the goal,
> *Will change* for what may be edited, *Will not change* for what is off-limits, *Done when* for
> the completion bar — and its interview surfaces the open questions. Running both meant filling
> the same inventory twice.
>
> **What moved across rather than being lost:**
>
> - The **root, workspace and platform check** — is this the right repo, does the change stop at
> its edge, what must this actually run on — is now step 2 of `/build-it`.
> - The **cite-or-flag discipline** — tag every claim `[cited: file:line]` or `[assumption]`,
> because "can I point at what makes this true?" is a stricter test than "am I unsure?" — is now
> step 4, and the scope-note template carries the tags.
> - The **catalog of assumptions that feel like facts** — local auth, stale ADR contracts,
> single-platform, done-means-code-written — is in `/build-it`'s REFERENCE.
>
> **What did not move:** the critique of a plan's *existing* acceptance criteria as unmeasurable
> or unproven. `/build-it` asks you what done looks like; it does not audit a bar someone else
> already wrote. If you find you miss that, it is worth raising as its own small skill rather than
> reviving this one.
The original protocol follows, unchanged, for anyone who deliberately chooses to run it.
---
# Assumption Inventory
Before a long run, the cheapest bug to fix is a wrong premise. This skill is a
**preflight**: surface the assumptions the next stretch of work rests on, separate
what you can *cite* from what you are *guessing*, and confirm the load-bearing guesses
before the work starts — not after the diff lands.
The mechanism is one distinction held strictly: a **fact** is something on disk or
stated by the user (it gets a citation); an **assumption** is everything else (it does
not). The danger is an uncited assumption quietly becoming load-bearing — the work
builds on it, and the divergence only surfaces hours later. This skill drags those
assumptions into the open and gates the load-bearing ones on evidence or confirmation.
This is the front end of the triad: `assumption-inventory` (before), `reground`
(mid-drift), `fresh-eyes` (after). Run it in order; do not skip to step 4.
## 1. Decide whether to run
Run this when the work ahead is long, expensive, hard to reverse, or multi-step **and**
the target is not already crisply pinned. Skip it for a one-line change with an explicit
target — the ceremony is not free. When in doubt on a big task, run it.
## 2. Draft the inventory
Fill every slot. For each, tag the basis: `[cited: file:line / user said X]` for a fact,
`[assumption]` for a guess. Do not leave a slot blank — "unknown" is a valid, important
answer.
- **Goal** — what outcome am I trying to produce, in one sentence? Why now?
- **Root / scope** — which repo, directory, or workspace is this rooted in? Is it
workspace-wide or one repo? What platform(s) must it run on?
- **May edit** — which files / areas am I allowed to change?
- **Must not touch** — what is off-limits (generated files, other repos, prod config,
contracts other code depends on)?
- **Done means** — what concrete, checkable state counts as complete? How will I know?
- **Open questions** — what do I not know yet that could change the above?
## 3. Stress the assumptions
For each `[assumption]`, ask: *what is the cheapest evidence that would settle this, and
have I looked?* Then look. Read the file, run `pwd` / `git remote -v`, check for a
CLAUDE.md or ADR, grep for the symbol. Cheap checks turn guesses into citations now,
before they cost anything. See [REFERENCE.md](REFERENCE.md) for the catalog of
assumptions that are silently wrong most often (platform, scope, auth, volatile
contracts) — check those by default even when they feel obvious.
## 4. Classify and gate
Sort every surviving `[assumption]` by whether it is **load-bearing** — would the work
be wrong, wasted, or harmful if it turned out false?
- **Load-bearing and unconfirmed** → blocking. List it as an open question and ask the
user before proceeding. This is the whole point of the skill.
- **Not load-bearing** → state it explicitly as a stated assumption and proceed; the
user can correct it cheaply because it is visible.
**Pressure-test the acceptance criteria specifically.** The plan usually carries the
"done means" criteria — but this is the moment to test them, not inherit them. Flag any
criterion that is either **weak** (vague, unmeasurable, or untestable — "works well", "is
fast", "handles errors") or **built on an unproven assumption** (it presumes a behavior,
contract, schema, or file that step 3 could not cite). A criterion no one could objectively
mark true or false, or one resting on a guess, is a blocking item — the plan looked done
but its bar is soft. Surface these alongside the load-bearing assumptions; they are often
the most valuable thing this preflight catches.
## 5. Ask the blocking questions, then proceed
Show the user the filled inventory as the written report (template in
[REFERENCE.md](REFERENCE.md)) — that technical record stays. But for the **blocking
items**, do not just list them in prose: **ask them with the AskUserQuestion tool.** A
structured question forces a decision and makes the boundary explicit, where a prose note
is easy to skim past. Reach for it whenever the uncertainty is about *what to do or where
the edge of the task is* — the things the plan should have settled but didn't. Typical
questions worth raising:
- **Boundary** — "Is X in scope or out?" / "Does this stop at the API, or include the UI?"
- **Interpretation** — "The goal could mean A or B — which?"
- **Acceptance criteria** — "This criterion is unmeasurable / rests on an unproven
assumption — how should 'done' actually be judged here?"
Offer concrete options (e.g. *in scope / out of scope / defer*) so the answer is a click,
and recommend the one the evidence favors. Keep it tight — only genuinely load-bearing
uncertainties become questions; the *do not over-ask* guardrail still holds, and if nothing
is truly uncertain, say so and skip straight to proceeding. Stated non-blocking assumptions
need no sign-off — they proceed unless corrected. Once the blocking questions are answered,
the inventory (plus those answers) is the brief for the run; carry it forward and check work
against it.
## Guardrails
- **Never silently upgrade an assumption to a fact.** If you did not cite it, it is still
a guess, no matter how confident it feels.
- **Default to portable, not this-machine-first.** "Works on my OS / with my logins / in
this repo" is an assumption, not the goal — surface it, do not bake it in. See
[REFERENCE.md](REFERENCE.md).
- **Do not over-ask.** Only load-bearing, unconfirmed assumptions block. Burying the user
in confirmable trivia is its own failure mode — check the cheap ones yourself first.
- **This skill plans, it does not build.** Its output is the confirmed inventory, not a
started implementation. Begin the work only after step 5.
Files in this skill
- REFERENCE.md
- SKILL.md
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.