Akka.Hosting Actor Patterns
Aaronontheweb/dotnet-skills
Shows how to build entity actors with Akka.Hosting so the same code runs in local unit tests and in a sharded cluster in production.
Gives repository-specific .NET guidance for GitVersion: build and test commands, central package management, project layout and coding conventions.
$ npx skills add GitTools/GitVersion --skill dotnet-dev -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install GitTools/GitVersion dotnet-dev --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/GitTools/GitVersion.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/dotnet-dev .claude/skills/dotnet-dev && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "dotnet-dev" agent skill from https://github.com/GitTools/GitVersion/tree/main/.github/skills/dotnet-dev into .claude/skills/dotnet-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dotnet-dev", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/GitTools/GitVersion/tree/main/.github/skills/dotnet-devType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add GitTools/GitVersion --skill dotnet-dev -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install GitTools/GitVersion dotnet-dev --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GitTools/GitVersion.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/dotnet-dev .agents/skills/dotnet-dev && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dotnet-dev" agent skill from https://github.com/GitTools/GitVersion/tree/main/.github/skills/dotnet-dev into .agents/skills/dotnet-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dotnet-dev", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add GitTools/GitVersion --skill dotnet-dev -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install GitTools/GitVersion dotnet-dev --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GitTools/GitVersion.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/dotnet-dev .cursor/skills/dotnet-dev && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "dotnet-dev" agent skill from https://github.com/GitTools/GitVersion/tree/main/.github/skills/dotnet-dev into .cursor/skills/dotnet-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dotnet-dev", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/GitTools/GitVersion.git --path .github/skills/dotnet-dev--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add GitTools/GitVersion --skill dotnet-dev -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install GitTools/GitVersion dotnet-dev --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GitTools/GitVersion.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/dotnet-dev .gemini/skills/dotnet-dev && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "dotnet-dev" agent skill from https://github.com/GitTools/GitVersion/tree/main/.github/skills/dotnet-dev into .gemini/skills/dotnet-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dotnet-dev", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install GitTools/GitVersion dotnet-devInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add GitTools/GitVersion --skill dotnet-dev -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/GitTools/GitVersion.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/dotnet-dev .github/skills/dotnet-dev && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "dotnet-dev" agent skill from https://github.com/GitTools/GitVersion/tree/main/.github/skills/dotnet-dev into .github/skills/dotnet-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dotnet-dev", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add GitTools/GitVersion --skill dotnet-dev -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install GitTools/GitVersion dotnet-dev --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GitTools/GitVersion.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/dotnet-dev .opencode/skills/dotnet-dev && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "dotnet-dev" agent skill from https://github.com/GitTools/GitVersion/tree/main/.github/skills/dotnet-dev into .opencode/skills/dotnet-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dotnet-dev", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
dotnet-devGives repository-specific .NET guidance for GitVersion: build and test commands, central package management, project layout and coding conventions.
The skill is tied to the GitVersion repository. It lists the `dotnet build` and test commands for the `src` solution, explains that package versions are managed centrally in `src/Directory.Packages.props` rather than in individual project files, and shows how to add a package while keeping the version central.
It also maps the repository: `src` for production code and tests, `new-cli` as a separate solution, `build` for Cake-based automation and `docs`, plus a table of key projects such as the core version calculation, the CLI app, configuration, output formatters, build agents, MSBuild integration and the Git abstraction layer. Coding conventions cover primary constructors with readonly fields, constructor injection with logger dependencies, Microsoft.Extensions.Logging with Serilog, and explicit handling of nullable reference types.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 92e2456. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
dotnetFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
GitVersion .NET Development loads about 1.7k tokens when it runs. Until then it costs about 57 tokens; SKILL.md has 299 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from GitTools/GitVersion at commit 92e2456, republished under its MIT licence (© GitTools). 299 words, ~1,720 tokens.
.claude/skills/dotnet-dev/SKILL.md (or your agent's skills folder).Expert guidance for .NET development in this repository.
# Build the solution
dotnet build ./src/GitVersion.slnx
# Build a single project
dotnet build --project ./src/GitVersion.Core/GitVersion.Core.csproj
# Run all tests
dotnet test --solution ./src/GitVersion.slnx
# Run tests for a specific project
dotnet test --project ./src/GitVersion.Core.Tests/GitVersion.Core.Tests.csproj
# Run tests with specific framework
dotnet test --project ./src/GitVersion.Core.Tests/GitVersion.Core.Tests.csproj --framework net10.0
# Run specific test by filter
dotnet test --project ./src/GitVersion.Core.Tests/GitVersion.Core.Tests.csproj --filter "FullyQualifiedName~TestClassName"
# Format code
dotnet format ./src/GitVersion.slnx
# Verify formatting (CI-friendly)
dotnet format --verify-no-changes ./src/GitVersion.slnxThis repository uses Central Package Management via Directory.Packages.props.
# Add a package (version managed centrally)
dotnet add ./src/ProjectName/ProjectName.csproj package PackageName
# Update central package version in src/Directory.Packages.propsImportant: Always update versions in src/Directory.Packages.props, not in individual .csproj files.
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="PackageName" Version="1.0.0" />
</ItemGroup>
</Project>src/ - Main solution with production code and testsnew-cli/ - New CLI implementation (separate solution)build/ - Build automation (Cake-based)docs/ - Documentation| Project | Purpose |
|---|---|
GitVersion.Core | Core version calculation logic |
GitVersion.App | CLI application |
GitVersion.Configuration | Configuration file handling |
GitVersion.Output | Output formatters (JSON, BuildServer) |
GitVersion.BuildAgents | CI/CD platform integrations |
GitVersion.MsBuild | MSBuild task integration |
GitVersion.LibGit2Sharp | Git repository abstraction |
Prefer primary constructors with readonly field assignments:
internal class BuildAgentResolver(IEnumerable<IBuildAgent> buildAgents, ILogger<BuildAgentResolver> logger) : IBuildAgentResolver
{
private readonly IEnumerable<IBuildAgent> buildAgents = buildAgents.NotNull();
private readonly ILogger<BuildAgentResolver> logger = logger.NotNull();
public IBuildAgent? Resolve()
{
// Use this.buildAgents and this.logger
}
}Use constructor injection with ILogger<T> for logging:
public class MyService
{
private readonly ILogger<MyService> logger;
public MyService(ILogger<MyService> logger)
{
this.logger = logger;
}
}Use Microsoft.Extensions.Logging with Serilog:
// Information level
this.logger.LogInformation("Processing {BranchName}", branch.Name);
// Warning level
this.logger.LogWarning("Configuration not found, using defaults");
// Error level
this.logger.LogError(ex, "Failed to calculate version");
// Debug level (verbose)
this.logger.LogDebug("Cache hit for {CacheKey}", key);All projects use nullable reference types. Handle nullability explicitly:
public string? OptionalProperty { get; set; }
public string RequiredProperty { get; set; } = string.Empty;Use file-scoped namespaces:
namespace GitVersion;
public class MyClass
{
// ...
}GitVersion.Core → GitVersion.Core.Tests[TestFixture]
public class MyServiceTests
{
[Test]
public void MethodName_Scenario_ExpectedResult()
{
// Arrange
var service = new MyService();
// Act
var result = service.DoSomething();
// Assert
result.ShouldBe(expected);
}
[TestCase("input1", "expected1")]
[TestCase("input2", "expected2")]
public void MethodName_WithParameters_ReturnsExpected(string input, string expected)
{
var result = service.Process(input);
result.ShouldBe(expected);
}
}GitVersion.ymlGitVersion.yaml.GitVersion.yml.GitVersion.yamlJSON schemas are in schemas/ directory for validation.
Build agent integrations write environment variables with GitVersion_ prefix:
// Example: GitHub Actions
Environment.SetEnvironmentVariable($"GitVersion_{name}", value);dotnet run --project src/GitVersion.App# Run with detailed output
dotnet test --project ./src/GitVersion.Core.Tests/GitVersion.Core.Tests.csproj -v detailed
# Run specific test
dotnet test --filter "FullyQualifiedName=GitVersion.Core.Tests.MyTest"# Build with warnings as errors
dotnet build ./src/GitVersion.slnx -warnaserrorThis repository uses Microsoft.CodeAnalysis.PublicApiAnalyzers to track public API surface.
PublicAPI.Unshipped.txt: All new or modified public APIs go herePublicAPI.Shipped.txt: Only deletions are allowed; never add or modify entries directlyPublicAPI.Unshipped.txtPublicAPI.Shipped.txt to PublicAPI.Unshipped.txt (marked as
removed) and add the new signature to PublicAPI.Unshipped.txtPublicAPI.Shipped.txt when an API is being deletedmark-shipped.ps1 script© GitTools, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .github/skills/dotnet-dev of GitTools/GitVersion.
Open the folder on GitHubat commit 92e2456
GitVersion .NET Development next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| GitVersion .NET Development this skillGitTools/GitVersion | 3.1k | — | ~1.7k | Automated safety check: Pass | MIT | |
| Akka.Hosting Actor PatternsAaronontheweb/dotnet-skills | 1.2k | 1 repos | ~5k | Automated safety check: Pass | MIT | |
| Git HooksProrise-cool/Claude-Code-Multi-Agent | 305 | — | ~3.6k | Automated safety check: Notes | None | |
| Update Dotty Docsnewrelic/newrelic-dotnet-agent | 117 | — | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| Dotnet Patternsaffaan-m/ECC | 275k | 1 repos | ~2.3k | Automated safety check: Pass | MIT | |
| Dotnet Best Practicesgithub/awesome-copilot | 40k | 3 repos | ~808 | Automated safety check: Pass | MIT |
Aaronontheweb/dotnet-skills
Shows how to build entity actors with Akka.Hosting so the same code runs in local unit tests and in a sharded cluster in production.
Prorise-cool/Claude-Code-Multi-Agent
Central authority on git hook implementations, modern best practices, and tooling for .NET/C, JavaScript/TypeScript, Python, and polyglot repositories.
newrelic/newrelic-dotnet-agent
A skill your agent uses when the user mentions a Dotty PR, dotty (package/dependency) updates, or asks to update the .NET agent compatibility docs / net-agent-compatibility-requirements after tested…
affaan-m/ECC
Idiomatic C and .NET patterns, conventions, dependency injection, async/await, and best practices for building robust, maintainable .NET applications.
github/awesome-copilot
Ensure .NET/C code meets best practices for the solution/project.
github/awesome-copilot
Review the C/.NET code for design pattern implementation and suggest improvements.
GitTools/GitVersion
Searches a codebase by meaning with the jbcontext CLI when you do not know which file or symbol holds the behavior you are looking for.
Categories
Gives repository-specific .NET guidance for GitVersion: build and test commands, central package management, project layout and coding conventions. The skill is tied to the GitVersion repository.props` rather than in individual project files, and shows how to add a package while keeping the version central.
GitVersion .NET Development fits situations like: building and testing the GitVersion solution; adding or updating a package under central package management; finding which GitVersion project owns a piece of behavior; writing C# that follows the repository's constructor and logging conventions.
Run `npx skills add GitTools/GitVersion --skill dotnet-dev -a claude-code`. Or copy the skill folder (.github/skills/dotnet-dev in GitTools/GitVersion) into .claude/skills/dotnet-dev in your project. Claude Code loads it when a task matches its description.
Run `npx skills add GitTools/GitVersion --skill dotnet-dev -a codex`. Or copy the skill folder (.github/skills/dotnet-dev in GitTools/GitVersion) into .agents/skills/dotnet-dev in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add GitTools/GitVersion --skill dotnet-dev -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dotnet-dev, .gemini/skills/dotnet-dev, .github/skills/dotnet-dev and .opencode/skills/dotnet-dev in your project.
Going by SKILL.md and its folder, GitVersion .NET Development needs the command-line tools its instructions call (dotnet). Our summary lists: .NET SDK able to build `src/GitVersion.slnx`.
SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
GitVersion .NET Development is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.7k tokens (SKILL.md is roughly 6.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with GitVersion .NET Development: Akka.Hosting Actor Patterns (Aaronontheweb/dotnet-skills, 1.2k stars), Git Hooks (Prorise-cool/Claude-Code-Multi-Agent, 305 stars), Update Dotty Docs (newrelic/newrelic-dotnet-agent, 117 stars) and Dotnet Patterns (affaan-m/ECC, 275k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
GitTools (a GitHub organization) maintains it in GitTools/GitVersion, which has 3,149 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 7, 2026.
Source: GitTools/GitVersion on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.