Author, validate, review, merge, release, and verify an Agent Skill without
assuming a repository owner, account, forge, package layout, or private delivery
system. This skill owns one explicitly selected publication target. It does not
silently copy the skill into private repositories, plugins, mirrors, websites,
sidecars, control planes, or another owner's account.
When to Use
“Publish this skill,” “release this Agent Skill,” or “add this skill to the
public pack.”
A skill draft must become a discoverable, installable, verified release.
An existing published skill needs a versioned content update.
Do not use for a user-local skill that should remain unpublished, or for private
organization policy when a target-specific publishing skill explicitly overrides
this one.
Publication Authority
Discover the repository, owner, publication target, skill layout, version source,
tests, review requirements, merge policy, release mechanism, and discovery
channels from the active repository and the user's request. If the target is not
uniquely known, ask before writing or publishing. Never infer a destination from
memory, a sibling clone, an installed skill, a similarly named organization, or
credentials that happen to work.
This workflow has one primary target by default.
External and sidecar targets are opt-in only
An external target includes any second repository, private plugin, marketplace,
website, mirror, sidecar runtime, canonical-source repository, generated copy, or
local-global installation outside the primary target.
Touch one only when the user explicitly asks for or mentions that named target
in the active request. Do not infer external propagation from repository history,
links, provenance files, prior releases, available credentials, or the presence
of another checkout. When explicitly requested, treat every external target as a
separate publication with its own scope, validation, approval, readback, and
completion status. A primary release is not proof that a sidecar published.
Prerequisites
Inspect repository instructions, current branch/status, recent release tags,
skill peers, manifest/frontmatter conventions, tests, CI, and release docs.
Resolve the exact primary target and whether this is a new skill or update.
Define acceptance: skill identity, trigger, boundaries, carried files,
discovery name, version, install command, and proof required after release.
Inventory external targets mentioned by the user. Record all others as out of
scope; do not modify them.
Confirm authorization before remote writes, merge, publication, destructive
replacement, or cross-account changes. Every external target must be named
explicitly by the user in the active request; repository policy may add
safeguards but cannot select or authorize an unmentioned target.
Procedure
Discover the target contract. Trace validators, generators, catalog code,
neighboring imports/links, release automation, and install commands. Do not
invent files, fields, commands, versions, or namespaces. Complete when:
repository owner, target branch, skill path, metadata contract, checks,
release mechanism, and discovery surfaces are evidenced.
Write acceptance tests first. Add focused contract tests against the
shipped SKILL.md and carried files. Run them and confirm failure for the
missing or stale behavior. Complete when: RED proves the intended contract.
Author the minimum skill. Match peer structure and progressive disclosure.
Keep triggers and counter-triggers precise; make boundaries, prerequisites,
ordered steps, pitfalls, and verification executable. Add carried reference
files or scripts only when the main file would otherwise carry bulky or
repeated detail.
Update the repository README/catalogue entry in the same change so humans and
agents can discover the exact skill description, install coordinates, and how
to update it. Add human-readable release notes or changelog prose that explains
what changed, who should care, compatibility/migration impact, and the action
required to receive it. A version number or generated diff is not release notes.
Validate locally. Run focused tests, frontmatter/link/catalog validators,
generated-artifact drift checks, repository-required tests, and diff hygiene.
Re-run from a clean dependency state when release reproducibility matters.
Complete when: every required local check passes and the diff contains only
intended target files.
Review before publication. Use the repository's required review gate. If
request-blocks-review is installed and Blocks review is requested by the
user or repository policy, load it and run review/fix/verify/re-review until
the current head is clean. Never silently install a reviewer dependency.
Open the publication change. Create the repository-standard branch,
commit, and pull request only after scope is reviewed and authorization is
present. State tests, release impact, discovery impact, and explicitly excluded
external targets. Complete when: the PR URL and exact head exist.
Follow CI and review to convergence. Distinguish queued acknowledgements
from real reviews. Fix findings, rerun checks, push, and request current-head
re-review as required. Complete when: required CI and review gates are
green for the exact merge head.
Merge and release. Follow branch protection and repository release policy;
do not treat merge as publication. Create or verify the version/tag/release and
wait for deployment/indexing channels that the target contract names.
Publish the human release notes with exact install/update guidance. Encourage
affected users and agents to update without claiming or performing unrequested
local synchronization.
Verify external state from source. Read back the main-branch skill, release,
and catalog. Run installer/CLI discovery against the published repository and
confirm exact name, description, source URL/type, and version where exposed.
Test an isolated install; do not rely on a preexisting local copy or redirect.
Synchronize requested local libraries. Only when the user explicitly names
a local-global or project-local target, follow All-plane local
synchronization. Treat every scope,
machine, agent, and native/manual channel as an independent target.
Report staged completion. Separate verified, published, deferred, and
out of scope. A cache/index delay is pending, not failure or success. Name
every explicitly requested external target and its independently verified
state.
All-plane Local Synchronization
Publishing and isolated install verification do not authorize changing the
user's real skill libraries. Enter this procedure only when the active request
explicitly names a local-global scope, project scope, machine, agent set, native
plugin, or manual/upload target.
Inventory every plane
Read the installed inventory in machine-readable form for both scopes:
npx skills list --global --json
npx skills list --json
Record each skill's scope, source provenance, install path, managed/unmanaged
status, copy/symlink form, and every agent path that consumes it. A shared
canonical copy linked into several agents is one managed installation with
several projections; copied directories can drift independently.
Present a deduplicated target manifest before writes: machine × scope/profile × agent/channel × physical path × mechanism. “All supported agents” covers
only this discovered set, not unknown profiles or guessed locations.
Discover native plugin/package channels from the target's own release contract.
A plugin-native skill and a standalone skill with the same bare name are
separate identities; do not replace or remove one to update the other.
Inventory manual planes separately: uploaded archives, downloaded files,
browser-only agents, remote agents, containers, other machines, and clients the
Skills CLI reports as unsupported. Never claim they were synchronized from a
successful update on this machine.
Apply by ownership and scope
CLI-managed global copy: update the named skills without scope inference:
npx skills update <skill...> --global --yes
CLI-managed project copy: run from the exact project and specify project
scope explicitly:
npx skills update <skill...> --project --yes
Missing global copy across all supported agents: add from the authoritative
published source, preserving the repository's install form:
Use --copy only when the user or existing installation selected copied
delivery. Do not silently convert copy to symlink or symlink to copy.
Missing project copy: run in the exact project, omit --global, and name
the intended agents. Project installation may create or update lock metadata;
include and verify it according to repository policy.
Unmanaged or provenance-less copy: do not overwrite it as if managed. Show
the exact path and proposed source, obtain approval for destructive replacement,
then remove only that identity/scope and reinstall from the authoritative
source. Preserve unrelated and namespaced skills.
Upstream deletion: report a removal candidate; require separate explicit
destructive approval before deleting any local skill.
Native plugin/package channel: use that channel's marketplace/registry
refresh and update commands, then read back its declared version and skill
namespace. Do not use the generic Skills CLI as proof that a native plugin
updated.
Manual/upload channel: produce or fetch the released artifact, verify it,
and give the user the replacement/upload action. If the agent cannot perform
that UI action, report manual action required; never mark it updated.
Unsupported agent: report the literal unsupported result and leave it
unsupported. Use deferred only for an explicitly requested target that is
temporarily unreachable. Do not fabricate a path or copy files into an
undocumented folder.
Verify every requested plane
Re-run scope inventories and confirm source provenance and all expected agent
projections. --agent '*' means every agent supported by the installed CLI,
not every agent that exists.
Compare installed bytes or a cryptographic hash with the authoritative
published artifact when the channel exposes no trustworthy version. A command
exiting zero is not freshness proof.
Where no authoritative version/ref/digest is comparable, report freshness as
unknown; do not infer it from a rewritten local timestamp or command success.
For native plugins, read back the exact installed version and namespace. For
project scope, verify the consuming project sees the project copy rather than
a higher-precedence global/plugin copy.
Restart or reload each affected agent/runtime when its loader caches skills;
current-session discovery may remain stale until then.
Report a matrix with scope × agent/channel × identity: updated, already current, manual action required, unsupported, deferred, failed, or
out of scope.
Never collapse partial multi-agent success into “local libraries updated.”
Usage Examples
Publish this Agent Skill to the current repository. Discover its conventions,
write contract tests first, validate and review the current head, then merge,
release, verify installer discovery and provenance, and report any indexing lag.
Do not touch any other repository, private plugin, marketplace, website, mirror,
sidecar, canonical/generated copy, or local-global installation unless I
explicitly name it.
Publish this skill to the current public pack and also update the private plugin
repository I named. Treat those as separate targets, preview both scopes, verify
each release independently, and do not infer any additional mirror or sidecar.
Pitfalls
Owner assumed from environment: working credentials do not select a target.
Merge called release: prove the tag/deploy/catalog and install path.
Branch copy called publication: installer discovery must read the merged
source, not an indexed feature branch or cache.
Silent external propagation: mirrors, websites, private plugins, sidecars,
and local-global installations require explicit user mention.
Root SKILL.md: some installers stop discovery there; follow the target's
actual multi-skill layout.
Description drift: package README/catalog copy must match frontmatter where
the target enforces it.
README/changelog treated as cleanup: catalogue README, human release notes,
and actionable update guidance are release artifacts, not optional follow-up.
Review of stale head: only current-head evidence satisfies the gate.
Local copy used as proof: verify published source and isolated install.
One plane called all planes: global, project, native-plugin, copied,
symlinked, manual/upload, remote, and unsupported clients have independent
freshness and completion states.
Index cache ambiguity: report the authoritative source separately from
delayed third-party indexes.
Verification
Primary repository, owner, branch, layout, and release target were discovered.
Tests failed before authoring and pass after implementation.
Frontmatter, links, carried files, catalog, generators, and full checks pass.
Repository/catalogue README lists the skill and exact install/update path.
Human release notes explain outcomes, compatibility, and who should update.
Published update guidance encourages adoption without mutating unrequested
local targets.
Required review is clean for the exact current head.
Merge, release, and deployment/indexing states are reported separately.
Main-branch source and release were read back.
CLI discovery and isolated install report exact skill identity and provenance.
Every explicitly requested local plane was inventoried before mutation.
A deduplicated target manifest was presented before every local write.
Managed updates preserved scope, source, agent set, and copy/symlink form.
Upstream-missing skills are removal candidates requiring separate destructive
confirmation, not ordinary update deletions.
Without a comparable authoritative version/ref/digest, freshness is
unknown, never inferred from command success or timestamps.
Native, manual, remote, and unsupported channels have independent outcomes.
Installed bytes/version/namespace were read back and affected runtimes were
restarted or reloaded where required.
Every user-mentioned external target has an independent verified state.
No unmentioned private, external, mirror, website, sidecar, or local-global
target was modified.
1---2name: publish-agent-skill3description: Publish an Agent Skill through a verified release.4license: MIT5---67# Publish an Agent Skill89Author, validate, review, merge, release, and verify an Agent Skill without10assuming a repository owner, account, forge, package layout, or private delivery11system. This skill owns one explicitly selected publication target. It does not12silently copy the skill into private repositories, plugins, mirrors, websites,13sidecars, control planes, or another owner's account.1415## When to Use1617- “Publish this skill,” “release this Agent Skill,” or “add this skill to the18 public pack.”19- A skill draft must become a discoverable, installable, verified release.20- An existing published skill needs a versioned content update.2122Do not use for a user-local skill that should remain unpublished, or for private23organization policy when a target-specific publishing skill explicitly overrides24this one.2526## Publication Authority2728Discover the repository, owner, publication target, skill layout, version source,29tests, review requirements, merge policy, release mechanism, and discovery30channels from the active repository and the user's request. If the target is not31uniquely known, ask before writing or publishing. Never infer a destination from32memory, a sibling clone, an installed skill, a similarly named organization, or33credentials that happen to work.3435This workflow has one primary target by default.3637### External and sidecar targets are opt-in only3839An external target includes any second repository, private plugin, marketplace,40website, mirror, sidecar runtime, canonical-source repository, generated copy, or41local-global installation outside the primary target.4243Touch one only when the user explicitly asks for or mentions that named target44in the active request. Do not infer external propagation from repository history,45links, provenance files, prior releases, available credentials, or the presence46of another checkout. When explicitly requested, treat every external target as a47separate publication with its own scope, validation, approval, readback, and48completion status. A primary release is not proof that a sidecar published.4950## Prerequisites51521. Inspect repository instructions, current branch/status, recent release tags,53 skill peers, manifest/frontmatter conventions, tests, CI, and release docs.542. Resolve the exact primary target and whether this is a new skill or update.553. Define acceptance: skill identity, trigger, boundaries, carried files,56 discovery name, version, install command, and proof required after release.574. Inventory external targets mentioned by the user. Record all others as out of58 scope; do not modify them.595. Confirm authorization before remote writes, merge, publication, destructive60 replacement, or cross-account changes. Every external target must be named61 explicitly by the user in the active request; repository policy may add62 safeguards but cannot select or authorize an unmentioned target.6364## Procedure65661. **Discover the target contract.** Trace validators, generators, catalog code,67 neighboring imports/links, release automation, and install commands. Do not68 invent files, fields, commands, versions, or namespaces. **Complete when:**69 repository owner, target branch, skill path, metadata contract, checks,70 release mechanism, and discovery surfaces are evidenced.712. **Write acceptance tests first.** Add focused contract tests against the72 shipped `SKILL.md` and carried files. Run them and confirm failure for the73 missing or stale behavior. **Complete when:** RED proves the intended contract.743. **Author the minimum skill.** Match peer structure and progressive disclosure.75 Keep triggers and counter-triggers precise; make boundaries, prerequisites,76 ordered steps, pitfalls, and verification executable. Add carried reference77 files or scripts only when the main file would otherwise carry bulky or78 repeated detail.79 Update the repository README/catalogue entry in the same change so humans and80 agents can discover the exact skill description, install coordinates, and how81 to update it. Add human-readable release notes or changelog prose that explains82 what changed, who should care, compatibility/migration impact, and the action83 required to receive it. A version number or generated diff is not release notes.844. **Validate locally.** Run focused tests, frontmatter/link/catalog validators,85 generated-artifact drift checks, repository-required tests, and diff hygiene.86 Re-run from a clean dependency state when release reproducibility matters.87 **Complete when:** every required local check passes and the diff contains only88 intended target files.895. **Review before publication.** Use the repository's required review gate. If90 `request-blocks-review` is installed and Blocks review is requested by the91 user or repository policy, load it and run review/fix/verify/re-review until92 the current head is clean. Never silently install a reviewer dependency.936. **Open the publication change.** Create the repository-standard branch,94 commit, and pull request only after scope is reviewed and authorization is95 present. State tests, release impact, discovery impact, and explicitly excluded96 external targets. **Complete when:** the PR URL and exact head exist.977. **Follow CI and review to convergence.** Distinguish queued acknowledgements98 from real reviews. Fix findings, rerun checks, push, and request current-head99 re-review as required. **Complete when:** required CI and review gates are100 green for the exact merge head.1018. **Merge and release.** Follow branch protection and repository release policy;102 do not treat merge as publication. Create or verify the version/tag/release and103 wait for deployment/indexing channels that the target contract names.104 Publish the human release notes with exact install/update guidance. Encourage105 affected users and agents to update without claiming or performing unrequested106 local synchronization.1079. **Verify external state from source.** Read back the main-branch skill, release,108 and catalog. Run installer/CLI discovery against the published repository and109 confirm exact name, description, source URL/type, and version where exposed.110 Test an isolated install; do not rely on a preexisting local copy or redirect.11110. **Synchronize requested local libraries.** Only when the user explicitly names112 a local-global or project-local target, follow [All-plane local113 synchronization](#all-plane-local-synchronization). Treat every scope,114 machine, agent, and native/manual channel as an independent target.11511. **Report staged completion.** Separate `verified`, `published`, `deferred`, and116 `out of scope`. A cache/index delay is pending, not failure or success. Name117 every explicitly requested external target and its independently verified118 state.119120## All-plane Local Synchronization121122Publishing and isolated install verification do not authorize changing the123user's real skill libraries. Enter this procedure only when the active request124explicitly names a local-global scope, project scope, machine, agent set, native125plugin, or manual/upload target.126127### Inventory every plane1281291. Read the installed inventory in machine-readable form for both scopes:130131 ```bash132 npx skills list --global --json133 npx skills list --json134 ```1351362. Record each skill's scope, source provenance, install path, managed/unmanaged137 status, copy/symlink form, and every agent path that consumes it. A shared138 canonical copy linked into several agents is one managed installation with139 several projections; copied directories can drift independently.140 Present a deduplicated target manifest before writes: `machine × scope/profile141 × agent/channel × physical path × mechanism`. “All supported agents” covers142 only this discovered set, not unknown profiles or guessed locations.1433. Discover native plugin/package channels from the target's own release contract.144 A plugin-native skill and a standalone skill with the same bare name are145 separate identities; do not replace or remove one to update the other.1464. Inventory manual planes separately: uploaded archives, downloaded files,147 browser-only agents, remote agents, containers, other machines, and clients the148 Skills CLI reports as unsupported. Never claim they were synchronized from a149 successful update on this machine.150151### Apply by ownership and scope152153- **CLI-managed global copy:** update the named skills without scope inference:154155 ```bash156 npx skills update <skill...> --global --yes157 ```158159- **CLI-managed project copy:** run from the exact project and specify project160 scope explicitly:161162 ```bash163 npx skills update <skill...> --project --yes164 ```165166- **Missing global copy across all supported agents:** add from the authoritative167 published source, preserving the repository's install form:168169 ```bash170 npx skills add <published-source> --skill <skill...> --global --agent '*' --yes171 ```172173 Use `--copy` only when the user or existing installation selected copied174 delivery. Do not silently convert copy to symlink or symlink to copy.175176- **Missing project copy:** run in the exact project, omit `--global`, and name177 the intended agents. Project installation may create or update lock metadata;178 include and verify it according to repository policy.179- **Unmanaged or provenance-less copy:** do not overwrite it as if managed. Show180 the exact path and proposed source, obtain approval for destructive replacement,181 then remove only that identity/scope and reinstall from the authoritative182 source. Preserve unrelated and namespaced skills.183- **Upstream deletion:** report a removal candidate; require separate explicit184 destructive approval before deleting any local skill.185- **Native plugin/package channel:** use that channel's marketplace/registry186 refresh and update commands, then read back its declared version and skill187 namespace. Do not use the generic Skills CLI as proof that a native plugin188 updated.189- **Manual/upload channel:** produce or fetch the released artifact, verify it,190 and give the user the replacement/upload action. If the agent cannot perform191 that UI action, report `manual action required`; never mark it updated.192- **Unsupported agent:** report the literal unsupported result and leave it193 `unsupported`. Use `deferred` only for an explicitly requested target that is194 temporarily unreachable. Do not fabricate a path or copy files into an195 undocumented folder.196197### Verify every requested plane1981991. Re-run scope inventories and confirm source provenance and all expected agent200 projections. `--agent '*'` means every agent supported by the installed CLI,201 not every agent that exists.2022. Compare installed bytes or a cryptographic hash with the authoritative203 published artifact when the channel exposes no trustworthy version. A command204 exiting zero is not freshness proof.205 Where no authoritative version/ref/digest is comparable, report freshness as206 `unknown`; do not infer it from a rewritten local timestamp or command success.2073. For native plugins, read back the exact installed version and namespace. For208 project scope, verify the consuming project sees the project copy rather than209 a higher-precedence global/plugin copy.2104. Restart or reload each affected agent/runtime when its loader caches skills;211 current-session discovery may remain stale until then.2125. Report a matrix with `scope × agent/channel × identity`: `updated`, `already213 current`, `manual action required`, `unsupported`, `deferred`, `failed`, or214 `out of scope`.215 Never collapse partial multi-agent success into “local libraries updated.”216217## Usage Examples218219```text220Publish this Agent Skill to the current repository. Discover its conventions,221write contract tests first, validate and review the current head, then merge,222release, verify installer discovery and provenance, and report any indexing lag.223Do not touch any other repository, private plugin, marketplace, website, mirror,224sidecar, canonical/generated copy, or local-global installation unless I225explicitly name it.226```227228```text229Publish this skill to the current public pack and also update the private plugin230repository I named. Treat those as separate targets, preview both scopes, verify231each release independently, and do not infer any additional mirror or sidecar.232```233234## Pitfalls235236- **Owner assumed from environment:** working credentials do not select a target.237- **Merge called release:** prove the tag/deploy/catalog and install path.238- **Branch copy called publication:** installer discovery must read the merged239 source, not an indexed feature branch or cache.240- **Silent external propagation:** mirrors, websites, private plugins, sidecars,241 and local-global installations require explicit user mention.242- **Root `SKILL.md`:** some installers stop discovery there; follow the target's243 actual multi-skill layout.244- **Description drift:** package README/catalog copy must match frontmatter where245 the target enforces it.246- **README/changelog treated as cleanup:** catalogue README, human release notes,247 and actionable update guidance are release artifacts, not optional follow-up.248- **Review of stale head:** only current-head evidence satisfies the gate.249- **Local copy used as proof:** verify published source and isolated install.250- **One plane called all planes:** global, project, native-plugin, copied,251 symlinked, manual/upload, remote, and unsupported clients have independent252 freshness and completion states.253- **Index cache ambiguity:** report the authoritative source separately from254 delayed third-party indexes.255256## Verification257258- [ ] Primary repository, owner, branch, layout, and release target were discovered.259- [ ] Tests failed before authoring and pass after implementation.260- [ ] Frontmatter, links, carried files, catalog, generators, and full checks pass.261- [ ] Repository/catalogue README lists the skill and exact install/update path.262- [ ] Human release notes explain outcomes, compatibility, and who should update.263- [ ] Published update guidance encourages adoption without mutating unrequested264 local targets.265- [ ] Required review is clean for the exact current head.266- [ ] Merge, release, and deployment/indexing states are reported separately.267- [ ] Main-branch source and release were read back.268- [ ] CLI discovery and isolated install report exact skill identity and provenance.269- [ ] Every explicitly requested local plane was inventoried before mutation.270- [ ] A deduplicated target manifest was presented before every local write.271- [ ] Managed updates preserved scope, source, agent set, and copy/symlink form.272- [ ] Upstream-missing skills are removal candidates requiring separate destructive273 confirmation, not ordinary update deletions.274- [ ] Without a comparable authoritative version/ref/digest, freshness is275 `unknown`, never inferred from command success or timestamps.276- [ ] Native, manual, remote, and unsupported channels have independent outcomes.277- [ ] Installed bytes/version/namespace were read back and affected runtimes were278 restarted or reloaded where required.279- [ ] Every user-mentioned external target has an independent verified state.280- [ ] No unmentioned private, external, mirror, website, sidecar, or local-global281 target was modified.
Run npx skillmds@latest add crissmoldovan/publish-agent-skill in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Publish an Agent Skill through a verified release. It is listed under AI & ML on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free. This skill is licensed under MIT.
crissmoldovan (@crissmoldovan) published this skill. Their other Agent Skills are listed on their SkillMD profile.