Forge-core BuildPlugin
Create, validate, and publish Claude Code plugins from forge modules. USE WHEN create plugin, validate plugin, publish plugin, marketplace, plugin.json, cowork plugin.
install
source · Clone the upstream repo
git clone https://github.com/N4M3Z/forge-core
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/N4M3Z/forge-core "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/BuildPlugin" ~/.claude/skills/n4m3z-forge-core-buildplugin && rm -rf "$T"
manifest:
skills/BuildPlugin/SKILL.mdsource content
BuildPlugin
Create, validate, and publish forge modules as Claude Code plugins. Covers plugin.json creation, marketplace registration, and Cowork deployment.
Workflow Routing
| Workflow | Trigger | Reference |
|---|---|---|
| Create | "create plugin", "add plugin.json" | Instructions below |
| Validate | "validate plugin", "check marketplace readiness" | Instructions below |
| Marketplace | "add to marketplace", "publish to cowork" | @ClaudeMarketplace |
Create plugin.json
- Read
for name, version, description.module.yaml - Generate
:.claude-plugin/plugin.json
{ "name": "module-name", "version": "0.1.0", "description": "From module.yaml", "author": {"name": "Author"}, "license": "EUPL-1.2", "repository": "https://github.com/owner/repo", "keywords": [], "skills": ["../skills"] }
- Add
only if the module has hooks."hooks": "./hooks/hooks.json" - Version in plugin.json must match module.yaml exactly.
Validate
Check these in order. Stop on first failure.
| Check | Pass criteria |
|---|---|
| plugin.json exists | present and valid JSON |
| name | Lowercase kebab-case (Cowork enforces strictly) |
| version | Valid semver, matches module.yaml |
| description | Non-empty string |
| author | Object with field |
| license | SPDX identifier present |
| repository | URL string present |
| keywords | Non-empty array |
| README.md | Exists, not empty |
| LICENSE | Exists |
| INSTALL.md | Follows install.md standard (OBJECTIVE, DONE WHEN, TODO) |
| CLAUDE.md | Exists |
| Skills | Each has SKILL.md with name/description/version frontmatter |
| Skill YAML | Each has SKILL.yaml with sources field |
Report:
Section Status ────────────────────────────── plugin.json PASS / FAIL module.yaml PASS / FAIL Documentation PASS / FAIL Skills PASS / FAIL ────────────────────────────── Verdict: READY / NOT READY
Constraints
- Plugin names must be lowercase kebab-case
- Version in plugin.json and module.yaml must match
- Never publish a module that fails validation