From claude-plugins-validation
Manage Claude Code plugins: install, validate, audit, enable, disable, search, doctor. Use when managing plugin lifecycle. Loaded by plugin-manager and plugin-creator agents.
npx claudepluginhub emasoft/emasoft-plugins --plugin claude-plugins-validationThis skill uses the workspace's default tool permissions.
Scripts at `${CLAUDE_PLUGIN_ROOT}/scripts/` for the full plugin lifecycle.
Suggests manual /compact at logical task boundaries in long Claude Code sessions and multi-phase tasks to avoid arbitrary auto-compaction losses.
Share bugs, ideas, or general feedback.
Scripts at ${CLAUDE_PLUGIN_ROOT}/scripts/ for the full plugin lifecycle.
uv and git on PATHgh CLI (for remote/GitHub operations)uv run "${CLAUDE_PLUGIN_ROOT}/scripts/manage_plugin.py" ./plugin/ my-mktuv run "${CLAUDE_PLUGIN_ROOT}/scripts/manage_plugin.py" --update ./plugin-v2/ my-mktuv run "${CLAUDE_PLUGIN_ROOT}/scripts/manage_plugin.py" --uninstall name@mktuv run "${CLAUDE_PLUGIN_ROOT}/scripts/manage_plugin.py" --enable <plugin> [--scope local]uv run --with pyyaml python "${CLAUDE_PLUGIN_ROOT}/scripts/remote_validation.py" plugin ./plugin/uv run --with pyyaml python "${CLAUDE_PLUGIN_ROOT}/scripts/remote_validation.py" registry --list or --search <query>--install-scanners): uv run --with pyyaml python "${CLAUDE_PLUGIN_ROOT}/scripts/remote_validation.py" doctor [--verbose] [--fix] — for --install-scanners (installs all 5 external security scanners + fclones), use uv run python "${CLAUDE_PLUGIN_ROOT}/scripts/manage_doctor.py" --install-scannersuv run "${CLAUDE_PLUGIN_ROOT}/scripts/bump_version.py" --patch|--minor|--majorSmart plugin name resolution — accepts: plugin-name, plugin-name@marketplace, plugin-name@owner/marketplace.
Run /reload-plugins after install/update/uninstall/enable/disable.
Copy this checklist and track your progress:
/reload-plugins executed| Error | Resolution |
|---|---|
| Plugin not found | Check name with --list, use full name@marketplace format |
| Validation fails | Fix ALL CRITICAL/MAJOR issues — MINOR/NIT don't block install |
ModuleNotFoundError: yaml | Use uv run --with pyyaml python outside CPV venv |
| Scope precedence issue | User True overrides local False — see Detailed Commands |
Install and validate:
uv run "${CLAUDE_PLUGIN_ROOT}/scripts/manage_plugin.py" ./my-plugin/ my-marketplace
Enable locally only:
uv run "${CLAUDE_PLUGIN_ROOT}/scripts/manage_plugin.py" --enable my-plugin --scope local
Local Install / Update / Uninstall · Enable / Disable (with smart name resolution and scope) · Validate (190+ rules) · Security Audit · List / Search / Doctor · Marketplace · Remote Plugins (GitHub marketplaces) · Version Bump · Creation & Publishing · Flags · Plugin Variables · Notes
uv run --with pyyaml · gh secret --body flag · Update notify-marketplace.yml · MARKETPLACE_PAT env var · Strip ANSI codes · grep -oE not -oP · Standardize exit code 1 · author.email check · CI uv sync --extra dev · Update notify before push · Local dry-run · Verify CI after push · Checkov CKV2_ prefix · pytest exit code 5 · init.py no shebang · Repository field required · validate_marketplace paths · git config user setup · README sections required
Use LLM Externalizer MCP for bounded analysis. Pass file paths via input_files_paths.