validate-cc-md
Validates CLAUDE.md files for size, imports, and structure. Use when user asks to "check my CLAUDE.md", "why is my CLAUDE.md too long", "validate imports", or "fix CLAUDE.md errors". Checks file size limits (30KB warning, 50KB error), @import directives, frontmatter in .claude/rules/, and section organization.
- License 许可
- MIT
- 最近更新
- 2026-11-03
- Stars
- ★ 14
- Forks
- 4
01 前言 Front Matter
- name
- validate-cc-md
- version
- 1.0.0
- description
- Validates CLAUDE.md files for size, imports, and structure. Use when user asks to "check my CLAUDE.md", "why is my CLAUDE.md too long", "validate imports", or "fix CLAUDE.md errors". Checks file size limits (30KB warning, 50KB error), @import directives, frontmatter in .claude/rules/, and section organization.
- allowed-tools
- [ "Bash(claudelint:*)" ]
- argument-hint
- [flags]
02 资源文件 2
- 参考文档CHANGELOG.md305 B
- 脚本validate-cc-md.sh479 B
03 SKILL.md 正文
Validate CLAUDE.md Files
Runs claudelint validate-claude-md to validate CLAUDE.md files including:
- File size limits (30KB warning, 50KB error)
- @import directive validation
- Frontmatter validation in .claude/rules/ files
- Section organization
Usage
claudelint validate-claude-md $ARGUMENTS
Options
--path <path>- Validate specific CLAUDE.md file--verbose- Show detailed output--warnings-as-errors- Treat warnings as errors--explain- Show detailed explanations and fix suggestions
Examples
Example 1: Claude says context is too large
User says: "Claude keeps saying my instructions are too long and won't load them" What happens:
- Skill runs
claudelint validate-claude-md - Shows CLAUDE.md is 52KB (exceeds 50KB hard limit)
- Identifies 3 largest sections: API docs (18KB), Git workflow (12KB), Testing guide (8KB)
- Shows how to split: create .claude/rules/api.md and add
@import .claude/rules/api.md
Result: User splits sections, CLAUDE.md now 28KB, Claude loads it successfully
Example 2: Import shows "file not found" in Claude
User says: "I added @import .claude/rules/testing.md but Claude says the file doesn't exist" What happens:
- Skill validates @import path
- Finds file is at
.claude/rules/tests.mdnottesting.md(typo) - Also checks .claude/rules/tests.md exists and has valid frontmatter
- Shows corrected import line
Result: User fixes filename typo, import loads correctly
Example 3: Rules file won't apply to specific paths
User says: "My .claude/rules/backend.md isn't applying when I edit backend files" What happens:
- Skill checks frontmatter in .claude/rules/backend.md
- Finds
paths: "backend/*"(string) should bepaths: ["backend/**/*"](array with glob) - Explains paths field requires array of glob patterns
- Shows corrected frontmatter
Result: Rules now apply to backend directory correctly
Command Examples
Validate all CLAUDE.md files:
claudelint validate-claude-md
Validate specific file:
claudelint validate-claude-md --path /path/to/CLAUDE.md
Verbose output with explanations:
claudelint validate-claude-md --verbose --explain
What Gets Validated
File Size
- Warns if file exceeds 30KB (approaching context limit)
- Errors if file exceeds 50KB (exceeds safe context limit)
- Suggests splitting into .claude/rules/ for large files
Import Validation
- Checks that @import directives point to existing files
- Detects circular import dependencies
- Validates import depth limits
Frontmatter (for .claude/rules/ files)
- Validates YAML frontmatter syntax
- Checks
pathsfield is string or array - Ensures frontmatter is properly closed
Content Organization
- Warns if CLAUDE.md has >20 sections
- Suggests moving content to .claude/rules/ for better organization
Configuration
Rules can be configured in .claudelintrc.json:
{
"rules": {
"claude-md-size": "warn",
"claude-md-import-missing": "error",
"claude-md-import-circular": "error"
}
}
Inline Disable
Disable specific rules inline:
<!-- claudelint-disable size-warning -->
Large file content here...
<!-- claudelint-enable size-warning -->
Or disable for a single line:
<!-- claudelint-disable-next-line import-missing -->
@import non-existent-file.md
Exit Codes
0- No errors or warnings1- Warnings found (or warnings treated as errors)2- Errors found
Common Issues
Error: "File exceeds 50KB"
Cause: CLAUDE.md file is too large for Claude's context window
Solution: Split content into .claude/rules/ files using @import directives
Example: Move testing guidelines to .claude/rules/testing.md and add @import .claude/rules/testing.md to CLAUDE.md
Error: "Import not found: .claude/rules/testing.md"
Cause: @import directive points to a file that doesn't exist Solution: Check the path is correct relative to CLAUDE.md Common mistakes:
- Using
@import ../rules/testing.md(wrong - don't use ..) - Using
@import rules/testing.md(wrong - missing .claude/) - Correct:
@import .claude/rules/testing.md
Error: "Circular import detected"
Cause: File A imports B which imports A (infinite loop) Solution: Reorganize imports to be one-directional Example: CLAUDE.md should import .claude/rules/ files, but those files should not import CLAUDE.md back
Warning: "File exceeds 30KB"
Cause: File is approaching the safe limit for Claude's context Solution: Not urgent, but consider splitting large sections into @imports Why 30KB? Claude can handle up to ~50KB, but staying under 30KB leaves room for growth and keeps context manageable
See Also
- validate-all - Run all validators
- format-cc - Format markdown files with markdownlint/prettier
04 同仓库更多 Skills
test-skill
A valid test skill for testing purposes. Use this when you want to test skill validation.
no-version-skill
This skill is missing the version field for testing purposes.
dangerous-skill
This skill contains dangerous commands for testing security validation.
example-skill
Use this to run the complete test suite for the project
advanced-skill
Use this to deploy the project using Firebase tools and MCP integration
WRONG_NAME
I do it