package-publish
Publish private npm packages to the local registry using lpr publish or npm publish, and manage published versions
Best use case
package-publish is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Publish private npm packages to the local registry using lpr publish or npm publish, and manage published versions
Teams using package-publish should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/package-publish/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How package-publish Compares
| Feature / Agent | package-publish | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Publish private npm packages to the local registry using lpr publish or npm publish, and manage published versions
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# package-publish
Use this skill to publish, list, and unpublish private npm packages in the local registry.
## Publishing a package
### Using the lpr CLI (recommended for CI)
```bash
lpr publish ./dist/my-package-1.0.0.tgz
```
Reads the tarball, validates it, stores it in `lpr-packages/published/`, and updates the registry database.
### Using npm publish
```bash
npm publish --registry http://localhost:4873
```
Uses the standard npm publish protocol. Equivalent result to `lpr publish`.
### Using pnpm publish
```bash
pnpm publish --registry http://localhost:4873 --no-git-checks
```
## Publish output
```
reading tarball...
name @myco/ui
version 2.1.0
scope @myco
size 142 KB
shasum a1b2c3d4...
storing tarball -> ./lpr-packages/published/@myco/ui/2.1.0.tgz
updating metadata in registry database...
+ @myco/ui@2.1.0
published to http://localhost:4873 in 18ms
```
## Scoped packages
Packages with scopes (e.g., `@myco/ui`) are stored under their scope directory:
```
lpr-packages/published/@myco/ui/2.1.0.tgz
```
To install scoped packages, consumers need the scope mapped in `.npmrc`:
```
@myco:registry=http://localhost:4873
```
This is auto-generated on the Settings page in the web dashboard.
## Listing published packages
```bash
lpr list
```
Output includes: NAME, VERSION, SCOPE, SIZE, PUBLISHED. Or view in the web dashboard at http://localhost:3600.
## Unpublishing a version
```bash
lpr unpublish @myco/ui@2.1.0
```
Removes the tarball from disk and the entry from the registry database. The version will no longer resolve.
## CI/CD workflow
### GitHub Actions example
```yaml
- name: Build package
run: pnpm run build
- name: Publish to local registry
run: lpr publish ./dist/my-package-${{ env.VERSION }}.tgz
env:
LPR_PORT: 4873
```
### Versioning convention
lpr enforces no version uniqueness constraint by default. Re-publishing the same `name@version` will overwrite the existing tarball. If you want to prevent overwriting, check first:
```bash
# Check if version exists
lpr list | grep "@myco/ui.*2.1.0" && echo "already published"
```
## Storage layout
```
lpr-packages/
published/
@myco/
ui/
2.1.0.tgz
2.0.3.tgz
shared-utils/
3.0.0.tgz
```
## Publish requirements
- Tarball must be a valid npm package (contains package.json at root)
- `name` and `version` fields are required in package.json
- Tarball file must be readable and non-empty
- Registry must be running (`lpr start`) before publishing via npm/pnpm
## Consuming published packages
After publishing `@myco/ui@2.1.0`, any project with the registry configured can install it:
```bash
# With scope in .npmrc:
npm install @myco/ui
# Or explicitly:
npm install @myco/ui --registry http://localhost:4873
```
The package resolves from the local registry with <5ms latency (served from disk, no network).Related Skills
social-publishing
Publish content to Twitter/X, LinkedIn, and Instagram via the content-calendar API. Use when asked to post to social media, schedule a tweet, publish a LinkedIn update, or post to Instagram through the content-calendar system. Triggers include "post to Twitter", "publish on LinkedIn", "Instagram post", "social media post", or any request to push content to a social platform.
Skill: Uptime Monitoring
## Overview
Skill: Status Page
## Overview
Skill: unit-conversion
## Overview
Skill: recipe-scaler
## Overview
reading-list
Operate the reading-list API to save, manage, tag, search, and export articles.
email-digest
Configure, test, and troubleshoot the reading-list daily email digest delivered via nodemailer.
websocket-realtime
Use the WebSocket connection in poll-builder to receive live vote updates. Use when you need to stream real-time poll results, monitor a poll for new votes, or build a live dashboard. Triggers include "live results", "real-time updates", "stream votes", "watch poll", or "WebSocket".
poll-builder
Self-hosted poll creation tool with real-time results. Use when you need to create a poll, check vote counts, close a poll, export results, or get the shareable link for a poll. Triggers include "create poll", "vote", "poll results", "survey", "collect votes", "share poll", or any task involving polling or voting.
Skill: personal-finance
## Overview
Skill: csv-import
## Overview
Skill: Syntax Highlighting
## Purpose