skills/git-nuget-release-notes/SKILL.md
Create or update per-package NuGet release notes from git history for .NET repositories that store cumulative `.nuget/{ProjectName}/PackageReleaseNotes.txt` files. Use this skill whenever the user asks for NuGet release notes, `PackageReleaseNotes.txt`, per-assembly or per-package release notes, or wants git commits turned into package release notes instead of a repo-wide changelog. Treat requests like "update PackageReleaseNotes.txt", "write NuGet release notes from git", "summarize this release per assembly", or "create missing package release notes under .nuget" as automatic triggers. The skill discovers packable `src/` projects, resolves concrete release version and availability per package, creates missing files when needed, preserves cumulative newest-first history, and avoids raw commit-log dumps or unsupported claims.
npx skillsauth add codebeltnet/agentic git-nuget-release-notesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.

This skill creates or updates cumulative .nuget/{ProjectName}/PackageReleaseNotes.txt files for packable .NET projects by reading git history and the actual project/package metadata. It is intentionally closer to the package-note style used in codebelt repositories than to a repo-wide CHANGELOG.md.
Read references/package-release-notes-format.md before writing any release-note block.
.nuget/{ProjectName}/PackageReleaseNotes.txt directly, then stop for user review.src/; ignore test/, tuning/, tooling/, and projects that are explicitly non-packable..nuget/{ProjectName}/ folder when one already exists for the packable project. If none exists, create .nuget/<MSBuildProjectName>/PackageReleaseNotes.txt.src/ project should end up represented by a corresponding PackageReleaseNotes.txt file.Version: and Availability:.# ALM in the block you write.ALM, Breaking Changes, New Features, Improvements, Bug Fixes, References.ADDED, CHANGED, REMOVED, FIXED, EXTENDED, OPTIMIZED, MOVED, RENAMED, DEPRECATED, or REFACTORED.Use the most explicit range the user gave you.
main, then master.Helpful commands:
git status --short --branch
git rev-parse --abbrev-ref HEAD
git rev-parse --abbrev-ref --symbolic-full-name @{upstream}
git merge-base HEAD @{upstream}
git merge-base HEAD main
git merge-base HEAD master
Discover the packable src/ projects that belong in .nuget/.
src/**/*.csproj.src/ or are clearly test, benchmark, sample, or tooling projects.IsPackable explicitly set to false..nuget/{ProjectName}/ folder already used by the repo.Helpful commands:
rg --files src -g *.csproj
git diff --name-only <base>..HEAD -- src .nuget Directory.Build.props Directory.Build.targets Directory.Packages.props
Each release-note block needs a real package version, not an [Unreleased] placeholder.
Use this order:
v0.3.1/feature-name -> 0.3.1.If you cannot determine a safe concrete version, stop and ask instead of guessing.
Do not infer a version by bumping the previous entry manually unless the user explicitly asked you to choose the next version.
Derive Availability: from the package's target frameworks.
TargetFramework or TargetFrameworks from the project and any inherited repo-level props when needed.and.Examples:
net10.0;net9.0 -> .NET 10 and .NET 9net10.0;net9.0;netstandard2.0 -> .NET 10, .NET 9 and .NET Standard 2.0net10.0;net9.0;netstandard2.1;netstandard2.0 -> .NET 10, .NET 9, .NET Standard 2.1 and .NET Standard 2.0Do not guess availability from memory if the project file or evaluated MSBuild properties can answer it.
For each target package, read enough history and diff to understand the real release story for that package.
Directory.Packages.props, Directory.Build.props, Directory.Build.targets, and .nuget/{ProjectName}/ when they affect the package.Helpful commands:
git log --reverse --format=medium <range> -- <paths>
git log --reverse --stat --format=medium <range> -- <paths>
git diff --stat <base>..HEAD -- <paths>
git diff <base>..HEAD -- <paths>
Use the normalized section order from references/package-release-notes-format.md.
Classification guidance:
# ALM: dependency upgrades, TFM support added/removed, packaging metadata changes, or other release-engineering/package-management changes.# Breaking Changes: incompatible renames, removals, moved APIs, changed contracts, or behavior that requires consumer action.# New Features: additive new APIs, capabilities, packages, or newly exposed options.# Improvements: non-breaking enhancements such as CHANGED, EXTENDED, OPTIMIZED, DEPRECATED, or other refinements.# Bug Fixes: defects corrected for existing behavior.# References: package IDs only, and only when the package is an umbrella/meta package or the existing file already carries a references section the current release should preserve.Prefer a minimal truthful block over an inflated one. ALM-only releases are valid when the real change was only dependency or TFM maintenance.
Write the block in this normalized shape:
Version: 0.3.1
Availability: .NET 10 and .NET 9
# ALM
- CHANGED Dependencies have been upgraded to the latest compatible versions for all supported target frameworks (TFMs)
# New Features
- ADDED ...
Editing rules:
After updating the relevant PackageReleaseNotes.txt files, stop and let the user review them. Do not commit, tag, push, pack, or publish unless the user asks.
Unreleased or omitting the concrete version line.documentation
Generate source-grounded repository digest markdown from deterministic local evidence bundles. Use when the user asks to create, refresh, or complete repo/package digests, family or project overview pages, .bot/digests output, digest workspace workflows, or result/Index.md plus result/{PackageName}.md files for any repository URL. The skill runs its bundled .NET file-based evidence generator over a git clone, separates authoritative XML evidence from Markdown prompts and reading aids, writes package digests first, then writes the overview from completed package digests, and enforces complete-read grounding and no-invention rules even when file output is capped.
testing
Turn many commits into a curated grouped squash summary compatible with the opinionated wording style of git-visual-commits. Use when the user asks to squash a branch into a concise summary, write a squash-and-merge summary, summarize this branch, summarize a commit range or PR as grouped lines, clean up noisy commit history, or asks for a curated summary without committing. For normal squash-and-merge requests, default to the full current feature branch from merge-base to HEAD against the base branch, not the same-named tracking remote, and do not ask for yolo because the skill is read-only. Returns grouped lines only, preserves identifiers, merges overlap, drops noise, and avoids changelog wording.
development
Initialize a folder as a git repository following scaled trunk-based development. Sets up an empty main branch (seed commit only), creates a versioned feature branch, and enforces a PR-first workflow where content only reaches main through pull requests. Use this skill when the user wants to initialize a git repo, set up a new repository, start a project with proper git workflow, or mentions "trunk-based", "PR workflow", "branch protection", "git init", or wants to follow GitHub PR best practices. ALWAYS use this skill when asked to initialize or set up a git repository.
development
Adds runner-agnostic guardrails on top of Anthropic's skill-creator for creating, modifying, and benchmarking skills across Codex, GitHub Copilot, Opus, and similar agents. Use whenever skill work must follow temp-workspace isolation, valid `iteration-N/eval-name/{config}/run-N/` benchmark layout, honest measured-vs-simulated labeling, UTF-8-safe artifact generation, and repo-managed skill sync/README update rules. Treat requests like "turn this workflow into a skill", "benchmark this skill", "compare with_skill and without_skill", "why is aggregate_benchmark.py showing zeros", or "make this skill robust across agents" as automatic triggers.