Thank you for your interest in contributing! This guide covers how to add skills, knowledge documents, templates, and MCP improvements.
- Fork and clone the repository
- Read the spec in
docs/dotnet-claude-kit-SPEC.md - Read
CLAUDE.mdfor repo development conventions - Check open issues for areas where help is needed
Skills are the core of dotnet-claude-kit. Each skill lives at skills/<skill-name>/SKILL.md.
Before creating a new skill:
- Check the existing skills to avoid overlap
- Open a Skill Proposal issue for discussion
- Review the skill format in
CLAUDE.md
Skill requirements:
- YAML frontmatter with
nameanddescription - Required sections: Core Principles, Patterns, Anti-patterns, Decision Guide
- Maximum 400 lines
- Every recommendation has a "why"
- Code examples use C# 14 / .NET 10 patterns
- BAD/GOOD code comparisons in Anti-patterns section
Knowledge files in knowledge/ are reference material, not skills.
dotnet-whats-new.md— Updated per .NET preview/releasecommon-antipatterns.md— Patterns Claude should never generatepackage-recommendations.md— Vetted NuGet packagesbreaking-changes.md— Migration gotchasdecisions/*.md— Architecture Decision Records
To update knowledge:
- Open a Knowledge Update issue
- Verify information against official Microsoft documentation
- Include links to sources
Templates in templates/<type>/ provide drop-in CLAUDE.md files for user projects.
Each template needs:
CLAUDE.md— The drop-in file with project context, skills references, commandsREADME.md— When and how to use the template
Claude Code merged slash commands into skills — there is no commands/ directory. Workflow orchestrators (e.g., /verify, /scaffold) are skills at skills/<name>/SKILL.md; the skill name registers the slash invocation automatically.
Workflow skill requirements:
- YAML frontmatter with
nameanddescription(adddisable-model-invocation: truefor explicit-only invocation) - Required sections: What, When, How, Example, Related
- Maximum 200 lines (knowledge skills get 400)
- One skill per concern — a workflow carries its methodology inline; never create a separate knowledge twin for a workflow (twins double the always-loaded description surface and cause routing collisions)
- Deep reference material that exceeds the budget goes in
skills/<name>/references/<topic>.md, loaded on demand from SKILL.md
Agents in agents/ are specialist subagents.
Agent requirements:
- YAML frontmatter with
name(matches file name) anddescription(include concrete trigger scenarios — Claude routes delegation on this) - Optional
model:uses tier aliases only (fable,opus,sonnet,haiku) — never pinned version IDs - Optional
memory,disallowedTools, andisolationfields are allowed when the agent's role calls for them (see CLAUDE.md for the schema) - No
permissionMode,hooks, ormcpServersin frontmatter (unsupported for plugin agents) - Required sections: Role definition, Skill dependencies, MCP tool usage, Response patterns, Boundaries
Rules in .claude/rules/ are always-loaded conventions.
Rule requirements:
- YAML frontmatter with
alwaysApply: trueanddescription - Maximum 100 lines (rules are always in context — every line costs tokens)
- Prescriptive DO/DON'T format with brief rationale for each rule
- All rules combined should stay under ~600 lines total
The MCP server at mcp/CWM.RoslynNavigator/ provides semantic analysis tools.
# Build
dotnet build mcp/CWM.RoslynNavigator/CWM.RoslynNavigator.slnx
# Run tests
dotnet test mcp/CWM.RoslynNavigator/CWM.RoslynNavigator.slnxMCP contribution guidelines:
- Tools are read-only — no code generation or modifications
- Responses are token-optimized — return paths, line numbers, and short snippets
- Add integration tests using the
TestSolutionFixture - Update the README with any new tool documentation
- Create a feature branch from
main - Make your changes following the conventions in
CLAUDE.md - Ensure all validations pass:
- Skill frontmatter is valid
- Skill files are under 400 lines
- MCP server builds:
dotnet build mcp/CWM.RoslynNavigator/CWM.RoslynNavigator.slnx - MCP tests pass:
dotnet test mcp/CWM.RoslynNavigator/tests/CWM.RoslynNavigator.Tests.csproj - Code formatting:
dotnet format --verify-no-changes
- Open a pull request with a clear description of changes
Be kind, be constructive. We're building tools to make .NET development better for everyone.
For significant decisions about defaults or patterns, create an ADR:
- Copy
knowledge/decisions/template.md - Number it sequentially (e.g.,
005-your-decision.md) - Fill in Context, Decision, and Consequences
- Submit as part of your PR
Open an issue or start a discussion. We're happy to help contributors get started.