AI DX

Docs lie. Tests don’t.

AI DX for your codebase: conventions AI agents can’t silently bypass — and an AI-run dev environment around them.

Source-available (FSL-1.1-ALv2 → Apache-2.0 after 2 years). Deterministic. Local-first. $0 LLM calls in CI — enforced by a test.

AI DX on both sides of the keyboard

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.

git commit — pre-commit gate
→ An agent adds as any; the pre-commit hook kills it before CI even wakes up.
make self-audit — doc drift
→ A claim in AGENTS.md stops being true; make self-audit fails and names the exact line.

03How it works

  1. 01Write the convention once — a rule file, not a prompt.
  2. 02getff compiles it into native gates: ESLint/husky for npm; for cargo, the demo today is clippy, with cargo-deny on the roadmap. No custom runtime, no LLM in the loop.
  3. 03It fails early — edit-time→pre-commit→pre-push→CI. CI is the last resort, not the first.

04Feel it in 90 seconds

bash
$ git clone https://github.com/artyhoo/getff$ cd getff && npm install$ 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

claude
/plugin marketplace add artyhoo/getff /plugin install getff@getff

The plugin never silently mutates your git or CI. The hard layer (hooks + CI gates) is one explicit opt-in command.

06Honest limits

getff — honest 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), Rust (clippy today, cargo-deny on the roadmap), plus installer lanes for Python (ast-grep + ruff, Node-free) and Go (golangci-lint bans + pinned CI gate). Java and the rest 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