You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Phase 2] Immutable registry and publishing CLI/CI #34
Delivered by #99 (squash 5fc3077, 3 isolated review rounds):
skillx import, with publish kept as a deprecated alias.
Top-level validate, pack, publish and promote.
Idempotency-Key on publish: bound per publisher, with a 24 h replay.
Operator review and quarantine.
Signed, short-lived download URLs.
GitHub OIDC trusted publishing, which exchanges the Actions JWT for a short-lived namespace-scoped token.
The publish-agentkit-foundation.yml workflow.
The CLI exit codes and envelope were unified in #97.
Production setup
Migration 0018 (registry_publishing) was applied after a D1 Time Travel bookmark.
SKILLX_TOKEN_SECRET is set on the worker.
Publisher bestagentkits has a key scoped to releases:publish:@bestagentkits and the trusted publisher tp_dd0997c9. The trusted publisher is bound to repo nextlevelbuilder/skillx (id 1154190512), the workflow .github/workflows/publish-agentkit-foundation.yml, refs/heads/main, and environment skillx-publish.
The skillx-publish environment requires owner approval and accepts main only. It holds the fallback key and a read-only PAT for the private AgentKit repo.
Same skill published manually and by CI, same digest
pack matched expected-digest before upload; the registry answered with the same digest, state published; no fallback to the API key
The digest also equals AgentKit's own skilltree.Build digest of that directory.
The MCP get_release on production returns this release with the same digest.
Naming: foundations publish as @bestagentkits/<slug> because skillx.release/v1 reserves @agentkit/* and ak- slugs. AgentKit consumes them as skillx:bestagentkits/<slug>.
The CLI ships to npm when the next release-please PR merges.
Activity
zuey-cloud-harness commentedon Oct 11, 2026
Child delivery slice: #54, AgentKit foundation publishing and pinned whole-tree artifact resolution. Contract counterpart: https://github.com/bestagentkits/agentkit/issues/2275; consumer https://github.com/bestagentkits/agentkit/issues/2277; E2E https://github.com/bestagentkits/agentkit/issues/2282. Acceptance includes nested assets/modules/scripts/references (#21), deterministic SHA-256 same manual+CI release, immutable version, namespace/scoped publisher, quarantine/yank/private entitlements and non-execution during read. This #34 continues to own generic registry primitives; #54 does not duplicate them. Umbrella https://github.com/bestagentkits/agentkit/issues/2274.
mrgoonie commentedon Oct 21, 2026
Production receipt (2026-10-20/21)
Delivered by #99 (squash 5fc3077, 3 isolated review rounds):
skillx import, withpublishkept as a deprecated alias.validate,pack,publishandpromote.Idempotency-Keyon publish: bound per publisher, with a 24 h replay.publish-agentkit-foundation.ymlworkflow.The CLI exit codes and envelope were unified in #97.
Production setup
registry_publishing) was applied after a D1 Time Travel bookmark.SKILLX_TOKEN_SECRETis set on the worker.bestagentkitshas a key scoped toreleases:publish:@bestagentkitsand the trusted publishertp_dd0997c9. The trusted publisher is bound to reponextlevelbuilder/skillx(id 1154190512), the workflow.github/workflows/publish-agentkit-foundation.yml,refs/heads/main, and environmentskillx-publish.skillx-publishenvironment requires owner approval and acceptsmainonly. It holds the fallback key and a read-only PAT for the private AgentKit repo.Same skill published manually and by CI, same digest
kits/core/skills/ak-planat AgentKitf8e2da556c1e19dd5e53934304d7fcce4c0974a0@bestagentkits/plan@0.1.0, betasha256:08b0fce1b56819e0e85f9edcc479432f4f3e56c0a79c9f91c95e58fe84cbac65sha256:08b0fce1b56819e0e85f9edcc479432f4f3e56c0a79c9f91c95e58fe84cbac65created: true, state publishedexpected-digestbefore upload; the registry answered with the same digest, state published; no fallback to the API keyThe digest also equals AgentKit's own
skilltree.Builddigest of that directory.The MCP
get_releaseon production returns this release with the same digest.Naming: foundations publish as
@bestagentkits/<slug>becauseskillx.release/v1reserves@agentkit/*andak-slugs. AgentKit consumes them asskillx:bestagentkits/<slug>.The CLI ships to npm when the next release-please PR merges.