Grades repo legibility for newcomers and AI agents β an exact fix on every failing check.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Linters check your code. Invigil checks whether your project is legible.
Ruff has your syntax. Dependabot has your dependencies. Scorecard has your supply chain. Nothing checks whether someone arriving cold can act on the project: boot it in ten minutes, get an error that tells them the fix, install the thing from PyPI today, read a README that's still a landing page and not a 600-line wall.
That's the test every project takes when someone new finds it β a new engineer, or increasingly an AI agent with a context window instead of patience. If they can't reach "hello world" in 10 minutes, they leave. If the published artifact is broken because CI only tests the source tree, they leave. If the error is a silent stack trace, they leave. Nobody files an issue on the way out.
Invigil turns those promises into mechanical checks, runs them in CI, and prints the exact fix for every failure β so the project speaks for itself.
invigilate β to watch over an exam and enforce its rules.
Invigil does not replace your existing tools; it covers the product-quality gaps they leave behind.
| Tool | Focus | What it misses (that Invigil catches) |
|---|---|---|
| Linters / SonarQube | Code style, static bugs, complexity | Does the published artifact actually boot? Is the README approachable? |
| Dependabot / Renovate | Keeping dependencies updated | Are you enforcing the lockfile in CI? Is there a version matrix? |
| OpenSSF Scorecard | Supply-chain security (branch rules, tokens) | Does the project have a Quick Start? Are failure modes actionable? |
| Invigil | Product quality, legibility, error hygiene | (Invigil relies on the above tools and enforces their presence) |
You already wrote the doctrine; you just enforce it by hand. Every failing Invigil check tells you what's wrong, why it matters, and the exact command to fix it β because a gate that can't tell you how to pass it is the same broken-error-message anti-pattern it's meant to catch.
It grades against seven Gates, each a legibility promise to a different cold-start reader:
| Gate | The promise |
|---|---|
| G1 | Anyone arriving cold succeeds in 10 minutes on a clean machine |
| G2 | Every failure mode tells the user the fix |
| G3 | Published artifacts are machine-verified daily |
| G4 | Supply-chain evidence is public (Scorecard β₯7, signed releases, SBOM) |
| G5 | All five doors open and documented (newbie, operator, contributor, enterprise, AI) |
| G6 | First external contributor merged without hand-holding |
| G7 | Cited/integrated by projects you don't control |
A repo reaches Gn only when every mandatory check for gates β€ n passes, and gets a letter
grade from its weighted score.
One tool, four doors β pick the one that matches where you run it:
| Channel | Where it fits | One-liner |
|---|---|---|
| PyPI | local runs, Python-friendly CI | pip install invigil |
| GitHub Action | GitHub PRs | uses: invigil/invigil@v1 |
| Docker (ghcr) | GitLab, Jenkins, any non-Python CI | docker run --rm -v "$PWD:/repo" ghcr.io/invigil/invigil score /repo |
| pre-commit | offline checks on every commit | hooks invigil-layout, invigil-secrets (below) |
| MCP server | agents (Claude Code, any MCP client) | pip install "invigil[mcp]" β invigil mcp |
Every release ships all of it signed: cosign-signed wheel, sdist, and container image, plus an
SPDX SBOM β verifiable with cosign verify against the GitHub OIDC identity.
Run it locally on any repo:
Add it to CI as a report-only gate (posts a scorecard comment + badge, never blocks a PR):
Flip enforce: "true" (or set project.enforce: true in .invigil.yml) when you're ready for
it to block merges below the target gate.
Why the SHAs?
invigil/invigil@v1works and tracks the latest v1.x.y, but Invigil's ownactions-sha-pinnedcheck (G3) fails floating tags β including its own. Pin, and let Dependabot bump the pins; the trailing comment is what it reads.
The action exposes the report and both badges as step outputs β pipe the scorecard into the job summary, publish the badge JSON wherever shields.io can reach it:
Two layers, matching the doctrine:
.env.example, a deep-health endpoint, a global error-id
handler, SHA-pinned actions, an enforced lockfile, a coverage gate, a daily published-artifact
smoke test, β₯5 good-first-issues, docs index, llms.txt/AGENTS.md, and more. Emits text /
JSON / Markdown / a shields.io badge.invigil stranger) β on a clean runner, installs
and boots each published artifact you declare and probes its core surface within a
10-minute budget. Web services get HTTP probes; a CLI image (an artifact with a command:)
is run to completion and must exit 0. One reusable workflow replaces the 60-line
smoke-published.yml every repo copy-pastes:Opt in to a scheduled bot that applies Invigil's mechanical fixes on a work branch and opens
one batched PR β governance scaffolds, agent context files, config hygiene. Three
anti-noise rules are built in: it's opt-in only, one stable branch means one PR (never five),
and a PR you close unmerged is a "no" the bot respects β it stays silent until you delete the
invigil/fixes branch.
Under the hood it runs invigil score --fix --pr-mode: the fix engine's CI-lockout stays
in force for protected branches β --pr-mode only permits fixes on a non-default branch,
so nothing automated ever lands on main without a human merging the PR.
Drop a .invigil.yml at the repo root. It's optional for the static scorecard (sensible
defaults apply) and required for the Cold-Start Gate (it declares what to boot and probe). Full
schema in schema/invigil.schema.json; examples in
examples/.
A gate developers bypass is dead weight, so Invigil is built for zero friction:
Fast offline groups for pre-commit β each check is tagged local/network/heavy.
invigil check layout runs the filesystem checks with no network in ~120ms:
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/invigil)<a href="https://allmcps.com/mcp/invigil"><img src="https://allmcps.com/api/badge/invigil?style=directory" alt="Invigil on AllMCPs" /></a>