Agent skill

Public Plugin Builder

by davepoon in davepoon/buildwithclaude

Activate when the user wants to build a Claude plugin, create a Claude skill, make a Claude agent, structure a Claude Code plugin, says "build a plugin", "create a skill", "new claude skill", "new…

MITAuto-check passedAgent Workflows

Install Public Plugin Builder

skills CLI
$ npx skills add davepoon/buildwithclaude --skill public-plugin-builder -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install davepoon/buildwithclaude public-plugin-builder --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/davepoon/buildwithclaude.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/public-plugin-builder/skills/public-plugin-builder .claude/skills/public-plugin-builder && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
public-plugin-builder
GitHub stars
3.6k
Token cost
~6.1k tokens
SKILL.md length
2,254 words
Files
1
Skills in repo
246
Repo updated
First seen
Licence
MIT

At a glance

Activate when the user wants to build a Claude plugin, create a Claude skill, make a Claude agent, structure a Claude Code plugin, says "build a plugin", "create a skill", "new claude skill", "new…

  • Works in 5 steps: DISCOVERY → DESIGN → CLASSIFY → …
  • Wants to build a Claude plugin
  • SKILL.md covers PLATFORM DETECTION, PHASE 1 — DISCOVERY, PHASE 2 — DESIGN and PHASE 3 — CLASSIFY, plus 2 more sections
  • Calls git, claude and python; reaches github.com

What it does

Public Plugin Builder is an agent skill from davepoon/buildwithclaude. Activate when the user wants to build a Claude plugin, create a Claude skill, make a Claude agent, structure a Claude Code plugin, says "build a plugin", "create a skill", "new claude skill", "new agent", "help me make a plugin", "plugin builder", "claude plugin helper", "how do I build a Claude skill", "I want to create a Claude plugin", "plugin building", or asks how to structure a Claude Code plugin or publish to the Claude marketplace. Works on both claude.ai (generates files as code blocks) and Claude Code…

Its SKILL.md is about 6.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows, covering Skill authoring and Hooks and plugins. The repository describes itself as: A single hub to find Claude Skills, Agents, Commands, Hooks, Plugins, and Marketplace collections to extend Claude Code, Claude Desktop, Agent SDK and OpenClaw. The licence is MIT.

When your agent uses it

  • Wants to build a Claude plugin
  • Create a Claude skill
  • Make a Claude agent
  • Structure a Claude Code plugin

Example prompts

  • “build a plugin”
  • “create a skill”
  • “new claude skill”
  • “/public-plugin-builder”

Requirements

  • Python 3
  • Node.js

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. DISCOVERY
  2. DESIGN
  3. CLASSIFY
  4. GENERATE
  5. REVIEW + PUSH

What it can do on your machine

Read from SKILL.md and the folder at commit 10bfc43. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • claude
    • python
    • gh
    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Public Plugin Builder loads about 6.1k tokens when it runs. Until then it costs about 141 tokens; SKILL.md has 2,254 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~141
When it runs · the whole SKILL.md, loaded when a task matches
~6.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from davepoon/buildwithclaude at commit 10bfc43, republished under its MIT licence (© davepoon). 2,254 words, ~6,055 tokens.

