skills/anthropic-validator/SKILL.md
Validates Claude Code assets (skills, hooks, agents, commands, MCP servers, plugins) against official Anthropic standards. Fetches latest docs dynamically and produces structured validation reports.
npx skillsauth add ashaykubal/essential-agents-skills anthropic-validatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Validates Claude Code assets against official Anthropic standards using dynamic documentation fetching and critical analysis.
Claude Code evolves rapidly. Static checklists become outdated. Assets created months ago may violate current standards, and new features may not be reflected in embedded validation rules.
This skill provides dynamic validation by:
This skill uses Main Context Orchestration - you (Claude) follow the instructions below to orchestrate sub-agents sequentially. This is required because sub-agents cannot spawn other sub-agents.
┌─────────────────────────────────────────────────────────────┐
│ MAIN CONTEXT (You) │
│ │
│ 1. Load this skill (anthropic-validator) │
│ 2. Follow section instructions for asset type │
│ 3. Spawn claude-code-guide → fetch latest standards │
│ 4. Read output (direct response) │
│ 5. Spawn bulwark-standards-reviewer → analyze asset │
│ 6. Read validation report from logs/validations/ │
│ 7. Present summary to user │
│ │
└─────────────────────────────────────────────────────────────┘
# Single asset validation
/anthropic-validator skills/my-skill/SKILL.md
# Batch validation (directory)
/anthropic-validator skills/
# Context inference (validates current file in context)
/anthropic-validator
IMPORTANT: When this skill is invoked, first resolve what to validate:
IF $ARGUMENTS is provided (e.g., /anthropic-validator path/to/file):
target_path = $1
IF target_path ends with "/" OR is a directory:
mode = "batch"
→ Skip to "Batch Validation" section below
ELSE:
mode = "single"
→ Continue with Step 1 for single-file validation
ELSE (no arguments, context inference):
Look for Claude Code assets in recent conversation context
IF found: validate that asset (single mode)
ELSE: Ask user what to validate
Argument Reference:
$ARGUMENTS - Full argument string passed to skill$1 - First positional argument (the path)Workflow Routing:
For the resolved target_path, match against these patterns:
| Path Pattern | Asset Type |
|--------------|------------|
| skills/*/SKILL.md | Skill |
| hooks/hooks.json or *.hooks.json | Hooks |
| agents/*.md or .claude/agents/*.md | Agent |
| commands/*.md | Command |
| mcp/ or *-mcp-server* | MCP Server |
| .claude-plugin/plugin.json | Plugin |
Spawn claude-code-guide agent with the appropriate documentation URL:
GOAL: Fetch current standards for {asset_type} from official Claude Code docs
CONSTRAINTS:
- Only use official Anthropic documentation
- Report what IS supported vs what is NOT
- Include any recent changes or deprecations
CONTEXT:
- Documentation URL: {see section below for URL}
- Capability being validated: {asset_type}
OUTPUT:
- Current supported fields/features
- Required vs optional elements
- Common pitfalls or mistakes
- Any version-specific notes
For skills, check for supporting subdirectories and files:
IF asset_type == "skill":
1. Check for references/ subdirectory
- List all files if present
- Note: references/ is OPTIONAL (not all skills have it)
2. Check for other common subdirectories
- examples/, scripts/, templates/, data/
- List files if present
3. Scan SKILL.md for file references
- Look for patterns: `references/*.md`, `examples/*`, etc.
- Verify referenced files exist
4. Build supporting_files inventory:
supporting_files = {
references: [list of files or "none"],
examples: [list of files or "none"],
scripts: [list of files or "none"],
referenced_but_missing: [any files mentioned but not found]
}
Spawn bulwark-standards-reviewer agent (Task tool with subagent_type: bulwark-standards-reviewer):
GOAL: Critically analyze {asset_path} against fetched standards
CONSTRAINTS:
- Be thorough - check every requirement
- Rate findings by severity (Critical/High/Medium/Low)
- Provide specific remediation for each finding
- Do NOT modify the asset, only report
- Only flag missing references/ if the skill explicitly references files that don't exist
- Validate tools/fields against DOCUMENTATION, not by attempting to use them
(The reviewer may not have access to all tools - don't conflate "I can't use this" with "this is invalid")
CONTEXT:
- Asset to validate: {asset_content}
- Current standards: {fetched_standards from Step 2}
- Asset type: {asset_type}
- Supporting files inventory: {supporting_files from Step 2.5, if skill}
- Referenced files verified: {yes/no with details}
- Known conventions (DO NOT flag as high/critical — classify as informational):
The following patterns are intentional conventions backed by empirical testing.
LLM agents reliably ignore behavioral-register instructions ("You always verify...")
but comply with imperative-register instructions ("You MUST verify..."). These
patterns have been validated across Opus and Sonnet models. Treat as informational
only — note the divergence from pure Anthropic style but do NOT elevate severity:
* Pre-Flight Gate sections with MUST/MUST NOT binding language
* Imperative Protocol sections (step-by-step operational instructions)
* Permissions Setup sections documenting settings.json configuration
* Completion Checklists with checkbox items
* DO/DO NOT mission sections
* Tool Usage Constraints with Allowed/Forbidden per tool
OUTPUT:
Write structured YAML to logs/validations/{asset-name}-{timestamp}.yaml
Summarize findings to user in human-readable format (see Output Format section).
https://docs.anthropic.com/en/docs/claude-code/skills
SKILL.md filereferences/ - list files if present (OPTIONAL - not all skills need this)examples/, scripts/, templates/, data/ - list if presentreferences/*.md, etc.) and confirm they existclaude-code-guide with prompt:
Fetch current standards for Claude Code skills from https://docs.anthropic.com/en/docs/claude-code/skills
Focus on: frontmatter fields, SKILL.md structure, user-invocable, agent field, context field
bulwark-standards-reviewer with:
logs/validations/Important: A missing references/ folder is NOT a violation unless the skill explicitly references files that don't exist. Many skills are self-contained and don't need supporting files.
| Field | Requirement |
|-------|-------------|
| name | Required, matches directory name |
| description | Required, concise explanation |
| user-invocable | Boolean, controls / menu visibility |
| agent | Optional: haiku, sonnet, or opus for model selection |
| context | Optional: fork for isolated execution |
| skills | Optional: array of skills to load |
| tools | Optional: array of allowed tools |
If doc fetch fails, use: references/skills-checklist.md
https://docs.anthropic.com/en/docs/claude-code/hooks
claude-code-guide with prompt:
Fetch current standards for Claude Code hooks from https://docs.anthropic.com/en/docs/claude-code/hooks
Focus on: hook types, matcher patterns, once field, command format, environment variables
bulwark-standards-reviewer with hooks content and fetched standardslogs/validations/| Field | Requirement |
|-------|-------------|
| Hook types | PreToolUse, PostToolUse, SubagentStart, SubagentStop, Notification |
| matcher | Regex pattern for tool/subagent matching |
| command | Shell command to execute |
| once | Boolean, true for run-once hooks (e.g., SessionStart) |
| timeout | Optional, milliseconds |
| Variable | Available In |
|----------|--------------|
| $CLAUDE_TOOL_NAME | PreToolUse, PostToolUse |
| $CLAUDE_TOOL_INPUT | PreToolUse, PostToolUse |
| $CLAUDE_TOOL_OUTPUT | PostToolUse |
| $CLAUDE_SUBAGENT_TYPE | SubagentStart, SubagentStop |
| $CLAUDE_SUBAGENT_PROMPT | SubagentStart |
If doc fetch fails, use: references/hooks-checklist.md
https://docs.anthropic.com/en/docs/claude-code/sub-agents
claude-code-guide with prompt:
Fetch current standards for Claude Code custom sub-agents from https://docs.anthropic.com/en/docs/claude-code/sub-agents
Focus on: agent definition format, frontmatter fields, model selection, tools array, lookup priority
bulwark-standards-reviewer with agent content and fetched standardslogs/validations/| Field | Requirement |
|-------|-------------|
| name | Required, matches filename |
| description | Required, explains agent purpose |
| model | Optional: haiku, sonnet, opus |
| tools | Optional: array of allowed tools |
| skills | Optional: array of skills to load |
| File location | .claude/agents/, ~/.claude/agents/, or plugin agents/ |
--agent).claude/agents/ (project)~/.claude/agents/ (user)agents/ directoryIf doc fetch fails, use: references/agents-checklist.md
https://docs.anthropic.com/en/docs/claude-code/skills (commands merged with skills in v2.1.3)
claude-code-guide with prompt:
Fetch current standards for Claude Code commands/skills from https://docs.anthropic.com/en/docs/claude-code/skills
Focus on: command invocation, argument passing ($ARGUMENTS, $1, $2), user-invocable field
Note: Commands and skills merged in v2.1.3
bulwark-standards-reviewer with command content and fetched standardslogs/validations/| Aspect | Requirement |
|--------|-------------|
| Invocation | /skill-name arg1 arg2 |
| Arguments | $ARGUMENTS (all), $1/$2 (positional) |
| Environment | ${ENV_VAR} for environment variables |
| Visibility | user-invocable: true for / menu |
If doc fetch fails, use: references/commands-checklist.md
https://docs.anthropic.com/en/docs/claude-code/mcp
claude-code-guide with prompt:
Fetch current standards for Claude Code MCP servers from https://docs.anthropic.com/en/docs/claude-code/mcp
Focus on: server configuration, tool definitions, transport types, security considerations
bulwark-standards-reviewer with MCP content and fetched standardslogs/validations/| Aspect | Requirement |
|--------|-------------|
| Configuration | Valid JSON in .claude/mcp.json |
| Transport | stdio, http, or sse |
| Tools | Properly defined tool schemas |
| Security | No exposed secrets, proper permissions |
If doc fetch fails, use: references/mcp-checklist.md
https://docs.anthropic.com/en/docs/claude-code/plugins
claude-code-guide with prompt:
Fetch current standards for Claude Code plugins from https://docs.anthropic.com/en/docs/claude-code/plugins
Focus on: plugin.json manifest, directory structure, registration, flat skills directory
bulwark-standards-reviewer with plugin content and fetched standardslogs/validations/| Aspect | Requirement |
|--------|-------------|
| Manifest | .claude-plugin/plugin.json |
| Structure | Flat directories at root (skills/, agents/, hooks/) |
| Registration | All components listed in manifest |
| Naming | Plugin name matches directory |
plugin-name/
├── .claude-plugin/
│ └── plugin.json # ONLY manifest here
├── agents/ # At root, NOT in .claude-plugin/
├── skills/ # At root, NOT in .claude-plugin/
└── hooks/ # At root, NOT in .claude-plugin/
If doc fetch fails, use: references/plugins-checklist.md
When validating a directory:
bulwark-standards-reviewer with ONLY that one assetlogs/validations/CRITICAL: Do NOT frontload all assets into a single reviewer context. This causes shallow analysis due to context overload. Each asset must be validated with full depth individually, then results aggregated.
logs/validations/
├── batch-summary-{timestamp}.yaml # Aggregate summary
├── skill-one-{timestamp}.yaml # Individual reports
├── skill-two-{timestamp}.yaml
└── ...
batch_validation:
metadata:
directory: "{path}"
timestamp: "{ISO-8601}"
total_assets: 5
results:
passed: 3
failed: 2
failures:
- asset: "skills/broken-skill/SKILL.md"
critical_count: 1
report: "logs/validations/broken-skill-{timestamp}.yaml"
validation_report:
metadata:
asset: "{file_path}"
asset_type: skill | hook | agent | command | mcp | plugin
timestamp: "{ISO-8601}"
validator: "bulwark-standards-reviewer"
standards_source: fetched | fallback
findings:
- severity: critical | high | medium | low
rule: "{standard being checked}"
violation: "{what is wrong}"
location: "{line or field}"
remediation: "{how to fix}"
summary:
total_findings: 0
critical: 0
high: 0
medium: 0
low: 0
verdict: pass | fail
notes: "{any additional context}"
Validation: skills/my-skill/SKILL.md
Standards: Fetched from official docs (2026-01-17)
Verdict: FAIL (2 critical, 1 high)
Critical:
- Missing required 'description' field in frontmatter
- SKILL.md exceeds 500 line limit (612 lines)
High:
- 'agent' field uses unsupported value 'gpt-4'
Full report: logs/validations/my-skill-2026-01-17T10-30-00.yaml
| Severity | Definition | Examples | |----------|------------|----------| | Critical | Blocks functionality, violates required standards | Missing required frontmatter, wrong file location | | High | Significant issue, should fix before release | Deprecated field, exceeds limits | | Medium | Quality improvement, recommended | Missing optional fields | | Low | Style/naming suggestions | Naming conventions |
if any_critical_findings:
verdict = "FAIL"
else:
verdict = "PASS"
# Always list ALL findings regardless of verdict
When claude-code-guide fetch fails:
standards_source: fallback in reportreferences/All validation runs write diagnostic data to:
logs/diagnostics/anthropic-validator-{timestamp}.yaml
diagnostic:
skill: anthropic-validator
timestamp: "{ISO-8601}"
invocation:
asset_path: "{input}"
asset_type: "{detected type}"
batch_mode: true | false
execution:
standards_fetch:
agent: claude-code-guide
success: true | false
fallback_used: true | false
analysis:
agent: bulwark-standards-reviewer
findings_count: 0
output:
report_path: "logs/validations/{name}.yaml"
verdict: pass | fail
subagent-prompting (P0.1) - 4-part template for agent invocationsubagent-output-templating (P0.2) - Output format for logsbulwark-standards-reviewer - Critical analysis agent (invoked by this skill)claude-code-guide - Built-in agent for documentation fetchingtesting
Prompt template for test classification stage in Test Audit pipeline
testing
--- name: test-audit description: Audit test suites for T1-T4 violations using AST analysis, mock detection, and multi-stage synthesis. Invoke when user asks to audit tests, check test quality, find mock violations, review test effectiveness, or inspect test suites for over-mocking. Triggers automatic rewrites when quality gates fail. user-invocable: true argument-hint: [path] [--threshold=N] skills: - test-classification - mock-detection - assertion-patterns - component-pattern
development
Template for structured sub-agent invocation using 4-part prompting (GOAL/CONSTRAINTS/CONTEXT/OUTPUT) and F# pipeline notation. Use when orchestrating sub-agents or designing multi-agent workflows.
development
Template for structured sub-agent output including YAML log format, task completion reports (WHY/WHAT/TRADE-OFFS/RISKS), and summary constraints. Use when defining how sub-agents should report results.