This skill should be used when the user asks to 'create a plugin', 'scaffold a Claude Code plugin', 'convert .claude config to a plugin', 'build a plugin marketplace package', 'add plugin skills, agents, hooks, MCP (Model Context Protocol) servers, LSP (Language Server Protocol) servers, monitors, output styles, or settings', 'validate plugin structure', or 'prepare a Claude Code plugin for local testing, community marketplace review, or official marketplace readiness'. It owns plugin-authoring decisions and distinguishes standalone .claude configuration, shareable namespaced plugins, community marketplace submission, and curated official marketplace inclusion.
Build or retrofit Claude Code plugins that are loadable, portable, namespaced, testable, and ready for team or marketplace distribution. [DOC]
Activate for plugin authoring, plugin migration, plugin packaging, local plugin testing, marketplace readiness, or component authoring under a plugin root. [CONFIG]
Do not activate for a single personal/project skill unless the user asks to distribute it as a plugin. Use standalone .claude/ configuration for personal workflows, one-project customization, quick experiments, or short direct skill names such as /deploy. Use plugins for teammate/community sharing, versioned releases, reuse across projects, marketplace distribution, or namespaced invocation such as /my-plugin:deploy. [DOC]
Start with read-only discovery. Identify the target mode before writing:
| Mode | Signal | Authoring decision |
|---|---|---|
| Standalone config | .claude/skills, .claude/agents, .claude/settings.json | Keep local unless sharing/versioning is required. |
| Skills-directory plugin | folder under a skills directory with .claude-plugin/plugin.json | Treat as plugin loaded in place as <name>@skills-dir. |
| Plugin root | self-contained directory passed to claude --plugin-dir or marketplace source | Author namespaced plugin components. |
| Marketplace package | repository with .claude-plugin/marketplace.json plus plugin sources | Check catalog metadata, source paths, version strategy, trust boundaries, and review readiness. |
| Community submission | public plugin source prepared for claude-community review | Pass local validation, safety disclosure, README/license/changelog, and submission-form prerequisites. |
| Official marketplace candidate | plugin that may fit claude-plugins-official | Treat as curated-by-Anthropic only; do not promise an application path or inclusion. |
Record coverage_gap when the active Claude Code version, marketplace policy, or external dependency behavior cannot be verified. [CONFIG]
The default scaffold layout, the manifest/metadata rules (optionality, recommended fields, ${CLAUDE_PLUGIN_ROOT} paths), the plugin-manifest-vs-marketplace-catalog distinction with examples, and per-component authoring guidance live in
references/plugin-authoring-detail.md. Official structure specs are vendored in references/official-specs/ (plugin/skill/agent/hook + manifest templates; mirror of docs.claude.com). Two invariants stay here: components live at plugin root (only plugin.json inside .claude-plugin/), and a root CLAUDE.md is not loaded as plugin context. [DOC]
Install-breaker rule (the manifest gate): plugin.json must OMIT skills/agents/hooks/commands — they auto-discover (./skills, …). Declaring them (string path override) is rejected by the installer with Invalid input; repository must be a string. ${CLAUDE_PLUGIN_ROOT}/scripts/validate_manifest.py BLOCKS on these. For the publish/install flow + troubleshooting see docs/DEPLOY.md; for the operate-forever lifecycle use the plugin-ops skill. [CÓDIGO]
.claude/ skill is enough.${CLAUDE_PLUGIN_ROOT}/scripts/scaffold_plugin.py <dir>/<name>: it emits an installer-safe manifest, hooks that read stdin JSON, a smoke skill, portable validators, tests/hooks.sh and a one-command scripts/check.sh whose gates are proven able to go red by the emitted gate-bites unit tests. Create optional component folders only when justified. [CÓDIGO].claude-plugin/plugin.json only when metadata or custom paths are needed.README.md, LICENSE, CHANGELOG.md, dependency notes, env-var setup, trust boundaries, and examples for marketplace or team distribution.assets/plugin-readiness-checklist.md for release-readiness reviews and assets/marketplace-submission-gates.md for marketplace handoff gates. [CONFIG]/claude-native-toolkit:check (structure + frontmatter + evals + packet), /claude-native-toolkit:lint (component bodies), /claude-native-toolkit:audit (manifest, paths, executable surface), and /claude-native-toolkit:integrity (catalog/hook consistency). If the external plugin-qa plugin is present, run its granular validate-* skills first; otherwise treat the toolkit gates above as the binding gate. See Relation To Validator Skills for the responsibility split and the probe-then-fallback rule.claude --plugin-dir ./<plugin-root> or a .zip archive when supported, then reload after component changes via the CLI /plugin reload action (built-in). Try /plugin-name:skill-name, check /agents, verify hooks, and inspect plugin details when available.claude plugin validate ./<plugin-root> for each plugin and claude plugin validate . from the marketplace root before submission. Use --strict when the active CLI supports it. [DOC]The publish checklist (metadata, README/LICENSE/CHANGELOG, namespacing, side-effect disclosure,
catalog entries, community-vs-official routing) and the G1–G6 submission gate table live in
references/plugin-authoring-detail.md. Hard rule:
community submission ≠ official inclusion — never promise an official-marketplace path. [DOC]
The granular validate-* skills are external — they ship in the plugin-qa plugin, not in this toolkit. Treat them as reference gates and do not duplicate them. This section is the single source for the validator boundary; the Procedure and Marketplace Readiness gates reference it instead of restating it.
Probe-before-declare: glob the plugin cache (for example cache/*/plugin-qa/*) before claiming plugin-qa is absent or claiming you can run it. [CONFIG] In development-kit marketplaces plugin-qa is usually present (e.g. cache/development-kit/plugin-qa/<version>/skills/ exposing validate-structure/validate-manifest/validate-components/validate-cross-refs/validate-hooks), so a probe typically resolves it — do not assume absence by default. Record coverage_gap only if the probe leaves residency unresolved. Responsibility split:
validate-structure owns mode detection, component placement, path traversal, layout, and executable surface.validate-manifest owns JSON parsing, required/recommended fields, name/version/license/keyword quality, and marketplace/catalog consistency once the manifest path is known.validate-components owns skill, command, agent, and output-style frontmatter/body checks.validate-hooks owns hook event shape, handler schema, matcher behavior, script portability, and hook execution risks.plugin-qa is absent: map to this toolkit's own gates — /claude-native-toolkit:check + /claude-native-toolkit:audit (layout/manifest/surface), /claude-native-toolkit:lint (components), /claude-native-toolkit:integrity (hooks/catalog) — and claude plugin validate ./<plugin-root> as the version-agnostic CLI baseline.validate-structure for physical layout and record a coverage_gap for the conflicting rule before submission. [CONFIG]The full success checklist (structure, manifest, components, namespacing, portability, testing,
distribution, submission) is in
references/plugin-authoring-detail.md.
Declare success only when every applicable check passes; the Guardian role enforces the same.
references/domain-knowledge.md: detailed plugin-authoring rules and source mapping.knowledge/body-of-knowledge.md: compact mental model and quality metrics.examples/example-input.md and examples/example-output.md: non-generic plugin-authoring example.evals/evals.json: regression cases for plugin-authoring behavior.assets/plugin-readiness-checklist.md: checklist template to include in release reviews.assets/marketplace-submission-gates.md: submission gate template for marketplace handoff.${CLAUDE_PLUGIN_ROOT}), validado y testeado local. [EXPLICIT]plugin.json en .claude-plugin/); CLAUDE.md root no se carga. [EXPLICIT].claude/ standalone — compartible/versionado a cambio de overhead de empaque. [EXPLICIT]Capas del packet, cargables bajo demanda (disciplina ICM: una capa por vez, nunca todas juntas): references/ guías de profundidad (cargar UNA por etapa) · knowledge/ cuerpo de conocimiento · prompts/ prompts listos · examples/ salida de ejemplo · agents/ subagentes del packet · templates/ plantilla de output · assets/ recursos estáticos.
e8f986b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.