# Publishing DevClaw to npm ## Package Details - **Name:** `@laurentenhoor/devclaw` - **npm Profile:** https://www.npmjs.com/settings/laurentenhoor/packages - **Package URL:** https://www.npmjs.com/package/@laurentenhoor/devclaw ## Prerequisites 1. **NPM Access Token** is configured as `NPM_ACCESS_TOKEN` secret in GitHub repository settings 2. **npm account:** laurentenhoor 3. **Node.js 20+** installed locally for testing ## Publishing Methods ### Method 1: Automated (Recommended) Publishing happens automatically via GitHub Actions when a release is created: 1. **Create a new release** on GitHub: ```bash # Tag format: v{version} (e.g., v0.1.0) git tag v0.1.0 git push origin v0.1.0 ``` 2. **Create GitHub Release:** - Go to: https://github.com/laurentenhoor/devclaw/releases/new - Choose the tag you just pushed - Write release notes - Click "Publish release" 3. **Monitor the workflow:** - GitHub Actions will automatically build and publish to npm - Check: https://github.com/laurentenhoor/devclaw/actions ### Method 2: Manual Workflow Trigger Trigger the workflow manually from GitHub Actions: 1. Go to: https://github.com/laurentenhoor/devclaw/actions/workflows/npm-publish.yml 2. Click "Run workflow" 3. Enter the tag name (e.g., `v0.1.0`) 4. Click "Run workflow" ### Method 3: Local Publishing (Not Recommended) For testing or emergencies only: 1. **Login to npm:** ```bash npm login # Username: laurentenhoor # Password: # Email: ``` 2. **Test the package:** ```bash npm install npm run build npm pack --dry-run ``` 3. **Publish:** ```bash npm publish --provenance --access public ``` ## Testing Before Publishing ### Dry Run Test ```bash # Install dependencies npm install # Build the package npm run build # Check what will be included npm pack --dry-run # This will show: # - Package size # - Files that will be included # - Tarball contents ``` ### Verify Package Contents ```bash # Create a tarball locally npm pack # Extract and inspect tar -xzf laurentenhoor-devclaw-0.1.0.tgz ls -la package/ ``` ### Expected Package Contents The published package should include: - `dist/` - Compiled JavaScript files - `roles/` - Default role templates - `docs/` - Documentation files - `package.json` - Package metadata - `README.md` - Package documentation - `.npmignore` - Publish exclusions The package should **NOT** include: - `*.ts` source files (except `.d.ts`) - `node_modules/` - `.git/` - `tsconfig.json` - Development files ## Version Management ### Bumping Version Before creating a release, update the version in `package.json`: ```bash # Patch release (0.1.0 -> 0.1.1) npm version patch # Minor release (0.1.0 -> 0.2.0) npm version minor # Major release (0.1.0 -> 1.0.0) npm version major ``` This automatically: - Updates `package.json` - Creates a git commit - Creates a git tag Then push: ```bash git push && git push --tags ``` ## Verifying Publication After publishing, verify: 1. **Package appears on npm:** - https://www.npmjs.com/package/@laurentenhoor/devclaw 2. **Test installation:** ```bash # In a temporary directory mkdir test-install && cd test-install npm install @laurentenhoor/devclaw ``` 3. **Check package contents:** ```bash ls -la node_modules/@laurentenhoor/devclaw/ ``` ## Troubleshooting ### Build Fails ```bash # Clean and rebuild rm -rf dist/ node_modules/ npm install npm run build ``` ### Publish Fails - Already Published If the version already exists on npm, you need to bump the version: ```bash npm version patch # or minor/major git push && git push --tags ``` ### Publish Fails - Authentication Check that `NPM_ACCESS_TOKEN` secret is correctly set in GitHub: - Go to: https://github.com/laurentenhoor/devclaw/settings/secrets/actions - Verify `NPM_ACCESS_TOKEN` exists and is valid Generate a new token if needed: - https://www.npmjs.com/settings/laurentenhoor/tokens - Token type: "Automation" (for CI/CD) - Copy token and update GitHub secret ### Provenance Fails If `--provenance` fails: - Ensure `id-token: write` permission is set in workflow - Check that GitHub Actions is enabled - Verify repository settings allow provenance ## Post-Publishing Checklist - [ ] Verify package appears on npm - [ ] Test installation in a fresh project - [ ] Update CHANGELOG.md with release notes - [ ] Announce release in project channels - [ ] Close related issues/PRs - [ ] Update documentation if needed ## Support For issues with publishing: - Check GitHub Actions logs - Review npm publish documentation - Contact package maintainer: laurentenhoor