Skip to content
ARW Release Manager logo

ARW Release Manager

Build and release manager for ARW CLI package. Handles local development, testing, building, documentation, version tagging, and publishing to npm and crates.io. Use when developing locally, running tests, building packages, releasing new versions, or publishing packages.

SKILL.md

Full skill instructions

ARW Release Manager

Build, test, and release orchestration for the ARW (Agent-Ready Web) CLI package supporting multiple build targets and publishing to npm and crates.io.

Build Targets

The ARW CLI supports three distinct build targets:

TargetCommandOutputUse Case
napi-rsnpm run buildarw-cli.darwin-arm64.nodeNode.js native addon (require in JS)
Standalone CLIcargo build --release --features nativetarget/​release/​arwExecutable binary
WASMnpm run build:wasmwasm-pkg/Browser/​bundler usage

Prerequisites

  • Node.js 18+ and npm 8+
  • Rust toolchain (rustc, cargo) for Rust builds
  • Git repository
  • wasm-pack (for WASM builds): cargo install wasm-pack

For publishing only:

  • npm account with publish access
  • crates.io account with API token

What This Skill Does

  1. Local development - Watch mode, hot reload, iterative builds
  2. Testing - Unit tests, integration tests, WASM tests, linting
  3. Building - napi-rs native addon, standalone CLI, and WASM builds
  4. Pre-release validation - Git status, version checks, secrets scanning
  5. Documentation - CHANGELOG generation, API docs
  6. Version management - Semantic versioning, git tagging
  7. Publishing - npm publish, cargo publish with dry-run validation

Quick Start

Local Development (No Publishing)

# Build napi-rs native addon (Node.js bindings)
npm install && npm run build

# Build standalone CLI binary
cargo build --release --features native
./​target/​release/​arw --version

# Run tests
npm test && npm run test:wasm && cargo test

Full Release Workflow

# 1. Verify, test, and build (dry run)
./​scripts/​quick-publish.sh --dry-run

# 2. If checks pass, publish
./​scripts/​quick-publish.sh

Build Targets Explained

1. napi-rs Native Addon (Node.js)

This builds a native Node.js addon using napi-rs. The result is a .node file that can be require()'d from JavaScript.

npm run build                    # Release build
npm run build:debug              # Debug build (faster)

# Test the module
node -e "const cli = require('./​index.js'); console.log(cli.getVersionInfo());"

Exports: validateManifest, checkCompatibility, generateManifest, getVersionInfo

2. Standalone CLI Binary

This builds a standalone executable that can be run directly from the command line.

cargo build --release --features native

# Run directly
./​target/​release/​arw --version
./​target/​release/​arw --help
./​target/​release/​arw validate path/​to/​manifest.json
./​target/​release/​arw init
./​target/​release/​arw generate

CLI Commands: init, generate, sitemap, validate, serve, scan, policy, robots, watch, actions, build

3. WASM Build

For browser and bundler usage.

npm run build:wasm              # Node.js target
npm run build:wasm:web          # Browser target
npm run build:wasm:bundler      # Bundler target

# Test WASM
npm run test:wasm

Local Development Guide

Node.js Native Addon Development

# Install dependencies
npm install

# Build native addon (napi-rs)
npm run build              # Release
npm run build:debug        # Debug (faster iteration)

# Test module loading
node -e "const {validateManifest, getVersionInfo} = require('./​index.js'); console.log(getVersionInfo());"

# Link for testing in other projects
npm link

Standalone CLI Development

# Debug build (fast compilation)
cargo build --features native

# Run without installing
cargo run --features native -- --version
cargo run --features native -- --help
cargo run --features native -- validate ./​test-manifest.json

# Release build
cargo build --release --features native
./​target/​release/​arw --version

# Install globally
cargo install --path . --features native
arw --version

# Watch mode (requires cargo-watch)
cargo install cargo-watch
cargo watch -x "run --features native -- --help"

WASM Development

# Build WASM
npm run build:wasm

# Run WASM tests
npm run test:wasm

Development Workflow

  1. Make code changes in src/
  2. Run tests: cargo test / npm run test:wasm
  3. Build target you need:
    • Node.js addon: npm run build
    • Standalone CLI: cargo build --release --features native
    • WASM: npm run build:wasm
  4. Test locally
  5. Repeat

Testing

Node.js Tests

# Run Node.js native tests
npm test

# Run WASM-specific tests
npm run test:wasm

Rust Tests

# Format check
cargo fmt --check

# Linting with clippy
cargo clippy -- -D warnings

# Run all tests
cargo test

# Run with output visible
cargo test -- --nocapture

# All checks
cargo fmt --check && cargo clippy -- -D warnings && cargo test

Building

napi-rs Native Addon

# Release build (optimized)
npm run build

# Debug build (faster compilation)
npm run build:debug

Output: arw-cli.<platform>.node + index.js + index.d.ts

Standalone CLI Binary

