docs(skill): add agent-hub-release skill for publishing sidecar agents#1777
docs(skill): add agent-hub-release skill for publishing sidecar agents#1777kovtcharov wants to merge 7 commits into
Conversation
Generalizes the email agent's release pipeline (freeze -> Agent Hub Worker
/publish -> npm OIDC) into a reusable, phased checklist for shipping any future
sidecar agent. Documents the per-agent layout, manifest, binaries.lock, the
three version numbers that must align, the one-time agent-publish gate + infra
setup, and the immutability/best-effort-Intel/main-only invariants. The email
agent (hub/agents/{python,npm}/...email + release_agent_email.yml) is the
worked reference throughout.
SummarySolid, genuinely useful skill — it turns the email-agent release pipeline into a guided checklist, and almost every load-bearing claim traces cleanly to the source. I verified the workflow invariants one by one against The one thing to fix before merge: the skill describes the npm client package in a shape that doesn't match the reference package on Issues Found🟡 Important
The skill states The The skill claims the package exposes "Two entry points: 🟢 MinorThe illustrative Strengths
VerdictRequest changes — doc-only, low-risk, but two repeatedly-referenced npm-package facts don't match the reference on |
…est-schema claim Cross-checked against docs/guides/hub-publishing.mdx (the on-main author guide): - correct the manifest validation claim — gaia-agent.yaml is linted by 'gaia agent test --lint'; manifest.schema.json is the server-side AGGREGATE schema (requires versions/latest_version/security_tier/permissions you never hand-write), not what you validate the source manifest against - position the skill as the sidecar (frozen-binary + npm) extension on top of the guide's wheel/PyPI + PR publish; defer manifest/versioning/immutability to it - use 'gaia agent version' for the version bump + manual npm package.json sync - mark ./client + CHANGELOG-in-files as landing with #1773/#1776 (not yet on main) - add the 'pipeline never cut a real release' (#1648 placeholders) + 'verify infra exists' caveats, the win-x64/win32-x64 platform-name skew, and a reusable- workflow pointer so per-agent copies don't drift
Three-surface verification (cli_agent.py, release_agent_email.yml + packaging scripts, npm client + agent-hub Worker) confirmed the author guide and the release code are correct and mutually consistent; corrected the skill where it drifted from the code: - gen_binaries_lock.py is generic — only freeze.py (NAME) and publish_to_r2.py (executable + email-agent- prefix) hardcode email; HUB_PREFIX is workflow env - SHA-256 is hashed locally AND server-side and asserted equal before the lock is written (not 'server computes, client trusts') - the Worker 409s per filename (head(), not byte-compare); the publish script verifies the stored hash to distinguish idempotent re-upload from a real conflict - note the GAIA_HUB_TOKEN -> AGENT_HUB_PUBLISH_TOKEN env mapping - note the CI smoke test passes on 502/timeout (boots the route; no LLM in CI)
…ing file The agent-email npm package ships no CHANGELOG.md and doesn't list one in package.json files, so the skill's CHANGELOG references were asserting a fact that isn't true. Reword each to instruct the releaser to create the file and add it to the files array when cutting a release.
…icit gaia agent version bumps from the gaia-agent.yaml base and ignores the npm package.json value, so when the two are already out of sync (the email agent is live in exactly this state: package.json 0.2.0, gaia-agent.yaml 0.1.0) a blind patch bumps the yaml, not npm — the manual npm sync is what reconciles them. Spell that out so a releaser doesn't assume the bump aligns all three.
Releasing a sidecar agent to the Agent Hub today means reverse-engineering
release_agent_email.ymland its packaging scripts every time — the knowledge lives only in workflow comments. This adds a reusable Claude skill that captures the whole pipeline as a phased checklist, so the next agent's release (and the email agent's own) is a guided process instead of an archaeology session.The skill generalizes the email agent as the reference implementation: freeze → Agent Hub Worker
/publish(immutable, server-checksummed) → regeneratebinaries.lock.jsonwith real hashes → fetch-verify →npm publishvia OIDC → website redeploy. It documents the per-agent file layout, thegaia-agent.yamlmanifest, the three version numbers that must match before tagging, the one-timeagent-publishgate + infra setup, and the load-bearing invariants (immutable-per-filename, publish-only-from-main, best-effort Intel,SCHEMA_VERSIONMAJOR compat gate, OIDC-tied-to-filename).Single file:
.claude/skills/agent-hub-release/SKILL.md(directory +SKILL.md, matching the existinggaia-release/gaia-testingskills).Test plan
name,description) parses like the sibling skills under.claude/skills/.main:release_agent_email.yml,gaia-agent.yaml,workers/agent-hub/schemas/manifest.schema.json, the packaging scripts,binaries.lock.json.agent-pkg-<id>-*, main-only publish guard, OIDC tied to the workflow filename, 3-required + best-effort-Intel platform matrix.