Skip to content

Quick Reference

This page consolidates essential information needed when generating release notes. It is organized for quick lookup of command usage, workflow summary, output file paths, and troubleshooting. Refer to the corresponding section’s main text for full context.

The basic format is as follows.

Terminal window
/release-note <version>

The version parameter follows the SemVer format and supports pre-release tags.

CommandDescription
/release-note v1.0.0First deployment
/release-note v1.2.0Regular release
/release-note v1.2.0-alpha.1Alpha release
/release-note v1.2.0-beta.1Beta release
/release-note v1.2.0-rc.1Release candidate

A single command executes five Phases sequentially. Here is a summary of each Phase’s goal, execution content, and output.

PhaseGoalKey Command/ActionOutput
1Environment validationgit status, dotnet --versionBase/Target determination
2Data collectiondotnet AnalyzeAllComponents.cs.analysis-output/*.md
3Commit analysisBreaking Changes, Feature classificationwork/phase3-*.md
4Document writingTEMPLATE.md → RELEASE-*.mdRELEASE-{VERSION}.md
5ValidationAPI accuracy, “Why this matters” section checkwork/phase5-*.md
Terminal window
# Required checks
git status # Verify Git repository
dotnet --version # .NET 10.x or higher required
ls .release-notes/scripts # Verify scripts directory

Base Branch Determination:

  • If origin/release/1.0 exists → Use as Base
  • If not (first deployment) → git rev-list --max-parents=0 HEAD
Terminal window
cd .release-notes/scripts
# Component analysis
dotnet AnalyzeAllComponents.cs --base <base-branch> --target HEAD
# API change extraction
dotnet ExtractApiChanges.cs

There are two methods for detecting Breaking Changes, with Git Diff analysis taking priority.

  1. Git Diff analysis (recommended): Deleted/changed APIs in api-changes-diff.txt
  2. Commit message patterns: type!:, BREAKING CHANGE keywords
Terminal window
# Copy template
cp .release-notes/TEMPLATE.md .release-notes/RELEASE-v1.2.0.md
# Replace placeholders
# {VERSION} → v1.2.0
# {DATE} → 2025-12-22
Terminal window
# Verify frontmatter
head -5 .release-notes/RELEASE-v1.2.0.md
# Check "Why this matters" sections
grep -c "**Why this matters:**" .release-notes/RELEASE-v1.2.0.md
# Markdown validation (optional)
npx markdownlint-cli@0.45.0 .release-notes/RELEASE-v1.2.0.md --disable MD013

Four principles that determine the quality of release notes. Understanding why each principle exists clarifies what to check during review.

Never document an API that is not in the Uber file.

Because LLMs can “plausibly” generate API signatures. The Uber file (all-api-changes.txt) is extracted from the actually built DLL, so it must serve as the source of truth.

Terminal window
# Verify API existence
grep -n "MethodName" .analysis-output/api-changes-build-current/all-api-changes.txt

Include a “Why this matters:” section for all major features.

A list of API changes alone makes it difficult for users to decide whether to upgrade. Each feature must explain what problem it solves and what benefits it provides for the release notes to deliver practical value.

### New Feature: TraverseSerial
A method for processing collections sequentially.
**Why this matters:**
- Suitable for tasks requiring order guarantees
- Memory-efficient processing

Git Diff analysis takes priority over commit message patterns.

Developers may forget to mark BREAKING CHANGE in commit messages. In contrast, Git diffs of the .api folder objectively show actual API changes, enabling detection of Breaking Changes without omissions.

  • Git diff analysis of the .api folder (objective)
  • Commit message patterns are supplementary

Trace all features to actual commits.

Features described in the release notes must be traceable to the commits where they were implemented. This serves as a starting point for later examining implementation details or investigating issues.

<!-- Related commit: abc1234 -->
### New Feature: ErrorCodeFactory

Files generated by the workflow, organized by purpose.

FileDescription
.release-notes/RELEASE-{VERSION}.mdRelease notes
FileDescription
.analysis-output/Functorium.mdCore library analysis
.analysis-output/Functorium.Testing.mdTest library analysis
.analysis-output/analysis-summary.mdOverall summary
FileDescription
api-changes-build-current/all-api-changes.txtUber file (all Public APIs)
api-changes-build-current/api-changes-diff.txtAPI changes (Git diff)

Work files generated by each Phase. Useful for checking how far processing succeeded when problems occur.

FileDescription
work/phase3-commit-analysis.mdCommit classification results
work/phase3-feature-groups.mdFeature grouping
work/phase4-draft.mdRelease notes draft
work/phase5-validation-report.mdValidation results

Common problems and solutions in table form. See the Troubleshooting Guide for detailed explanations.

ProblemSolution
Base Branch not foundAuto-detected as first deployment, analyzes from initial commit
.NET SDK version error.NET 10.x installation required
File lock issuetaskkill /F /IM dotnet.exe (Windows)
API validation failureVerify correct API name in Uber file

Use the following commands when a full environment reset is needed.

Terminal window
Stop-Process -Name "dotnet" -Force -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force .release-notes\scripts\.analysis-output -ErrorAction SilentlyContinue
dotnet nuget locals all --clear
Terminal window
pkill -f dotnet
rm -rf .release-notes/scripts/.analysis-output
dotnet nuget locals all --clear

Items to check before and after release note generation.

  • Git repository verified
  • .NET 10.x SDK installed
  • .release-notes/scripts/ directory exists
  • Frontmatter included
  • All required sections included
  • “Why this matters” section included for all major features
  • All code examples verified against Uber file
  • Breaking Changes documented (if any)
  • Migration guide included (if Breaking Changes exist)
DocumentDescription
release-note.mdRelease note Command definition
TEMPLATE.mdRelease note template
phase1-setup.mdPhase 1 details
phase2-collection.mdPhase 2 details
phase3-analysis.mdPhase 3 details
phase4-writing.mdPhase 4 details
phase5-validation.mdPhase 5 details

Q1: Under the “Accuracy First” principle, if APIs not in the Uber file are not documented, how are new features that haven’t been built yet handled?

Section titled “Q1: Under the “Accuracy First” principle, if APIs not in the Uber file are not documented, how are new features that haven’t been built yet handled?”

A: Release notes only document features whose implementation is complete. Since Phase 2 builds with dotnet publish and then extracts APIs from the DLL, features whose code doesn’t compile are not included in the Uber file. Features still under development must be documented in the next release.

Q2: What specifically does the checklist item “All code examples verified against Uber file” check?

Section titled “Q2: What specifically does the checklist item “All code examples verified against Uber file” check?”

A: It verifies that class names, method names, and parameter types appearing in the release notes’ code examples exactly match the API signatures in the Uber file. For example, if a code example uses ErrorCodeFactory.Create(), the Uber file must contain that method with an identical signature.

Q3: Is it safe to forcefully terminate dotnet processes in the full reset commands?

Section titled “Q3: Is it safe to forcefully terminate dotnet processes in the full reset commands?”

A: Ideally, only dotnet processes related to release note script execution should be terminated, but if no other dotnet applications are running simultaneously, taskkill /F /IM dotnet.exe (Windows) or pkill -f dotnet (macOS/Linux) for full termination is not a problem. If other .NET services are running, check the PID of those processes and terminate selectively.

Q4: Does this quick reference guide need to be updated with each new version?

Section titled “Q4: Does this quick reference guide need to be updated with each new version?”

A: It only needs updating when the workflow structure or commands change. The /release-note command usage, 5-Phase structure, output file paths, etc. are system structure information independent of version, so they can be used as-is unless the release note automation system itself is improved.

This concludes the hands-on part of the release note automation. The following appendix provides a glossary and additional reference materials.