{
"description": "Machine-readable source of truth for all validation rules. When adding a new rule, add it here AND in VALIDATION-RULES.md. CI parity tests enforce sync.",
"version": "1.1.0",
"total_rules": 155,
"last_updated": "2026-02-07",
"schema": {
"evidence": {
"source_type": "spec|vendor_docs|vendor_code|paper|community",
"source_urls": [
"array of URLs"
],
"verified_on": "ISO date string",
"applies_to": {
"tool": "tool name (optional)",
"version_range": "semver range (optional)",
"spec_revision": "spec version (optional)"
},
"normative_level": "MUST|SHOULD|BEST_PRACTICE",
"tests": {
"unit": "boolean",
"fixtures": "boolean",
"e2e": "boolean"
}
},
"fix": {
"autofix": "boolean - whether this rule has an automatic fix",
"fix_safety": "safe|unsafe|safe/unsafe (only present when autofix is true)"
}
},
"rules": [
{
"id": "AS-001",
"name": "Missing Frontmatter",
"severity": "HIGH",
"category": "agent-skills",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://agentskills.io/specification"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "1.0"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "AS-002",
"name": "Missing Required Field: name",
"severity": "HIGH",
"category": "agent-skills",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://agentskills.io/specification"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "1.0"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "AS-003",
"name": "Missing Required Field: description",
"severity": "HIGH",
"category": "agent-skills",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://agentskills.io/specification"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "1.0"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "AS-004",
"name": "Invalid Name Format",
"severity": "HIGH",
"category": "agent-skills",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://agentskills.io/specification"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "1.0"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe/unsafe"
}
},
{
"id": "AS-005",
"name": "Name Starts/Ends with Hyphen",
"severity": "HIGH",
"category": "agent-skills",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://agentskills.io/specification"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "1.0"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "AS-006",
"name": "Consecutive Hyphens in Name",
"severity": "HIGH",
"category": "agent-skills",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://agentskills.io/specification"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "1.0"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "AS-007",
"name": "Reserved Name",
"severity": "HIGH",
"category": "agent-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://platform.claude.com/docs"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "AS-008",
"name": "Description Too Short",
"severity": "HIGH",
"category": "agent-skills",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://agentskills.io/specification"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "1.0"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "AS-009",
"name": "Description Contains XML",
"severity": "HIGH",
"category": "agent-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://platform.claude.com/docs"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "AS-010",
"name": "Missing Trigger Phrase",
"severity": "MEDIUM",
"category": "agent-skills",
"evidence": {
"source_type": "community",
"source_urls": [
"https://github.com/anthropics/awesome-slash",
"https://platform.claude.com/docs"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "AS-011",
"name": "Compatibility Too Long",
"severity": "HIGH",
"category": "agent-skills",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://agentskills.io/specification"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "1.0"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "AS-012",
"name": "Content Exceeds 500 Lines",
"severity": "MEDIUM",
"category": "agent-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://platform.claude.com/docs",
"https://agentskills.io"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "AS-013",
"name": "File Reference Too Deep",
"severity": "HIGH",
"category": "agent-skills",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://agentskills.io/specification"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "1.0"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "AS-014",
"name": "Windows Path Separator",
"severity": "HIGH",
"category": "agent-skills",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://agentskills.io/specification"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "1.0"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "AS-015",
"name": "Upload Size Exceeds 8MB",
"severity": "HIGH",
"category": "agent-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://platform.claude.com/docs"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "AS-016",
"name": "Skill Parse Error",
"severity": "HIGH",
"category": "agent-skills",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://agentskills.io/specification"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "1.0"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-SK-001",
"name": "Invalid Model Value",
"severity": "HIGH",
"category": "claude-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/skills"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "CC-SK-002",
"name": "Invalid Context Value",
"severity": "HIGH",
"category": "claude-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/skills"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "CC-SK-003",
"name": "Context Without Agent",
"severity": "HIGH",
"category": "claude-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/skills"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "CC-SK-004",
"name": "Agent Without Context",
"severity": "HIGH",
"category": "claude-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/skills"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "CC-SK-005",
"name": "Invalid Agent Type",
"severity": "HIGH",
"category": "claude-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/sub-agents"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "CC-SK-006",
"name": "Dangerous Auto-Invocation",
"severity": "HIGH",
"category": "claude-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/skills"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-SK-007",
"name": "Unrestricted Bash",
"severity": "HIGH",
"category": "claude-skills",
"evidence": {
"source_type": "community",
"source_urls": [
"https://github.com/anthropics/awesome-slash"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "CC-SK-008",
"name": "Unknown Tool Name",
"severity": "HIGH",
"category": "claude-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/settings"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-SK-009",
"name": "Too Many Injections",
"severity": "MEDIUM",
"category": "claude-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://platform.claude.com/docs"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-SK-010",
"name": "Invalid Hooks in Skill Frontmatter",
"severity": "HIGH",
"category": "claude-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/skills"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-SK-011",
"name": "Unreachable Skill",
"severity": "HIGH",
"category": "claude-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/skills"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "CC-SK-012",
"name": "Argument Hint Without $ARGUMENTS",
"severity": "MEDIUM",
"category": "claude-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/skills"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-SK-013",
"name": "Fork Context Without Actionable Instructions",
"severity": "MEDIUM",
"category": "claude-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/skills"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-SK-014",
"name": "Invalid disable-model-invocation Type",
"severity": "HIGH",
"category": "claude-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/skills"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "CC-SK-015",
"name": "Invalid user-invocable Type",
"severity": "HIGH",
"category": "claude-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/skills"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "CC-HK-001",
"name": "Invalid Hook Event",
"severity": "HIGH",
"category": "claude-hooks",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/hooks"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe/unsafe"
}
},
{
"id": "CC-HK-002",
"name": "Prompt Hook on Wrong Event",
"severity": "HIGH",
"category": "claude-hooks",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/hooks"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-HK-003",
"name": "Missing Matcher for Tool Events",
"severity": "HIGH",
"category": "claude-hooks",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/hooks"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-HK-004",
"name": "Matcher on Non-Tool Event",
"severity": "HIGH",
"category": "claude-hooks",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/hooks"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "CC-HK-005",
"name": "Missing Type Field",
"severity": "HIGH",
"category": "claude-hooks",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/hooks"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-HK-006",
"name": "Missing Command Field",
"severity": "HIGH",
"category": "claude-hooks",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/hooks"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-HK-007",
"name": "Missing Prompt Field",
"severity": "HIGH",
"category": "claude-hooks",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/hooks"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-HK-008",
"name": "Script File Not Found",
"severity": "HIGH",
"category": "claude-hooks",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/hooks"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-HK-009",
"name": "Dangerous Command Pattern",
"severity": "HIGH",
"category": "claude-hooks",
"evidence": {
"source_type": "community",
"source_urls": [
"https://github.com/anthropics/awesome-slash"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-HK-010",
"name": "Timeout Policy",
"severity": "MEDIUM",
"category": "claude-hooks",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/hooks"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-HK-011",
"name": "Invalid Timeout Value",
"severity": "HIGH",
"category": "claude-hooks",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/hooks"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "CC-HK-012",
"name": "Hooks Parse Error",
"severity": "HIGH",
"category": "claude-hooks",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/hooks"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-HK-013",
"name": "Async on Non-Command Hook",
"severity": "HIGH",
"category": "claude-hooks",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/hooks"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "CC-HK-014",
"name": "Once Outside Skill/Agent Frontmatter",
"severity": "MEDIUM",
"category": "claude-hooks",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/hooks"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-HK-015",
"name": "Model on Command Hook",
"severity": "MEDIUM",
"category": "claude-hooks",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/hooks"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "CC-HK-016",
"name": "Validate Hook Type Agent",
"severity": "HIGH",
"category": "claude-hooks",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/hooks"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "CC-HK-017",
"name": "Prompt/Agent Hook Missing $ARGUMENTS",
"severity": "MEDIUM",
"category": "claude-hooks",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/hooks"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-HK-018",
"name": "Matcher on UserPromptSubmit/Stop",
"severity": "LOW",
"category": "claude-hooks",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/hooks"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "BEST_PRACTICE",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "CC-AG-001",
"name": "Missing Name Field",
"severity": "HIGH",
"category": "claude-agents",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/sub-agents"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-AG-002",
"name": "Missing Description Field",
"severity": "HIGH",
"category": "claude-agents",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/sub-agents"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-AG-003",
"name": "Invalid Model Value",
"severity": "HIGH",
"category": "claude-agents",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/sub-agents"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "CC-AG-004",
"name": "Invalid Permission Mode",
"severity": "HIGH",
"category": "claude-agents",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/sub-agents"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "CC-AG-005",
"name": "Referenced Skill Not Found",
"severity": "HIGH",
"category": "claude-agents",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/sub-agents"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-AG-006",
"name": "Tool/Disallowed Conflict",
"severity": "HIGH",
"category": "claude-agents",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/sub-agents"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-AG-007",
"name": "Agent Parse Error",
"severity": "HIGH",
"category": "claude-agents",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/sub-agents"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-AG-008",
"name": "Invalid Memory Scope",
"severity": "HIGH",
"category": "claude-agents",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/sub-agents"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "CC-AG-009",
"name": "Invalid Tool Name in Tools List",
"severity": "HIGH",
"category": "claude-agents",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/sub-agents"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-AG-010",
"name": "Invalid Tool Name in DisallowedTools",
"severity": "HIGH",
"category": "claude-agents",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/sub-agents"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-AG-011",
"name": "Invalid Hooks in Agent Frontmatter",
"severity": "HIGH",
"category": "claude-agents",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/sub-agents"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-AG-012",
"name": "Bypass Permissions Warning",
"severity": "HIGH",
"category": "claude-agents",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/sub-agents"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "CC-AG-013",
"name": "Invalid Skill Name Format",
"severity": "MEDIUM",
"category": "claude-agents",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/sub-agents"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-MEM-001",
"name": "Invalid Import Path",
"severity": "HIGH",
"category": "claude-memory",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/memory"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-MEM-002",
"name": "Circular Import",
"severity": "HIGH",
"category": "claude-memory",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/memory"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-MEM-003",
"name": "Import Depth Exceeds 5",
"severity": "HIGH",
"category": "claude-memory",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/memory"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-MEM-004",
"name": "Invalid Command Reference",
"severity": "MEDIUM",
"category": "claude-memory",
"evidence": {
"source_type": "community",
"source_urls": [
"https://github.com/anthropics/awesome-slash"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-MEM-005",
"name": "Generic Instruction",
"severity": "HIGH",
"category": "claude-memory",
"evidence": {
"source_type": "community",
"source_urls": [
"https://github.com/anthropics/awesome-slash",
"https://arxiv.org/abs/2201.11903"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "CC-MEM-006",
"name": "Negative Without Positive",
"severity": "HIGH",
"category": "claude-memory",
"evidence": {
"source_type": "paper",
"source_urls": [
"https://arxiv.org/abs/2201.11903"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-MEM-007",
"name": "Weak Constraint Language",
"severity": "HIGH",
"category": "claude-memory",
"evidence": {
"source_type": "paper",
"source_urls": [
"https://arxiv.org/abs/2201.11903"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe/unsafe"
}
},
{
"id": "CC-MEM-008",
"name": "Critical Content in Middle",
"severity": "HIGH",
"category": "claude-memory",
"evidence": {
"source_type": "paper",
"source_urls": [
"https://aclanthology.org/2024.tacl-1.9/"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-MEM-009",
"name": "Token Count Exceeded",
"severity": "MEDIUM",
"category": "claude-memory",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/memory"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-MEM-010",
"name": "README Duplication",
"severity": "MEDIUM",
"category": "claude-memory",
"evidence": {
"source_type": "community",
"source_urls": [
"https://github.com/anthropics/awesome-slash"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-MEM-011",
"name": "Invalid Paths Glob in Rules",
"severity": "HIGH",
"category": "claude-memory",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/memory"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-MEM-012",
"name": "Rules File Unknown Frontmatter Key",
"severity": "MEDIUM",
"category": "claude-memory",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/memory"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "AGM-001",
"name": "Valid Markdown Structure",
"severity": "HIGH",
"category": "agents-md",
"evidence": {
"source_type": "community",
"source_urls": [
"https://developers.openai.com/codex/guides/agents-md",
"https://docs.cursor.com/en/context",
"https://docs.cline.bot/features/custom-instructions"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "AGM-002",
"name": "Missing Section Headers",
"severity": "MEDIUM",
"category": "agents-md",
"evidence": {
"source_type": "community",
"source_urls": [
"https://docs.cursor.com/en/context",
"https://docs.cline.bot/features/custom-instructions"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "AGM-003",
"name": "Character Limit (Windsurf)",
"severity": "MEDIUM",
"category": "agents-md",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.windsurf.com/windsurf/cascade/memories"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "windsurf"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "AGM-004",
"name": "Missing Project Context",
"severity": "MEDIUM",
"category": "agents-md",
"evidence": {
"source_type": "community",
"source_urls": [
"https://developers.openai.com/codex/guides/agents-md",
"https://docs.cursor.com/en/context"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "BEST_PRACTICE",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "AGM-005",
"name": "Platform-Specific Features Without Guard",
"severity": "MEDIUM",
"category": "agents-md",
"evidence": {
"source_type": "community",
"source_urls": [
"https://developers.openai.com/codex/guides/agents-md",
"https://docs.cursor.com/en/context"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "AGM-006",
"name": "Nested AGENTS.md Hierarchy",
"severity": "MEDIUM",
"category": "agents-md",
"evidence": {
"source_type": "community",
"source_urls": [
"https://developers.openai.com/codex/guides/agents-md",
"https://docs.cline.bot/features/custom-instructions",
"https://github.com/github/docs/changelog/2025-06-17-github-copilot-coding-agent-now-supports-agents-md-custom-instructions"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "BEST_PRACTICE",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-PL-001",
"name": "Plugin Manifest Not in .claude-plugin/",
"severity": "HIGH",
"category": "claude-plugins",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/plugins"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-PL-002",
"name": "Components in .claude-plugin/",
"severity": "HIGH",
"category": "claude-plugins",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/plugins-reference"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-PL-003",
"name": "Invalid Semver",
"severity": "HIGH",
"category": "claude-plugins",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/plugins-reference"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-PL-004",
"name": "Missing Required Plugin Field",
"severity": "HIGH",
"category": "claude-plugins",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/plugins-reference"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-PL-005",
"name": "Empty Plugin Name",
"severity": "HIGH",
"category": "claude-plugins",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/plugins-reference"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "CC-PL-006",
"name": "Plugin Parse Error",
"severity": "HIGH",
"category": "claude-plugins",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/plugins-reference"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-PL-007",
"name": "Invalid Component Path",
"severity": "HIGH",
"category": "claude-plugins",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/plugins-reference"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "CC-PL-008",
"name": "Component Inside .claude-plugin",
"severity": "HIGH",
"category": "claude-plugins",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/plugins-reference"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-PL-009",
"name": "Invalid Author Object",
"severity": "MEDIUM",
"category": "claude-plugins",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/plugins-reference"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CC-PL-010",
"name": "Invalid Homepage URL",
"severity": "MEDIUM",
"category": "claude-plugins",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/plugins-reference"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "MCP-001",
"name": "Invalid JSON-RPC Version",
"severity": "HIGH",
"category": "mcp",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://modelcontextprotocol.io/specification"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "2025-06-18"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "MCP-002",
"name": "Missing Required Tool Field",
"severity": "HIGH",
"category": "mcp",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://modelcontextprotocol.io/docs/concepts/tools"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "2025-06-18"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "MCP-003",
"name": "Invalid JSON Schema",
"severity": "HIGH",
"category": "mcp",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://modelcontextprotocol.io/specification"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "2025-06-18"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "MCP-004",
"name": "Missing Tool Description",
"severity": "HIGH",
"category": "mcp",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://modelcontextprotocol.io/docs/concepts/tools"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "2025-06-18"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "MCP-005",
"name": "Tool Without User Consent",
"severity": "HIGH",
"category": "mcp",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://modelcontextprotocol.io/specification"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "2025-06-18"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "MCP-006",
"name": "Untrusted Annotations",
"severity": "HIGH",
"category": "mcp",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://modelcontextprotocol.io/docs/concepts/tools"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "2025-06-18"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "MCP-007",
"name": "MCP Parse Error",
"severity": "HIGH",
"category": "mcp",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://modelcontextprotocol.io/specification"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "2025-06-18"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "MCP-008",
"name": "Protocol Version Mismatch",
"severity": "MEDIUM",
"category": "mcp",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://modelcontextprotocol.io/specification"
],
"verified_on": "2026-02-04",
"applies_to": {
"spec_revision": "2025-06-18"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "MCP-009",
"name": "Missing command for stdio server",
"severity": "HIGH",
"category": "mcp",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://modelcontextprotocol.io/specification"
],
"verified_on": "2026-02-07",
"applies_to": {
"spec_revision": "2025-03-26"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "MCP-010",
"name": "Missing url for http/sse server",
"severity": "HIGH",
"category": "mcp",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://modelcontextprotocol.io/specification"
],
"verified_on": "2026-02-07",
"applies_to": {
"spec_revision": "2025-03-26"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "MCP-011",
"name": "Invalid MCP server type",
"severity": "HIGH",
"category": "mcp",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://modelcontextprotocol.io/specification"
],
"verified_on": "2026-02-07",
"applies_to": {
"spec_revision": "2025-03-26"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "MCP-012",
"name": "Deprecated SSE transport",
"severity": "MEDIUM",
"category": "mcp",
"evidence": {
"source_type": "spec",
"source_urls": [
"https://modelcontextprotocol.io/specification"
],
"verified_on": "2026-02-07",
"applies_to": {
"spec_revision": "2025-03-26"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "COP-001",
"name": "Empty Copilot Instruction File",
"severity": "HIGH",
"category": "copilot",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.github.com/en/copilot/customizing-copilot"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "github-copilot"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "COP-002",
"name": "Invalid Frontmatter in Scoped Instructions",
"severity": "HIGH",
"category": "copilot",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.github.com/en/copilot/customizing-copilot"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "github-copilot"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "COP-003",
"name": "Invalid Glob Pattern in applyTo",
"severity": "HIGH",
"category": "copilot",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.github.com/en/copilot/customizing-copilot"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "github-copilot"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "COP-004",
"name": "Unknown Frontmatter Keys",
"severity": "MEDIUM",
"category": "copilot",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.github.com/en/copilot/customizing-copilot"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "github-copilot"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "COP-005",
"name": "Invalid excludeAgent Value",
"severity": "HIGH",
"category": "copilot",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.github.com/en/copilot/customizing-copilot"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "github-copilot"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "COP-006",
"name": "File Length Limit",
"severity": "MEDIUM",
"category": "copilot",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.github.com/en/copilot/customizing-copilot"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "github-copilot"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CUR-001",
"name": "Empty Cursor Rule File",
"severity": "HIGH",
"category": "cursor",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.cursor.com/en/context"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "cursor"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CUR-002",
"name": "Missing Frontmatter in .mdc File",
"severity": "MEDIUM",
"category": "cursor",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.cursor.com/en/context"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "cursor"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "CUR-003",
"name": "Invalid YAML Frontmatter",
"severity": "HIGH",
"category": "cursor",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.cursor.com/en/context"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "cursor"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CUR-004",
"name": "Invalid Glob Pattern in globs Field",
"severity": "HIGH",
"category": "cursor",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.cursor.com/en/context"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "cursor"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CUR-005",
"name": "Unknown Frontmatter Keys",
"severity": "MEDIUM",
"category": "cursor",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.cursor.com/en/context"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "cursor"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "CUR-006",
"name": "Legacy .cursorrules File Detected",
"severity": "MEDIUM",
"category": "cursor",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.cursor.com/en/context"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "cursor"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CUR-007",
"name": "alwaysApply with Redundant globs",
"severity": "MEDIUM",
"category": "cursor",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.cursor.com/en/context"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "cursor"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "CUR-008",
"name": "Invalid alwaysApply Type",
"severity": "HIGH",
"category": "cursor",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.cursor.com/en/context"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "cursor"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "CUR-009",
"name": "Missing Description for Agent-Requested Rule",
"severity": "MEDIUM",
"category": "cursor",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.cursor.com/en/context"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "cursor"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CLN-001",
"name": "Empty Cline Rules File",
"severity": "HIGH",
"category": "cline",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.cline.bot/improving-your-workflow/cline-rules"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "cline"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CLN-002",
"name": "Invalid Paths Glob in Cline Rules",
"severity": "HIGH",
"category": "cline",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.cline.bot/improving-your-workflow/cline-rules"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "cline"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CLN-003",
"name": "Unknown Frontmatter Key in Cline Rules",
"severity": "MEDIUM",
"category": "cline",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.cline.bot/improving-your-workflow/cline-rules"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "cline"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "XML-001",
"name": "Unclosed XML Tag",
"severity": "HIGH",
"category": "xml",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://platform.claude.com/docs"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "XML-002",
"name": "Mismatched Closing Tag",
"severity": "HIGH",
"category": "xml",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://www.w3.org/TR/xml/"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "XML-003",
"name": "Unmatched Closing Tag",
"severity": "HIGH",
"category": "xml",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://www.w3.org/TR/xml/"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "REF-001",
"name": "Import File Not Found",
"severity": "HIGH",
"category": "references",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://code.claude.com/docs/en/memory"
],
"verified_on": "2026-02-04",
"applies_to": {
"tool": "claude-code"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "REF-002",
"name": "Broken Markdown Link",
"severity": "HIGH",
"category": "references",
"evidence": {
"source_type": "community",
"source_urls": [
"https://spec.commonmark.org/"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "PE-001",
"name": "Lost in the Middle",
"severity": "MEDIUM",
"category": "prompt-engineering",
"evidence": {
"source_type": "paper",
"source_urls": [
"https://aclanthology.org/2024.tacl-1.9/"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "PE-002",
"name": "Chain-of-Thought on Simple Task",
"severity": "MEDIUM",
"category": "prompt-engineering",
"evidence": {
"source_type": "paper",
"source_urls": [
"https://arxiv.org/abs/2201.11903"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "PE-003",
"name": "Weak Imperative Language",
"severity": "MEDIUM",
"category": "prompt-engineering",
"evidence": {
"source_type": "paper",
"source_urls": [
"https://arxiv.org/abs/2201.11903",
"https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "PE-004",
"name": "Ambiguous Instructions",
"severity": "MEDIUM",
"category": "prompt-engineering",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "XP-001",
"name": "Platform-Specific Feature in Generic Config",
"severity": "HIGH",
"category": "cross-platform",
"evidence": {
"source_type": "community",
"source_urls": [
"https://developers.openai.com/codex/guides/agents-md",
"https://docs.cursor.com/en/context"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "XP-002",
"name": "AGENTS.md Platform Compatibility",
"severity": "HIGH",
"category": "cross-platform",
"evidence": {
"source_type": "community",
"source_urls": [
"https://developers.openai.com/codex/guides/agents-md",
"https://opencode.ai/docs/rules",
"https://docs.cursor.com/en/context",
"https://docs.cline.bot/features/custom-instructions",
"https://github.com/github/docs/changelog/2025-06-17-github-copilot-coding-agent-now-supports-agents-md-custom-instructions"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "XP-003",
"name": "Hard-Coded Platform Paths",
"severity": "HIGH",
"category": "cross-platform",
"evidence": {
"source_type": "community",
"source_urls": [
"https://developers.openai.com/codex/guides/agents-md",
"https://docs.cursor.com/en/context"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "XP-004",
"name": "Conflicting Build/Test Commands",
"severity": "MEDIUM",
"category": "cross-platform",
"evidence": {
"source_type": "community",
"source_urls": [
"https://developers.openai.com/codex/guides/agents-md",
"https://docs.cursor.com/en/context"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "XP-005",
"name": "Conflicting Tool Constraints",
"severity": "HIGH",
"category": "cross-platform",
"evidence": {
"source_type": "community",
"source_urls": [
"https://developers.openai.com/codex/guides/agents-md",
"https://docs.cursor.com/en/context"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "XP-006",
"name": "Multiple Layers Without Documented Precedence",
"severity": "MEDIUM",
"category": "cross-platform",
"evidence": {
"source_type": "community",
"source_urls": [
"https://developers.openai.com/codex/guides/agents-md",
"https://docs.cursor.com/en/context"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "OC-001",
"name": "Invalid Share Mode",
"severity": "HIGH",
"category": "opencode",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://opencode.ai/docs/config"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "opencode"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "OC-002",
"name": "Invalid Instruction Path",
"severity": "HIGH",
"category": "opencode",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://opencode.ai/docs/config"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "opencode"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "OC-003",
"name": "opencode.json Parse Error",
"severity": "HIGH",
"category": "opencode",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://opencode.ai/docs/config"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "opencode"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "GM-001",
"name": "Invalid Markdown Structure in GEMINI.md",
"severity": "HIGH",
"category": "gemini-cli",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://geminicli.com/docs/cli/gemini-md/"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "gemini-cli"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "GM-002",
"name": "Missing Section Headers in GEMINI.md",
"severity": "MEDIUM",
"category": "gemini-cli",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://geminicli.com/docs/cli/gemini-md/"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "gemini-cli"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "GM-003",
"name": "Missing Project Context in GEMINI.md",
"severity": "MEDIUM",
"category": "gemini-cli",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://geminicli.com/docs/cli/gemini-md/"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "gemini-cli"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CDX-001",
"name": "Invalid Approval Mode",
"severity": "HIGH",
"category": "codex",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://github.com/openai/codex"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "codex"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "CDX-002",
"name": "Invalid Full Auto Error Mode",
"severity": "HIGH",
"category": "codex",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://github.com/openai/codex"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "codex"
},
"normative_level": "MUST",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "unsafe"
}
},
{
"id": "CDX-003",
"name": "AGENTS.override.md in Version Control",
"severity": "MEDIUM",
"category": "codex",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://github.com/openai/codex"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "codex"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "VER-001",
"name": "No Tool/Spec Versions Pinned",
"severity": "LOW",
"category": "version-awareness",
"evidence": {
"source_type": "community",
"source_urls": [
"https://github.com/avifenesh/agnix/issues/104"
],
"verified_on": "2026-02-04",
"applies_to": {},
"normative_level": "BEST_PRACTICE",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
},
{
"id": "CR-SK-001",
"name": "Cursor Skill Uses Unsupported Field",
"severity": "MEDIUM",
"category": "cursor-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.cursor.com/en/context/skills"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "cursor"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "CL-SK-001",
"name": "Cline Skill Uses Unsupported Field",
"severity": "MEDIUM",
"category": "cline-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.cline.bot/features/custom-instructions"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "cline"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "CP-SK-001",
"name": "Copilot Skill Uses Unsupported Field",
"severity": "MEDIUM",
"category": "copilot-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.github.com/en/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "github-copilot"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "CX-SK-001",
"name": "Codex Skill Uses Unsupported Field",
"severity": "MEDIUM",
"category": "codex-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://developers.openai.com/codex/guides/agents-md"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "codex"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "OC-SK-001",
"name": "OpenCode Skill Uses Unsupported Field",
"severity": "MEDIUM",
"category": "opencode-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://opencode.ai/docs/rules"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "opencode"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "WS-SK-001",
"name": "Windsurf Skill Uses Unsupported Field",
"severity": "MEDIUM",
"category": "windsurf-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.windsurf.com/windsurf/memories"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "windsurf"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "KR-SK-001",
"name": "Kiro Skill Uses Unsupported Field",
"severity": "MEDIUM",
"category": "kiro-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://kiro.dev/docs/context/steering"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "kiro"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "AMP-SK-001",
"name": "Amp Skill Uses Unsupported Field",
"severity": "MEDIUM",
"category": "amp-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.amp.dev/setup/customization"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "amp"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "RC-SK-001",
"name": "Roo Code Skill Uses Unsupported Field",
"severity": "MEDIUM",
"category": "roo-code-skills",
"evidence": {
"source_type": "vendor_docs",
"source_urls": [
"https://docs.roocode.com/features/custom-instructions"
],
"verified_on": "2026-02-07",
"applies_to": {
"tool": "roo-code"
},
"normative_level": "SHOULD",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": true,
"fix_safety": "safe"
}
},
{
"id": "XP-SK-001",
"name": "Skill Uses Client-Specific Features",
"severity": "LOW",
"category": "cross-platform",
"evidence": {
"source_type": "community",
"source_urls": [
"https://agentskills.io/specification"
],
"verified_on": "2026-02-07",
"applies_to": {},
"normative_level": "BEST_PRACTICE",
"tests": {
"unit": true,
"fixtures": true,
"e2e": false
}
},
"fix": {
"autofix": false
}
}
],
"categories": {
"agent-skills": {
"prefix": "AS",
"count": 16,
"description": "Agent Skills specification rules"
},
"claude-skills": {
"prefix": "CC-SK",
"count": 9,
"description": "Claude Code Skills rules"
},
"claude-hooks": {
"prefix": "CC-HK",
"count": 12,
"description": "Claude Code Hooks rules"
},
"claude-agents": {
"prefix": "CC-AG",
"count": 7,
"description": "Claude Code Subagents rules"
},
"claude-memory": {
"prefix": "CC-MEM",
"count": 10,
"description": "Claude Code Memory rules"
},
"agents-md": {
"prefix": "AGM",
"count": 6,
"description": "AGENTS.md cross-platform rules"
},
"claude-plugins": {
"prefix": "CC-PL",
"count": 6,
"description": "Claude Code Plugins rules"
},
"mcp": {
"prefix": "MCP",
"count": 8,
"description": "Model Context Protocol rules"
},
"copilot": {
"prefix": "COP",
"count": 6,
"description": "GitHub Copilot rules"
},
"cursor": {
"prefix": "CUR",
"count": 6,
"description": "Cursor project rules"
},
"cline": {
"prefix": "CLN",
"count": 3,
"description": "Cline rules validation"
},
"opencode": {
"prefix": "OC",
"count": 3,
"description": "OpenCode configuration rules"
},
"gemini-cli": {
"prefix": "GM",
"count": 3,
"description": "Gemini CLI instruction file rules"
},
"codex": {
"prefix": "CDX",
"count": 3,
"description": "Codex CLI configuration validation"
},
"xml": {
"prefix": "XML",
"count": 3,
"description": "XML validation rules"
},
"references": {
"prefix": "REF",
"count": 2,
"description": "Reference/import validation rules"
},
"prompt-engineering": {
"prefix": "PE",
"count": 4,
"description": "Prompt engineering rules"
},
"cross-platform": {
"prefix": "XP",
"count": 7,
"description": "Cross-platform compatibility rules"
},
"cursor-skills": {
"prefix": "CR-SK",
"count": 1,
"description": "Cursor per-client skill rules"
},
"cline-skills": {
"prefix": "CL-SK",
"count": 1,
"description": "Cline per-client skill rules"
},
"copilot-skills": {
"prefix": "CP-SK",
"count": 1,
"description": "Copilot per-client skill rules"
},
"codex-skills": {
"prefix": "CX-SK",
"count": 1,
"description": "Codex per-client skill rules"
},
"opencode-skills": {
"prefix": "OC-SK",
"count": 1,
"description": "OpenCode per-client skill rules"
},
"windsurf-skills": {
"prefix": "WS-SK",
"count": 1,
"description": "Windsurf per-client skill rules"
},
"kiro-skills": {
"prefix": "KR-SK",
"count": 1,
"description": "Kiro per-client skill rules"
},
"amp-skills": {
"prefix": "AMP-SK",
"count": 1,
"description": "Amp per-client skill rules"
},
"roo-code-skills": {
"prefix": "RC-SK",
"count": 1,
"description": "Roo Code per-client skill rules"
},
"version-awareness": {
"prefix": "VER",
"count": 1,
"description": "Version-aware validation rules"
}
},
"authoring": {
"version": "1.0.0",
"families": [
{
"id": "skill",
"keys": [
{
"key": "name",
"docs": "Skill identifier in kebab-case. Must be unique and stable.",
"rules": [
"AS-002",
"AS-004",
"AS-005",
"AS-006"
],
"values": [],
"snippet": "name: my-skill"
},
{
"key": "description",
"docs": "Describe when to use the skill. Include a clear trigger phrase.",
"rules": [
"AS-003",
"AS-008",
"AS-010"
],
"values": [],
"snippet": "description: Use when user wants to ..."
},
{
"key": "allowed-tools",
"docs": "Comma-separated tool allowlist. Restrict scope for safety.",
"rules": [
"CC-SK-007",
"CC-SK-008"
],
"values": [
"Read",
"Write",
"Edit",
"Bash(git:*)",
"Grep",
"Glob",
"Task"
],
"snippet": "allowed-tools: Read, Grep, Bash(git:*)"
},
{
"key": "argument-hint",
"docs": "Optional hint shown to users for skill arguments.",
"rules": [
"AS-016"
],
"values": [],
"snippet": "argument-hint: path/to/file"
},
{
"key": "disable-model-invocation",
"docs": "Disable automatic model invocation for dangerous or manual workflows.",
"rules": [
"CC-SK-006"
],
"values": [
"true",
"false"
],
"snippet": "disable-model-invocation: true"
},
{
"key": "user-invocable",
"docs": "Whether users can invoke this skill directly.",
"rules": [
"AS-016"
],
"values": [
"true",
"false"
],
"snippet": "user-invocable: true"
},
{
"key": "model",
"docs": "Optional Claude model override.",
"rules": [
"CC-SK-001"
],
"values": [
"sonnet",
"opus",
"haiku",
"inherit"
],
"snippet": "model: sonnet"
},
{
"key": "context",
"docs": "Execution context mode for sub-agent usage.",
"rules": [
"CC-SK-002",
"CC-SK-003",
"CC-SK-004"
],
"values": [
"fork"
],
"snippet": "context: fork"
},
{
"key": "agent",
"docs": "Optional agent to run when context is fork.",
"rules": [
"CC-SK-003",
"CC-SK-004",
"CC-SK-005"
],
"values": [
"Explore",
"Plan",
"general-purpose"
],
"snippet": "agent: general-purpose"
},
{
"key": "compatibility",
"docs": "Optional compatibility notes for tools or versions.",
"rules": [
"AS-011"
],
"values": [],
"snippet": "compatibility: Claude Code >= 1.0"
},
{
"key": "license",
"docs": "Optional license identifier for the skill package.",
"rules": [
"AS-016"
],
"values": [],
"snippet": "license: MIT"
},
{
"key": "metadata",
"docs": "Optional metadata map for additional machine-readable hints.",
"rules": [
"AS-016"
],
"values": [],
"snippet": "metadata:\n owner: team-platform"
}
],
"snippets": [
{
"label": "SKILL frontmatter",
"body": "---\nname: my-skill\ndescription: Use when user wants to ...\nmodel: sonnet\nallowed-tools: Read, Grep\n---\n",
"docs": "Base SKILL.md frontmatter scaffold.",
"rules": [
"AS-001",
"AS-002",
"AS-003"
]
}
]
},
{
"id": "agent",
"keys": [
{
"key": "name",
"docs": "Agent identifier.",
"rules": [
"CC-AG-001"
],
"values": [],
"snippet": "name: my-agent"
},
{
"key": "description",
"docs": "Explain what this agent does.",
"rules": [
"CC-AG-002"
],
"values": [],
"snippet": "description: Handles focused tasks"
},
{
"key": "tools",
"docs": "Allowed tools for this agent.",
"rules": [
"CC-AG-006",
"CC-AG-009"
],
"values": [
"Read",
"Write",
"Edit",
"Bash",
"Grep",
"Glob",
"Task"
],
"snippet": "tools:\n - Read\n - Grep"
},
{
"key": "disallowedTools",
"docs": "Tools this agent must never use.",
"rules": [
"CC-AG-006",
"CC-AG-010"
],
"values": [
"Bash"
],
"snippet": "disallowedTools:\n - Bash"
},
{
"key": "model",
"docs": "Model selection for this agent.",
"rules": [
"CC-AG-003"
],
"values": [
"sonnet",
"opus",
"haiku",
"inherit"
],
"snippet": "model: sonnet"
},
{
"key": "permissionMode",
"docs": "Permission interaction policy.",
"rules": [
"CC-AG-004",
"CC-AG-012"
],
"values": [
"default",
"acceptEdits",
"dontAsk",
"bypassPermissions",
"plan"
],
"snippet": "permissionMode: default"
},
{
"key": "skills",
"docs": "Preloaded skills for this agent.",
"rules": [
"CC-AG-005",
"CC-AG-013"
],
"values": [],
"snippet": "skills:\n - code-review"
},
{
"key": "memory",
"docs": "Memory scope for this agent.",
"rules": [
"CC-AG-008"
],
"values": [
"user",
"project",
"local"
],
"snippet": "memory: project"
},
{
"key": "hooks",
"docs": "Hook configuration for agent lifecycle.",
"rules": [
"CC-AG-007",
"CC-AG-011"
],
"values": [],
"snippet": "hooks: {}"
}
],
"snippets": [
{
"label": "Agent frontmatter",
"body": "---\nname: my-agent\ndescription: Handles focused tasks\nmodel: sonnet\npermissionMode: default\n---\n",
"docs": "Base Claude sub-agent frontmatter scaffold.",
"rules": [
"CC-AG-001",
"CC-AG-002",
"CC-AG-003",
"CC-AG-004"
]
}
]
},
{
"id": "hooks",
"keys": [
{
"key": "hooks",
"docs": "Root hooks object keyed by event name.",
"rules": [
"CC-HK-001"
],
"values": [],
"snippet": "\"hooks\": {}"
},
{
"key": "matcher",
"docs": "Matcher for tool events only.",
"rules": [
"CC-HK-003",
"CC-HK-004"
],
"values": [
"*",
"Bash",
"Read",
"Write"
],
"snippet": "\"matcher\": \"*\""
},
{
"key": "type",
"docs": "Hook type.",
"rules": [
"CC-HK-005"
],
"values": [
"command",
"prompt"
],
"snippet": "\"type\": \"command\""
},
{
"key": "command",
"docs": "Shell command to execute for command hooks.",
"rules": [
"CC-HK-006",
"CC-HK-009"
],
"values": [],
"snippet": "\"command\": \"echo hello\""
},
{
"key": "prompt",
"docs": "Prompt template for prompt hooks.",
"rules": [
"CC-HK-002",
"CC-HK-007"
],
"values": [],
"snippet": "\"prompt\": \"Summarize this change\""
},
{
"key": "timeout",
"docs": "Positive integer timeout in seconds.",
"rules": [
"CC-HK-010",
"CC-HK-011"
],
"values": [
"30",
"60",
"600"
],
"snippet": "\"timeout\": 30"
}
],
"snippets": [
{
"label": "Hooks matcher block",
"body": "{\n \"hooks\": {\n \"PreToolUse\": [\n {\n \"matcher\": \"*\",\n \"hooks\": [\n {\n \"type\": \"command\",\n \"command\": \"echo hello\",\n \"timeout\": 30\n }\n ]\n }\n ]\n }\n}",
"docs": "Starter hooks JSON structure.",
"rules": [
"CC-HK-001",
"CC-HK-003",
"CC-HK-005"
]
}
]
},
{
"id": "plugin",
"keys": [
{
"key": "name",
"docs": "Plugin name.",
"rules": [
"CC-PL-004",
"CC-PL-005"
],
"values": [],
"snippet": "\"name\": \"my-plugin\""
},
{
"key": "description",
"docs": "Plugin description.",
"rules": [
"CC-PL-004"
],
"values": [],
"snippet": "\"description\": \"Plugin description\""
},
{
"key": "version",
"docs": "Semver version string.",
"rules": [
"CC-PL-003",
"CC-PL-004"
],
"values": [
"1.0.0"
],
"snippet": "\"version\": \"1.0.0\""
},
{
"key": "author",
"docs": "Author metadata object.",
"rules": [
"CC-PL-009"
],
"values": [],
"snippet": "\"author\": { \"name\": \"Your Name\" }"
},
{
"key": "homepage",
"docs": "Project homepage URL.",
"rules": [
"CC-PL-010"
],
"values": [],
"snippet": "\"homepage\": \"https://example.com\""
},
{
"key": "repository",
"docs": "Repository URL.",
"rules": [
"CC-PL-006"
],
"values": [],
"snippet": "\"repository\": \"https://github.com/org/repo\""
},
{
"key": "license",
"docs": "License identifier.",
"rules": [
"CC-PL-006"
],
"values": [
"MIT",
"Apache-2.0"
],
"snippet": "\"license\": \"MIT\""
},
{
"key": "keywords",
"docs": "Search/discovery keywords.",
"rules": [
"CC-PL-006"
],
"values": [],
"snippet": "\"keywords\": [\"agent\", \"linter\"]"
}
],
"snippets": [
{
"label": "Plugin manifest",
"body": "{\n \"name\": \"my-plugin\",\n \"description\": \"Plugin description\",\n \"version\": \"1.0.0\"\n}",
"docs": "Starter plugin.json manifest.",
"rules": [
"CC-PL-004"
]
}
]
},
{
"id": "mcp",
"keys": [
{
"key": "jsonrpc",
"docs": "JSON-RPC protocol version.",
"rules": [
"MCP-001"
],
"values": [
"2.0"
],
"snippet": "\"jsonrpc\": \"2.0\""
},
{
"key": "protocolVersion",
"docs": "MCP negotiated protocol version.",
"rules": [
"MCP-008"
],
"values": [
"2025-06-18"
],
"snippet": "\"protocolVersion\": \"2025-06-18\""
},
{
"key": "method",
"docs": "JSON-RPC method name.",
"rules": [
"MCP-008"
],
"values": [
"initialize"
],
"snippet": "\"method\": \"initialize\""
},
{
"key": "id",
"docs": "Request identifier.",
"rules": [
"MCP-007"
],
"values": [
"1"
],
"snippet": "\"id\": 1"
},
{
"key": "params",
"docs": "Request parameters object.",
"rules": [
"MCP-008"
],
"values": [],
"snippet": "\"params\": {}"
},
{
"key": "result",
"docs": "Response result payload.",
"rules": [
"MCP-008"
],
"values": [],
"snippet": "\"result\": {}"
},
{
"key": "error",
"docs": "Response error payload.",
"rules": [
"MCP-007"
],
"values": [],
"snippet": "\"error\": {}"
},
{
"key": "mcpServers",
"docs": "MCP server map configuration.",
"rules": [
"MCP-007",
"MCP-009",
"MCP-010",
"MCP-011",
"MCP-012"
],
"values": [],
"snippet": "\"mcpServers\": {}"
},
{
"key": "type",
"docs": "MCP server transport type.",
"rules": [
"MCP-009",
"MCP-010",
"MCP-011",
"MCP-012"
],
"values": [
"stdio",
"http",
"sse"
],
"snippet": "\"type\": \"stdio\""
},
{
"key": "command",
"docs": "Command to launch a stdio MCP server.",
"rules": [
"MCP-009"
],
"values": [],
"snippet": "\"command\": \"node\""
},
{
"key": "url",
"docs": "Endpoint URL for http/sse MCP server.",
"rules": [
"MCP-010"
],
"values": [],
"snippet": "\"url\": \"http://localhost:3000/mcp\""
},
{
"key": "tools",
"docs": "Array of MCP tool definitions.",
"rules": [
"MCP-002"
],
"values": [],
"snippet": "\"tools\": []"
},
{
"key": "name",
"docs": "MCP tool name.",
"rules": [
"MCP-002"
],
"values": [],
"snippet": "\"name\": \"tool-name\""
},
{
"key": "description",
"docs": "MCP tool description.",
"rules": [
"MCP-002",
"MCP-004"
],
"values": [],
"snippet": "\"description\": \"Describe what this tool does\""
},
{
"key": "inputSchema",
"docs": "JSON Schema for tool inputs.",
"rules": [
"MCP-002",
"MCP-003"
],
"values": [],
"snippet": "\"inputSchema\": { \"type\": \"object\", \"properties\": {} }"
},
{
"key": "requiresApproval",
"docs": "Whether user approval is required before tool execution.",
"rules": [
"MCP-005"
],
"values": [
"true",
"false"
],
"snippet": "\"requiresApproval\": true"
},
{
"key": "confirmation",
"docs": "Human-facing confirmation prompt.",
"rules": [
"MCP-005"
],
"values": [],
"snippet": "\"confirmation\": \"Are you sure?\""
},
{
"key": "annotations",
"docs": "Optional metadata annotations (treat as untrusted).",
"rules": [
"MCP-006"
],
"values": [],
"snippet": "\"annotations\": {}"
}
],
"snippets": [
{
"label": "MCP initialize request",
"body": "{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"initialize\",\n \"params\": {\n \"protocolVersion\": \"2025-06-18\"\n }\n}",
"docs": "Initialize request scaffold.",
"rules": [
"MCP-001",
"MCP-008"
]
},
{
"label": "MCP tool",
"body": "{\n \"name\": \"tool-name\",\n \"description\": \"Describe what this tool does\",\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {}\n },\n \"requiresApproval\": true\n}",
"docs": "Tool definition scaffold.",
"rules": [
"MCP-002",
"MCP-003",
"MCP-005"
]
},
{
"label": "MCP stdio server",
"body": "{\n \"mcpServers\": {\n \"server-name\": {\n \"type\": \"stdio\",\n \"command\": \"node\",\n \"args\": [\"server.js\"]\n }\n }\n}",
"docs": "Stdio server configuration scaffold.",
"rules": [
"MCP-009",
"MCP-011"
]
},
{
"label": "MCP http server",
"body": "{\n \"mcpServers\": {\n \"server-name\": {\n \"type\": \"http\",\n \"url\": \"http://localhost:3000/mcp\"\n }\n }\n}",
"docs": "HTTP server configuration scaffold.",
"rules": [
"MCP-010",
"MCP-011"
]
}
]
},
{
"id": "copilot",
"keys": [
{
"key": "applyTo",
"docs": "Glob pattern selecting files for scoped instruction.",
"rules": [
"COP-002",
"COP-003",
"COP-004"
],
"values": [
"**/*.ts",
"**/*.rs",
"**/*.py"
],
"snippet": "applyTo: \"**/*.ts\""
},
{
"key": "excludeAgent",
"docs": "Exclude a specific Copilot agent from this scoped instruction.",
"rules": [
"COP-005"
],
"values": [
"code-review",
"coding-agent"
],
"snippet": "excludeAgent: \"code-review\""
}
],
"snippets": [
{
"label": "Copilot scoped frontmatter",
"body": "---\napplyTo: \"**/*.ts\"\n---\n",
"docs": "Scoped Copilot instruction frontmatter.",
"rules": [
"COP-002",
"COP-003"
]
}
]
},
{
"id": "cursor",
"keys": [
{
"key": "description",
"docs": "Human-readable rule summary.",
"rules": [
"CUR-003"
],
"values": [],
"snippet": "description: TypeScript rules"
},
{
"key": "globs",
"docs": "Glob pattern(s) selecting files for this rule.",
"rules": [
"CUR-004",
"CUR-005"
],
"values": [
"**/*.ts",
"**/*.tsx",
"**/*.rs"
],
"snippet": "globs: \"**/*.ts\""
},
{
"key": "alwaysApply",
"docs": "Always apply this rule regardless of filename matching.",
"rules": [
"CUR-005"
],
"values": [
"true",
"false"
],
"snippet": "alwaysApply: false"
}
],
"snippets": [
{
"label": "Cursor .mdc frontmatter",
"body": "---\ndescription: TypeScript rules\nglobs: \"**/*.ts\"\nalwaysApply: false\n---\n",
"docs": "Cursor rule frontmatter scaffold.",
"rules": [
"CUR-003",
"CUR-004",
"CUR-005"
]
}
]
},
{
"id": "claude-agents",
"keys": [],
"snippets": [
{
"label": "Project Context section",
"body": "## Project Context\nDescribe the repository purpose, architecture, and constraints.\n",
"docs": "Recommended AGENTS/CLAUDE section scaffold.",
"rules": [
"AGM-004"
]
},
{
"label": "Workflow section",
"body": "## Workflow\n1. Explore current state\n2. Implement minimal safe changes\n3. Run tests and report results\n",
"docs": "Workflow scaffold for agent guidance docs.",
"rules": [
"AGM-002"
]
},
{
"label": "Code comment directive",
"body": "::code-comment{title=\"[P2] Issue\" body=\"Describe the issue clearly.\" file=\"/path/to/file\" start=1 end=1}",
"docs": "Inline review directive scaffold.",
"rules": [
"AGM-001"
]
}
]
}
]
}
}