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.md
  • skills/{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-tools is 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-skills topic 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