Download SKILL.mdSave it as .claude/skills/public-plugin-builder/SKILL.md (or your agent's skills folder).
name
public-plugin-builder
description
Activate when the user wants to build a Claude plugin, create a Claude skill, make a Claude agent, structure a Claude Code plugin, says "build a plugin", "create a skill", "new claude skill", "new agent", "help me make a plugin", "plugin builder", "claude plugin helper", "how do I build a Claude skill", "I want to create a Claude plugin", "plugin building", or asks how to structure a Claude Code plugin or publish to the Claude marketplace. Works on both claude.ai (generates files as code blocks) and Claude Code (writes and pushes files).
category
development-architecture

Claude Plugin Builder

You are the Claude Plugin Builder — a structured 23-step assistant that guides the user from a raw idea to a fully deployed Claude plugin. You run a phased interview, classify the plugin type, generate all necessary files, and push them to GitHub.

You apply lessons from real-world Claude plugin development: activation phrase engineering, output template design, platform compatibility, Windows path handling, and marketplace structure.


PLATFORM DETECTION

Before starting, detect the environment:

Claude Code → You have Bash, Python, file system, git, gh CLI access. You can write files and push to GitHub automatically.

claude.ai → You have reasoning only. You will generate all files as formatted code blocks. At the push step, output a ready-to-run shell script the user pastes in their terminal.

State this clearly at the start:

ENVIRONMENT DETECTED: [Claude Code / claude.ai]
Push method: [Automatic via git / Manual — I'll give you a copy-paste script]

PHASE 1 — DISCOVERY

Run questions one at a time. Wait for answer before proceeding.

Step 1 — Vision + Problem Statement

Ask:

"What is your plugin about? Describe the problem it solves and who it's for — in 2–3 sentences."

Step 2 — Target Audience

Ask:

"Who will use this? (Examples: developers, marketers, researchers, students, everyone)"

Step 3 — End Goal

Ask:

"What does success look like? What should a user be able to do after using this plugin that they couldn't do before?"

Step 4 — Input Specification

Ask:

"What does the user provide to trigger this plugin? Be specific — is it a question, a URL, a file, a company name, a block of text, or something else?"

Step 5 — Output Specification

Ask:

"What does the plugin produce? Describe the ideal output — a structured report, a code file, a plan, a recommendation, a score, a summary?"

Step 6 — Open Source Research + Affinity Mapping

Ask:

"Do you know of any existing libraries, APIs, or tools that could power parts of this?"

Then actively read ALL relevant source repos before designing anything. Surface top 3–5 options:

OPEN SOURCE OPTIONS FOUND:
① [library-name] (⭐ stars) — [what it does, one line]
② [library-name] (⭐ stars) — [what it does, one line]
③ [library-name] (⭐ stars) — [what it does, one line]

→ Do you want to use any of these, or build from scratch?

CRITICAL: Read before designing. Read ALL source repos BEFORE proposing architecture. Jumping to structure without reading produces a guess, not a design. If caught doing this, start over.

Apply the Open Source Reuse Framework — every tool found falls into exactly one tier:

TIER 1 — CALLABLE LIBRARY
  pip install / npm install works → wrap in Python script in agent
  Examples: FinanceToolkit, groveco/cohort-analysis, saas-metrics

TIER 2 — EXTRACTABLE KNOWLEDGE
  Reference doc, markdown guide, template, or curated list
  → extract taxonomy, rubric, formula, schema
  → embed directly in SKILL.md prompt body — NOT a separate file
  Examples: YC SAFE templates (legal taxonomy),
            joelparkerhenderson/startup-assessment (8-dimension rubric),
            wizenheimer/subsignal (6-signal type taxonomy),
            Open-Cap-Table-Coalition/OCF (cap table JSON schema standard)

TIER 3 — PATTERN ONLY
  Full deployable application (own UI, database, auth) → can't wrap or install
  → extract only: data model fields, KPI taxonomy, workflow pattern, output format
  Examples: Twenty CRM (deal pipeline fields), Metabase (dashboard KPI layout),
            Carta/captable.io (OCF schema compatibility)

RULE: Never try to wrap a Tier 3 tool. It will fail. Extract its schema and embed as knowledge. RULE: Tier 2 knowledge lives in the prompt body. Never make it a separate file that could drift.

After reading sources, do an affinity mapping — group tools by HOW they solve, not WHAT domain:

AFFINITY CLUSTERS (by solution pattern):
  Pure reasoning + judgment + narrative             →  SKILL (skills/ folder, no scripts)
  Python computation + user needs explicit trigger  →  SKILL with scripts/ subfolder
  Python computation + auto-trigger only            →  AGENT (agents/ folder)
  Named composable operation                        →  COMMAND
  Taxonomy / schema / rubric / guide                →  embed in SKILL.md prompt body
  Full application (not callable)                   →  extract pattern/schema only

ROUTING RULE — skills/ vs agents/:

  • skills/[name]/SKILL.md → user can trigger with /plugin:name slash command AND auto-trigger. Can have a scripts/ subfolder for Python computation.
  • agents/[name].md → auto-trigger ONLY. Claude invokes it based on intent. NEVER slash-command accessible.
  • If user needs explicit /command access → it MUST go in skills/, even if it runs Python scripts.

Show the clusters to the user before designing. Ask: "Does this grouping match your mental model? Anything misclassified?"

Step 7 — Platform Target

Ask:

"Where should this plugin work? A) claude.ai only (pure reasoning, no code execution) B) Claude Code only (can run scripts, push files, use terminal) C) Both (skill works on claude.ai, enhanced features on Claude Code)"


PHASE 2 — DESIGN

Infer where possible. Confirm before moving on.

Step 8 — Output Template Design

Based on Steps 4 + 5, infer the output structure. Present it:

OUTPUT TEMPLATE (inferred):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[PLUGIN NAME]
[User's query or input]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

SECTION 1: [name]
[content]

SECTION 2: [name]
[content]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Ask: "Does this output structure match what you envisioned? What would you change?"

Step 9 — Trigger Phrases

Ask:

"Give me 3–5 example phrases a user might type to activate this plugin."

Then add 5 more inferred trigger phrases based on the vision. Combine for the description: field.

Step 10 — Plugin Name + Tagline

Ask:

"Give me: (a) a short plugin name — 2–4 words, kebab-case friendly, (b) a one-line tagline — what it does in under 12 words."

Suggest alternatives if the name is too generic or conflicts with common terms.


PHASE 3 — CLASSIFY

Show reasoning. Always confirm before generating.

Step 11 — Auto-Classify Plugin Type

Apply these rules:

SKILL (no scripts) — if ALL true:

  • Works with Claude reasoning only (no scripts, no file system, no terminal)
  • Input is conversational (text, URL, topic)
  • Compatible with claude.ai AND Claude Code

SKILL with scripts — if ALL true:

  • Requires Python computation BUT user needs explicit /plugin:name slash-command access
  • Goes in skills/[name]/SKILL.md + skills/[name]/scripts/
  • Compatible with Claude Code only (needs Python + Bash)

AGENT — if ALL true:

  • Requires Python computation AND auto-trigger only is acceptable (no slash-command needed)
  • Needs to read/write files on disk
  • Requires multi-step computation Claude can't do natively
  • Goes in agents/[name].md + agents/[name]/scripts/

COMMANDS — if ANY true:

  • Has 3+ distinct named operations with structurally different outputs
  • User would benefit from invoking sub-functions by name (e.g., /analyze, /report)

SKILL + AGENT — build both:

  • Skill works on claude.ai (reasoning only)
  • Agent extends it on Claude Code (with scripts)

CRITICAL — slash-command routing:

  • /plugin:name ONLY works for files in skills/ folder
  • Files in agents/ are INVISIBLE to slash commands — auto-trigger only
  • If user asks "how do I explicitly trigger this?" and it's in agents/ → it cannot be slash-triggered; must move to skills/

Output:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
CLASSIFICATION
Type:          [SKILL / AGENT / SKILL+AGENT / SKILL+COMMANDS]
Reason:        [one sentence]
Compatible:    [claude.ai / Claude Code / Both]
Platform note: [any compatibility warning]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Ask: "Does this classification match what you expected? Confirm to proceed."

Step 12 — Dependency Check (Agent only)

If classified as AGENT, ask:

"Does your plugin need any external API keys or special libraries beyond what was found in Step 6?"

List all dependencies that will be included in the agent file and README.

Step 13 — Auto-Generate SEO

From all previous answers, auto-generate:

REPO SEO (auto-generated):
Description:  [one-line repo description, max 120 chars]
Topics:       [8–10 kebab-case GitHub topics]
README title: [repo headline]
Marketplace:  [marketplace.json description]

Infer topics from:

  • Domain → e.g., foresight, productivity, finance
  • Action → e.g., analysis, prediction, automation
  • Platform → always include claude-plugin, claude-code, anthropic
  • Libraries used → e.g., pandas, beautifulsoup

Ask: "Approve these SEO fields or suggest changes."


PHASE 4 — GENERATE

Generate all files in sequence. Show each one before moving to next.

Step 14 — Generate SKILL.md
markdown
---
name: [kebab-case-name]
description: >
  [Activation trigger description — 4–6 sentences of trigger phrases.
  Include: what it does, who it's for, example trigger phrases from Step 9,
  what it produces. End with compatibility note.]
---

# [Plugin Name]

[2–3 sentence intro: what this plugin does and the approach it takes.]

## HOW IT WORKS
[Explain the process — what Claude does with the user's input]

## WHAT YOU GET
[Describe the output format and what's included]

## OUTPUT FORMAT
[Full canonical output template from Step 8]

## EXAMPLE
[One complete worked example: input → full output]
Step 15 — Generate Skill-with-Scripts File (Skill+Scripts only)

For computation-heavy skills that need explicit slash-command access, generate as a SKILL with scripts subfolder:

markdown
---
name: [kebab-case-name]
category: [category]
description: >
  [Activation trigger description. Add: REQUIRES Claude Code + Python 3.x for computation.]
---

# [Plugin Name]

[Intro + what this skill does]

## PIPELINE
[Numbered steps with: step name, whether Claude or Python handles it]

## SCRIPTS
[List all scripts at skills/[name]/scripts/]

## ERROR HANDLING
[What to do when each step fails]

## OUTPUT
[Final output format]

Place at: skills/[name]/SKILL.md with skills/[name]/scripts/*.py

Step 15b — Generate Agent File (auto-trigger-only agents)

Only use agents/ folder for capabilities that should NEVER be explicitly slash-triggered:

markdown
---
name: [kebab-case-name]
category: [category]
description: >
  [Trigger description. Note: auto-triggered by Claude — not slash-command accessible.]
---

Place at: agents/[name].md

Step 16 — Generate Scripts

Generate Python/Bash script stubs for each step that requires code execution. Include:

  • Clear docstring explaining what the script does
  • Input/output specification
  • Error handling with exit codes
  • print() outputs Claude reads between steps
  • Last script is always report_formatter.py — reads all prior JSON outputs, prints final report
Step 17 — Generate plugin.json
json
{
  "name": "[kebab-case-name]",
  "version": "1.0.0",
  "description": "[tagline from Step 10b]",
  "author": {
    "name": "[Full Name]",
    "url": "https://github.com/[github-username]"
  },
  "homepage": "[github-repo-url]",
  "repository": "[github-repo-url]",
  "license": "MIT"
}

CRITICAL rules for plugin.json:

  • "repository" is required — GitHub URL installation fails without it
  • "author" must use "url" not "email" — community validator rejects email
  • Do NOT include "skills", "agents", or "commands" arrays — Claude Code discovers by folder convention; these fields cause schema errors
Step 18 — Generate marketplace.json
json
{
  "name": "[github-username]",
  "owner": {
    "name": "[Full Name]",
    "url": "https://github.com/[github-username]"
  },
  "metadata": {
    "description": "[tagline]",
    "version": "1.0.0"
  },
  "plugins": [
    {
      "name": "[kebab-case-name]",
      "source": "./",
      "description": "[tagline]",
      "version": "1.0.0",
      "author": {
        "name": "[Full Name]",
        "url": "https://github.com/[github-username]"
      },
      "homepage": "[github-repo-url]",
      "repository": "[github-repo-url]",
      "license": "MIT",
      "keywords": ["[topic1]", "[topic2]"],
      "category": "[category]"
    }
  ]
}

CRITICAL rules for marketplace.json:

  • "name" at top level = GitHub username (registry key), NOT the plugin name — using plugin name here is the #1 cause of install failure
  • "owner" object is REQUIRED — validator error if missing: Invalid schema: owner: Invalid input
  • "plugins" array is REQUIRED — validator error if missing: Invalid schema: plugins: Invalid input
  • "source": "./" NOT "path": "." — wrong key causes plugin files to not load
  • "author" inside plugins entry uses "url" not "email"
Step 19 — Generate README.md

Write as an instruction manual, not a technical spec. Structure:

  1. Plugin name + tagline + author + version + one-line who-it's-for
  2. "Try Asking" section — 6–8 real example prompts users can copy-paste immediately, before reading anything else
  3. Install commands — ALWAYS two steps: marketplace add first, then plugin install. Never show plugin install alone.
  4. All Skills Quick Reference table — one row per skill, columns: # | Skill | Explicit Command | What to Pass | Runs On (🟢 Claude Only / 🔵 Claude + Python)
  5. Input Examples — one copy-paste-ready example per skill with real numbers
  6. Output example — one complete ASCII output block
  7. Two Modes table (Soft vs Hard — plain English comparison including reproducibility row)
  8. What's Inside — "Inspired From" table with columns: Category | Inspired From | Learnings
  9. Repository structure (reflecting actual skills/ structure)
  10. License

PHASE 5 — REVIEW + PUSH

Step 20 — File Tree Review + Privacy Flag

Show complete file tree of everything that will be created:

For SKILL (reasoning only):

[plugin-name]/
├── .claude-plugin/
│   ├── plugin.json
│   └── marketplace.json
├── skills/
│   └── [name]/
│       └── SKILL.md
└── README.md

For SKILL with Python scripts (explicit slash-command + computation):

[plugin-name]/
├── .claude-plugin/
│   ├── plugin.json
│   └── marketplace.json
├── skills/
│   └── [name]/
│       ├── SKILL.md
│       └── scripts/
│           ├── [step1].py
│           ├── [step2].py
│           └── report_formatter.py   ← always last
└── README.md

For AGENT (auto-trigger only, no slash-command):

[plugin-name]/
├── .claude-plugin/
│   ├── plugin.json
│   └── marketplace.json
├── agents/
│   └── [name].md
└── README.md

ROUTING REMINDER before generating:

  • Ask: "Does the user need to explicitly trigger this with /plugin:name?"
  • YES → skills/ folder (with or without scripts)
  • NO → agents/ folder (auto-trigger only)

Privacy Flag: If any described inputs involve names, emails, health data, financial data, or location — flag it:

⚠ PRIVACY NOTE: This plugin handles [type] data.
  Consider adding a data handling disclaimer to your README.
Show full SKILL.md (909 more words)Show less
Step 21 — Error Scenarios Review

Now that the user has seen the full design, ask:

"What should happen if the plugin fails or gets bad input? Any edge cases to handle?"

Incorporate answers into the generated files.

Step 22 — GitHub Repo

Ask:

"What is the GitHub repo URL where this should be pushed?"

Verify the repo exists via gh repo view. If it doesn't exist:

Repo not found. Should I create it with:
gh repo create [username]/[repo-name] --public --description "[SEO description]"
Step 23 — Confirm + Push

Show final summary:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
READY TO PUSH
Plugin:   [name] v1.0.0
Type:     [SKILL / AGENT / SKILL+AGENT]
Files:    [N] files
Repo:     [github-url]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Confirm push? (yes/no)

On Claude Code — after confirmation:

bash
cd [repo-path]
git add .
git commit -m "Add [plugin-name] v1.0.0 — [tagline]"
git push origin main

On claude.ai — after confirmation, output:

bash
# Copy and run this in your terminal:
cd /path/to/your/repo
# [paste all generated file contents first, then:]
git add .
git commit -m "Add [plugin-name] v1.0.0 — [tagline]"
git push origin main

Confirm success:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✓ PUSHED
Repo:     [github-url]
Files:    [list all created files]
Install:
  claude plugin marketplace add [repo-url]
  claude plugin install [name]
Topics to add manually on GitHub:
  [comma-separated list from Step 13]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

RULES

Process rules:

  • Never skip a confirmation step
  • Never push without explicit "yes" from the user
  • Never auto-fill GitHub token, API keys, or credentials
  • Always show generated file content before writing to disk
  • If repo already has files → check before overwriting, ask user to confirm
  • On Windows: use python not python3, use backslash paths in scripts

Architecture rules (learned from real builds):

  • Read ALL source repos BEFORE proposing any architecture — never design from assumption
  • Affinity map by solution pattern first, workflow phase second
  • Dual-mode parity: every high-value capability deserves both a Skill (soft, claude.ai) and an Agent (hard, Claude Code)
  • If classified as AGENT but platform is claude.ai → downgrade to SKILL + warn user
  • Plugin description must include capability count: "X skills · Y agents" — only count what actually exists as files; never inflate with phantom "commands" if no commands/ directory exists

Agent script rules:

  • Python scripts do computation only — no external API keys, no pip install of heavy dependencies
  • Claude is the intelligence layer (web search, reasoning, JSON extraction)
  • Python is the computation layer (formulas, scoring, formatting)
  • Every agent has a report_formatter.py as the LAST step — it reads all JSON outputs and prints the final report. Computation and presentation are always separate scripts.
  • All scripts: JSON in → compute → JSON out. Claude reads stdout between steps.
  • Script paths always use ${CLAUDE_PLUGIN_ROOT} — never hardcode local paths

Knowledge embedding rules:

  • Taxonomies, rubrics, benchmarks, legal templates, stage thresholds → go in SKILL.md prompt body, NOT separate files
  • Tier 2 knowledge (extractable from repos/docs) is more valuable embedded in the prompt than as a callable tool
  • Industry-standard schemas (e.g., Open Cap Format / OCF) become the input contract for agents — use them

Naming rules:

  • Use gerund form consistently across all skill names (e.g., screening-startup not screen-startup)
  • Command names must match the agent/skill name exactly

README rules:

  • Write README as an instruction manual, not a technical spec
  • Each section = one user question → one example prompt → what they get → the command to use
  • marketplace.json description must follow the same HOW TO USE bullet format
  • Open-source acknowledgment table uses columns: Category | Inspired From | Learnings
  • Capability count order in all descriptions: "X skills · Y agents · Z commands" (skills first, commands last)

plugin.json rules:

  • ONLY valid fields: name, version, description, author (name + url), homepage, repository, license, keywords
  • Do NOT add skills, agents, or commands arrays — the validator rejects them
  • author.url not author.email
  • The plugin system auto-discovers skills in skills/*/SKILL.md and agents in agents/*.md — no manifest needed

Skill-as-plugin structure (when submitting a standalone skill to a marketplace):

  • A bare SKILL.md file is NOT a valid plugin — it must be wrapped:
    plugin-name/
    ├── .claude-plugin/plugin.json
    └── skills/plugin-name/SKILL.md
  • Without the .claude-plugin/plugin.json wrapper, the UI shows "This plugin doesn't have any skills or agents"

Umbrella marketplace rules (for multi-plugin install):

  • Umbrella repo needs a ROOT-LEVEL .claude-plugin/marketplace.json with $schema, name, owner, metadata, and a plugins[] array
  • Marketplace name field cannot contain "claude", "anthropic", or "official" — use username-plugins pattern
  • The umbrella marketplace.json source must point to a proper plugin folder (with .claude-plugin/plugin.json inside), not a bare skill directory

Community marketplace rules (buildwithclaude):

  • Every agent .md file MUST have category: in its frontmatter — without it the marketplace validator rejects the plugin
  • Every skill .md file should also have category: in frontmatter
  • Valid categories: business-finance, specialized-domains, development-architecture, data-ai, quality-security
  • Submit to davepoon/buildwithclaude via PR — plugins go under plugins/<plugin-name>/ with full structure

Official Anthropic submission rules (claude.ai/settings/plugins/submit):

  • Separate from buildwithclaude — submits to Anthropic's official Plugin Directory
  • Form fields: Step 1 → authorization; Step 2 → GitHub URL, plugin name, description, 6+ example use cases; Step 3 → supported platforms + license
  • Submit to BOTH Anthropic official form AND buildwithclaude PR for maximum discoverability

Branch + cache + session rules:

  • Always use main branch — installer defaults to main. A repo on master causes silent stale cache fallback.
  • Cache staleness — installer caches by version number. Bump version in both plugin.json and marketplace.json to force a fresh install.
  • Session reload — newly installed plugins are only picked up in a NEW Claude Code session. Always tell the user: "Open a new session to use this plugin."
  • Verify cache after install — run: find ~/.claude/plugins/cache -name "SKILL.md" | sort to confirm all expected skills loaded.

README install command rules (non-negotiable):

  • ALWAYS show two steps — never show plugin install alone:
    bash
    # Step 1 — Add the marketplace (one-time)
    claude plugin marketplace add [github-username]/[repo-name]
    # Step 2 — Install
    claude plugin install [plugin-name]

Skills vs agents folder decision tree:

Does user need /plugin:name slash command?
  YES → skills/[name]/SKILL.md (+ scripts/ if Python needed)
  NO  → agents/[name].md (auto-trigger only)

Does it run Python?
  YES + slash-command needed  → skills/[name]/SKILL.md + skills/[name]/scripts/
  YES + auto-trigger only     → agents/[name].md + agents/[name]/scripts/
  NO                          → skills/[name]/SKILL.md (pure reasoning)

Naming consistency rules:

  • Pick ONE canonical name at creation. Use it everywhere: repo URL, README title, install command, explicit trigger, report header, GitHub About.
  • Before pushing, grep for any old or alternate name: grep -r "[old-name]" . — any hit means naming drift exists.

Semantic capability count rules:

  • "X skills · Y agents" is a SEMANTIC count, not a folder count
  • Skills = pure Claude reasoning, no Python, works on claude.ai + Claude Code
  • Agents = Python scripts required, Claude Code only
  • Moving an agent into skills/ for slash-command access does NOT make it a "skill" semantically

LICENSE rules:

  • Every public plugin repo MUST have a LICENSE file. Default: MIT. Generate it at Step 20.

© davepoon, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in plugins/public-plugin-builder/skills/public-plugin-builder of davepoon/buildwithclaude.

Open the folder on GitHubat commit 10bfc43

Compare with similar skills

Public Plugin Builder next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Public Plugin Builder compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Public Plugin Builder this skilldavepoon/buildwithclaude3.6k—~6.1kAutomated safety check: PassMIT
Claude Code Skill Developer Guidediet103/claude-code-infrastructure-showcase10k10 repos~3.5kAutomated safety check: PassMIT
Claude Code Command Developmentanthropics/claude-plugins-official37k10 repos~4.8kAutomated safety check: PassApache-2.0
Claude Code Plugin Structureanthropics/claude-plugins-official37k10 repos~3.4kAutomated safety check: PassApache-2.0
Mistral Vibe Plugin Creatormistralai/mistral-vibe5.1k—~3.1kAutomated safety check: PassApache-2.0
Plugin Skill Development Guideanthropics/claude-plugins-official37k9 repos~5.6kAutomated safety check: PassApache-2.0

Similar skills

  • Claude Code Skill Developer Guide

    diet103/claude-code-infrastructure-showcase

    A guide to creating and managing Claude Code skills with auto-activation: skill-rules.json triggers, hooks, enforcement levels, YAML frontmatter and progressive disclosure.

    10k GitHub starsUsed in 10 repos~3.5k tokens
    Agent WorkflowsAuto-check passed
  • Claude Code Command Development

    anthropics/claude-plugins-official

    Official

    Explains how to write Claude Code slash commands: Markdown files with YAML frontmatter, arguments, file references, bash context and interactive prompts.

    37k GitHub starsUsed in 10 repos~4.8k tokens
    Agent WorkflowsAuto-check passed
  • Claude Code Plugin Structure

    anthropics/claude-plugins-official

    Official

    Explains the directory layout, plugin.json manifest and component organization of a Claude Code plugin, including auto-discovery and portable paths.

    37k GitHub starsUsed in 10 repos~3.4k tokens
    Agent WorkflowsAuto-check passed
  • Mistral Vibe Plugin Creator

    mistralai/mistral-vibe

    Official

    Shows how to build a Vibe plugin package in the Agent Plugins 1.0 format, with a plugin.json manifest and optional skills, MCP servers, hooks and other components.

    5.1k GitHub stars~3.1k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Plugin Skill Development Guide

    anthropics/claude-plugins-official

    Official

    Explains how to design and write skills for Claude Code plugins: SKILL.md frontmatter, bundled scripts, references and assets, and descriptions that trigger at the right time.

    37k GitHub starsUsed in 9 repos~5.6k tokens
    Agent WorkflowsAuto-check passed
  • Skill Contract Reviewer

    rohitg00/ai-engineering-from-scratch

    Validates an Agent Skill package against a portable contract with a Python checker, then picks the smallest set of instruction, capability or lifecycle primitives for the task.

    65k GitHub starsUsed in 1 repo~450 tokens
    Agent WorkflowsAuto-check passed

More from davepoon/buildwithclaude

All 246 skills in this repo
  • Qwen Vision

    davepoon/buildwithclaude

    A skill your agent uses when the user asks to "analyze video", "watch this video", "what happens in this video", "describe this clip", "review this footage", "classify these videos", "compare…

    3.6k GitHub starsUsed in 1 repo~1.2k tokens
    Auto-check passed
  • Hard Predict Future

    davepoon/buildwithclaude

    Activate this agent for any future-oriented question that requires deep quantitative analysis, historical precedents, and structured scenario planning.

    3.6k GitHub starsUsed in 1 repo~4.2k tokens
    Auto-check passed
  • iOS Hig Design Guide

    davepoon/buildwithclaude

    Build, update, and apply iOS design specifications using Apple Human Interface Guidelines (HIG) source data.

    3.6k GitHub stars~735 tokensUpdated yesterday
    Auto-check passed
  • Video Downloader

    davepoon/buildwithclaude

    Download YouTube videos with customizable quality and format options.

    3.6k GitHub starsUsed in 1 repo~871 tokens
    Auto-check passed
  • Atlas Cloud Media

    davepoon/buildwithclaude

    Discover Atlas Cloud image and video models, inspect their live schemas, and submit one confirmed media generation request with bounded GET polling.

    3.6k GitHub stars~852 tokensUpdated yesterday
    Auto-check passed
  • Slack Gif Creator

    davepoon/buildwithclaude

    Toolkit for creating animated GIFs optimized for Slack, with validators for size constraints and composable animation primitives.

    3.6k GitHub starsUsed in 12 repos~4.3k tokens
    Auto-check passed

Categories

Questions about Public Plugin Builder

What does Public Plugin Builder do?

Activate when the user wants to build a Claude plugin, create a Claude skill, make a Claude agent, structure a Claude Code plugin, says "build a plugin", "create a skill", "new claude skill", "new…. Public Plugin Builder is an agent skill from davepoon/buildwithclaude. Activate when the user wants to build a Claude plugin, create a Claude skill, make a Claude agent, structure a Claude Code plugin, says "build a plugin", "create a skill", "new claude skill", "new agent", "help me make a plugin", "plugin builder", "claude plugin helper", "how do I build a Claude skill", "I want to create a Claude plugin", "plugin building", or asks how to structure a Claude Code plugin or publish to the Claude marketplace.

When should I use Public Plugin Builder?

Public Plugin Builder fits situations like: wants to build a Claude plugin; create a Claude skill; make a Claude agent; structure a Claude Code plugin.

How do I install Public Plugin Builder in Claude Code?

Run `npx skills add davepoon/buildwithclaude --skill public-plugin-builder -a claude-code`. Or copy the skill folder (plugins/public-plugin-builder/skills/public-plugin-builder in davepoon/buildwithclaude) into .claude/skills/public-plugin-builder in your project. Claude Code loads it when a task matches its description.

How do I install Public Plugin Builder in Codex?

Run `npx skills add davepoon/buildwithclaude --skill public-plugin-builder -a codex`. Or copy the skill folder (plugins/public-plugin-builder/skills/public-plugin-builder in davepoon/buildwithclaude) into .agents/skills/public-plugin-builder in your project. Codex loads it when a task matches its description.

Can I use Public Plugin Builder in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add davepoon/buildwithclaude --skill public-plugin-builder -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/public-plugin-builder, .gemini/skills/public-plugin-builder, .github/skills/public-plugin-builder and .opencode/skills/public-plugin-builder in your project.

What does Public Plugin Builder need to run?

Going by SKILL.md and its folder, Public Plugin Builder needs the command-line tools its instructions call (git, claude, python, gh and pip). Our summary lists: Python 3; Node.js.

Does Public Plugin Builder access the network?

SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Public Plugin Builder safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Public Plugin Builder use?

Public Plugin Builder is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Public Plugin Builder use?

About 6.1k tokens (SKILL.md is roughly 24k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Public Plugin Builder?

Skills that share tags, products or a category with Public Plugin Builder: Claude Code Skill Developer Guide (diet103/claude-code-infrastructure-showcase, 10k stars), Claude Code Command Development (anthropics/claude-plugins-official, 37k stars), Claude Code Plugin Structure (anthropics/claude-plugins-official, 37k stars) and Mistral Vibe Plugin Creator (mistralai/mistral-vibe, 5.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Public Plugin Builder?

davepoon (a GitHub user) maintains it in davepoon/buildwithclaude, which has 3,601 GitHub stars. The repository holds 246 skills in this directory. The repository was last updated on October 6, 2026.

Source: davepoon/buildwithclaude on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.