ReleaseCraft.CLI
0.5.3
dotnet tool install --global ReleaseCraft.CLI --version 0.5.3
dotnet new tool-manifest
dotnet tool install --local ReleaseCraft.CLI --version 0.5.3
#tool dotnet:?package=ReleaseCraft.CLI&version=0.5.3
nuke :add-package ReleaseCraft.CLI --version 0.5.3
π― ReleaseCraft
ReleaseCraft is an automated release notes generator that transforms GitHub pull requests into beautifully formatted release notes. Stop writing release notes manuallyβlet ReleaseCraft do it for you!
π Visit our website | π Documentation | π¬ Community
π¦ Current Release Status
Production Ready (v1.0):
- β GitHub connector with Octokit
- β Markdown release notes generator
- β CLI console application
- β Integration tests with real GitHub API
- β Comprehensive documentation
- β Marketing website with interactive demos
In Development (Code Exists, Not Production):
- π AI summarization (OpenAI GPT-4)
- π Multiple output formats (JSON, HTML, CSV)
Planned Features:
- β³ Config file support (.releasecraftrc.json)
- β³ GitHub Action automation
- β³ NuGet package publication
- β³ GitHub Marketplace listing
- β³ Web UI and REST API
- β³ SaaS infrastructure (Auth, Billing, Monitoring)
Note: This is an active development project. Features marked π exist in the codebase but are experimental and not production-ready yet.
β¨ Features
- π Automated Generation - Fetches merged PRs between two git tags automatically
- π Smart Categorization - Organizes changes by labels (features, bugs, docs, etc.)
- π€ AI-Powered Summarization - Generate intelligent release summaries with OpenAI GPT-4
- π Tone Control - Adapt content for different audiences (Professional, Casual, Marketing, Technical)
- π¨ Multiple Formats - Supports Markdown, JSON, HTML, and CSV formats
- β‘ CLI & Library - Use as a command-line tool or integrate into your .NET application
- π GitHub Integration - Seamless integration with GitHub API via Octokit
- ποΈ Extensible Architecture - Hexagonal design allows custom adapters and generators
π Quick Start
Prerequisites
- .NET 10.0 SDK or later
- GitHub Personal Access Token (optional, but recommended for higher rate limits)
Installation
Option 1: Install as Global Tool (Recommended)
Install the ReleaseCraft CLI as a global .NET tool:
dotnet tool install -g ReleaseCraft.CLI
Then use it from anywhere:
releasecraft --owner microsoft --repo vscode --from-tag 1.84.0 --to-tag 1.85.0
Option 2: Install as Library
Add ReleaseCraft packages to your .NET project:
# Install all components (recommended)
dotnet add package ReleaseCraft
# Or install specific components
dotnet add package ReleaseCraft.Engine # Core interfaces and models
dotnet add package ReleaseCraft.Connectors.GitHub # GitHub integration
dotnet add package ReleaseCraft.Templates # Markdown, JSON, HTML, CSV generators
dotnet add package ReleaseCraft.AI # AI-powered summarization
Option 3: Clone and Build from Source
Clone and Build:
git clone https://github.com/releasecraft/releasecraft-core.git
cd releasecraft-core
dotnet build ReleaseCraft.slnx -c Release
Basic Usage
Generate release notes from the command line:
# Using global tool
releasecraft --owner microsoft --repo vscode --from-tag 1.84.0 --to-tag 1.85.0
# Or from source
cd src/ReleaseCraft.CLI
dotnet run -- --owner microsoft --repo vscode --from-tag 1.84.0 --to-tag 1.85.0
With authentication (recommended):
export GITHUB_TOKEN="your_github_token_here"
releasecraft --owner kubernetes --repo kubernetes --from-tag v1.28.0 --to-tag v1.29.0
Save to a file:
releasecraft --owner facebook --repo react --from-tag v18.0.0 --to-tag v18.2.0 --output release-notes.md
With AI summarization:
export OPENAI_API_KEY="sk-your-openai-key"
releasecraft --owner microsoft --repo vscode --from-tag 1.84.0 --to-tag 1.85.0 --ai
With AI and custom tone:
releasecraft --owner facebook --repo react --from-tag v18.0.0 --to-tag v18.2.0 --ai --tone marketing
π€ AI Features (v0.5+) π IN DEVELOPMENT
Note: AI features exist in the codebase but are not yet production-ready. Use with caution.
ReleaseCraft includes AI-powered summarization capabilities (experimental) to generate intelligent, context-aware release notes.
Setup
- Get an OpenAI API key from OpenAI Platform
- Set environment variable:
export OPENAI_API_KEY="sk-your-openai-key-here"
Usage
Enable AI with default settings (Professional tone):
dotnet run -- --owner microsoft --repo vscode --from-tag 1.84.0 --to-tag 1.85.0 --ai
Specify a tone style:
# Professional (default) - formal, business-appropriate
dotnet run -- --owner org --repo repo --from-tag v1.0 --to-tag v2.0 --ai --tone professional
# Casual - friendly, conversational for internal teams
dotnet run -- --owner org --repo repo --from-tag v1.0 --to-tag v2.0 --ai --tone casual
# Marketing - engaging, benefit-focused for public releases
dotnet run -- --owner org --repo repo --from-tag v1.0 --to-tag v2.0 --ai --tone marketing
# Technical - precise, detailed for developer audiences
dotnet run -- --owner org --repo repo --from-tag v1.0 --to-tag v2.0 --ai --tone technical
Example Output
Without AI:
# v1.5.0
**Release Date:** 2024-02-03
## π Features
- Add dark mode support [#127](https://github.com/owner/repo/pull/127) by @user1
- Implement new search algorithm [#128](https://github.com/owner/repo/pull/128) by @user2
With AI Summarization:
# v1.5.0
**Release Date:** 2024-02-03
**Summary:** This release focuses on user experience improvements with dark mode support and significantly faster search performance. Several critical security fixes are also included.
## π Features
- Add dark mode support [#127](https://github.com/owner/repo/pull/127) by @user1
- Implement new search algorithm [#128](https://github.com/owner/repo/pull/128) by @user2
Configuration File
Create .releasecraftrc.json in your project root:
{
"owner": "microsoft",
"repo": "vscode",
"ai": {
"enabled": true,
"apiKey": "env:OPENAI_API_KEY",
"model": "gpt-4-turbo",
"tone": "professional",
"maxTokens": 1000,
"features": {
"summarization": true,
"toneControl": true
}
}
}
Cost Considerations
AI features use OpenAI's GPT-4 Turbo model. Estimated costs:
- Small release (10 PRs): ~$0.02
- Medium release (50 PRs): ~$0.10
- Large release (200 PRs): ~$0.40
Cost optimization:
- Set
maxTokensto limit usage per request - Disable AI when not needed (don't use
--aiflag) - Use cheaper models like
gpt-3.5-turboin config
Security
- Never commit API keys to source control
- Always use environment variables:
OPENAI_API_KEY - API keys are never sent to GitHub or stored in generated files
- AI is opt-in only - disabled by default
π Documentation
- Installation Guide - Detailed setup instructions
- CLI Usage - Command-line examples and troubleshooting
- GitHub Action - Using ReleaseCraft as a GitHub Action
- AI Features - AI summarization, tone control, and pricing
- API Reference - Using ReleaseCraft as a library
- Configuration - Customizing category mappings
- Examples - Sample outputs and use cases
- Contributing - How to contribute to the project
π‘ Usage Examples
CLI Examples
Generate release notes between two tags:
dotnet run -- -o nodejs -r node -f v20.0.0 -t v20.1.0
With custom output path:
dotnet run -- --owner rails --repo rails --from-tag v7.0.0 --to-tag v7.1.0 --output docs/CHANGELOG_v7.1.0.md
Library Usage
Use ReleaseCraft programmatically in your .NET application:
using ReleaseCraft.Connectors.GitHub;
using ReleaseCraft.Templates;
using ReleaseCraft.Engine.Ports;
// Configure GitHub connection
var githubOptions = new GitHubOptions
{
ProductName = "MyApp",
Token = Environment.GetEnvironmentVariable("GITHUB_TOKEN") ?? string.Empty
};
// Create services
var changeSource = new GitHubChangeSource(githubOptions);
var generator = new MarkdownReleaseNotesGenerator(new MarkdownGeneratorOptions());
// Generate release notes
var changes = await changeSource.GetMergedPullRequestsBetweenTagsAsync(
owner: "dotnet",
repo: "aspnetcore",
fromTag: "v8.0.0",
toTag: "v8.1.0",
ct: CancellationToken.None
);
var releaseNotes = generator.Generate(
changes,
version: "v8.1.0",
releaseDate: DateTimeOffset.UtcNow
);
Console.WriteLine(releaseNotes);
π¨ Configuration
ReleaseCraft categorizes pull requests based on their labels. Default categories:
| Category | Labels | Priority |
|---|---|---|
| π Security | security, vulnerability, cve |
1 |
| β οΈ Breaking Changes | breaking, breaking-change |
2 |
| π Features | feature, enhancement |
3 |
| π Bug Fixes | bug, fix |
4 |
| β‘ Performance | performance, optimization, speed |
5 |
| π Documentation | documentation, docs |
6 |
| π§ Maintenance | chore, maintenance, refactor |
7 |
| Other Changes | (unlabeled PRs) | Default |
See Configuration Guide for customization options.
π GitHub Action (v1.1+) β³ PLANNED
Note: GitHub Action is not yet implemented. This is planned for v1.1.
ReleaseCraft will be available as a GitHub Action (planned) to automatically generate and update release notes when new releases are created.
Quick Start
Add this to your repository at .github/workflows/release-notes.yml:
name: Generate Release Notes
on:
release:
types: [created]
jobs:
release-notes:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
- name: Generate Release Notes
uses: releasecraft/releasecraft-core@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
Features
- β Automatic Trigger - Runs on release creation/edit
- β Auto-Detection - Automatically finds previous release tag
- β AI Support - Optional AI summarization
- β Multiple Formats - Markdown, JSON, HTML, CSV
- β No Setup Required - Just add the workflow file
With AI Summarization
- name: Generate AI-Enhanced Release Notes
uses: releasecraft/releasecraft-core@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
enable-ai: true
ai-tone: marketing
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
For complete GitHub Action documentation, see GitHub Action Guide
ποΈ Architecture
ReleaseCraft follows Hexagonal (Ports & Adapters) Architecture:
βββββββββββββββββββββββββββββββββββββββββββ
β User Interface Layer β
β CLI β REST API β GitHub Action β
βββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββ
β Core Domain Layer β
β IGitChangeSource β IReleaseNotes β
β β Generator β
βββββββββββββββββββββββββββββββββββββββββββ
β β
ββββββββββββββββββββ ββββββββββββββββββββ
β GitHub Adapter β β Markdown Gen β
β (Octokit) β β JSON/HTML/CSV β
ββββββββββββββββββββ ββββββββββββββββββββ
For detailed architecture documentation, see ARCHITECTURE.md.
π οΈ Development
Build the Project
dotnet build ReleaseCraft.slnx -c Release
Run Tests
dotnet test ReleaseCraft.slnx
Project Structure
releasecraft-core/
βββ src/
β βββ ReleaseCraft.Engine/ # Core interfaces and models
β βββ ReleaseCraft.Connectors.GitHub/ # GitHub API adapter
β βββ ReleaseCraft.Templates/ # Output generators
β βββ ReleaseCraft.CLI/ # CLI application
βββ tests/
β βββ ReleaseCraft.Engine.Tests/ # Unit tests
β βββ ReleaseCraft.Integration.Tests/ # Integration tests
βββ docs/ # Documentation
See DEVELOPMENT.md for contributing guidelines.
π Authentication
ReleaseCraft supports two authentication methods:
Environment Variable (Recommended):
export GITHUB_TOKEN="ghp_your_token_here"Command-line Flag:
dotnet run -- --owner owner --repo repo --from-tag v1.0 --to-tag v2.0 --token ghp_your_token
Creating a GitHub Token:
- Go to GitHub Settings β Developer Settings β Personal Access Tokens
- Click "Generate new token (classic)"
- Select scopes:
public_repo(for public repos) orrepo(for private repos) - Copy the token and store it securely
See CLI Usage Guide for more details.
π€ Contributing
We welcome contributions! Please see our Contributing Guide for details.
Quick Contribution Flow:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes following our coding standards
- Run tests (
dotnet test) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
π Roadmap
β Phase 1 β Core Engine (MVP v0.1) β COMPLETE
- β GitHub connector with Octokit
- β Markdown release notes generator
- β CLI console application
- β Integration tests
- β Documentation
Phase 2 β Intelligence (v0.5) π IN DEVELOPMENT
- π AI summarization with OpenAI GPT-4 (code exists, not in prod)
- π Tone control (Professional, Casual, Marketing, Technical) (code exists, not in prod)
- π Config file support (.releasecraftrc.json) (code exists, not in prod)
- β³ Smart categorization (planned for v0.5.1)
- β³ Audience modes (Client vs Internal) (planned)
Phase 3 β Platform (v1.0) β³ PLANNED
- β³ REST API (planned)
- β³ Multiple output formats (JSON, HTML, CSV) (code exists, not in prod)
- β³ Web UI (planned)
Phase 4 β Ecosystem (v1.1+) β³ PLANNED
- β³ GitHub Action for automation (not started)
- β³ NuGet package publishing (not started)
- β³ Marketplace distribution (not started)
See VISION.md for the complete long-term vision.
π Project Documentation
Comprehensive documentation for understanding and contributing to ReleaseCraft:
- VISION.md - Product vision, strategy, and business model
- PRD.md - Product requirements document with detailed feature specifications
- PROJECT.md - Technical project overview and architecture summary
- ARCHITECTURE.md - Detailed technical architecture and design patterns
- DEVELOPMENT.md - Developer setup, workflow, and contribution guide
- docs/ - API reference, CLI usage, and examples
Start with VISION.md to understand the product goals, then dive into technical details with ARCHITECTURE.md.
π Website
The ReleaseCraft website is now live at releasecraft.io, featuring:
- Product information and documentation
- Interactive demos and examples
- Community resources and support
- Download links and installation guides
- Privacy-focused design with no invasive tracking
Built with Angular 21, the website achieved a 9.2/10 quality score in business analysis review.
π Product-Market Fit Validation
We're validating demand for ReleaseCraft before investing in Phase 3 (Web UI + SaaS). Help us by:
- β Star this repository if you find it useful
- π¦ Download and try the CLI from NuGet
- π§ Join our early access list on releasecraft.io
- π¬ Share feedback in GitHub Discussions
We're tracking key metrics (stars, downloads, signups) to make data-driven decisions about future development. See ISSUE-26-IMPLEMENTATION.md for details on our automated PMF validation process.
Current Status: v1.1 - Website Improvements (post-launch optimizations)
Next Phase Decision: Based on community interest and usage patterns
π License
This project is licensed under the MIT License.
π Acknowledgments
- Built with Octokit.NET for GitHub API integration
- Inspired by tools like Release Drafter
π Support
- π Documentation
- π Report a Bug
- π‘ Request a Feature
- π¬ Discussions
Made with β€οΈ by the ReleaseCraft team
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|