Workflow for publishing skills and agents to the dotnet-skills Claude Code marketplace. Covers adding new content, updating plugin.json, validation, and release tagging.
80%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./skills/marketplace-publishing/SKILL.mdThis 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.shSkills 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.mdExample: 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.shgit 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.shCommit 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 --tagsGitHub 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 updateBefore 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)Aaronontheweb/dotnet-skills
5ca5db8
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.