Intent-first engineering

Code review is dead.
Review intent instead.

AI writes code faster than any human can read it. Checking diffs is a fool's errand. Review the decisions instead. Sigil makes specs, ADRs, and architectural constraints the unit of review — and enforces them in CI.

Open-source · Python CLI · Zero platform dependencies · GitHub ↗

Sigil intent graph — 36 nodes, 87 edges, showing the full architecture of a bookstore application
Shelf bookstore demo
36 nodes 87 edges 9 components

The enforcement moment

A gate caught what code review missed.

A developer changed the payment gateway. The diff looked clean. But GATE-0005 knew that any change to services/payments/ can't touch raw card numbers. PR blocked until intent is updated.

sigil-bot commented on PR #312
🔮 Sigil Intent Review Coverage 89% Intent changes 2 (spec/ADR) Gates 4/5 ❌ Ungoverned 0 Gate results (4/5 passing) ⛔ ✅ GATE-0001 Catalog API compat ✅ GATE-0002 Auth no plaintext ✅ GATE-0003 Order service deps ✅ GATE-0004 Spec quality ❌ GATE-0005 Payment no raw cards services/payments/checkout.py:47 accesses raw_card_number directly — only tokenized methods allowed (PCI scope expansion risk) ⛔ This PR cannot merge
Before Sigil
PR #312 gets 6 approvals. The diff looks clean. The PCI constraint exists in someone's head. Nobody catches that raw card data just leaked into the checkout path. It ships.
With Sigil
GATE-0005 catches it automatically. The constraint was written once, three sprints ago. The developer gets a clear error: what failed, why, and how to fix it. PR blocked. Intent updated. Merged clean.

What you get

Architecture you can diff.

📐
Specs that stay alive
Components, specs, ADRs, gates, and interface contracts live as structured YAML and markdown in your Git repo — next to the code they describe, not in a wiki nobody reads.

Run sigil serve before a sprint to review the full architecture picture together. Gaps show up red.
🕸️
Queryable knowledge graph
Everything connects with typed relationships. Ask sigil why src/auth.ts and trace from file to component to spec to ADR. Ask sigil impact COMP-payments and see blast radius before touching anything.

8 interactive views: graph, hierarchy, coverage, drift, timeline, matrix, and more.
🔒
Gates block merges
Write a constraint once. Enforce it forever. Gates run on every PR via GitHub Actions, post an intent diff comment, and block merges that violate what was decided.

One step in CI: uses: fielding/sigil@v1. No platform, no setup.
🔀
Intent diffs on every PR
Every PR gets an automatic intent analysis comment: coverage percentage, which specs govern the changed code, which gates passed or failed, and which files have no architectural owner.

Review intent first. Then verify the code.
📡
Drift detection
Code that exists outside the intent graph is flagged. sigil drift finds components without specs, files without owners, and interfaces nobody consumes.

Architecture can't drift from the plan when the plan is enforced.
Zero setup, zero platform
Single Python file. One dependency (PyYAML). Works with GitHub Actions today. pip install sigil-cli && sigil init and you're running in under a minute.

No hosted platform. No account. Just files in your repo.

How it works

Three steps. One loop.

STEP 01
Spec it first
Before writing code, define what you're building. Register components, write specs, record architectural decisions, define interface contracts, set the constraints that must hold forever.
sigil new spec auth-service "Token refresh flow"
sigil new gate "Auth token expiry" --applies-to COMP-auth
STEP 02
Review the graph
Run sigil serve before the sprint. Everyone sees the same architecture picture — what's planned, what's connected, what's missing. Align before the code starts.
sigil serve
# opens interactive graph in browser
STEP 03
Ship with gates
Once specs are agreed, gates enforce them automatically. Every PR gets an intent diff. Code can't drift from what was decided — the constraint is in the repo, running in CI forever.
sigil check
# all gates pass → merge

Up and running in 30 seconds.

One command to install. One command to see your own project in the graph.

pip install git+https://github.com/fielding/sigil.git
sigil init

Requires Python 3.11+ · uv and pipx also supported