publish-skill — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited publish-skill (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Requires Python 3.11+ and the shared blueprint library installed in the active interpreter: python -m pip install -e '.[publish]' from the cloned repository. Copying this skill directory alone does not install that dependency. The current runbook is authoritative.
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.
"register this skill in our registry" / "send this to skills hub"
pyproject.toml and src/<pkg>/skill_files/SKILL.md
organization, not just to test it locally
edit flow; do not auto-publish drafts)
a different flow, see the consumer scripts
pyproject.toml in the current directory — this skillcannot publish raw markdown without a packaging step
proceed and explain how to set them up
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:
one fails)
namespace) decide where the skill lands
DRAFT → PENDING_APPROVAL → APPROVED lifecycle and who isexpected to push each transition
immutability) and their resolutions
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, the script uses the demo defaults shown above. Confirm that these are the intended destinations before publishing; pass explicit flags otherwise.
This skill cannot bypass IAM. Dry-run only checks local metadata and makes no AWS calls. During real publication, AWS enforces authorization. Tokens are passed to Twine through its environment, never persisted in pip configuration. The publisher role must not approve records.
For the full permission set required to run this skill end-to-end, see docs/09-publishing-iam.md.
Two safeguards by default:
DRAFT. The author reviews via console / get-registry-record before running with --auto-submit to advance to PENDING_APPROVAL.
different content at the same version is rejected. A new version may use the same name. Retry an already-uploaded wheel with --wheel ... --skip-upload; its digest is still checked.
If the user explicitly says "submit it for approval" / "go all the way", pass --auto-submit. Otherwise leave the conservative default.
can; their IAM grants UpdateRegistryRecordStatus).
any IAM resources — those are infrastructure provisioned by cdk deploy once per account.
policy compliance) — those belong on the curator's checklist or in an EventBridge-triggered scanner pipeline (see Phase 2).
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.