pro Pro tools
Verification layer — catch fabricated paths and risky shell in AI markdown
Press Ctrl+Shift+V. Deterministic regex and structure rules flag fabricated file paths, broken anchors, risky shell, and dense claims. Zero LLM calls.
#CLAUDE.md
##Setup
Install with curl https://get.example.sh | sudo bash.
Configuration lives at /etc/myproj/config.yaml.
For details see installation guide.
##Reliability
The system handles all edge cases automatically and never fails.
Trust it — verification layerCatch what your agent missed. Zero LLM calls.
What it does
Press Ctrl+Shift+V in any open document. MD View walks the rendered markdown and runs a set of deterministic rules:
- Fabricated paths — every backticked path the document mentions (
src/utils/foo.ts,docs/spec.md) is checked against the actual filesystem in one batched call. Anything that looks like a path but doesn’t exist is flagged red. - Broken anchors — every internal
#section-linkis checked against the document’s heading IDs. Missing anchors are flagged. - Risky shell — common danger patterns (
rm -rf /,curl | shchains, raw writes to block devices,chmod -R 777 /) are flagged with a “review this carefully” warning. - Dense claims — paragraphs that pile on facts without citation or context are softly flagged so you remember to read them critically.
Findings appear in two places at once: as inline highlights right on the suspect span (using the CSS Custom Highlight API), and as an itemized sidebar on the right where you click a finding to scroll to it — the target span flashes so you don’t lose context.
Why it exists
AI agents fabricate things. They write see src/utils/foo.ts:42 for a file that doesn’t exist. They write [the deploy step](#deploy-step) for an anchor they never created. They suggest curl https://example.com/install.sh | bash without flagging the supply-chain risk. They write “this is always the fastest approach” or “100× faster” without citation.
If you’re shipping AI-written documents — CLAUDE.md, onboarding guides, runbooks, specs — you want the obvious problems flagged before you trust the rest. The verification layer doesn’t catch everything (it can’t), but it catches the categories that are mechanically detectable. For a typical CLAUDE.md, that’s the difference between trusting the doc and re-reading every path by hand.
How to use it
Toggle with Ctrl+Shift+V or View → Verify Document. The state persists per-window via localStorage["mdview.verify-on"] so once you’ve turned it on, it stays on until you toggle off. Findings appear immediately on the current document; switching to another document re-runs the rules.
Under the hood
The verify engine (src/verify/engine.js) is pure JavaScript — no AI, no network. It composes a set of rule modules, each producing findings keyed by document position. The orchestrator dedupes by ID, sorts by line, and renders to both the inline overlay (using the CSS Custom Highlight API) and the sidebar.
The only Rust touch is a single batched verify_paths(root, candidates) call that asks “do any of these paths exist on disk?” and returns a {path: bool} map. One filesystem trip, no per-path overhead.
The fact that it’s deterministic matters: the same document yields the same findings every time, regardless of the day, the model version, or the network. That’s the property an LLM-based linter can’t give you — and it’s exactly what you want when you’re using verification to build trust in your AI workflow.
Use cases
- Reviewing AI-generated CLAUDE.md before committing — catch all the fabricated paths in one pass.
- Onboarding doc review — anchors break as docs get reorganized; verify catches them.
- Pre-PR markdown review — open the rendered changelog or release notes in MD View, toggle verify, fix what’s flagged.
- Catching
curl | shpatterns in any community markdown you didn’t write yourself.
Frequently asked questions
- Does it run automatically?
- No. Toggle it on with Ctrl+Shift+V (or View → Verify Document). The state persists between sessions via localStorage so your preference sticks.
- Will it slow down rendering?
- No. The engine runs only when toggled on, and even then it's incremental — rules execute once per document load, not on every scroll or keystroke. Filesystem checks for fabricated paths are batched into a single Rust call. Re-opening a recent document reuses cached findings (LRU, 16 documents).
- What does it not catch?
- It can't catch semantic hallucinations — wrong logic, wrong reasoning, factually false claims. The verifier is for *structural* problems: paths that don't exist, anchors that don't resolve, shell that's syntactically risky. Use it as a second pair of eyes for trust signals, not as a correctness oracle.
- Does it call any AI service?
- No. Zero LLM calls, zero network requests. Pure deterministic regex and structure rules running in your browser process. Runs offline.
MD View — free, lifetime $24
14-day Pro trial. Then keep every Free feature forever.