rules as tests
Docs lie. Tests don’t.
getff compiles your conventions into native toolchain gates (ESLint/husky for npm, clippy/cargo-deny for cargo). Its own AGENTS.md is executable: every claim carries a live-fired enforcement status, and the gate fails when a claim drifts from reality.
Source-available (FSL-1.1-ALv2 → Apache-2.0 after 2 years). Deterministic. Local-first. $0 LLM calls in CI — enforced by a test.
01The pain
Your agent ignores your rules.
CLAUDE.md and AGENTS.md are prose. The spec itself says the agent "simply parses the text you provide". Parsing is not enforcement.
as any creeps back.
Conventions you never wrote down break silently. Conventions you DID write down break politely.
Tests pass, protection doesn’t.
LLM-generated tests are often tautological: green, and guarding nothing.
0220 seconds each. No narration needed.
as any; the pre-push hook kills it before CI even wakes up.make self-audit fails and names the exact line.03How it works
- 01Write the convention once — a rule file, not a prompt.
- 02getff compiles it into native gates: ESLint/husky for npm, clippy/cargo-deny for cargo. No custom runtime, no LLM in the loop.
- 03It fails early — edit-time→pre-commit→pre-push→CI. CI is the last resort, not the first.
04Feel it in 90 seconds
$ git clone https://github.com/artyhoo/getff $ cd getff && make self-audit # green: every AGENTS.md claim verified # now open AGENTS.md, break any enforcement line, run it again $ make self-audit # red: the gate names the claim that lied
That AGENTS.md is not a mock. It is the live root doc of this repo.
05Install
/plugin marketplace add artyhoo/getff
/plugin install getff@getffThe plugin never silently mutates your git or CI. The hard layer (hooks + CI gates) is one explicit opt-in command.
06Honest limits
- Executable AGENTS.md today = this repo’s own. Generating yours from your conventions is the next milestone, not a shipped feature.
- Stacks today: TypeScript/JS (ESLint/husky) and Rust gate generation (clippy/cargo-deny). Other toolchains are on the roadmap, not in the box.
- Source-available (FSL-1.1-ALv2), not OSI open source. Every release becomes Apache-2.0 after 2 years. We say this first, on purpose.
07Get updates
One email when the generator milestone ships. No digest, no drip.