Performance
- Auto-fix span finding - Replaced 8 dynamic
Regex::new()calls with byte-level scanning in auto-fix helpers, eliminating regex compilation overhead entirely (closes #325)
Added
- Website automation -
generate-docs-rules.pynow generateswebsite/src/data/siteData.jsonwith dynamic stats (rule count, category count, autofix count, tool list); landing page and JSON-LD import generated data instead of hardcoding;release.ymlversion-docsjob auto-cuts versioned docs on release - GEMINI.md categorization -
categorize_layer()now recognizesGEMINI.mdandGEMINI.local.mdfiles asLayerType::GeminiMdfor accurate XP-006 layer categorization - Codex CLI support - 3 new validation rules (CDX-001, CDX-002, CDX-003) for
.codex/config.tomlconfiguration files - Cline support - 3 new validation rules (CLN-001, CLN-002, CLN-003) for
.clinerulesconfiguration - OpenCode support - 3 new validation rules (OC-001, OC-002, OC-003) for
opencode.jsonconfiguration - GEMINI.md support - 3 new validation rules (GM-001, GM-002, GM-003) for
GEMINI.mdfiles - CC-HK-013:
asyncfield only valid on command hooks (error) - CC-HK-014:
oncefield only meaningful in skill/agent frontmatter (warning) - CC-HK-015:
modelfield only valid on prompt/agent hooks (warning) - CC-HK-016: Unknown hook type validation, recognizes
agenttype (error) - CC-HK-017: Prompt/agent hooks missing
$ARGUMENTSreference (warning) - CC-HK-018: Matcher on
UserPromptSubmit/Stopevents silently ignored (info) - CC-AG-008: Validate
memoryscope isuser,project, orlocal - CC-AG-009: Validate tool names in agent
toolslist - CC-AG-010: Validate tool names in agent
disallowedToolslist - CC-AG-011: Validate
hooksobject schema in agent frontmatter - CC-AG-012: Warn on
permissionMode: bypassPermissionsusage - CC-AG-013: Validate skill name format in agent
skillsarray - MCP-009: Validate
commandis present for stdio MCP servers (HIGH) - MCP-010: Validate
urlis present for http/sse MCP servers (HIGH) - MCP-011: Validate MCP server
typeis one of stdio, http, sse (HIGH) - MCP-012: Warn when SSE transport is used (deprecated in favor of Streamable HTTP) with auto-fix (MEDIUM)
- CC-SK-010: Validate hooks in skill frontmatter follow settings.json schema
- CC-SK-011: Detect unreachable skills (user-invocable=false + disable-model-invocation=true)
- CC-SK-012: Warn when argument-hint is set but body never references $ARGUMENTS
- CC-SK-013: Warn when context=fork is used with reference-only content (no imperative verbs)
- CC-SK-014: Validate disable-model-invocation is boolean, not string "true"
- CC-SK-015: Validate user-invocable is boolean, not string "true"/"false"
- CC-PL-007: Validate component paths are relative (no absolute paths or
..traversal) with safe auto-fix (HIGH) - CC-PL-008: Detect component paths pointing inside
.claude-plugin/directory (HIGH) - CC-PL-009: Validate
author.nameis non-empty when author object present (MEDIUM) - CC-PL-010: Validate
homepageis a valid http/https URL when present (MEDIUM) - COP-005: Validate
excludeAgentfield contains valid agent identifiers - COP-006: Warn when global Copilot instruction file exceeds ~4000 characters
- CUR-007: Warn when
alwaysApply: trueis set alongsideglobs(redundant) with safe auto-fix - CUR-008: Detect
alwaysApplyas quoted string instead of boolean (HIGH) - CUR-009: Warn when agent-requested rule has no description
- CC-MEM-011: Validate
.claude/rulesfrontmatterdescriptionfield - CC-MEM-012: Validate
.claude/rulesfrontmatterglobsfield format - Fix metadata (
autofix,fix_safety) for all rules in rules.json - Fix metadata schema validation parity test
- Autofix count parity test (rules.json vs VALIDATION-RULES.md)
- Context-aware completions documented in all editor READMEs
--fix-safeflag documented in README.md usage section[files]configuration section for custom file inclusion/exclusion patternsinclude_as_memoryglob patterns validate files as CLAUDE.md-like instruction filesinclude_as_genericglob patterns validate files as generic markdownexcludeglob patterns skip files from validation entirely- Priority: exclude > include_as_memory > include_as_generic > built-in detection
Changed
- Actionable diagnostic suggestions - All parse error diagnostics now include actionable suggestions (AS-016, CC-HK-012, MCP-007, CC-AG-007, CC-PL-006, CDX-000, file-level errors); improved 4 generic suggestions with concrete guidance (MCP-003 lists valid JSON Schema types, MCP-006 warns about self-reported annotations, AGM-001/GM-001 specify common markdown issues)
- Website landing page - Updated stats (145 rules, 2400+ tests, 10+ tools), added Cline/OpenCode/Gemini CLI/Roo Code/Kiro CLI to tools grid, visual redesign with Outfit font, syntax-highlighted terminal, scroll reveal animations, and open-ended "And many more" tool card
- Auto-fix implementations added for 8 rules: CC-SK-011 (unsafe), CC-HK-013 (safe), CC-HK-015 (safe), CC-HK-018 (safe), CUR-008 (safe), COP-005 (unsafe), CC-AG-008 (unsafe), MCP-011 (unsafe)
- Auto-fix pack 2: 8 additional rules with unsafe auto-fixes: CC-SK-005, CC-AG-012, CUR-002, COP-002, CDX-001, CDX-002, OC-001, CC-HK-016
- Auto-fix table in VALIDATION-RULES.md expanded from 7 to 48 rules with safety classification
- Auto-fixable count updated to 48 rules (33%)
- Generated website rule pages now include Auto-Fix metadata
- Website rules index table includes Auto-Fix column
generate-docs-rules.pyrenders fix metadata with strict validation- Collapsed nested
ifpatterns using Rust let-chains (stable since 1.87), removing stale#[allow(clippy::collapsible_if)]annotations - Moved
#[allow(dead_code)]from module-level to method-level in telemetry stub for precision