Skip to content

feat(registry): add a workflow that mirrors an AgentKit kit as @agentkit releases - #181

Open
mrgoonie wants to merge 1 commit into
mainfrom
feat/agentkit-kit-mirror-workflow
Open

mrgoonie wants to merge 1 commit into
mainfrom
feat/agentkit-kit-mirror-workflow

Conversation

@mrgoonie

@mrgoonie mrgoonie commented Nov 8, 2026

Copy link
Copy Markdown
Contributor

Why

A personal kit that extends an official AgentKit kit (ak skills kit init --extends engineer@0.2.0) pins every foundation skill as an @agentkit/<x> release. SkillX verifies each pin against a release it serves and refuses the revision with kit.base_unavailable otherwise. Live check today: 103 of the 105 engineer bases answer 404. Only @agentkit/bro@0.2.0 and @agentkit/sumup@0.2.0 exist, and their digests match the current tree. As a result, no personal kit over engineer can be published (bestagentkits/agentkit#3043).

What

  • .github/workflows/publish-agentkit-kit-mirror.yml runs only on dispatch from main. Inputs: agentkit-sha, kit, channel (default beta), only and dry-run.
    • plan job (no credentials): builds ak at the commit, runs ak skills kit init --extends <kit>@<version> and inspect --json in an isolated home, then builds the plan and uploads it as the kit-mirror-plan artifact.
    • publish job (skillx-publish environment): handles each entry in turn:
      • skips it when a release is already served at the same digest, and fails it when the served digest differs;
      • runs skillx pack and requires the digest AgentKit pins before any upload (with dry-run, the job stops here);
      • publishes with --kit-origin remote-signed, using OIDC first and falling back to SKILLX_AGENTKIT_KIT_PUBLISH_KEY, with a per-commit idempotency key;
      • checks that the served digest matches after publishing.
  • Visibility: skills of a tier: free kit (kits/core) are published public. Skills of every other kit (paid engineer, marketing) are published private, so proprietary kit content never becomes public.
  • scripts/agentkit-kit-mirror-plan.mjs is the validated planner: identity ↔ ak-<x> mapping, owner kit, sha256 digest, existing directory, duplicates and only. It is tested by scripts/agentkit-kit-mirror-plan.test.mjs.
  • docs/deployment-guide.md gains step 8 covering trusted publisher or key setup, dispatch, and the visibility rule.

Verification

  • node --test scripts/agentkit-kit-mirror-plan.test.mjs: 4/4 pass.
  • The plan step body ran locally against real AgentKit dev:
    • engineer@0.2.0 → 105 entries (65 private engineer, 40 public core);
    • marketing@0.2.0 → 84 entries;
    • only narrows the plan, and an unknown id exits 1.
  • bash -n passes on every run step, and the YAML parses.
  • Not run here: pnpm install / vitest, and a real dispatch. The dispatch needs the owner's releases:publish:@agentkit credential.

Follow-ups

  • Run the workflow with dry-run: true first, then for real, for engineer and marketing.
  • Paid private releases are readable only by their owner until SkillX entitles AgentKit license holders to them (separate issue).

Refs bestagentkits/agentkit#3043


Generated by Claude Code

 releases

A personal kit that extends an official AgentKit kit pins every foundation
skill as an @agentkit/<x> release, and SkillX refuses the revision with
kit.base_unavailable until each one is served. Only two such releases exist
today, so personal kits over engineer cannot be published.

The dispatch-only workflow builds ak at a given AgentKit commit, plans the
kit from `ak skills kit inspect --json`, and publishes each skill with
--kit-origin remote-signed. Skills of a tier: free kit are public; skills of
paid kits are private so proprietary content never becomes public. Every pack
must reproduce the digest AgentKit pins before upload; a release already served
at that digest is skipped and a different one fails the entry. A dry-run mode
stops after the digest check.

Refs bestagentkits/agentkit#3043

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FL32ryrxYhDccy3nBi2JxS

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants