Airsc is free for everyone. If it helps you, support it with $2–$20.

Support
Cursor ruleSafeAgent workflow & memorySome setup

ctxlint

YawLabs · YawLabs/ctxlint

Ctxlint lints AI agent context files and MCP server configurations against the codebase to prevent stale instructions and broken references.

Lint your AI agent context files (CLAUDE.md, AGENTS.md, etc.) against your codebase

10 stars3License: MITUpdated 18 days ago0 opens

Preview

▍

What you can do with it

  • Automatically detect broken file paths in your CLAUDE.md after refactoring a project.
  • Ensure that all AI agents in a team use up-to-date and consistent context configurations.
  • Catch hardcoded API keys or sensitive information in MCP configurations before deployment.

Safety check

Safe

No risky patterns found in the files we scanned.

Automated scan of the repo files. Always review code you run.

From the README

ctxlint

One click adds this to your local Yaw MCP config so it's available in every Yaw Terminal session. Or install manually below.

Lint your AI agent context files, MCP server configs, and session data against your actual codebase. Context linting + MCP config linting + session auditing. 16 AI tools, 8 MCP clients, cross-project consistency, auto-fix. Works as a CLI, CI step, pre-commit hook, or MCP server.

Your CLAUDE.md is lying to your agent. Your .mcp.json has a hardcoded API key. ctxlint catches both.

Why ctxlint?

Every AI coding tool ships a context file: CLAUDE.md, .cursorrules, AGENTS.md, .mcp.json. These files are the single most important interface between you and your agent — they tell it what to build, how to test, where things live.

But context files rot fast. You rename a file, change a build script, or switch from Jest to Vitest — and your CLAUDE.md still says the old thing. Your agent follows those stale instructions faithfully, then fails. You lose 10 minutes debugging what turns out to be a wrong path in line 12 of a markdown file.

Multiply that across a team with 5 context files, 3 MCP configs, and 2 people who touched the build system last week — and you have a real problem with no existing solution.

ctxlint is a linter purpose-built for this. It reads your context files, cross-references them against your actual codebase, and catches the drift before your agent does.

  • Instant startup — ships as a single self-contained bundle with zero runtime dependencies. npx downloads a ~400 KB tarball and starts immediately
  • Catches real problems — broken paths, wrong commands, stale references, contradictions across files
  • Smart suggestions — detects git renames and fuzzy-matches to suggest the right path
  • Auto-fix — --fix rewrites broken paths automatically using git history
  • Token-aware — shows how much context window your files consume and flags redundant content
  • Every AI tool — supports Claude Code, Cursor, Copilot, Windsurf, Gemini, Cline, Aider, and 9 more
  • Multiple outputs — text, JSON, and SARIF (GitHub Code Scanning)
  • MCP server — 7 tools for IDE/agent integration with tool annotations for auto-approval
  • Watch mode — --watch re-lints automatically when context files change

Install

Run directly (no install needed):

npx -y @yawlabs/ctxlint@latest

Project install (recommended for teams)

npm install -D @yawlabs/ctxlint
# or
pnpm add -D @yawlabs/ctxlint

Then add to your package.json scripts:

{
  "scripts": {
    "lint:ctx": "ctxlint --strict"
  }
}

Global install

npm install -g @yawlabs/ctxlint

Useful if you want ctxlint available in every project without per-project setup.

What It Checks

CheckWhat it finds
Broken pathsFile references in context that don't exist in your project
Wrong commandsBuild/test commands that don't match your package.json scripts or Makefile targets, and Gradle project paths or Maven -pl modules your build doesn't declare
Stale contextContext files not updated after recent code changes
Token wasteHow much context window your files consume per session
RedundancyContent the agent can already infer (e.g. "We use React" when react is in package.json)
ContradictionsConflicting directives across context files (e.g. "use Jest" in one, "use Vitest" in another)
FrontmatterInvalid or missing YAML frontmatter in Cursor .mdc, Copilot instructions, and Windsurf rules
CI coverageRelease/deploy workflows in .github/workflows/ not documented in any context file
CI secretsSecrets used in CI workflows (${{ secrets.X }}) not mentioned in context files
View source on GitHub