skills/marketplace-publishing/SKILL.md
Workflow for publishing skills and agents to the dotnet-skills Claude Code marketplace. Covers adding new content, updating plugin.json, validation, and release tagging.
npx skillsauth add aaronontheweb/dotnet-skills marketplace-publishingInstall 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 documents how to publish skills and agents to the dotnet-skills Claude Code marketplace.
dotnet-skills/
├── .claude-plugin/
│ ├── marketplace.json # Marketplace catalog
│ └── plugin.json # Plugin metadata + skill/agent registry
├── .github/workflows/
│ └── release.yml # Release automation
├── skills/
│ ├── akka/ # Akka.NET skills
│ │ ├── best-practices/SKILL.md
│ │ ├── testing-patterns/SKILL.md
│ │ └── ...
│ ├── aspire/ # .NET Aspire skills
│ ├── csharp/ # C# language skills
│ ├── testing/ # Testing framework skills
│ └── meta/ # Meta skills
├── agents/
│ └── *.md # Agent definitions
└── scripts/
└── validate-marketplace.sh
Skills are organized by domain:
| Category | Purpose |
|----------|---------|
| akka/ | Akka.NET actor patterns, testing, clustering |
| aspire/ | .NET Aspire orchestration, testing, configuration |
| csharp/ | C# language features, coding standards |
| testing/ | Testing frameworks (xUnit, Playwright, Testcontainers) |
| meta/ | Meta skills about this marketplace |
Create a new category folder if none fits.
Create a folder with SKILL.md inside:
skills/<category>/<skill-name>/SKILL.md
Example: skills/akka/cluster-sharding/SKILL.md
---
name: my-new-skill
description: Brief description of what this skill does and when to use it.
---
# My New Skill
## When to Use This Skill
Use this skill when:
- [List specific scenarios]
---
## Content
[Comprehensive guide with examples, patterns, and anti-patterns]
Requirements:
name must be lowercase with hyphens (e.g., cluster-sharding)description should be 1-2 sentences explaining when Claude should use this skillAdd the skill path to .claude-plugin/plugin.json in the skills array:
{
"skills": [
"./skills/akka/best-practices",
"./skills/akka/cluster-sharding" // Add new skill here
]
}
Run the validation script:
./scripts/validate-marketplace.sh
git add skills/akka/cluster-sharding/ .claude-plugin/plugin.json
git commit -m "Add cluster-sharding skill for Akka.NET Cluster Sharding patterns"
Create a markdown file in /agents/:
---
name: my-agent-name
description: Expert in [domain]. Specializes in [specific areas]. Use for [scenarios].
model: sonnet
color: blue
---
You are a [domain] specialist with deep expertise in [areas].
**Reference Materials:**
- [Official docs and resources]
**Core Expertise Areas:**
[List expertise areas]
**Diagnostic Approach:**
[How the agent analyzes problems]
Requirements:
name must be lowercase with hyphensmodel must be one of: haiku, sonnet, opuscolor is optional (used for UI display)Add to the agents array:
{
"agents": [
"./agents/akka-net-specialist",
"./agents/my-agent-name" // Add new agent here
]
}
git add agents/my-agent-name.md .claude-plugin/plugin.json
git commit -m "Add my-agent-name agent for [domain] expertise"
Update the version in .claude-plugin/plugin.json:
{
"version": "1.1.0"
}
Use semantic versioning (MAJOR.MINOR.PATCH):
Update version in plugin.json
Validate
./scripts/validate-marketplace.sh
Commit version bump
git add .claude-plugin/plugin.json
git commit -m "Bump version to 1.1.0"
Create and push tag
git tag v1.1.0
git push origin master --tags
GitHub Actions will automatically:
Users install the complete plugin (all skills and agents):
# Add the marketplace (one-time)
/plugin marketplace add Aaronontheweb/dotnet-skills
# Install the plugin (gets everything)
/plugin install dotnet-skills
# Update to latest version
/plugin marketplace update
Before committing:
name and descriptionplugin.json skills arraymodel is specified (haiku/sonnet/opus)./scripts/validate-marketplace.sh passes/plugin uninstall dotnet-skills && /plugin install dotnet-skillsjq . .claude-plugin/plugin.jsonv1.0.0)development
Write modern, high-performance C# code using records, pattern matching, value objects, async/await, Span<T>/Memory<T>, and best-practice API design patterns. Emphasizes functional-style programming with C# 12+ features.
development
Design stable, compatible public APIs using extend-only design principles. Manage API compatibility, wire compatibility, and versioning for NuGet packages and distributed systems.
development
Snapshot test email templates using Verify to catch regressions. Validates rendered HTML output matches approved baseline. Works with MJML templates and any email renderer.
testing
Write integration tests using TestContainers for .NET with xUnit. Covers infrastructure testing with real databases, message queues, and caches in Docker containers instead of mocks.