Publish an AI agent skill to GitHub and multiple skill registries in one workflow.
The overall flow is: GitHub first, then skills.sh and clawhub.ai, with skillsmp.com auto-syncing from GitHub. Skill name and description on all platforms come from the SKILL.md frontmatter, keeping everything consistent with the GitHub repo.
Before running this skill, check that the required CLI tools are available. If any are missing, guide the user through installation.
git — required. Check with git --version.
gh (GitHub CLI) — required for skills.sh publishing. Check with gh --version.
gh skill publish extension — required for skills.sh. Check with gh extension list | grep skill.
gh extension install skills-sh/skill-publishclawhub CLI — required for clawhub.ai publishing. Check with which clawhub.
npm i -g clawhubclawhub login (GitHub OAuth)clawhub whoamiIf a tool is missing, ask the user whether to install it or skip that platform.
Follow these steps in order.
Read references/repo-map.json (relative to this skill's directory). This file maps local project paths to their GitHub URLs.
Compare the current working directory against the keys in the mapping.
If a mapping is found: Use the stored URL. Tell the user: "Detected repo: "
If no mapping is found: Ask the user to provide the GitHub repository URL. Accept formats like:
https://github.com/user/repo.gitgit@github.com:user/repo.githttps://github.com/user/repoRun git status to check if the current directory is a Git repository.
If NOT a Git repository:
git initgit add . to stage all filesgit commit -m "Initial commit"git remote add origin <URL>git branch -M mainIf already a Git repository:
origin exists: git remote get-url origin
origin exists, run git remote add origin <URL>Check for uncommitted changes with git status --porcelain.
If there are uncommitted changes:
git diff --cached to see staged changesgit diff to see unstaged changesgit add .type(scope): brief summaryfeat, fix, chore, docs, refactor, style, testgit commit -m "<generated message>"If no uncommitted changes: Proceed to push.
Detect the current branch: git branch --show-current
Try normal push: git push -u origin <branch>
If the push fails with a connection error (e.g., "Could not connect to server", "Failed to connect", timeout, network unreachable):
Run git remote get-url origin to inspect the current URL.
If the URL starts with https://, retry up to 3 times.
If all 3 HTTPS retries fail, automatically switch to SSH:
https://github.com/user/repo.git → git@github.com:user/repo.gitgit remote set-url origin <ssh-url>If the remote is already SSH and fails, retry up to 3 times, then report the error.
If the push fails for other reasons (e.g., divergent histories):
git push -u origin <branch> --forceUpdate references/repo-map.json with the current project path and its GitHub URL so future publishes skip the URL prompt.
skills.sh is a skill registry that auto-discovers skills from GitHub. The gh skill publish extension validates the skill and creates a GitHub release.
Check if gh skill publish extension is installed.
gh extension install skills-sh/skill-publishRead the SKILL.md frontmatter from the current skill directory to get the skill name and description.
Run: gh skill publish --slug <skill-name>
--slug should match the name field in SKILL.md frontmatter.gh skill publish is not available, skip and tell the user: "skills.sh will auto-discover your skill from the GitHub repo. For faster indexing, install the extension with gh extension install skills-sh/skill-publish."If publishing succeeds, report: "Published to skills.sh: https://skills.sh///"
ClawHub is a skill marketplace with CLI-based publishing. It requires authentication via GitHub OAuth.
Check if clawhub CLI is installed.
npm i -g clawhubCheck if the user is logged in: clawhub whoami
clawhub loginRead the SKILL.md frontmatter to get the skill name and description.
Derive the version from git describe --tags --always or use "1.0.0" for first publish.
Run: clawhub skill publish . --slug <skill-name> --name "<skill-name>" --version <version> --changelog "<commit-message>"
--name and description come from SKILL.md frontmatter to stay consistent.If publishing succeeds, report: "Published to clawhub.ai: https://clawhub.ai/skills/"
skillsmp.com automatically scrapes GitHub for public repos with SKILL.md files. No manual action is needed. Tell the user: "skillsmp.com will auto-sync from the GitHub repo (may take a few hours)."
Report the final status of all platforms:
text
Publish complete!
GitHub: <url> (branch: <branch>, commit: <message>)
skills.sh: Published / auto-discoverable
clawhub.ai: Published / skipped
skillsmp.com: Auto-sync from GitHub
If any platform failed, clearly state which ones succeeded and which need manual follow-up.
When the user wants to update an already-published skill, the workflow is the same — GitHub push first, then re-publish to each platform:
gh skill publish to create a new release.clawhub skill publish with an incremented version number. Use git log --oneline <last-tag>..HEAD to generate a changelog from recent commits.After each execution of this Skill:
diary/YYYY-MM-DD.md.SKILL.md.references/repo-map.json — Local path to GitHub URL mappings. Read this first to resolve the remote URL; update it after each successful push.