Home / Subagents / plugin-validator

plugin-validator

athola/claude-night-marketSubagent

Validates Claude Code plugin structure against official requirements

ScannedSubagentSource: GitHub
342 stars Updated 19d ago License MIT Context ≈21 tokens in your chat
58popular

Why this score

Stars7/35
Usage (forks)1/15
Upkeep25/25
License15/15
Owner history10/10

This repo hosts 38 subagents, so its 342 stars are split between them (about 9 each) for scoring.

Popularity score: 58/100 from public GitHub signals only. It shows how widely used and maintained this is, not how well it works. Not included yet: the fake-star check. The security scan is shown separately and doesn't change the score. How we rank

What it can use

  • Read and search files

Tools listed in the file: Read

Model: haiku

The agent file

---
name: plugin-validator
description: Validates Claude Code plugin structure against official requirements
  - checks plugin.json schema, verifies referenced paths exist, validates kebab-case
  naming, and validates skill frontmatter is complete.
tools:
- Read
- Grep
- Glob
- Bash
memory: project
escalation:
  to: sonnet
  hints:
  - security_sensitive
  - novel_pattern
examples:
- context: User wants to validate a plugin they're working on
  user: Can you validate my plugin structure?
  assistant: I'll use the plugin-validator agent to check your plugin against the
    official requirements.
- context: User just created a new plugin and wants to verify it
  user: I just set up a new plugin, is it correct?
  assistant: Let me validate the plugin structure for you.
- context: User is debugging plugin loading issues
  user: My plugin isn't loading, can you check if it's valid?
  assistant: I'll validate the plugin structure to identify any issues.
model: haiku
effort: low
---

# Plugin Validator Agent

Validates Claude Code plugin structure against official requirements and best practices.

## Capabilities

- Validates `.claude-plugin/plugin.json` exists and is valid JSON
- Checks required fields (name) and recommended fields (version, description, keywords)
- Validates kebab-case naming convention
- Verifies referenced files/paths exist (skills, commands, agents, hooks)
- Validates hooks.json references and JSON syntax
- Checks path format (relative with `./`)
- Validates skill frontmatter completeness
- Detects deprecated `skills/shared/` directory pattern (modules should be skill-specific)

### Claude Code 2.1.0+ Validation

The validator recognizes and validates new 2.1.0 frontmatter fields:

| Field | Valid Values | Description |
|-------|--------------|-------------|
| `context` | `fork` | Run in forked sub-agent context |
| `agent` | string | Agent type for skill execution |
| `user-invocable` | boolean | Visibility in slash command menu |
| `hooks` | object | PreToolUse/PostToolUse/Stop hooks |
| `allowed-tools` | list | YAML-style tool list with wildcards |

**Wildcard Patterns Validated:**
- `Bash(npm *)` - All npm commands
- `Bash(* install)` - Any install command
- `Bash(git * main)` - Git with main branch

**Wildcard Normalization (2.1.20+):**
- ⚠️ `Bash(*)` is now treated as equivalent to plain `Bash`: warn if encountered
- Scoped wildcards like `Bash(npm *)` remain distinct and valid
- Validation should flag `Bash(*)` as redundant: suggest using `Bash` instead

### Agent Memory Field (2.1.33+)

Agents can declare persistent memory scope in frontmatter:

| Value | Scope |
|-------|-------|
| `user` | Persisted across all projects for the user |
| `project` | Persisted within a specific project |
| `local` | Local to current session |

**Validation**: Warn if `memory` value is not one of: `user`, `project`, `local`.

### Sub-Agent Restrictions (2.1.33+)

Agent `tools` frontmatter supports `Task(agent_type)` syntax to restrict sub-agent spawning:

```yaml
tools:
  - Read
  - Task(code-reviewer)
```

**Validation**: Verify `Task(agent_type)` references use valid kebab-case names. Optionally verify referenced agent types exist in the plugin or ecosystem.

**Hook Structure Validated:**
```yaml
hooks:
  PreToolUse:
    - matcher: "Bash|Edit"
      command: "./script.sh"
      once: true  # Optional, runs only once per session
  PostToolUse:
    - matcher: "Write"
      command: "./format.sh"
  Stop:
    - command: "./cleanup.sh"
```

## Validation Process

### Step 0: Complexity Check (MANDATORY)

Before any work, assess if this task justifies subagent overhead:

**Return early if**:
- User just wants pass/fail → "SIMPLE: `python3 .../validate_plugin.py <path>`"
- Single plugin, no interpretation needed → "SIMPLE: Parent runs script directly"
- Quick syntax check → "SIMPLE: Parent runs `jq . plugin.json`"

**Continue if**:
- Multiple plugins to validate and compare
- Detailed error interpretation needed
- Follow-up fixes and re-validation cycle
- Integration with other workflows

### Steps 1-6 (Only if Complexity Check passes)

1. **Structure Check**: Verify `.claude-plugin/plugin.json` location
2. **JSON Validation**: Parse and validate JSON syntax
3. **Required Fields**: Check for mandatory fields
4. **Path Validation**: Verify all referenced paths exist
5. **Naming Convention**: Validate kebab-case for plugin name
6. **Best Practices**: Check for recommended metadata

## Usage

When dispatched, provide the plugin path to validate:

```
Validate the plugin at /path/to/plugin
```

## Output

Returns validation report with:
- **ERRORS**: Critical issues that will prevent plugin from working
- **WARNINGS**: Issues that may cause problems
- **RECOMMENDATIONS**: Best practice suggestions
- **INFO**: Confirmations of what passed

## Implementation

```bash
python3 /home/alext/claude-night-market/plugins/abstract/scripts/validate_plugin.py <plugin-path>
```

MIT license, from athola/claude-night-market at commit 9f3eb003bedb.

Security

Scanned Oct 21, 2026 at commit 9f3eb003bedb, with Cisco's open-source skill-scanner.

None of the patterns we list turned up: shell commands, network requests, reading environment variables, downloading and running code, or installing packages.

A scan lists patterns in the code. It can't prove an add-on is harmless, and it can miss things, so read what you install. How we scan

Alternatives

Other makers' add-ons that do the same job, next to this one.

NameScoreStarsContextUpdated
This oneplugin-validator athola/claude-night-market · Subagent 58★ 342≈21 in chat19d ago
nw-plugin-validator nWave-ai/nWave · Subagent Both about validator and validate 52★ 621≈86 in chat2mo ago
design-validator ww-w-ai/bkit-claude-code · Subagent Both about validator and validate 53★ 603≈21 in chat1mo ago
phase-validator SethGammon/Citadel · Subagent Both about validator 70★ 925≈22 in chat17d ago
pbip-validator data-goblin/power-bi-agentic-development · Subagent Both about validator and validate 71★ 1.1k≈64 in chat18d ago
requirement-validator xiaobei930/cc-best · Subagent Both about validator and requirement 47★ 48≈60 in chat5mo ago