Publish skill
Skill ericyanpek/agentcore-private-registry-blueprint/skills/publish-skill
Use when the user wants to publish a new agent skill (a directory containing `pyproject.toml` + `src/<pkg>/skill_files/SKILL.md`) to the company's private AWS Agent Registry + CodeArtifact. Walks build → CodeArtifact upload → CreateRegistryRecord → optional submit-for-approval. Requires AWS credentials with codeartifact:PublishPackageVersion and bedrock-agentcore:Create* on the target registry. Refuses to run if those permissions are absent. Triggers on phrases like "publish this skill", "register this in our skill registry", "把这个 skill 发布出去", "推到 skills registry".From its SKILL.md
npx -y skills add ericyanpek/agentcore-private-registry-blueprint --skill publish-skillAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.6 KB, 963 tokens by cl100k_base, as published. Nobody here has run it
Publishing a skill to the private registry
This is the meta-skill that publishes other skills. It is intentionally limited in scope: it assumes the project layout that this blueprint's skill-package/ example uses, and refuses to invent fields it doesn't have.
When to invoke
- User says "publish this skill" / "把这个 skill 发布出去" / "register this skill in our registry" / "send this to skills hub"
- User has just finished editing a directory that contains
pyproject.tomlandsrc/<pkg>/skill_files/SKILL.md - The user's intent is to make a skill discoverable across the organization, not just to test it locally
When NOT to invoke
- The user is editing the skill content itself (use the regular edit flow; do not auto-publish drafts)
- The user is consuming a skill (search / install / use) — that's a different flow, see the consumer scripts
- There's no
pyproject.tomlin the current directory — this skill cannot publish raw markdown without a packaging step - The user is on a machine without AWS credentials — refuse to proceed and explain how to set them up
How this skill works
The work is delegated to a single Python script:
scripts/publish.py. The script is parameterized — it reads
defaults from ~/.skillpublish/config.toml and accepts CLI flags
to override.
Always read resources/publish-skill-runbook.md
before running anything. The runbook covers:
- The preflight checks the script performs (and what to do when one fails)
- How the four "knobs" (account / registry / CodeArtifact repo / namespace) decide where the skill lands
- The
DRAFT → PENDING_APPROVAL → APPROVEDlifecycle and who is expected to push each transition - Common errors (record name collision, IAM AccessDenied, version immutability) and their resolutions
Defaults and overrides
The script reads ~/.skillpublish/config.toml:
[default]
region = "us-east-1"
codeartifact_domain = "skills-demo"
codeartifact_repository = "skills-prod"
registry_name = "skills-demo-registry"
If the file is absent or a field is missing, the user must pass
the value as a CLI flag. Refuse to proceed if any of --domain,
--repository, --registry is unresolved.
Permissions
This skill cannot bypass IAM. The script verifies:
- AWS credentials are present (
sts:GetCallerIdentity) - The required CLIs are on PATH (
aws,twine)
But it does NOT verify upfront that the principal has every
required permission — that would require listing IAM, which most
publishers don't have. Instead, it lets twine upload /
CreateRegistryRecord fail naturally and surfaces the error.
This is intentional: failures are clearer than a synthetic
permission audit.
For the full permission set required to run this skill end-to-end, see docs/09-publishing-iam.md.
Default behavior is conservative
Two safeguards by default:
- No auto-submit. The script creates the record and stops at
DRAFT. The author reviews via console /get-registry-recordbefore running with--auto-submitto advance toPENDING_APPROVAL. - No update of existing records. If a record with the same
name already exists, the script exits and tells the author to
bump the version in
pyproject.toml.
If the user explicitly says "submit it for approval" / "go all the
way", pass --auto-submit. Otherwise leave the conservative default.
What this skill does NOT do
- It does not approve records (separation of duty — only curators
can; their IAM grants
UpdateRegistryRecordStatus). - It does not delete or yank records (also a curator's domain).
- It does not create the registry, the CodeArtifact domain, or
any IAM resources — those are infrastructure provisioned by
cdk deployonce per account. - It does not validate skill quality (content review, scanning, policy compliance) — those belong on the curator's checklist or in an EventBridge-triggered scanner pipeline (see Phase 2).
What ships with it: 2 files
19.6 KB alongside SKILL.md, 1 of them executable
resources/
- publish-skill-runbook.md6.0 KB
scripts/
- publish.pyruns13.6 KB