MarkdownLM

Where a team's engineering rules live, checked by every AI coding agent before code reaches review.

The demo video from markdownlm.com.

MarkdownLM is where a team’s engineering rules live, checked by every AI coding agent before code reaches review. Lun is its Rust CLI and MCP server.

AI coding agents write code fast, but they do not know the decisions a team already made. Which service owns payments. Which columns must never be written directly. Reviewers end up catching the same mistakes in pull request after pull request.

Rules are plain Markdown documents in a knowledge/ folder. lun push uploads them to a knowledge base, and lun query answers which rules apply to a task. Lun checks code against those rules inside agents like Claude Code and Cursor through MCP, at commit with a git hook, in CI with lun ci, and in GitHub PR and issue review. A blocked check exits with code 1 and names the rule, the file and the line it found.

When an agent asks something the rules do not answer, Lun records it as a gap. Gaps and scan suggestions wait in a Pending Review queue, and a person approves or rejects each one before it becomes a rule.

The hard part was making one rule mean the same thing everywhere. An AI agent sees code while writing it, at commit, in CI and in pull requests, and each step checks it at a different stage. I built Lun, a Rust command-line tool and agent server, as the single checker for all four. Every step reads the same rules and gives the same answer with the rule it cites. A pull request can’t change the rules it is checked against, because new rules wait for a human to merge them first.

300+ active users. Worked with 8 team leads. Built solo.

Start at markdownlm.com.