publish-skill
Publishes a locally-authored skill (~/.claude/skills/<name>/) to mqmalagris/agent-skills (a dual-format Claude-marketplace + bunx skills repo). The script does all mechanical work idempotently; you supply the two editorial bits it can't guess: category and keywords.
Do not use this for third-party skills — those belong in the repo's THIRD_PARTY.md, not vendored. Skills written for an employer or a client stay out entirely: authoring one does not make it yours to publish, and the tool it drives is usually internal anyway.
Steps
- Confirm it's the user's own skill. If it's a fork/adaptation, note the upstream so the description can attribute it (the repo credits adapted skills). Bail if it's third-party.
- Decide category + keywords, and the version bump. Read the skill's
SKILL.md. Category matches the repo's groups:engineering-workflow,security,development,reporting,career,product,meta,marketing. Keywords: 3-6 kebab tags. Description is derived from the SKILL.md frontmatter unless you pass--description. Pick the SemVer bump for an existing skill (default PATCH; use--bump minorfor a new capability,--bump majorfor a breaking change) per [[reference-agent-skills-repo]] / the repo'sVERSIONING.md. - Run the script (kebab-case skill name = its dir name):
It refreshes a repo cache, copies the skill, mintspython3 ~/.claude/skills/publish-skill/scripts/publish_skill.py <skill-name> \ --category <category> --keywords tag-a,tag-b,tag-cplugin.json, upsertsmarketplace.json, bumps the skill's version (PATCH on update), logs aCHANGELOG.md[Unreleased]line, validates all JSON, commits on apublish/<name>-v<version>branch, and opens a PR againstmain(CIvalidategates it). Merge overrides:--auto-merge(merge when CI passes),--merge(merge now, squash+admin),--push-main(legacy: push straight tomain, no PR). Other:--bump minor|major,--version X.Y.Z,--no-bump,--changelog "text",--description "...",--no-push,--dry-run. - Update the README table. The script prints a suggested row and the target
skills/path. Add that row to the right group section in the repo'sREADME.md(goes in the same PR branch, or a follow-up PR). Skip only if the user says the README doesn't matter. - Report the PR URL + new version, and (post-merge) the install commands:
bunx skills add mqmalagris/agent-skills -s <name>and/plugin install <name>@agent-skills. - Cutting a release (optional, when done publishing). Per-skill publishes accumulate under CHANGELOG
[Unreleased]. To snapshot the collection, run the repo's release cutter (it validates, bumps the collection version, rolls the changelog, tagsvX.Y.Z, and creates a GitHub Release):python3 ~/.cache/agent-skills-publish/scripts/release.py --bump minor # or --version X.Y.Z
Notes
- Re-running for the same skill updates it (no duplicate marketplace entry), preserves its category/keywords/description, and bumps the version — safe for republishing after edits.
- Repo conventions and the full layout are in memory
[[reference-agent-skills-repo]]. The script hardcodes the repo URL, author (Matheus Malagris), and MIT license to match. - Requires
gh/git auth for the push (already configured for this user).