Help us improve
Share bugs, ideas, or general feedback.
From claude-skill-github-forge
Use when the user wants to create a new open-source Claude Code skill plugin. Guides through naming, content design, file scaffolding, git init, GitHub repo creation, and marketplace publishing.
npx claudepluginhub atompilot/claude-skill-github-forge --plugin claude-skill-github-forgeHow this skill is triggered — by the user, by Claude, or both
Slash command
/claude-skill-github-forge:github-forgeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are helping the user forge, publish, and register a complete open-source Claude Code skill project on GitHub. Follow this workflow exactly.
Creates reusable Claude Code skills and plugins from repeatable workflows. Generates SKILL.md files, packages as plugins, creates GitHub repos, and publishes to marketplace. Activates on requests to make skills or plugins.
Automates creation of CLI skills following Anthropic best practices with brainstorming, template application, validation, installation, and progress tracking. Use to extend CLI with custom skills.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Share bugs, ideas, or general feedback.
You are helping the user forge, publish, and register a complete open-source Claude Code skill project on GitHub. Follow this workflow exactly.
Ask the user (or extract from their message) the following if not already provided:
Do NOT proceed to scaffolding until you understand the use case clearly.
Propose a project name and skill name following these conventions:
| Item | Convention | Example |
|---|---|---|
| GitHub repo / project dir | claude-skill-<topic> | claude-skill-naming |
| Plugin name (in plugin.json) | claude-skill-<topic> | claude-skill-naming |
| Skill directory | skills/<topic>/ | skills/naming/ |
| Skill name (in SKILL.md frontmatter) | <topic> | naming |
Confirm the name with the user before proceeding.
Write skills/<topic>/SKILL.md content based on the use case.
---
name: <topic>
description: <One sentence: "Use when..." describing the trigger condition>
version: 0.1.0
---
The description field is critical — Claude Code uses it to decide when to auto-activate the skill. Make it specific and trigger-focused.
references/ using relative pathsIf the user provides reference material (naming conventions, style guides, etc.), save it to skills/<topic>/references/<filename>.md and link from SKILL.md.
Create the following structure in ~/Projects/atompilot/claude-skill-<topic>/:
claude-skill-<topic>/
├── .claude-plugin/
│ ├── plugin.json ← plugin manifest
│ └── marketplace.json ← required for /plugin marketplace add
├── skills/
│ └── <topic>/
│ ├── SKILL.md
│ └── references/ ← optional: reference docs
└── README.md
{
"name": "claude-skill-<topic>",
"version": "0.1.0",
"description": "<description>",
"author": {
"name": "atompilot",
"url": "https://github.com/atompilot"
}
}
IMPORTANT:
author MUST be an object {"name": "...", "url": "..."} — NOT a string. A string causes a validation error."skills" field. Skills are auto-discovered from the skills/ directory.{
"name": "claude-skill-<topic>",
"owner": {
"name": "atompilot",
"url": "https://github.com/atompilot"
},
"plugins": [
{
"name": "claude-skill-<topic>",
"source": "./",
"description": "<description>",
"version": "0.1.0"
}
]
}
This file is REQUIRED for /plugin marketplace add to work. Without it, you get:
Error: Marketplace file not found at .../.claude-plugin/marketplace.json
Include:
/plugin marketplace add atompilot/claude-skill-<topic>
/plugin install claude-skill-<topic>@claude-skill-<topic>
The install command format is <plugin-name>@<marketplace-name>. Both are the same string from plugin.json name field.cd ~/Projects/atompilot/claude-skill-<topic>
git init
git add .
git commit -m "feat: 初始化 claude-skill-<topic>"
gh repo create atompilot/claude-skill-<topic> --public --push --source=.
Verify the repo is live before proceeding.
# Add marketplace
/plugin marketplace add atompilot/claude-skill-<topic>
# Install plugin
/plugin install claude-skill-<topic>@claude-skill-<topic>
If install fails:
author: Invalid input: expected object, received string → fix plugin.json, update the marketplace cache at ~/.claude/plugins/marketplaces/claude-skill-<topic>/.claude-plugin/plugin.jsonskills: Invalid input → remove the skills field from plugin.jsonMarketplace file not found → create .claude-plugin/marketplace.json~/.claude/plugins/marketplaces/claude-skill-<topic>/.claude-plugin/plugin.json directly, since the cache is a local clone that doesn't auto-update.plugin.json — author is object, no skills fieldmarketplace.json — exists in .claude-plugin//plugin marketplace add succeeds/plugin install succeeds