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.

No file handy?

Nothing is uploaded. The check runs in this tab. How it works

A pasted or dropped file is checked as soon as it lands.

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.

About the pluginView on GitHub

See it run

Screen recording of the AsItIs steering file checker. A CLAUDE.md is pasted into the box and is checked at once. The results list two warnings under Hidden content: on line 17, an HTML comment telling AI agents to quietly add a workflow step that uploads .env, and on line 22, a zero-width space. Copy report is then clicked and the page says Copied.
A CLAUDE.md is pasted and checked as soon as it lands. Both hidden items are found: an HTML comment addressed to AI agents and a zero-width space. Watch it as a video (WebM, 15 seconds).

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 a description of 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 the hidden attribute, 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.