ClawHub (clawhub CLI, authed as itsPremkumar): package a skill as a folder with
SKILL.md (YAML frontmatter: name/version/description/tags) + supporting files, then
clawhub publish "<abs-folder>" --slug X --name "Name" --version 1.0.0 --tags "t1,t2,t3".
Content quality is enforced. The registry rejects thin/templated SKILL.md with
"Skill content is too thin or templated. Add meaningful, specific documentation.".
Every published SKILL.md MUST include rich, substantive sections — at minimum:
install instructions, usage with command examples, a features list, a commands table,
and a "why" section. Code blocks, example output, and CI integration snippets all
help. A skeleton with just frontmatter + one paragraph will be rejected.
Exact publish command:
clawhub publish "C:\path\to\skill-folder" --slug my-skill --name "My Skill" --version 1.0.0 --tags "tag1,tag2,tag3"
Verify token first: clawhub whoami (must show ✔ itsPremkumar). Absolute path required
(relative/CWD paths error with "Path must be a folder").
Confirmation: success returns ✔ OK. Published <slug>@1.0.0 (<hash>).
Search index may lag — clawhub search <slug> may not immediately return results after
publish. The publish response itself is the authoritative confirmation.
Batch upgrade + republish (verified 2026-07-13). When upgrading all N skills at once
(e.g. v1 → v2 with new features + README + docs): do it in 4 deterministic passes, NOT by
hand:
- Generate docs — a Python script (
generate_v2_docs.py) loops all clawhub-skills/<name>/
folders and writes README.md (badge bar, Quick start, feature table, sample output, links)
- a v2
SKILL.md (frontmatter version: 2.0.0 + Install/Commands/Features/CI/Why/Support).
Keep a dict of {slug: {name, tool, desc, tags, commands[], features[]}} so every skill
gets consistent structure. Verify with ast.parse on every .py + a glob count of
generated files (must == N).
- Push to GitHub per repo —
push_all_v2.py does, per skill: git init → git remote add origin https://github.com/itsPremkumar/<slug>.git → git add -A → commit →
git branch -m master main → git pull --rebase -X theirs → git rm -r --cached __pycache__
→ git push origin main. For renamed repos use a URL_MAP (agent-caps→prem-agent-caps,
dev-prompts→dev-prompts-pack). Always rebase-pull before push — the remote may have a
LICENSE/README commit from license_template and reject a non-FF push.
- Republish on ClawHub —
republish_all_v2.py calls clawhub publish for each with
--version 2.0.0. The FIRST publish of a version succeeds; re-running the SAME version
errors ✖ Uncaught ConvexError: Version 2.0.0 already exists — that is HARMLESS (it's
already live). Capture only ✖ lines that are NOT the version-exists message.
- Update Moltbook drafts —
update_moltbook_drafts_v2.py rewrites revenue/moltbook/ post-<slug>.json titles/content to v2 messaging; the scheduler cron picks them up on its
30-min tick.
All four scripts live in the repo root and are committed. See references/clawhub-batch-upgrade.md
for the exact script skeletons + the 14-check ad-hoc verification pattern that proves the
generated docs/tool parse correctly (run from %TEMP%/hermes-verify-*.py, then DELETE it so
it doesn't re-trigger the unverified flag).
Batch generation: for 5+ skills, write a Python script that creates the folder +
SKILL.md + tool files, then publish individually. This avoids repetitive manual folder
setup and ensures consistent frontmatter structure. See references/clawhub-batch-publishing.md.
Note: ClawHub has NO paid listings — it's free distribution; monetize via Gumroad premium.