@claude-flow/deployment

Release management, CI/CD, and versioning module for Claude Flow v3.
Features
- Version Bumping: Automatic version management (major, minor, patch, prerelease)
- Changelog Generation: Generate changelogs from conventional commits
- Git Integration: Automatic tagging and committing
- NPM Publishing: Publish packages with tag support (alpha, beta, latest)
- Pre-Release Validation: Lint, test, build, and dependency checks
- Dry Run Mode: Test releases without making changes
Installation
npm install @claude-flow/deployment
Quick Start
Prepare a Release
import { prepareRelease } from '@claude-flow/deployment';
const result = await prepareRelease({
bumpType: 'patch',
generateChangelog: true,
createTag: true,
commit: true
});
console.log(`Released ${result.newVersion}`);
Publish to NPM
import { publishToNpm } from '@claude-flow/deployment';
const result = await publishToNpm({
tag: 'latest',
access: 'public'
});
console.log(`Published ${result.packageName}@${result.version}`);
Validate Package
import { validate } from '@claude-flow/deployment';
const result = await validate({
lint: true,
test: true,
build: true,
checkDependencies: true
});
if (!result.valid) {
console.error('Validation failed:', result.errors);
}
API Reference
ReleaseManager
import { ReleaseManager } from '@claude-flow/deployment';
const manager = new ReleaseManager();
const result = await manager.prepareRelease({
bumpType: 'minor',
version: '2.0.0',
channel: 'beta',
generateChangelog: true,
createTag: true,
commit: true,
dryRun: false,
skipValidation: false,
tagPrefix: 'v',
changelogPath: 'CHANGELOG.md'
});
Version Bumping
await manager.prepareRelease({ bumpType: 'patch' });
await manager.prepareRelease({ bumpType: 'minor' });
await manager.prepareRelease({ bumpType: 'major' });
await manager.prepareRelease({ bumpType: 'prerelease', channel: 'alpha' });
await manager.prepareRelease({ bumpType: 'prerelease', channel: 'alpha' });
Changelog Generation
Generates changelog from conventional commits:
git commit -m "feat(api): add new endpoint"
git commit -m "fix(auth): resolve login issue"
git commit -m "feat(ui): update design BREAKING CHANGE: new layout"
Generated changelog:
## [2.0.0] - 2026-01-04
### BREAKING CHANGES
- **ui**: update design BREAKING CHANGE: new layout
### Features
- **api**: add new endpoint
- **ui**: update design
### Bug Fixes
- **auth**: resolve login issue
Publisher
import { Publisher } from '@claude-flow/deployment';
const publisher = new Publisher();
const result = await publisher.publishToNpm({
tag: 'latest',
access: 'public',
dryRun: false,
registry: 'https://registry.npmjs.org/',
otp: '123456',
skipBuild: false,
buildCommand: 'npm run build'
});
const exists = await publisher.checkVersionExists('my-package', '1.0.0');
const latest = await publisher.getLatestVersion('my-package', 'latest');
const authenticated = await publisher.verifyAuth();
const tarball = await publisher.pack('./dist');
Validator
import { Validator } from '@claude-flow/deployment';
const validator = new Validator();
const result = await validator.validate({
lint: true,
test: true,
build: true,
checkDependencies: true,
checkGitStatus: true,
lintCommand: 'npm run lint',
testCommand: 'npm test',
buildCommand: 'npm run build'
});
console.log('Valid:', result.valid);
console.log('Errors:', result.errors);
console.log('Warnings:', result.warnings);
console.log('Checks:', result.checks);
Complete Release Workflow
import { Validator, ReleaseManager, Publisher } from '@claude-flow/deployment';
async function release(version: string, tag: string) {
console.log('Validating package...');
const validator = new Validator();
const validation = await validator.validate();
if (!validation.valid) {
console.error('Validation failed:', validation.errors);
process.exit(1);
}
console.log('Preparing release...');
const manager = new ReleaseManager();
const release = await manager.prepareRelease({
version,
generateChangelog: true,
createTag: true,
commit: true
});
if (!release.success) {
console.error('Release preparation failed:', release.error);
process.exit(1);
}
console.log('Publishing to npm...');
const publisher = new Publisher();
const publish = await publisher.publishToNpm({
tag,
access: 'public'
});
if (!publish.success) {
console.error('Publish failed:', publish.error);
process.exit(1);
}
console.log(`Successfully released ${publish.packageName}@${publish.version}`);
}
release('2.0.0', 'latest');
CLI Usage
npx @claude-flow/deployment release --version 2.0.0 --changelog --tag
npx @claude-flow/deployment publish --tag latest --access public
npx @claude-flow/deployment validate
Dry Run Mode
Test releases without making changes:
await prepareRelease({
bumpType: 'minor',
dryRun: true
});
await publishToNpm({
tag: 'beta',
dryRun: true
});
Channel/Tag Strategy
alpha: Early development versions (1.0.0-alpha.1)
beta: Feature complete, testing (1.0.0-beta.1)
rc: Release candidate (1.0.0-rc.1)
latest: Stable production release (1.0.0)
await prepareRelease({ bumpType: 'prerelease', channel: 'alpha' });
await publishToNpm({ tag: 'alpha' });
await prepareRelease({ bumpType: 'prerelease', channel: 'beta' });
await publishToNpm({ tag: 'beta' });
await prepareRelease({ bumpType: 'patch' });
await publishToNpm({ tag: 'latest' });
Environment Variables
export NPM_TOKEN="your-token"
export NPM_CONFIG_REGISTRY="https://registry.npmjs.org/"
Error Handling
try {
const result = await prepareRelease({ bumpType: 'minor' });
if (!result.success) {
console.error('Release failed:', result.error);
console.warn('Warnings:', result.warnings);
}
} catch (error) {
console.error('Unexpected error:', error);
}
License
MIT