Source profile preflight
Load marketplace-ops:kernel-marketplace before this procedure. Detect the target's source model from its manifests and instructions. For daodan/v1 neutral kernels, follow that skill's operation-specific procedure and finish there. Generated exports and catalog entries are inspected as output, never authored as source. The procedure below applies only to a legacy Claude marketplace with hand-authored agents/ and commands/. It must not be applied to a neutral kernel checkout.
Marketplace AuditRun a comprehensive structural validation of any Claude Code plugin marketplace. Works against any project that follows the standard .claude-plugin/marketplace.json + plugins/<name>/ layout.
Audit steps
Step 1: Run the validation script
Execute the audit script to get a machine-readable report:
# Validate only
python "${CLAUDE_PLUGIN_ROOT}/skills/marketplace-audit/scripts/audit_marketplace.py"
# Validate and auto-fix color issues (invalid, missing, disharmonious)
python "${CLAUDE_PLUGIN_ROOT}/skills/marketplace-audit/scripts/audit_marketplace.py" --fix
The script resolves the target project root by walking up from the script location, or respects a --project-root <path> flag if invoking it from a different marketplace than where the plugin is installed.
Step 2: Review findings
The script checks:
- File existence -- every path in marketplace.json
agents/skills/commandsarrays resolves to a real file or directory - Orphaned files -- agent
.mdfiles, skill directories, or command.mdfiles on disk not registered in any plugin - Frontmatter validation
- Agents: must have
name,description,model,color - Skills: must have
name,description - Commands: must have
description
- Agents: must have
- Color consistency and harmony
- All agents within a plugin should use the same color
- Warn when a single color is overused across too many plugins (threshold configurable)
- Report color distribution across all plugins
- Valid colors: red, blue, green, yellow, purple, orange, pink, cyan
- Use
--fixto auto-correct invalid or missing colors
- Naming conventions
- All names are kebab-case
- Agent filename matches frontmatter
namefield - Plugin directory name matches marketplace.json
namefield - Skill directory name matches frontmatter
namefield - Workflow command output directories match command filename (e.g.,
feature-e2e.mdtypically writes to.feature-e2e/) - No naming collisions between commands in different plugins
- No em dash characters anywhere (use hyphen
-or double hyphen--)
- Cross-reference consistency (project-specific, best-effort)
- If a git remote is configured, suggest that the marketplace
namealign with the repo name (warning only) - If a
CLAUDE.mdis present at the project root, suggest that its project header match the marketplace name (warning only) - These are advisory -- different marketplace maintainers have different conventions
- If a git remote is configured, suggest that the marketplace
- Marketplace.json schema
- Every plugin has:
name,source,description,version,author,license,keywords,category,strict - No duplicate plugin names
- Duplicate keywords across plugins (warning only -- may be intentional)
- Every plugin has:
- Version sanity
- All versions are valid semver (
MAJOR.MINOR.PATCH) metadata.versionis present at the root
- All versions are valid semver (
- Dependency resolution and acyclicity
- An unqualified
dependenciesentry must name a plugin in this marketplace - A cross-marketplace entry must use the qualified
name@marketplaceform, which is checked for shape only, since it is unresolvable from here by design. A bare name silently resolves against the local marketplace and fails the whole plugin load, so the qualified form is mandatory, not stylistic - The hard-dependency graph must be acyclic. Optional dependencies are excluded from the cycle walk on purpose: they exist precisely to express an edge that would otherwise close a loop
- External marketplaces are reported as info, grouped by which plugins require them
- An unqualified
- Documentation count drift
- Per-plugin agent, skill, and command counts restated in
docs/README.md's index table and inREADME.md's plugin table must match what marketplace.json declares - Rows naming a plugin that is not registered, and registered plugins missing from a table that already lists the others, are both flagged
- Every
N pluginsphrase inREADME.md,docs/README.md,CLAUDE.md, and the marketplacemetadata.descriptionmust match the real plugin count - This is the check that catches the most common silent decay: adding or removing one file leaves every table that counted it stale, and nothing else fails. Each sub-check is skipped when the file or the table is absent, so it stays valid for marketplaces with a different documentation layout
Step 3: Fix issues
Address findings by severity:
- CRITICAL: Missing referenced files, broken paths, missing required frontmatter fields, duplicate plugin names
- WARNING: Orphaned files, naming mismatches, overlapping keywords, color inconsistencies, git/CLAUDE.md alignment
- INFO: Suggestions for improvement, consolidation opportunities
Step 4: Evaluate color harmony
After the script passes, review the color distribution and evaluate semantic harmony:
- Read each plugin's description and category from marketplace.json
- Consider domain: similar domains should have visually related colors; distinct domains should contrast
- Guiding principles:
- Warm colors (red, orange, yellow, pink) for creative / outward-facing plugins
- Cool colors (blue, cyan, purple) for analytical / development plugins
- Neutral (green) for tooling / infrastructure
- If colors feel disharmonious, propose a new assignment with reasoning and apply after user confirmation
Step 5: Re-validate
Run the script again after fixes to confirm a clean audit.
Notes for marketplace maintainers
- This skill is marketplace-agnostic. It assumes the standard Claude Code plugin layout (
.claude-plugin/marketplace.json+plugins/<name>/) but makes no assumption about which plugins, authors, or upstream sources are specific to your marketplace. - Plugin categories, default author, upstream sources, and any project-specific conventions should be documented in your
CLAUDE.mdat the project root. The script and this skill respect those conventions but do not enforce a particular taxonomy.