better-skill-publish
npx skills add https://github.com/psylch/better-skills --skill better-skill-publish
Agent 安装分布
Skill 文档
Skill Publish
Language
Match user’s language: Respond in the same language the user uses.
Overview
Package a agent skill into a complete, distributable GitHub repository. Generates all the surrounding files (README, LICENSE, plugin.json, marketplace.json) and optionally creates the GitHub repo.
How It Works
- Identify the skill to publish
- Optionally review first with better-skill-review
- Collect publishing metadata through dialogue
- Generate the repository structure with
publish.py - Optionally initialize git and create GitHub repo
Dialogue Flow
Progress:
- Step 1: Identify the skill
- Step 2: Pre-publish validation
- Step 3: Collect metadata
- Step 4: Generate repository
- Step 5: Post-generation
Step 1: Identify the Skill
Accept the skill location in multiple forms:
| Input | Detection | Action |
|---|---|---|
| Directory with SKILL.md | Direct path | Use as-is |
| SKILL.md file path | Path ends in SKILL.md |
Use parent directory |
| Current directory | No input, cwd has SKILL.md | Auto-detect |
Step 2: Pre-Publish Validation
Check for better-skill-review availability:
- First try:
{SKILL_DIR}/../better-skill-review/scripts/validate.py - Fallback:
~/.agents/skills/better-skill-review/scripts/validate.py
If found, suggest running validation:
python3 <validate.py path> run --path <skill-path>
If there are failures, recommend fixing them before proceeding. Warnings are acceptable.
If better-skill-review is not available, offer:
- A) Install it:
npx skills add psylch/better-skills@better-skill-review -g -y - B) Continue without it (quick manual check: verify SKILL.md exists with valid frontmatter)
- C) Cancel
Step 3: Collect Metadata
Use AskUserQuestion to gather:
-
GitHub owner/org â Default: try to infer from
git config user.nameorgh api user -q .login. Ask user to confirm or change. -
Repository name â Default:
<skill-name>-skill(e.g.,cors-audit-skill). Suggest the convention but let user override. -
Version â Default:
1.0.0. Use semver. -
License â Default: MIT. Options: MIT, Apache-2.0, GPL-3.0.
-
Output directory â Where to create the repo. Default: parent directory of the skill.
Step 4: Generate Repository
python3 {SKILL_DIR}/scripts/publish.py generate \
--skill-path <path> \
--owner <owner> \
--repo <repo-name> \
--version <version> \
[--license mit|apache2|gpl3] \
[--output <dir>] \
[--force]
Where {SKILL_DIR} is the directory containing this SKILL.md file.
The script outputs JSON to stdout:
{
"status": "ok",
"output_dir": "/path/to/output",
"repo": "owner/repo-name",
"created": [".claude-plugin/plugin.json", "README.md", "LICENSE", ...],
"hint": "Repository files generated. Next: git init or gh repo create."
}
Step 5: Post-Generation
Present a completion report:
[Skill Publish] Complete!
Skill: <skill-name>
Repository: <owner>/<repo>
License: <license>
Output: <directory>
Files created:
⢠<list from JSON "created" field>
Next Steps:
â A) Initialize git repo
â B) Create GitHub repo and push
â C) Done â handle git manually
Then let the user choose:
Option A: Initialize git repo
cd <output-dir>
git init
git add .
git commit -m "Initial commit"
Option B: Create GitHub repo and push
cd <output-dir>
git init
git add .
git commit -m "Initial commit"
gh repo create <owner>/<repo> --public --source . --push
Option C: Done â User will handle git themselves.
After creation, remind the user:
- Edit README.md and README.zh.md to polish auto-generated content
- Register on skills.sh if they want public discoverability
- Test installation:
npx skills add ./ -g -y
Generated Repository Structure
<repo-name>/
âââ .claude-plugin/
â âââ plugin.json
â âââ marketplace.json
âââ skills/
â âââ <skill-name>/ # Copied from source
â âââ SKILL.md
â âââ scripts/
â âââ references/
âââ README.md
âââ README.zh.md
âââ LICENSE
âââ .gitignore
Distribution Guide Reference
For details about skills.sh registry, versioning strategy, and publishing conventions, read references/distribution_guide.md.