skill-publish (NPX + GitHub Action)
skill-publish is the fastest path to publish reproducible HCS-26 skill releases through Registry Broker.
It supports:
- local developer workflows through
npx skill-publish - CI workflows through
hashgraph-online/skill-publish@v1
If you need low-level control over files and payload construction, use the SDK methods in Skills Upload & Discovery. For most teams, skill-publish is the preferred DX path.
Local CLI workflow (npx skill-publish)Direct link to local-cli-workflow-npx-skill-publish
Run interactive onboarding:
npx skill-publish
Recommended command sequence:
# 1) Create API key via ledger challenge and optionally top up credits
npx skill-publish setup \
--account-id 0.0.12345 \
--network hedera:testnet \
--hedera-private-key <private-key> \
--hbar 5
# 2) Scaffold package files
npx skill-publish init ./skills/my-skill
# 3) Check readiness (broker connectivity, credentials, package files)
npx skill-publish doctor ./skills/my-skill
# 4) Validate and quote
npx skill-publish validate ./skills/my-skill
npx skill-publish quote ./skills/my-skill
# 5) Publish
npx skill-publish publish ./skills/my-skill
Main CLI commandsDirect link to Main CLI commands
npx skill-publish help
npx skill-publish help publish
npx skill-publish help setup
npx skill-publish help doctor
Command groups:
start: interactive quick-start menusetup: ledger auth + API key + optional HBAR credit purchasedoctor: environment and package diagnosticsinit: scaffoldSKILL.mdandskill.jsonvalidate: local package validation onlyquote: remote quote without creating a publish jobpublish: quote + publish + job completion flow
GitHub Action workflow (hashgraph-online/skill-publish@v1)Direct link to github-action-workflow-hashgraph-onlineskill-publishv1
Use release-triggered CI publishing:
name: Publish Skill
on:
release:
types: [published]
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
issues: write
steps:
- uses: actions/checkout@v4
- name: Publish skill package
uses: hashgraph-online/skill-publish@v1
with:
api-key: ${{ secrets.RB_API_KEY }}
skill-dir: skills/my-skill
annotate: "true"
github-token: ${{ github.token }}
Action inputs and behaviorDirect link to Action inputs and behavior
Common inputs:
api-key(required)skill-dir(required)api-base-url(optional; defaults tohttps://hol.org/registry/api/v1)name,version(optional overrides)poll-timeout-ms,poll-interval-ms(optional job polling tuning)
Idempotency:
- if
name@versionalready exists, publish is skipped and returnspublished=falsewithskip-reason=version-exists
Local vs CI guidanceDirect link to Local vs CI guidance
Use local CLI when:
- developing and validating package content quickly
- bootstrapping API keys with ledger auth
- diagnosing environment issues via
doctor
Use GitHub Action when:
- publishing tagged/released versions in CI
- annotating release notes and PR context automatically
- standardizing publish jobs across contributors