Npm publish
Persona-based AI skill ecosystem — 7 personas, 14 orchestration skills for outbound campaigns, publishing, security, macOS automation, and full-stack dev. Works with Claude Code, Claude Chat, and Agent SDK. AGPL v3 + commercial license.
npx -y skills add 0xjitsu/jitsu-skills --skill npm-publishAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 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.
What its author says it does
Copied from the file, not written here
Full npm publish pipeline for scoped @0xjitsu packages. Runs pre-flight validation (package.json fields, .npmrc scope, build, tests, dry-run pack), interactive version bump (patch/minor/major), publishes to npm with public access, creates a git tag and GitHub release, then verifies the published package is installable. Triggered when the user asks to publish an npm package, release a new version, ship to npm, or cut a release.
The file declares its own license as AGPL-3.0-or-later. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
6.3 KB, as published. Nobody here has run it
npm-publish
Ship a package to the npm registry with full pre-flight checks, version management, and post-publish verification.
When to Trigger
Activate this skill when the user:
- Asks to publish an npm package or ship to npm
- Wants to release a new version or cut a release
- Says "bump version and publish" or "push to registry"
- Needs to prepare a package for distribution
Pre-Flight Checks
Run every check before attempting to publish. Fail fast on any blocker.
1. Validate package.json
Verify the following fields exist and are non-empty:
| Field | Required | Notes |
|---|---|---|
name | Yes | Must be scoped: @0xjitsu/<package> |
version | Yes | Must follow semver |
description | Yes | One-line summary for npm search |
license | Yes | Should be AGPL-3.0-or-later unless overridden |
files | Yes | Whitelist of published files (e.g., ["dist", "bin"]) |
bin | If CLI | Entry point for CLI packages |
main/exports | Yes | Package entry point |
repository | Recommended | Links npm page to GitHub |
keywords | Recommended | Improves discoverability |
If any required field is missing, report it and stop.
2. Verify .npmrc Scope
Check that .npmrc (project root or ~/.npmrc) contains:
@0xjitsu:registry=https://registry.npmjs.org/
If missing, offer to create it. Verify npm auth:
npm whoami
If not authenticated, instruct the user to run npm login.
3. Build
If package.json contains a build script:
npm run build
Fail the pipeline if the build exits non-zero. Verify the output directory (dist/, build/, etc.) exists and is non-empty.
4. Test
If package.json contains a test script (and it is not the default echo "Error: no test specified"):
npm test
Hard rule: Never publish if tests fail. No exceptions.
5. Dry-Run Pack
npm pack --dry-run 2>&1
Review the file list. Flag and halt if any of these appear:
.env,.env.*(secrets)node_modules/(bloat).git/(repository internals)*.pem,*.key(certificates/keys)credentials.json,serviceAccountKey.json(auth files)- Any file larger than 1 MB (warn, don't halt)
Report the total packed size. Warn if over 5 MB.
Version Bump Workflow
Ask the User
Present the current version and ask:
Current version:
X.Y.ZWhat type of release?
- patch (X.Y.Z+1) -- bug fixes, no new features
- minor (X.Y+1.0) -- new features, backward compatible
- major (X+1.0.0) -- breaking changes
Bump
npm version <patch|minor|major> --no-git-tag-version
Using --no-git-tag-version because we create the tag manually after publish succeeds.
Update CHANGELOG
Invoke the changelog-gen skill if available. If not available, prompt the user to write a changelog entry manually. The entry must exist before publishing.
Commit the Version Bump
git add package.json package-lock.json CHANGELOG.md
git commit -m "release: v<new-version>"
Publish
Execute
Ask for explicit confirmation before running:
npm publish --access public
--access publicis required for scoped packages to be publicly visible.- Never use
--force. If publish fails, diagnose and fix the root cause. - If the version already exists on the registry, bump again -- do not force overwrite.
Create Git Tag
git tag v<version>
Push
git push origin <current-branch>
git push origin v<version>
Create GitHub Release
Write the changelog entry for this version to a temp file, then:
gh release create v<version> \
--title "v<version>" \
--notes-file /tmp/CHANGELOG_ENTRY.md
Clean up the temp file after.
Post-Publish Verification
Confirm on Registry
npm view @0xjitsu/<package>@latest version
Verify the returned version matches what was just published.
Test Install
TMPDIR=$(mktemp -d)
cd "$TMPDIR"
npm init -y --silent
npm install @0xjitsu/<package>@<version>
If the package has a bin entry:
npx @0xjitsu/<package> --help
Verify it runs without error. Clean up the temp directory.
Report
Print a summary:
Published: @0xjitsu/<package>@<version>
Registry: https://www.npmjs.com/package/@0xjitsu/<package>
Git tag: v<version>
Release: https://github.com/0xjitsu/<repo>/releases/tag/v<version>
Safety Rules
| Rule | Rationale |
|---|---|
Never use npm publish --force | Can overwrite existing versions, breaking downstream consumers |
| Always dry-run first | Catches accidentally included secrets or bloat |
| Never publish if tests fail | Broken packages erode trust |
Ask confirmation before npm publish | Publishing is irreversible (npm unpublish has a 72h window) |
Never publish .env or credentials | Security violation -- halt immediately if detected in pack |
| Create tag only after successful publish | Prevents tags pointing to unpublished versions |
Use --access public for scoped packages | Scoped packages default to restricted on npm |
Rollback
If something goes wrong after publish:
npm unpublish @0xjitsu/<package>@<version>(only within 72 hours)git tag -d v<version>andgit push origin :refs/tags/v<version>- Delete the GitHub release:
gh release delete v<version> --yes - Revert the version bump commit if needed