Skip to content
Back to skills

Plugin Authoring

ASecurity

Author, scaffold, or edit a plugin once in Claude Code format, then generate the Codex, Antigravity, and Cursor manifests so one directory loads in all four runtimes. Use when creating/scaffolding a new plugin, editing a plugin or its manifest, wiring a marketplace entry, running the multi-format generator, or when the user mentions "plugin.json", ".claude-plugin", ".codex-plugin", ".cursor-plugin", "multi-format", "marketplace.json", "scaffold a plugin", or "Codex/Cursor/Antigravity plugin".

  • 16 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 5, 2026
toolsgobashtestinggit

Works with

  • claude code
  • cursor
  • cli
  • mcp

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 5, 2026

npx -y skills add pleaseai/claude-code-plugins --skill plugin-authoring --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Plugin Authoring?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Plugin Authoring
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/pleaseai-plugin-authoring/badge)](https://www.skillsdirectory.com/skills/pleaseai-plugin-authoring)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: plugin-authoring
description: Author, scaffold, or edit a plugin once in Claude Code format, then generate the Codex, Antigravity, and Cursor manifests so one directory loads in all four runtimes. Use when creating/scaffolding a new plugin, editing a plugin or its manifest, wiring a marketplace entry, running the multi-format generator, or when the user mentions "plugin.json", ".claude-plugin", ".codex-plugin", ".cursor-plugin", "multi-format", "marketplace.json", "scaffold a plugin", or "Codex/Cursor/Antigravity plugin".
---

# Plugin Authoring — Multi-Runtime

This marketplace ships the **same plugin directory across four runtimes**. You author **once** in
Claude Code format (the source of truth) and **generate** the rest. Never hand-write the Codex,
Antigravity, or Cursor manifests.

```
.claude-plugin/plugin.json                          ← author here, source of truth
        │  bun scripts/cli.ts multi-format
        ▼
.codex-plugin/plugin.json + .mcp.json               ← generated
plugin.json (root) + mcp_config.json + hooks.json   ← generated (Antigravity)
.cursor-plugin/plugin.json                           ← generated
.agents/plugins/marketplace.json                     ← generated (Codex marketplace)
.cursor-plugin/marketplace.json                      ← generated (Cursor marketplace)
```

## Workflow

1. **Scaffold / edit** the plugin in Claude Code format. Components go at the plugin **root**, never
   inside `.claude-plugin/`:
   ```
   plugins/<name>/
   ├── .claude-plugin/plugin.json   # manifest only (source of truth)
   ├── commands/  agents/  skills/  # at root, auto-discovered
   └── hooks/hooks.json             # at root
   ```
   Author the manifest from `references/plugin-json-spec.md` — start with valid defaults, no
   `[TODO: ...]` placeholders. Prefer **skills** over SessionStart hooks (they load only when
   relevant). Full quality checklist: `references/best-practices.md`.
2. **Register** in `.claude-plugin/marketplace.json` (`source: "./plugins/<name>"`). Claude-only
   fields like `relevance` live **only** here. For a new plugin, wire the companion files
   (release-please, README) too — see `references/multi-runtime-manifests.md`.
3. **Generate** the other runtimes:
   ```bash
   bun scripts/cli.ts multi-format
   ```
   The generator is bundled in this plugin (`scripts/run.ts` + `scripts/multi-format.ts`). Details,
   the per-runtime mapping table, and the `$schema` each manifest carries:
   `references/multi-runtime-manifests.md`.
4. **Scope the diff** — the generator rewrites *all* local plugins; `git restore` any unrelated
   churn so the commit stays atomic.
5. **Validate** — `claude plugin validate plugins/<name>`; deeper audit via the `validating-plugins`
   skill.

## Manifest location

Every local plugin's Claude source is `.claude-plugin/plugin.json`; the root `plugin.json` is the
**generated** Antigravity manifest. Edit the `.claude-plugin/` file — never the root one — then
re-run `multi-format`.

## References (load on demand)

- `references/plugin-json-spec.md` — manifest + marketplace field guide with canonical samples.
- `references/multi-runtime-manifests.md` — per-runtime mapping, the generator, diff scoping.
- `references/best-practices.md` — quality checklist, pitfalls, testing.

## Related

- `validating-plugins` — audit a plugin's manifest and structure before release.
- `migrating-gemini-extensions` — port a Gemini CLI extension to Claude Code.
- Cross-runtime creation skills: `claude-code-plugin-builder` (Claude Code component deep-dive),
  `plugin-creator` (Codex-native), `create-plugin-scaffold` (Cursor-native).

## What NOT to do

- ❌ Hand-edit `.codex-plugin/`, `.cursor-plugin/`, the generated root Antigravity `plugin.json`, or
  the Codex/Cursor `marketplace.json` — re-run `multi-format`.
- ❌ Put `relevance` (or other Claude-only fields) in the Codex/Cursor marketplaces.
- ❌ Nest `commands/` / `agents/` / `skills/` inside `.claude-plugin/` — they won't load.

Files in this skill

  • SKILL.md4 KB
  • references/best-practices.md3.2 KB
  • references/multi-runtime-manifests.md4.1 KB
  • references/plugin-json-spec.md3.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…