Skip to content

Rename marketplace to webhook-skills, narrow per-skill sources, add bundle entry#62

Merged
leggetter merged 3 commits into
mainfrom
chore/marketplace-per-skill-subdir-and-rename
May 12, 2026
Merged

Rename marketplace to webhook-skills, narrow per-skill sources, add bundle entry#62
leggetter merged 3 commits into
mainfrom
chore/marketplace-per-skill-subdir-and-rename

Conversation

@leggetter
Copy link
Copy Markdown
Collaborator

@leggetter leggetter commented May 11, 2026

Summary

Three metadata-only changes to .claude-plugin/marketplace.json plus a README update:

  1. Rename marketplace name: hookdeck-webhook-skillswebhook-skills. The catalog covers 33 third-party providers (Stripe, Shopify, GitHub, etc.) plus Hookdeck's own infrastructure plugins. Hookdeck branding in the install-command surface (<skill>@hookdeck-webhook-skills) implied a Hookdeck-specific catalog, which doesn't match the content. Users now install via <skill>@webhook-skills.

  2. Per-skill subdirectory source for the 37 granular entries:

    • Before: source: "./" + skills: ["./skills/<name>"]
    • After: source: "./skills/<name>" + skills: ["./"]

    With the previous shape, each install pulled the entire repo into ~/.claude/plugins/cache/ and then activated one folder. After this change, each install pulls only skills/<name>/. Real install sizes (via git clone, respecting .gitignore): bundle ~3.1 MB, per-skill ~200 KB.

  3. Add a webhook-skills bundle plugin entry (38th plugin) that exposes all 37 skills from a single plugin. Anthropic's plugin directory submission form is per-plugin; one bundle plugin lets a single directory submission cover the whole repo without requiring 37 separate submissions. The granular entries are unchanged.

  4. README: add an Install with /plugin (Claude Code) subsection alongside the existing npx skills add instructions, documenting both the granular and bundle install paths and the skill-namespacing users will see in each case.

After this PR there are two /plugin install paths:

  • Granular (per provider): /plugin install stripe-webhooks@webhook-skills — installs just that skill (~200 KB).
  • Bundle (everything): /plugin install webhook-skills@webhook-skills — installs all 37 skills (~3 MB).

The webhook-skills@webhook-skills install command mirrors anthropics/skills' claude-api@claude-api pattern where a "default" plugin shares its marketplace's name.

Doc evidence for the syntax

From https://code.claude.com/docs/en/plugin-marketplaces.md:

Relative path | string (e.g. "./my-plugin") | Local directory within the marketplace repo. Must start with ./. Resolved relative to the marketplace root, not the .claude-plugin/ directory

skills | string|array | Custom paths to skill directories containing <name>/SKILL.md (marketplace-entry override; takes effect with strict: false)

strict: false: The marketplace entry is the entire definition. … the plugin doesn't need its own plugin.json. The marketplace entry defines everything.

Per-skill narrowing uses the relative-path source pattern with skills: ["./"] to expose the plugin root as the skill folder. The bundle keeps source: "./" because it legitimately needs to reach all 37 skill paths.

Cross-skill references audit

Pre-flight grep:

  • Every provider SKILL.md recommends webhook-handler-patterns, but every link is an absolute https://github.com/hookdeck/webhook-skills/... URL. No relative file paths between skills.
  • Same in reverse from webhook-handler-patterns/SKILL.md out to providers.
  • Only intra-skill relative refs found (skills/clerk-webhooks/references/patterns.md../SKILL.md) — inside the same skill, unaffected.

Per-subdir migration is safe with no SKILL.md content changes.

Empirical install verification

/plugin marketplace add ./ + /plugin install stripe-webhooks@webhook-skills succeeded against this branch:

$ ls ~/.claude/plugins/cache/webhook-skills/stripe-webhooks/68d9280cf39b/
SKILL.md
examples/
references/

Only the stripe-webhooks folder — no AGENTS.md, no scripts/, no other 36 skills. And the skill surfaces in Claude as the plugin-namespaced stripe-webhooks:stripe-webhooks (the doc-correct form for plugin skills).

The bundle install path (webhook-skills@webhook-skills) hasn't been empirically tested yet — added in the second commit on this branch.

Bundle test plan (still to run)

  • /plugin marketplace remove webhook-skills && /plugin marketplace add ./ (refresh to pick up the bundle entry)
  • /plugin install webhook-skills@webhook-skills
  • Confirm all 37 SKILL descriptions surface under the webhook-skills: namespace in the available_skills list.

Commits on this branch

  1. 68d9280 Switch marketplace to per-skill subdir sources, rename to webhook-skills
  2. 89a0d09 Add webhook-skills bundle plugin entry
  3. 5300e32 README: document /plugin install path for Claude Code

🤖 Generated with Claude Code

