The missing layer between your markdown and your agents▊
mdpact lints every agent-instruction file you ship — CLAUDE.md, AGENTS.md, .github/copilot-instructions.md, .cursorrules, and more. Rule catalog, behavior-prediction engine, GitHub Action — all free, OSS, local-first.
$ mdpact lint CLAUDE.md
13:1 error conflict/binding Binding rules contradict.
41:3 warning clarity/vague-directive "best practices" — link the specific doc.
58:1 warning tokens/buried-rule Rule sits past ~4000-token attention wall.
✖ 1 error, 2 warnings (14ms)Contradictions hide in plain markdown
Two rules that look fine in isolation become undefined behavior when the agent sees them side by side. mdpact flags the ambiguity the first time you run it.
## Commit discipline
- You must always commit before pushing.
- Never commit before pushing.## Commit discipline
- You must always commit before pushing.
- Unless the branch is a scratch branch,
in which case pushing without a commit is fine.Everything the CLI does
Lint
mdpact lint18+ rules spanning conflict detection, clarity heuristics, tool policy, compliance, and token budgets.
Test
mdpact testBehavior-prediction engine runs tasks across Anthropic, OpenAI, and Google models with a USD budget guardrail.
Score
mdpact scoreA single 0–100 score your PR comment can delta against the base branch, with deductions you can audit.
CI
GitHub ActionGitHub Action posts a sticky PR comment, inline annotations, and fails the check if the score drops.
Fix
mdpact fixSafe-by-default auto-fixes with a --unsafe opt-in for transformational rewrites.
Registry
coming soonShared rule and test catalogs across teams. Paid, hosted.