agentleFS
mik2winmik2win/foureyes/skills/preflight/SKILL.md

preflight

Skill2 starsChanged 3 months agoMITView on GitHub

Release-readiness gate — one orchestrated pass before code ships: full test suite + lint/typecheck, dependency & security quick pass, docs drift, config/migration/flag check, changelog draft from commits, and a GO / GO-WITH-RISKS / NO-GO verdict with a suggested deploy command (never executed). TRIGGER when: the user is about to ship/release/deploy/tag ("are we ready to ship", "preflight", "release check", "can this go out"). TRIGGER ALSO on the same ask phrased as plain work, with this skill unnamed — "anything blocking release", "run the pre-release checks", "is main safe to deploy" — an ask for a ship/no-ship judgment IS this skill. DO NOT TRIGGER when: the user wants a review of one diff (use /code-review), a security-only sweep (use /audit-security), or to settle an epic's plans and archives (use /close-epic — run it before this when an epic is involved).

47 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use adr, ship and 5 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • asterkinSkill

    adr

    Create Architecture Decision Records (ADRs) following project standards. Guides template usage, process, and best practices for documenting architecturally significant decisions.

    Also in 3 projects that use this

  • AWSSkill

    ship

    Finalize dev work on an issue branch — update docs, push, and open a PR.

    Also in 5 projects that use this

  • MicrosoftSkill

    report

    Turn an exploration (threads, findings, charts) into a single Markdown report — note, blog post, executive summary, KPI dashboard, slide brief, or multi-section analytical report, with embedded charts.

    Also in 3 projects that use this

  • AnthropicSkill

    status

    Case status summary by audience — client-facing (plain language), internal (for the professor), or court-ready (formal caption format per local rules). Same facts, different framing and depth. Use when a student needs to update the client, brief the professor, or prepare a court status report.

    Also in 3 projects that use this

  • DockerSkill

    review-pr

    Review one or more incoming Docker documentation pull requests as a maintainer. Independently validate technical claims, assess editorial fit and information architecture, choose a verdict, and draft exact inline or PR-wide feedback behind a confirmation gate. Use for requests such as "review PR 123", "is this PR correct?", "does this information belong here?", "validate this PR", or "help review backlog PRs". Do not use to maintain or fix a PR you own; use maintain-pr for that.

    Also in 3 projects that use this

  • MicrosoftSkill

    caveman

    Ultra-compressed response style that reduces output token count while preserving technical accuracy, with intensity levels and auto-clarity safety rules

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

6 rules. 0 are common, 1 is distinctive, and 5 are very specific to this project.

  • 0

    Common

    Most of the 42 edited versions we read keep these.

  • 1

    Distinctive

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Read .claude/PROJECT.md — Commands (test, lint, typecheck), Deploy mapping,

    line 33
  2. Very specific:

    STOP: run /bootstrap only if *neither* has them.

    line 36
  3. Very specific:

    Read .claude/rules/_generic/code.md and any release/CI conventions in the profile.

    line 37
  4. Very specific:

    If CONTEXT.md exists, read it — the changelog speaks the project's language.

    line 38
  5. Very specific:

    No tags → merge-base with the default branch, or ask via AskUserQuestion.

    line 46
  6. Distinctive:

    Report the whole board: Run every applicable gate even after a FAIL — a NO-GO with one known blocker beats three consecutive surprise …

    line 124

“Common” is measured: kept by at least 6 in 10 of the 42 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Preflight: $ARGUMENTS

