Universal AI Plugin Marketplace Template
Author AI assistant plugins once and distribute them to all major platforms at the
highest fidelity each one accepts.
This repository is based on
mike-north/ai-plugin-marketplace-template.
Supported Platforms
Quick Start
Create a new plugin
pnpm run scaffold my-plugin
Validate all plugins
pnpm run validate
Build standalone exports
pnpm run build:standalone
This generates standalone directories in dist/ for platforms that require
repo-root manifests (Gemini CLI and Kiro). Claude Code, Cursor, and Codex read
plugins directly from plugins/<name>/ via their marketplace registries.
Publishing Strategy
This repository is intended to remain the single source of truth. Do not use git
submodules for generated platform packages unless a specific downstream registry
requires a separate repository that cannot read from this one. Author plugins in
plugins/<name>/, then generate platform-specific outputs with
pnpm run build:standalone.
The practical distribution paths are:
- Claude Code, Cursor, and Codex: publish this repository as the marketplace
repository. These platforms can read plugin packages from
plugins/<name>/
through their root marketplace manifests.
- Gemini CLI and Kiro: use the generated exports in
dist/gemini/<name>/
and dist/kiro/<name>/. These platforms expect root-level manifests for a
standalone extension or power, so CI packages those directories as release
artifacts. If a marketplace later requires a GitHub repository with the
manifest at the repository root, prefer publishing a release artifact or a
dedicated release branch over duplicating source by hand.
- Skills CLI / skills.sh: point users at this repository and the specific
skill name. The CLI discovers
SKILL.md files from the repo.
Release package artifacts are produced by .github/workflows/release.yml on
v* tags or manual workflow dispatch. The packages are:
software-factory-plugin-source.* — source plugin package for
Claude/Cursor/Codex-style installs.
software-factory-gemini-extension.* — standalone Gemini CLI extension.
software-factory-kiro-power.* — standalone Kiro power.
Repository Structure
ai-plugin-marketplace-template/
├── .claude-plugin/
│ └── marketplace.json # Claude Code marketplace registry
├── .cursor-plugin/
│ └── marketplace.json # Cursor marketplace registry
├── .agents/
│ └── plugins/
│ └── marketplace.json # OpenAI Codex marketplace registry
├── plugins/
│ └── <plugin-name>/ # One directory per plugin
│ ├── .claude-plugin/
│ │ └── plugin.json # Claude Code manifest
│ ├── .cursor-plugin/
│ │ └── plugin.json # Cursor manifest
│ ├── .codex-plugin/
│ │ └── plugin.json # OpenAI Codex manifest
│ ├── gemini-extension.json # Gemini CLI manifest
│ ├── POWER.md # Kiro power entry point
│ ├── GEMINI.md # Gemini CLI context file
│ ├── .mcp.json # MCP config (Claude Code / Cursor / Codex)
│ ├── mcp.json # MCP config (Kiro)
│ ├── skills/ # SKILL.md files (universal)
│ ├── agents/ # Agent definitions (.md)
│ ├── rules/ # Rules (.md for Claude, .mdc for Cursor)
│ ├── steering/ # Kiro steering files
│ ├── commands/ # Commands (.md for Claude/Cursor, .toml for Gemini)
│ ├── hooks/ # Hook definitions (claude.yaml source)
│ ├── README.md
│ └── LICENSE
├── src/
│ ├── validate.ts # Validate plugins and manifests
│ ├── scaffold.ts # Create new plugin from template
│ ├── build-hooks.ts # Convert hooks YAML → per-target JSON
│ └── build-standalone.ts # Generate standalone exports
├── schemas/ # JSON Schemas for plugin and marketplace manifests
├── templates/ # Templates for scaffolding
├── dist/ # Generated standalone repos
│ ├── gemini/
│ └── kiro/