GH-SKILL-PUBLISH(1)
π gh-skill-publish(1) β the GitHub CLI manual, bestie edition π
okay so this is the gh-skill-publish page from the GitHub CLI manual, and it's literally about validating and publishing skills to a GitHub repository (preview, bestie β preview, so it's giving new-and-shiny β¨).
πΈ NAME πΈ
gh-skill-publish β validate and publish skills to a GitHub repository (preview) π¦
β¨ SYNOPSIS β¨
gh skill publish [<directory>] [flags]
π DESCRIPTION π
so what it does is: it validates a local repository's skills against the Agent Skills specification, then publishes them by creating a GitHub release. like, it checks your fit first, then posts the pic. π
Skills get discovered using the same conventions as install (iykyk):
skills/*/SKILL.mdskills/{scope}/*/SKILL.md*/SKILL.md(root-level)plugins/{scope}/skills/*/SKILL.md
and the validation checks include, in no particular order because they're all iconic:
- Skill names match the strict agentskills.io naming rules π
- Each skill name matches its directory name (no catfishing fr)
- Required frontmatter fields (
name,description) are present β no missing pieces allowed π€ allowed-toolsis a string, not an array (this one trips people up, ngl β string only, bestie π)- Install metadata (
metadata.github-*) is stripped if present
once validation passes, publish will interactively guide you through this little journey:
- Adding the
agent-skillstopic to the repository - Choosing a version tag (semver recommended β that means like
v1.2.3, not "final_FINAL_v2" π) - Creating a GitHub release with auto-generated notes
use --dry-run to validate without publishing. use --tag to publish non-interactively with a specific tag. use --fix to automatically strip install metadata from committed files without publishing β then review and commit the changes, and run publish again. yes you have to run it twice, it's a whole two-step slay π«Ά
β OPTIONS β
--dry-runβ validate without publishing (a little rehearsal, no commitment π )--fixβ auto-fix issues where possible without publishing (e.g. strip install metadata)--tag<string>β version tag for the release (e.g.v1.0.0)
π EXIT CODES π
0: successful execution β ate, no crumbs π1: error β something's not giving π2: command canceled β you changed your mind, valid π4: authentication required β bestie you gotta log in first π
NOTE: specific commands may have additional exit codes. refer to the command's help for more information. π«Ά
π¦ EXAMPLE π¦
# Validate and publish interactively
$ gh skill publish
# Publish with a specific tag (non-interactive)
$ gh skill publish --tag v1.0.0
# Validate only (no publish)
$ gh skill publish --dry-run
# Strip install metadata without publishing
$ gh skill publish --fix
π SEE ALSO π
gh-skill(1)β the main character of this whole saga β
okay that's the whole page!! π this was GitHub CLI v2.102.0, dated Oct 2026 β so like, future vibes, and the source/version + date at the bottom is literally the footer of this manual page, bestie. periodt. πΈπ§
π¦ where this page comes from
- opensuse-leap 16.0: gh 2.102.0-bp160.1.1 Β· MIT
- opensuse-leap 16.0: gh 2.102.0-bp160.1.1 Β· MIT
- opensuse-leap 16.0: gh 2.102.0-bp160.1.1 Β· MIT
- opensuse-leap 16.0: gh 2.102.0-bp160.1.1 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms