NugetSkills 0.1.0
dotnet tool install --global NugetSkills --version 0.1.0
dotnet new tool-manifest
dotnet tool install --local NugetSkills --version 0.1.0
#tool dotnet:?package=NugetSkills&version=0.1.0
nuke :add-package NugetSkills --version 0.1.0
nuget-skills
A .NET CLI tool that discovers and loads AI coding skills bundled with NuGet packages. Works with Claude Code, Cursor, Copilot, Codex, Windsurf, Cline, and Goose.
Instead of copying skills into your repository, the tool reads them directly from the NuGet package cache or from the package's source repository on GitHub. Your AI agent gets library-specific guidance automatically.
Why does it matter?
When you ask an AI coding agent for help with a NuGet package, it has no structured way to access that library's conventions, patterns, or pitfalls. It falls back on training data that may be outdated or generic.
nuget-skills fixes this by creating a distribution channel for library-specific knowledge through NuGet itself. Package authors ship a skills/SKILL.md alongside their code, and AI agents discover and load it automatically. The result: your agent knows the right way to use Serilog, Polly, or MediatR — not just the API surface, but the conventions, gotchas, and patterns that matter.
For the .NET ecosystem, this is the equivalent of what npm-agentskills and vercel-labs/skills do for JavaScript — but designed to work with NuGet's package cache instead of copying files into your repo.
How it works
nuget-skills initinstalls a meta-skill and a session-start hook for your AI agent- When you start a session, the hook runs
nuget-skills scanautomatically - For each NuGet package, it checks three sources in order:
- Local —
skills/SKILL.mdbundled inside the NuGet package - Remote —
skills/SKILL.mdin the package's GitHub repo (viaghCLI) - README —
README.mdfrom the NuGet package (fallback)
- Local —
- Your agent sees which packages have skills and loads them on demand with
nuget-skills load
Quick start
# Install the tool
dotnet tool install -g NugetSkills
# Initialize in your project (auto-detects installed agents)
cd your-dotnet-project
nuget-skills init
# Or specify agents explicitly
nuget-skills init --agent claude,cursor
# Verify your setup
nuget-skills doctor
That's it. Your AI agent will now discover NuGet package skills on session start.
Commands
nuget-skills init
Installs skills and hooks for your AI coding agent(s).
nuget-skills init # Auto-detect agents
nuget-skills init --agent claude,cursor # Specific agents
nuget-skills init --agent all # All supported agents
nuget-skills init --global # Install to user-level (~/) instead of project
nuget-skills init --no-remote # Disable remote skill discovery
nuget-skills init --no-readme # Disable README fallback
Auto-detection checks for agent config directories (.claude/, .cursor/, etc.) in your project. If none are found, you must specify --agent.
nuget-skills scan
Scans all NuGet packages in your project for available skills.
nuget-skills scan # Human-readable output
nuget-skills scan --json # Machine-readable JSON
nuget-skills scan --project path.sln # Specific solution/project
nuget-skills scan --refresh # Bypass cache, re-check remote repos
Output:
Scanning MyProject.sln...
Found 3 package(s) with skills (of 47 total):
Serilog 3.1.1 [local] Structured logging patterns
Polly 8.3.0 [remote] Resilience policies (github.com/App-vNext/Polly @ v8.3.0)
Newtonsoft.Json 13.0.3 [readme] JSON framework (from package README)
Use 'nuget-skills load <package>' to view a skill.
Skills are discovered from three sources:
- [local] —
skills/SKILL.mdbundled in the NuGet package - [remote] —
skills/SKILL.mdfound in the package's GitHub repo (requiresghCLI) - [readme] —
README.mdfrom the NuGet package (fallback)
nuget-skills load <package>
Outputs the full skill content for a package.
nuget-skills load Serilog # Auto-detect version from project
nuget-skills load Serilog --version 3.1.1 # Specific version
nuget-skills info <package>
Outputs package metadata as JSON (repository URL, description, skill status).
nuget-skills info Generator.Equals
{
"id": "Generator.Equals",
"version": "4.0.0",
"description": "A source generator for generating Equals and GetHashCode methods",
"repositoryUrl": "https://github.com/diegofrata/Generator.Equals",
"hasSkills": true,
"cachePath": "/Users/you/.nuget/packages/generator.equals/4.0.0"
}
nuget-skills doctor
Validates your setup.
✓ dotnet CLI 10.0.100
✓ gh CLI gh version 2.79.0
authenticated as yourusername
✓ NuGet cache /Users/you/.nuget/packages/
✓ Skills cache /Users/you/Library/Application Support/nuget-skills/cache (12 entries)
Settings:
Remote scan: enabled
README fallback: enabled
Supported agents
| Agent | Skills format | Hooks | Detection |
|---|---|---|---|
| Claude Code | .claude/skills/ SKILL.md |
.claude/settings.json SessionStart |
.claude/ dir |
| Cursor | .cursor/rules/ .mdc |
.cursor/hooks.json sessionStart |
.cursor/ dir |
| GitHub Copilot | .github/instructions/ .md |
.github/hooks/ SessionStart |
.github/copilot-instructions.md |
| Codex / Amp | .agents/skills/ SKILL.md |
— | .codex/ or .agents/ dir |
| Windsurf | .windsurf/skills/ SKILL.md |
— | .windsurf/ dir |
| Cline | .cline/skills/ SKILL.md |
— | .cline/ dir |
| Goose | .goose/skills/ SKILL.md |
— | .goose/ dir or .goosehints |
Agents with hooks get automatic scanning on session start. Agents without hooks rely on the meta-skill instructing the agent to run nuget-skills scan manually.
For package authors
Ship skills with your NuGet package so AI agents can use them.
1. Create a skill
Add a skills/SKILL.md to your project:
---
name: your-package
description: One-line summary of what this skill teaches
---
# Your Package
## Best Practices
- Do this, not that
- Configuration examples
- Common pitfalls
## Examples
```csharp
// Practical code examples
```
A package can include multiple skill files:
skills/
SKILL.md # Main skill
CONFIGURATION.md # Configuration guide
MIGRATION.md # Migration guide
2. Include in your package
Add this to your .csproj (or .fsproj / .vbproj):
<ItemGroup>
<None Include="skills/**" Pack="true" PackagePath="skills/" />
</ItemGroup>
That's it. When users install your package, the skill is available immediately via nuget-skills scan.
What makes a good skill
- Actionable over informational — tell the agent what to DO, not what the library IS
- Conventions and gotchas — what's not obvious from the API alone
- Code over prose — show patterns, don't just describe them
- Concise — agents have limited context; every line should earn its place
Using the builder skill
Ask your AI agent: "Build me a skill for Serilog"
The built-in builder skill teaches the agent to research a package's docs, issues, and wiki, then generate a well-structured SKILL.md.
Remote skill discovery
For packages that don't ship skills yet, the tool checks the package's source repository on GitHub for a skills/SKILL.md. This requires the gh CLI:
# Install gh: https://cli.github.com
gh auth login
The tool matches the installed package version to a git tag (handling v1.0.0, release/1.0.0, PackageName.1.0.0 formats) and checks for skills at that tag, falling back to the default branch.
Remote results are cached per package version at:
- macOS:
~/Library/Application Support/nuget-skills/cache/ - Linux:
~/.local/share/nuget-skills/cache/ - Windows:
%LOCALAPPDATA%\nuget-skills\cache\
Use nuget-skills scan --refresh to bypass the cache.
Settings
Settings are stored alongside the cache. The file is only created when you explicitly opt out of features:
nuget-skills init --no-remote # Disables remote scan
nuget-skills init --no-readme # Disables README fallback
Or edit directly:
{
"enableRemoteScan": true,
"enableReadmeFallback": true
}
Claude Code plugin
For Claude Code users, the tool is also available as a plugin:
/plugin marketplace add diegofrata/nuget-skills
This installs the skills and hooks without needing nuget-skills init --agent claude.
Project types
Supports all .NET project types:
.slnx(default in .NET 10).sln.csproj,.fsproj,.vbproj
| 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 |
|---|