# Debug build
cargo build --features native

# Release build (optimized)
cargo build --release --features native

Output: target/​release/​arw or target/​debug/​arw

WASM Builds

# Node.js WASM
npm run build:wasm

# Browser WASM
npm run build:wasm:web

# Bundler WASM
npm run build:wasm:bundler

Output: wasm-pkg/​nodejs/, wasm-pkg/​web/, wasm-pkg/​bundler/

Cross-Platform Standalone CLI Builds

cargo build --release --features native --target x86_64-unknown-linux-gnu
cargo build --release --features native --target x86_64-apple-darwin
cargo build --release --features native --target aarch64-apple-darwin
cargo build --release --features native --target x86_64-pc-windows-msvc

Pre-Release Validation

Run before any release:

./​scripts/​verify-package.sh

This checks:

  • package.json validity and required fields
  • Semantic version format
  • Built files exist
  • CLI executables have shebangs
  • No hardcoded secrets
  • Documentation files present
  • Package size reasonable

Version Management

Semantic Versioning Rules

Change TypeVersion BumpExample
Breaking changesMAJOR1.0.0 → 2.0.0
New features (backwards compatible)MINOR1.0.0 → 1.1.0
Bug fixesPATCH1.0.0 → 1.0.1

Bump Version

# TypeScript - auto-bump in package.json
npm version patch --no-git-tag-version  # or minor/​major

# Rust - manual edit Cargo.toml
# Change: version = "x.y.z"

Update CHANGELOG

Use Keep a Changelog format. See resources/​templates/​CHANGELOG.template.md.

# Generate commit log since last tag
git log $(git describe --tags --abbrev=0)..HEAD --oneline

Publishing

npm

# Check login
npm whoami

# Preview package contents
npm pack --dry-run

# Dry run publish
npm publish --dry-run --access public

# Publish for real
npm publish --access public

# Verify
npm view arw-cli

crates.io

# Login (one-time setup)
cargo login

# Dry run
cargo publish --dry-run

# Publish
cargo publish

# Verify
cargo search arw-cli

Available Scripts

ScriptPurpose
scripts/​build-all.shBuild all packages
scripts/​build-all.sh --devDevelopment build only
scripts/​build-all.sh --releaseProduction release build
scripts/​verify-package.shPre-release validation
scripts/​quick-publish.sh --dry-runPreview release
scripts/​quick-publish.shFull release workflow
scripts/​quick-publish.sh --skip-testsRelease without tests
scripts/​quick-publish.sh --npm-onlyPublish to npm only
scripts/​quick-publish.sh --cargo-onlyPublish to crates.io only

Troubleshooting

npm Issues

403 Forbidden
  • Check npm whoami - must be logged in
  • Verify package name isn't taken
  • Ensure --access public for scoped packages
Version Already Exists
  • npm doesn't allow republishing same version
  • Bump version and try again
EPERM / Permission Denied
  • Fix npm prefix: npm config set prefix ~/​.npm-global
  • Or use sudo (not recommended)

Cargo Issues

Not Logged In
  • Run cargo login with API token from crates.io
  • Token stored in ~/​.cargo/​credentials.toml
Version Already Published
  • crates.io doesn't allow version overwrites
  • Must bump version
Missing Required Fields
  • Cargo.toml needs: name, version, edition, description, license, repository

Git Issues

Dirty Working Tree
  • Commit or stash changes before release
  • git stash or git add -A && git commit
Tag Already Exists
  • Delete and recreate: git tag -d v1.0.0 && git tag v1.0.0
  • Or use different version

Advanced Configuration

See docs/​ADVANCED.md for:

  • CI/​CD integration with GitHub Actions
  • Multi-platform release builds
  • Automated changelog generation
  • GPG signing releases
  • Pre-release channels (alpha, beta, rc)

Resources

More skills from majiayu000

xiaohongshu logo
majiayu000/claude-arsenal

xiaohongshu

xiaohongshu

286 148
View
agent-task-conductor logo
majiayu000/claude-skill-registry

agent-task-conductor

Conduct multi-agent task orchestration and workflow coordination.

663 1
View
conductor-setup logo
majiayu000/claude-skill-registry

conductor-setup

Initialize project with Conductor artifacts (product definition,

663 1
View
animation-designer logo
majiayu000/claude-skill-registry

animation-designer

Expert in web animations, transitions, and motion design using Framer Motion and CSS

663 1
View
diagramming logo
majiayu000/claude-skill-registry

diagramming

Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...

663 1
View
h3-pg logo
majiayu000/claude-skill-registry-data

h3-pg

PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.

23 1
View
conductor-development logo
majiayu000/claude-skill-registry

conductor-development

Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...

663 1
View
conductor-status logo
majiayu000/claude-skill-registry

conductor-status

Display project status, active tracks, and next actions

663 1
View
dockerization logo
majiayu000/claude-skill-registry

dockerization

Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.

663 1
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View