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.md
source content

BuildPlugin

Create, validate, and publish forge modules as Claude Code plugins. Covers plugin.json creation, marketplace registration, and Cowork deployment.

Workflow Routing

WorkflowTriggerReference
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

  1. Read
    module.yaml
    for name, version, description.
  2. 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"]
}
  1. Add
    "hooks": "./hooks/hooks.json"
    only if the module has hooks.
  2. Version in plugin.json must match module.yaml exactly.

Validate

Check these in order. Stop on first failure.

CheckPass criteria
plugin.json exists
.claude-plugin/plugin.json
present and valid JSON
nameLowercase kebab-case (Cowork enforces strictly)
versionValid semver, matches module.yaml
descriptionNon-empty string
authorObject with
name
field
licenseSPDX identifier present
repositoryURL string present
keywordsNon-empty array
README.mdExists, not empty
LICENSEExists
INSTALL.mdFollows install.md standard (OBJECTIVE, DONE WHEN, TODO)
CLAUDE.mdExists
SkillsEach has SKILL.md with name/description/version frontmatter
Skill YAMLEach 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