registry-publish
Skill1 starsChanged 8 days agoMITView on GitHub
Publish a package to a registry safely — prepare, check, dry-run, confirm, publish, then verify the published artifact actually installs and works. Use when shipping a new version of a package. npm first. No publish happens without the user's explicit written confirmation. Only invoke via the orcinus router.
- Reads credentials
- Installs packages
In this repository35 other files it gives its agents.
- accessibilitySkill
- api-and-interface-designSkill
- architectureSkill
- ask-questions-if-underspecifiedSkill
- breaking-changeSkill
- buildSkill
- codebase-knowledge-builderSkill
- database-designerSkill
- diagnosing-bugsSkill
- finalizeSkill
- frontend-architectureSkill
- frontend-data-contractsSkill
- frontend-optimistic-mutationsSkill
- handoffSkill
- i18nSkill
- idea-calibrateSkill
- idea-captureSkill
- incomplete-refactorSkill
- independent-reviewSkill
- issue-triageSkill
- mcp-builderSkill
- monitoring-observabilitySkill
- monitoringSkill
- mutation-testing-pythonSkill
- mutation-testingSkill
- orcinusSkill
- orcinus-verifySkill
- performance-optimizationSkill
- refactorSkill
- scaffoldSkill
- security-reviewSkill
- skill-creatorSkill
- visual-regressionSkill
- wazaSkill
- webapp-testingSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 6 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
No publish without the user's explicit written confirmation.
- Distinctive: line 15
Never publish from a dirty tree.
- Distinctive: line 16
Never publish a version that already exists on the registry.
- Distinctive: line 18
Verify the published artifact after publishing: install it in a clean directory and run it.
- Distinctive: line 26
Write the changelog entry for this version: what changed, in the user's words.
- Very specific: line 28
No secrets in the package.
- Very specific: line 45
Read the file list. It must contain exactly the built output, the README, the LICENSE, and package.json — and nothing else.
- Distinctive: line 68
Import the package's public entry points and run them against known inputs.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
REGISTRY-PUBLISH — ship the package, and prove the shipped one works
Publishing is the one step in the lifecycle that cannot be undone cleanly. You cannot reliably unpublish: npm allows unpublishing only within 72 hours and only under restrictions, and a version number, once published, can never be reused. So all the safety lives before the publish, not after it. Release tooling does not do this step for you: release-please writes release notes and tags, it does not publish to a registry. This skill is the missing step.
Rules
- No publish without the user's explicit written confirmation. A version bump is not a confirmation.
- Never publish from a dirty tree. Commit first, then publish from the commit.
- Never publish a version that already exists on the registry. Check first.
- The pack list is the contract: read it before publishing, not after. If it contains a test, a secret, or source that should not ship, stop.
- Verify the published artifact after publishing: install it in a clean directory and run it. A publish that nobody verified is a rumour.
- A check that did not run is never reported as passed.
Steps, in order
1. Prepare
- Bump the version (semver: breaking change = major, new feature = minor, fix = patch). The version in
package.jsonis the version that ships. - Write the changelog entry for this version: what changed, in the user's words.
package.jsonmust declare:name,version,license, entry points (mainand/orexports), and afilesallowlist of exactly what ships (for example["dist/src", "README.md", "LICENSE"]). Nofilesfield means everything not ignored ships — including tests.- No secrets in the package. Run
security-reviewon the pack list.
2. Check
- The four commands are green (build, lint, typecheck, test).
- Pin the registry explicitly (
--registry https://registry.npmjs.org, or the project's.npmrc— never rely on the ambient default), then check whether the exact version exists. Query the exact version, not the latest, or a different version's existence will mislead you. Capture the exit code AND stderr: the three empty-stdout cases are different.E404(version not found) = free to publish.FETCH_ERROR/ timeout /E401/E403= INCOMPLETE, stop — the registry is unreachable or the credentials are wrong, and an empty answer proves nothing. Do not read it as "free to publish".
- Build the exact artifact once:
npm pack. Record its sha256, install THAT tarball in a clean directory and smoke-test it (Step 6 verifies the published one the same way). Publish that exact artifact, never a second build. - The git tree is clean and the version bump is committed.
3. Dry-run
npm pack --dry-runRead the file list. It must contain exactly the built output, the README, the LICENSE, and package.json — and nothing else. No tests, no source, no .env, no config.
4. Human gate
Show the user the version, the changelog entry, the dry-run file list, and the tarball sha256 from Step 2. Publish only after their explicit written confirmation.
5. Publish
npm publish ./<name>-<version>.tgzPublish the exact tarball built and smoke-tested in Step 2, never a fresh build. Use --provenance where the registry and CI support it, so the published artifact is tied to its build.
6. Verify after publish
In a clean directory, with nothing from the project in it:
npm install <name>@<version>
node -e "import('<name>/<entry>').then(m => console.log(m))"Import the package's public entry points and run them against known inputs. The outputs must match the expected values. If they do not, the publish is broken — say so immediately, do not wait for a user to find it.
Report
Return the report in this form:
- Name, version, changelog entry.
- The four commands and their results.
- The registry check (version does not exist yet) and its output.
- The dry-run file list, in full.
- Who confirmed the publish, and when.
- The publish command and its output.
- The post-publish verification: install output and the smoke-test results.
Scope
npm first. Other registries (PyPI, Maven, crates.io) are out of scope for v1 — the checklist is the same shape, but the commands differ, and this skill does not guess them. This skill publishes a package; it does not cut the release (that is finalize with release-please) and it does not monitor the package afterwards (that is monitoring-observability).
Sources
Written from scratch for ORCINUS. No ready skill was found for this in the 0–100 research: release-please explicitly does not publish to package registries, and no verified candidate for registry publishing was found. The npm commands used here are the registry's own documented commands, verified by running them in the eval.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

