package-publish

Publish private npm packages to the local registry using lpr publish or npm publish, and manage published versions

7 stars

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

$curl -o ~/.claude/skills/package-publish/SKILL.md --create-dirs "https://raw.githubusercontent.com/heldernoid/agentic-build-templates/main/projects/developer-tools/local-package-registry/skills/package-publish/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/package-publish/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How package-publish Compares

Feature / Agentpackage-publishStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/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

7
from heldernoid/agentic-build-templates

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

7
from heldernoid/agentic-build-templates

## Overview

Skill: Status Page

7
from heldernoid/agentic-build-templates

## Overview

Skill: unit-conversion

7
from heldernoid/agentic-build-templates

## Overview

Skill: recipe-scaler

7
from heldernoid/agentic-build-templates

## Overview

reading-list

7
from heldernoid/agentic-build-templates

Operate the reading-list API to save, manage, tag, search, and export articles.

email-digest

7
from heldernoid/agentic-build-templates

Configure, test, and troubleshoot the reading-list daily email digest delivered via nodemailer.

websocket-realtime

7
from heldernoid/agentic-build-templates

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

7
from heldernoid/agentic-build-templates

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

7
from heldernoid/agentic-build-templates

## Overview

Skill: csv-import

7
from heldernoid/agentic-build-templates

## Overview

Skill: Syntax Highlighting

7
from heldernoid/agentic-build-templates

## Purpose