Skip to main content

Fail-fast quality gate for AI coding agents: Typecheck → Lint → Test → Security Audit. Stops the agent declaring 'done' on broken code.

Project description

pre-flight-check

Stop your AI coding agent from declaring "done" on broken code.

A universal quality gate that runs Typecheck → Lint → Test → Security Audit before any task is marked complete. Auto-detects Node.js and Python. Works with 10 AI coding tools.

CI Release License: MIT Python 3.8+

Install · How it works · Supported AI tools · Full install guide


The problem

Your AI agent writes a function, watches it not throw at runtime, and reports "done" — while tsc would have caught a type error in 50ms, eslint would have flagged dead code, and pytest would have failed three tests.

pre-flight-check closes that loop. One command, four gates, structured failure output the agent has to act on. No more "I've successfully implemented the feature!" while the build is on fire.

Install

Pick the install path that matches your platform.

macOS · Linux (Homebrew)
brew tap mirekondro/pre-flight-check https://github.com/mirekondro/The-Pre-Flight-Check
brew install pre-flight-check
Windows (Scoop)
scoop bucket add pre-flight-check https://github.com/mirekondro/The-Pre-Flight-Check
scoop install pre-flight-check
Any platform (pipx)
pipx install pre-flight-check

Until v1.2.0 is published to PyPI, install from source: pipx install git+https://github.com/mirekondro/The-Pre-Flight-Check.git

One-line install (no package manager)
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/mirekondro/The-Pre-Flight-Check/main/install.sh | bash

# Windows (PowerShell)
irm https://raw.githubusercontent.com/mirekondro/The-Pre-Flight-Check/main/install.ps1 | iex
Claude Code plugin marketplace
claude plugin marketplace add mirekondro/The-Pre-Flight-Check
claude plugin install pre-flight-check

Then in any project:

pre-flight-check init --tool claude          # or cursor, codex, gemini, copilot, …
pre-flight-check init --tool all --project   # install for every supported AI tool at once

See INSTALL.md for the full per-tool matrix and troubleshooting.

What it does

When your AI agent says "I'm done," it doesn't always mean the code works. pre-flight-check interposes a strict, fail-fast pipeline:

Typecheck → Lint → Test → Security Audit

The first stage that fails halts the pipeline, prints a structured Markdown block, and exits 1. The agent reads that block and must fix the exact error before continuing.

Here's what the agent actually sees on a failure:

### ❌ PRE-FLIGHT FAILURE: TYPECHECK
**Command Executed:** `npx --no-install tsc --noEmit`
**Context for AI Fix:**

src/auth/session.ts(42,18): error TS2345: Argument of type 'string | undefined'
is not assignable to parameter of type 'string'.

It knows: which file (session.ts), which line (42:18), which rule (TS2345), and what's wrong. No more "I think the auth flow is implemented."

On success:

### ✅ PRE-FLIGHT PASSED
All quality gates verified successfully.

Supported AI tools

Tool Native delivery path One-liner
Claude Code .claude/skills/pre-flight-check/ pre-flight-check init --tool claude
OpenAI Codex / AGENTS.md AGENTS.md at repo root pre-flight-check init --tool codex --project
Gemini CLI GEMINI.md + gemini-extension.json pre-flight-check init --tool gemini --project
Cursor .cursor/rules/pre-flight-check.mdc pre-flight-check init --tool cursor --project
GitHub Copilot .github/copilot-instructions.md pre-flight-check init --tool copilot --project
Windsurf .windsurf/rules/pre-flight-check.md pre-flight-check init --tool windsurf --project
Cline .clinerules/pre-flight-check.md pre-flight-check init --tool cline --project
Kiro .kiro/steering/pre-flight-check.md pre-flight-check init --tool kiro --project
Roo Code .roo/rules/pre-flight-check.md pre-flight-check init --tool roo --project
Agent Skills standard .agents/skills/pre-flight-check/ pre-flight-check init --tool agents-skills --project

Several tools (Codex, Copilot Coding Agent, Windsurf, Kiro) read AGENTS.md at the repo root as a fallback. Installing --tool codex alone gives broad ecosystem coverage.

What it checks

Stage Node.js Python
1. Typecheck tsc --noEmit (or npm run typecheck) mypy .
2. Lint eslint . (or npm run lint) ruff check .flake8 .
3. Test jest / vitest (or npm test) pytest -q
4. Security Audit npm audit --audit-level=high pip-auditbandit -r .

Stages whose tools aren't installed are skipped silently — no false positives from missing optional gear.

How it works

  • Auto-detects the runtime from manifest files (package.json, pyproject.toml, requirements.txt, …).
  • Picks the right package manager from the lockfile: pnpm-lock.yaml → pnpm, yarn.lock → yarn, package-lock.json → npm.
  • Prefers your existing scripts — if package.json defines lint, the pipeline calls npm run lint instead of invoking eslint directly.
  • Halts on first failure — no point linting code that doesn't typecheck.
  • Forbids escape hatches. The instruction file the AI agent reads (SKILL.md, AGENTS.md, .cursorrules/*.mdc, etc.) explicitly bans // @ts-ignore, # type: ignore, deleting failing tests, adding to ignore lists, and other ways to mark the gate green without fixing the bug.

The whole engine is one Python file with zero runtime dependencies. Audit it in five minutes.

Requirements

  • Python 3.8+ on PATH (the engine — no other Python dependencies)
  • Your project's existing dev tooling — tsc, eslint, pytest, etc. We orchestrate, we don't replace.

That's it.

Project status

Stable. Used in production on the maintainer's own projects. The failure-block Markdown format is part of the public contract — any change to its shape is a major version bump.

Contributions welcome — see CONTRIBUTING.md. The bar for new features is high; the bar for new runtime adapters (Go, Rust, Ruby, …) and additional AI-tool adapters is low.

License

MIT


If pre-flight-check catches a bug for you that would have shipped — star the repo so the next developer finds it too.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pre_flight_check-1.2.0.tar.gz (48.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pre_flight_check-1.2.0-py3-none-any.whl (34.1 kB view details)

Uploaded Python 3

File details

Details for the file pre_flight_check-1.2.0.tar.gz.

File metadata

  • Download URL: pre_flight_check-1.2.0.tar.gz
  • Upload date:
  • Size: 48.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pre_flight_check-1.2.0.tar.gz
Algorithm Hash digest
SHA256 fcbabc161d802bb9b8468ebd26f9baa76c942985adf22135f4a0973c65b2a644
MD5 bdc13447515ea16a9e9a5611855878e6
BLAKE2b-256 3bfc35930dfa9ab50a1ac794c8925b22dfbad92dc9e69f7af4aee3970cd160a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pre_flight_check-1.2.0.tar.gz:

Publisher: release.yml on mirekondro/The-Pre-Flight-Check

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pre_flight_check-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pre_flight_check-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7fd7cd24edb072c12566e809c5f0bc944a2984e899b758183d219db1b4d1d96c
MD5 425785f445acf9b4679e7cc92ab36373
BLAKE2b-256 1d939c251b6b4625cbce84e08eed39851893268cda9f9dd209649ffbfc31d5f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pre_flight_check-1.2.0-py3-none-any.whl:

Publisher: release.yml on mirekondro/The-Pre-Flight-Check

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page