mdpact
mdpact v0.1.0 · live

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.

~/acme/web $
$ 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.

Before
## Commit discipline

- You must always commit before pushing.
- Never commit before pushing.
After
## 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 lint

18+ rules spanning conflict detection, clarity heuristics, tool policy, compliance, and token budgets.

Test

mdpact test

Behavior-prediction engine runs tasks across Anthropic, OpenAI, and Google models with a USD budget guardrail.

Score

mdpact score

A single 0–100 score your PR comment can delta against the base branch, with deductions you can audit.

CI

GitHub Action

GitHub Action posts a sticky PR comment, inline annotations, and fails the check if the score drops.

Fix

mdpact fix

Safe-by-default auto-fixes with a --unsafe opt-in for transformational rewrites.

Registry

coming soon

Shared rule and test catalogs across teams. Paid, hosted.