The last gate before code leaves the machine. /close-epic settles the plans; this settles the release: everything between "the code is done" and "the code is out" that is checkable, checked once, in one report. Propose-only — the deploy command is suggested, never run (the kit's code-publish policy stands: the user ships).

$ARGUMENTS optionally names the release scope (a tag/ref like v1.4.0..HEAD, a branch, or free text); empty = resolve in Phase 1.


Phase 0 — Load profile

  1. Read .claude/PROJECT.md — Commands (test, lint, typecheck), Deploy mapping, Integrations, Plans location. If missing or TEMPLATE, fall back to the root CLAUDE.md (always in context) when it carries those commands — note you're running without a kit profile; STOP: run /bootstrap only if neither has them.
  2. Read .claude/rules/_generic/code.md and any release/CI conventions in the profile.
  3. If CONTEXT.md exists, read it — the changelog speaks the project's language.

Phase 1 — Resolve the release scope

Determine what is shipping, in order of preference:

  1. $ARGUMENTS as a ref/range → git log --oneline <range> + git diff <range> --stat.
  2. Last release tag → git describe --tags --abbrev=0 then <tag>..HEAD.
  3. No tags → merge-base with the default branch, or ask via AskUserQuestion.

List the commits and changed files that constitute the release. If the working tree is dirty, flag it first — shipping with uncommitted changes is a NO-GO finding unless the user says those files are out of scope.

Phase 2 — Run the gates

Each gate produces a row: PASS / WARN / FAIL + evidence. Run cheap ones first; don't stop on failure — the report shows the whole picture. Skip a gate only when it's inapplicable, and say so.

  1. Tests — the full test command (PROJECT.md → Commands). FAIL on any failure; record the failing names verbatim.
  2. Lint / typecheck — the profile's commands. FAIL on errors, WARN on warnings.
  3. Dependencies — chain /deps (via Skill) in its quick mode, or if unavailable run the stack's audit command from the profile. FAIL on known-exploitable vulns in shipped deps; WARN otherwise.
  4. Security — spawn the security-reviewer agent scoped to the release diff. FAIL on CRITICAL findings, WARN on HIGH.
  5. Docs drift — same mechanic as /close-epic: does the release change a user-facing surface (commands, routes, config, API) that README/usage docs still describe the old way? Grep the docs for the changed surface names. WARN with the stale path:lines. Run the dead-reference gate too — python3 tools/lint-refs.py (or the project's own equivalent from PROJECT.md → Commands) checks that every repo path CLAUDE.md and the files under .claude/ cite still exists. It is the half a grep cannot do: a rename breaks an instruction that names a file, and nothing else in the build fails. WARN on its findings and quote them; --baseline-mode is the user's call, never this skill's.
  6. Config & migrations — grep the release diff for: new env keys / settings (are they documented and present in deploy config?), pending schema migrations (is the migration step in the deploy plan?), feature flags introduced (correct default?). FAIL on a migration or required key with no deploy step; WARN otherwise.
  7. Behavior spot-check — if a run command exists and the release touches a runtime surface, drive the main affected flow once (the /implement Behavior Check discipline, applied to the release build). WARN if it can't be driven; record what was observed.

Phase 3 — Changelog draft

From the Phase 1 commit list, draft a changelog section grouped by user-visible effect (Added / Changed / Fixed / Security — or the project's existing changelog format if one exists; follow it). One line per meaningful change, in the project's vocabulary — not a raw commit dump. If the project keeps a CHANGELOG.md, show the draft for the user to paste or approve — apply it only on confirmation.

Phase 4 — Verdict & report

Write the report to <plans>/<YYYY-MM-DD>-preflight-<scope>.md and print it:

# Preflight — <scope>

| Gate | Status | Evidence |
|------|--------|----------|
| Tests | PASS/WARN/FAIL | <counts / failing names> |
| Lint/typecheck | | |
| Dependencies | | |
| Security | | |
| Docs drift | | `path:line`s |
| Config & migrations | | |
| Behavior spot-check | | drove <flow> → observed <result> |

## Verdict: GO | GO-WITH-RISKS | NO-GO
- NO-GO: any FAIL — list the blockers, each with its fix route
  (/diagnose, /test, /deps, security fix …).
- GO-WITH-RISKS: WARNs only — each risk named with owner ("ship and fix forward" needs
  the user to say so).
- GO: all PASS.

## Changelog draft
<the Phase 3 section>

## Deploy (suggested — run it yourself)
<command(s) from PROJECT.md → Deploy mapping + verification step, e.g. tail logs>

Hard rules

  • Never deploy, tag, commit, or push. Output the commands; the user runs them.
  • Report the whole board. Run every applicable gate even after a FAIL — a NO-GO with one known blocker beats three consecutive surprise NO-GOs.
  • Failures verbatim. Failing test names and vuln IDs are quoted, not summarized away.
  • A skipped gate is a stated gate. "Skipped — <reason>" in the row; never silently absent.
  • Facts from PROJECT.md. Commands, deploy mapping, docs locations — never hardcoded.

Cross-reference

  • Before this: /close-epic (epic bookkeeping), /code-review + /test (per-change quality). Components it orchestrates: /deps, security-reviewer agent.
  • On NO-GO: /diagnose (failures), /test (coverage), /audit-security (deep security).
  • After ship: /retro — feed what preflight caught back into the kit's rules.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.