leggetter and others added 2 commits May 12, 2026 00:39
…ills`

Two metadata-only changes to .claude-plugin/marketplace.json:

1. Marketplace `name`: `hookdeck-webhook-skills` → `webhook-skills`.
   The skills cover 33 third-party providers (Stripe, Shopify, GitHub,
   etc.) plus Hookdeck's own infrastructure. Hookdeck branding in the
   install command surface (`@hookdeck-webhook-skills`) implies a
   Hookdeck-specific catalog, which isn't what this is. Users now
   install via `<skill>@webhook-skills`.

2. Plugin `source`: `"./"` → `"./skills/<name>"` for all 37 entries,
   and `skills: ["./skills/<name>"]` → `skills: ["./"]` to reflect that
   the plugin root IS the skill folder.

   Before: installing one skill copied the entire repo (37 SKILL.mds,
   examples/, results/, scripts/, etc.) into
   ~/.claude/plugins/cache/. With 37 plugins installable, that meant
   up to 37 full repo copies on disk.

   After: each install pulls only `skills/<provider>-webhooks/`.

   Doc reference: https://code.claude.com/docs/en/plugin-marketplaces.md
   `Relative path | string (e.g. "./my-plugin") | Local directory
   within the marketplace repo. Must start with ./. Resolved relative
   to the marketplace root, not the .claude-plugin/ directory`

Cross-skill references audit: every provider SKILL.md recommends
installing `webhook-handler-patterns` alongside, but every reference
uses absolute https://github.com/hookdeck/webhook-skills/... URLs, not
relative file paths. The same is true in reverse from
webhook-handler-patterns/SKILL.md. No file-path coupling between
skills; the per-subdir migration does not break any cross-reference.

No SKILL.md content changed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds a 38th plugin entry to .claude-plugin/marketplace.json that
bundles all 37 skill folders as a single plugin named `webhook-skills`.
The bundle entry uses `source: "./"` + `skills: [./skills/<each>, ...]`
because it deliberately exposes all 37 skills from the repo root —
unlike the 37 granular entries which each narrow to a single
subdirectory.

Why a bundle entry: Anthropic's plugin directory submission form is
per-plugin. Submitting 37 separate entries to the directory would be
onerous and would dilute the catalog. One bundle plugin lets a single
directory submission cover the whole repo. The 37 granular entries
stay so users adding the marketplace directly can still install
per-provider via `<provider>-webhooks@webhook-skills`.

After this change there are two install paths:
- Granular: /plugin install stripe-webhooks@webhook-skills
- Bundle:   /plugin install webhook-skills@webhook-skills

Bundle name `webhook-skills` matches the marketplace name. That makes
the install command read as `webhook-skills@webhook-skills`, which is
intentional — it mirrors the anthropics/skills `claude-api@claude-api`
pattern where a "default" plugin shares its marketplace's name.

No SKILL.md content changed; no granular entry changed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@leggetter leggetter changed the title Switch marketplace to per-skill subdir sources, rename to webhook-skills Rename marketplace to webhook-skills, narrow per-skill sources, add bundle entry May 12, 2026
Adds a new "Install with `/plugin` (Claude Code)" subsection alongside
the existing `npx skills add` instructions. Documents both install
paths now available via the marketplace.json:

- Granular: `/plugin install <provider>-webhooks@webhook-skills`
- Bundle:   `/plugin install webhook-skills@webhook-skills`

Also clarifies the skill namespacing users will see in each case.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@leggetter leggetter merged commit 28d0e35 into main May 12, 2026
5 checks passed
@leggetter leggetter deleted the chore/marketplace-per-skill-subdir-and-rename branch May 12, 2026 00:22
leggetter pushed a commit that referenced this pull request May 13, 2026
…tplace.json

- README.md: add Orb row (alphabetically between OpenClaw and Paddle), linkified to official docs
- providers.yaml: add orb entry with HMAC-SHA256/`v1:{ts}:{body}` scheme notes, common events, summary-webhooks variant, and `orb-billing` SDK declared for both npm and pip so the version-tracker covers it
- .claude-plugin/marketplace.json: add `orb-webhooks` plugin entry (matching the per-skill pattern from PR #62) and append `./skills/orb-webhooks` to the `webhook-skills` bundle

Skill content (skills/orb-webhooks/) landed in the previous commit via the
generator.

https://claude.ai/code/session_01NNTgQRJss1V7gyzzJ9rjnB
leggetter added a commit that referenced this pull request May 14, 2026
* feat: add orb-webhooks skill

Adds a webhook skill for Orb (usage-based billing) with HMAC-SHA256
manual verification over `v1:{X-Orb-Timestamp}:{rawBody}`, plus
runnable Express, Next.js, and FastAPI examples with tests.

https://claude.ai/code/session_01NNTgQRJss1V7gyzzJ9rjnB

* chore(orb-webhooks): integrate into README, providers.yaml, and marketplace.json

- README.md: add Orb row (alphabetically between OpenClaw and Paddle), linkified to official docs
- providers.yaml: add orb entry with HMAC-SHA256/`v1:{ts}:{body}` scheme notes, common events, summary-webhooks variant, and `orb-billing` SDK declared for both npm and pip so the version-tracker covers it
- .claude-plugin/marketplace.json: add `orb-webhooks` plugin entry (matching the per-skill pattern from PR #62) and append `./skills/orb-webhooks` to the `webhook-skills` bundle

Skill content (skills/orb-webhooks/) landed in the previous commit via the
generator.

https://claude.ai/code/session_01NNTgQRJss1V7gyzzJ9rjnB

---------

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant