Skip to content
Development
Skill

/preflight

Executed pre-completion checklist — third sibling of /prospect (before execution) and /retrospect (after shipping). Six checks, three outcomes each (PASS/FAIL/INVALID); an unrun check blocks the verdict. Catches failures that emit no error: a check whose FORM bounds what it

From plugin
aria-knowledge
1740 skills1 command12 MCP

Claude Code

$ npx -y skills add mikeprasad/aria-knowledge --skill preflight --agent claude-code

SKILL.md

preflight.SKILL.md
description: "Executed pre-completion checklist — third sibling of /prospect (before execution) and /retrospect (after shipping). Six checks, three outcomes each (PASS/FAIL/INVALID); an unrun check blocks the verdict. Catches failures that emit no error: a check whose FORM bounds what it finds, and a decision correct in isolation but wrong in context. Use BEFORE claiming done/fixed/shipped/verified/'none found', before a PR, or before posting a result on a ticket. Triggers: '/preflight', '/preflight ticket {id}', '/preflight file {path}'."

/preflight — the checklist you run before you report

`/prospect` looks forward at a plan. `/retrospect` looks back at shipped work. **This runs at the moment in between: you believe you are done, and you are about to say so.**

What this is NOT

**It is not `superpowers:verification-before-completion`,** which owns the principle — *no completion claim without fresh verification evidence* — and owns it well. That skill answers **whether** to verify. This one answers **what to verify**, and specifically: the checks whose *absence produces no signal at all*.

If you have not internalised the Iron Law, read that skill first. This one assumes it and adds the cases where you ran a verification, it passed, and the thing was still broken.

The two failure families this exists for

Every check below descends from one of these. Neither produces an error, a failing test, or a warning.

1. **The check's FORM bounds what it can find.** A search whose pattern bounds its result; a review whose scope bounds its result; a probe whose anchor bounds its result. The instrument reports truthfully about the thing it measured — and you asked it the wrong question. 2. **A decision correct in isolation, wrong in context**, where nothing you looked at was measuring the part that broke. A green build measures compilation, not reachability. A docstring records a decision without disclosing it. A model's name states one job, not both.

> **The consequence they share: the absence of a problem signal is not evidence there is no problem.** > Family 1 because your check couldn't see it. Family 2 because nothing was checking.

How to run it

Work through the checks that apply to your change. **Every applicable check gets a recorded result.** An unrun check is not a pass — it blocks the verdict.

Each check has **three** outcomes, never two:

| | | |---|---| | **PASS** | the check ran and the property holds | | **FAIL** | the check ran and the property does not hold | | **INVALID** | the check could not distinguish absence from a broken probe — **report no verdict, fix the probe** |

The third outcome is the whole point. A probe that returns "nothing found" because it was pointed at a path that does not exist reads exactly like a clean result.

---

P1 — Requirements diff · *does what shipped match what was asked?*

**A rationalisation in code is not a disclosure.** Nobody diffs docstrings against requirements at review, so an omission explained in the source is invisible in exactly the place it needed a second opinion.

1. List every field, endpoint, behaviour and response shape the request named. Mark each **shipped / not shipped**. Mechanical; it takes a minute. 2. Every "not shipped" goes in a **ticket comment** — not a docstring, not a commit message, not a PR body. 3. **"There is nowhere to store this" is a question, not a decision.** Say so and stop. Do not narrow the deliverable to fit the schema you found — that is the signal the request and the schema disagree, and that is the owner's call. 4. Check what the **UI promises** against what you returned. A surface labelled with a word the data cannot support is a defect even when every line is correct. 5. Where you substituted something, **name the substitution.** "Returned the resolved email instead of the requested username" is reviewable; silence is not. 6. **Enumerate the paths, don't re-read the diff.** A fix can close a disclosure on two code paths and leave it open on a third — re-reading the change will not show you the path you never touched.

---

P2 — Consumer census · *does this symbol have a second job?*

**A model's name and fields do not tell you its jobs.** A row can be a record *and* a permission at the same time; a delete that is obviously right for the first is a silent privilege change for the second, and nothing in the model, the migration or your endpoint will mention it.

# every consumer, minus vendored code and migrations
grep -rn "<SYMBOL>" --include='*.<ext>' . | grep -v "/<vendor_dir>/\|/migrations/"

# of those, which sit inside an authorization decision?
grep -rn "<SYMBOL>" --include='*.<ext>' . | grep -viE "test|migration" \
  | grep -iE "allow|permission|access|authoriz|can_view|visibility|entitle"

1. Run it **before** writing the endpoint, not after. 2. **Write out what each consumer uses it for.** The census is worthless unread; writing it is what surfaces the surprise. 3. If any consumer is an authorization or access check, **a delete on that model is a permission change** — say so explicitly and get it ruled on rather than shipping it inside a feature. 4. Ask what the **absence** of a row means, not just its presence. Where presence grants something, deletion revokes it — and "cancel" is then the wrong word for the button. 5. **Beware the inverted fix.** On discovering a row doubles as a grant, do not "clean up" by deleting it at some lifecycle point. That revokes access. The fix is usually a new column or a derived flag. 6. **Aliasing:** can two rows point at the same underlying resource? If so, deleting A's "old" resource may destroy B's live one.

---

P3 — Reachability · *is it actually wired in?*

**A green build measures compilation, not reachability.** A component nothing imports is tree-shaken out: it compiles, it deploys, and it is not in the product.

**Frontend**

# does anything impo
Read more
@mikeprasad
Ships witharia-knowledge

Agent Memory · Context Engineering · Planning & Reasoning · Human-in-the-Loop Governance ARIA is the missing infrastructure layer for production AI coding agents: persistent memory that survives context compaction, deliberate context engineering that loads

1740 skills12 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
17
Star history of mikeprasad/aria-knowledge on GitHub, a chart by star-history.com

Other skills on aria-knowledge.

audit-config

audit-config

Audit Antigravity project configuration and documentation for drift, staleness, and broken references. Use when user asks for…

snapshot

snapshot

Save the current Antigravity transcript to the knowledge intake on demand. Use when user says '/snapshot', 'snapshot the…

aria-assist

aria-assist

Morning product-management review across all your projects. Use when the user runs /aria-assist, asks for a morning review /…

ask

ask

Research a question, check existing knowledge first, draft a knowledge doc from the answer, and save directly to the appropriate…

audit-rules

audit-rules

Mine your distilled knowledge corpus — memory feedback rows, rules backlogs, always-on indexes — for recurring corrections that…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about preflight.

Which coding agents can use preflight?
preflight 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.