csharpfritz/aspire-minecraft/nuget-packaging
Claude Code and agent skill by csharpfritz/aspire-minecraft
- community
Checking that the SKILL.md file is still in the repository.
NuGet packaging patterns for the Aspire.Hosting.Minecraft package
Install
npx vskill@latest install csharpfritz/aspire-minecraft/nuget-packagingSKILL.md
Context
These patterns apply to the single NuGet package produced by this repo: Fritz.Aspire.Hosting.Minecraft (PackageId). The RCON library (Aspire.Hosting.Minecraft.Rcon) is embedded into this package. The Worker project is not packaged — it runs as a standalone service. They ensure packages are NuGet.org-ready with reproducible builds.
Patterns
Single Package Architecture
Only Aspire.Hosting.Minecraft is packable (IsPackable=true). The Rcon project is embedded via PrivateAssets="All" on the ProjectReference plus TargetsForTfmSpecificBuildOutput to include the DLL in the lib folder. The Worker project is IsPackable=false — it's a standalone service consumers reference directly.
Never Use Floating Versions
All PackageReference entries must have exact pinned versions (e.g., Version="13.1.0"). Never use Version="*" or version ranges. NuGet.org rejects packages with floating version references and they break reproducible builds.
Directory.Build.props Owns Shared Config
Shared metadata (Authors, License, RepositoryUrl) and build hardening properties live in Directory.Build.props at the repo root. Individual csproj files only add project-specific properties (PackageId, Version, Description, PackageTags, IsPackable).
Required Hardening Properties
Every packable project inherits these from Directory.Build.props:
GenerateDocumentationFile— ships XML docs in the nupkgEnablePackageValidation— catches breaking API changes between versionsDeterministic— ensures byte-identical builds from same sourceContinuousIntegrationBuild(CI-only) — embeds correct source paths for SourceLinkEmbedUntrackedSources— ensures all source files are available in SourceLinkMicrosoft.SourceLink.GitHub— enables debugger source mapping to GitHub
Package README
The single packable project (Aspire.Hosting.Minecraft) has its own README.md in the project directory, included in the nupkg via:
The PackageReadmeFile property in Directory.Build.props is set to README.md. Non-packable projects do not pack READMEs.
Pack and Verify Workflow
Check for: zero warnings on src projects, correct package sizes, no floating versions in generated nuspec.
Anti-Patterns
- Floating `Version="*"` — will be rejected by NuGet.org and breaks reproducibility
- Multiple packages for a single integration — consolidate into one package for simpler consumer experience
- Missing `EnablePackageValidation` — won't catch breaking API changes between releases
- Missing SourceLink — consumers can't step into source during debugging
- Embedding Worker in the hosting package — Worker uses
Microsoft.NET.Sdk.Workerand runs as a separate process; it can't be a DLL inside the hosting package
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryChecking.squad/skills/nuget-packaging/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/csharpfritz/aspire-minecraft/nuget-packaging)