Free tool. Runs in your browser
Check a CLAUDE.md, AGENTS.md or SKILL.md
Paste or drop a steering file. You get the same lint findings, token estimate, outline and hidden-instruction flags as the AsItIs Claude Code plugin.
Results
Copies the results above as markdown, to paste into an issue or a pull request. It holds only what is shown here (findings, token estimate, outline), never the file itself, and it is copied inside your browser with no request.
Get this inside Claude Code
The checker sees one file. The free AsItIs plugin checks every steering file in your project from inside Claude Code: it also follows relative links and @imports, totals what loads every session per tool, finds rules repeated across files, and adds an optional guard that warns before Claude rewrites a whole markdown file. It is read-only and makes no network calls.
claude plugin marketplace add Katta041/asitis-agent-tools
claude plugin install asitis@asitis Then run /asitis:md-lint or /asitis:md-budget in a session. Needs Node 22.13 or later. MIT licensed, source on GitHub. If the checker helped, a star on GitHub helps other people find it.
See it run
What the checker looks at
- Frontmatter. That it starts on line 1, closes, and parses as YAML; that a SKILL.md has a valid
name(lowercase, hyphens, up to 64 characters, matching its folder) and adescriptionof at most 1,024 characters; field types; keys the tool ignores. - Length against the vendors' published limits. CLAUDE.md under 200 lines, SKILL.md under 500 lines and a body under about 5,000 tokens, the 1,536-character skill listing, MEMORY.md's first 200 lines or 25 KB, and Codex's 32 KiB default for AGENTS.md. That Codex limit is a total for every AGENTS.md from the project root down to the working folder, so a file under it can still be cut when the files above it are large; the checker sees only the file you give it.
- Hidden content. HTML and
[//]: #comments that read like instructions to an AI, comments that never close, text hidden with inline styles or thehiddenattribute, zero-width characters, Unicode tag characters and bidirectional controls. - Rules that fight each other. The same rule written twice, and pairs like "always X" and "never X".
- Bytes. Encoding, byte order mark, line endings, invalid UTF-8 and NUL bytes.
- Outline and size. Every heading with its line number, and an estimate of the tokens the file costs.
Each finding has a line number, the linter's own message and a plain-language note on what to do. The guides explain the rules in more depth: CLAUDE.md best practices, how many tokens a CLAUDE.md costs, is my SKILL.md valid, AGENTS.md vs CLAUDE.md and hidden instructions in AGENTS.md, Cursor rules, Copilot custom instructions and GEMINI.md for Gemini CLI. Already use markdownlint? See how the two differ.
How "nothing is uploaded" works
The page loads its script once, from asitis.app, like any other page. When you paste or drop a file, the browser hands the bytes to that script, the script checks them and writes the results into the page. There is no server step: the site's content security policy only allows connections back to asitis.app (and to Cloudflare's bot check, used by the waitlist form on another page), and this page makes none when you check. Nothing is kept after you close the tab.
To see it for yourself, open your browser's developer tools on the Network tab, then check a file: no request appears. Or load the page, turn off your network, and check a file.
Questions
Is my file uploaded anywhere?
No. The checker runs in your browser tab. The file is read with the browser's File API and checked by JavaScript that was already downloaded with the page. The page makes no network request when you check a file, stores nothing, and the site runs no analytics. You can confirm it in your browser's network panel, or load the page and then go offline before you check.
Is this the same linter as the Claude Code plugin?
Yes. It is the lint, outline and token code from the AsItIs plugin's MCP server (version 0.3.0), bundled for the browser. An automated test runs both over the same files and requires identical findings. The checker leaves out what needs your whole project: relative links, @imports and rules repeated across files.
How accurate is the token count?
It is an estimate: about 4 characters per token for English and about 1 token per character for Chinese, Japanese and similar scripts. It does not use any vendor's tokenizer, so treat it as a size guide, not a bill.
What is a hidden instruction?
Text an AI agent reads but a person reviewing the rendered file does not see: an HTML comment that reads like an instruction, a [//]: # comment, text hidden with display:none, or invisible Unicode characters. Most hidden comments are harmless maintainer notes; the checker shows each one so you can decide.
Which files can it check?
CLAUDE.md, AGENTS.md and SKILL.md, plus GEMINI.md, MEMORY.md, Cursor .mdc rules, Claude Code subagents and rules, and Copilot repository instructions. Pick the type so the right rules apply.