# Nuget Release Governance

> Use esta skill para revisar ou ajustar pack, versionamento, metadados NuGet, GitHub Actions, validacao de package, release notes e publicacao segura do analyzer. Nunca use para publicar de fato sem pedido explicito.

- Skill: `rodri-oliveira-dev/nuget-release-governance` (Agent Skill)
- Install (CLI): `npx skillmds@latest add rodri-oliveira-dev/nuget-release-governance`
- Raw SKILL.md: https://api.skillmd.com/api/skills/rodri-oliveira-dev/nuget-release-governance/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: rodri-oliveira-dev (https://skillmd.com/u/rodri-oliveira-dev)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/rodri-oliveira-dev/nuget-release-governance

---


# NuGet Release Governance

## Objetivo

Orientar mudancas de release do `ComplexityAnalysis.Analyzers` como pacote NuGet de Roslyn Analyzer, preservando rastreabilidade, seguranca e controle explicito de publicacao.

## Quando usar

- Alterar `dotnet pack`, metadados de package, `.nupkg` ou `.snupkg`.
- Revisar versionamento, release notes ou GitHub Actions de release.
- Validar conteudo do pacote antes de publicar.
- Avaliar supply-chain, permissoes, secrets, assinaturas, provenance ou seguranca de pipeline.

## Regras obrigatorias

- Nunca executar `dotnet nuget push` sem solicitacao explicita.
- Nunca criar GitHub Release sem solicitacao explicita.
- Nunca publicar pacote real automaticamente.
- Nunca ampliar permissoes de workflow sem justificativa.
- Nunca introduzir segredo em arquivo versionado.
- O package do analyzer deve carregar o assembly em `analyzers/dotnet/cs/`.
- Roslyn e ferramentas de desenvolvimento devem permanecer privadas quando aplicavel.
- O pacote nao deve expor dependencias transitivas desnecessarias.

## Checklist de package

- `PackageId`, `Description`, tags e repository metadata estao corretos.
- `PackageVersion` foi informado de forma explicita no pack.
- `.nupkg` contem o DLL do analyzer em `analyzers/dotnet/cs/`.
- `.nupkg` nao contem `lib/netstandard2.0/` para o assembly do analyzer.
- `.nupkg` nao contem DLLs do projeto original.
- Roslyn nao aparece como dependencia transitiva no `.nuspec`.
- `.snupkg` so e produzido quando configurado intencionalmente.
- Release notes descrevem mudancas observaveis e breaking changes.

## Validacao

```bash
dotnet restore ./ComplexityAnalysis.Analyzers.sln
dotnet build ./ComplexityAnalysis.Analyzers.sln --configuration Release --no-restore
dotnet pack ./src/ComplexityAnalysis.Analyzers/ComplexityAnalysis.Analyzers.csproj --configuration Release --no-build -p:PackageVersion=0.0.0-local
```

Inspecione o `.nupkg` localmente antes de concluir alteracoes de empacotamento.

