Dotnet Csharp
novotnyllc/dotnet-artisan
Baseline C skill loaded for every .NET code path. An agent skill from novotnyllc/dotnet-artisan.
Write modern, high-performance C code using records, pattern matching, value objects, async/await, Span<T/Memory<T, and best-practice API design patterns.
$ npx skills add sketch7/FluentlyHttpClient --skill modern-csharp-coding-standards -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install sketch7/FluentlyHttpClient modern-csharp-coding-standards --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/sketch7/FluentlyHttpClient.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/modern-csharp-coding-standards .claude/skills/modern-csharp-coding-standards && 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 "modern-csharp-coding-standards" agent skill from https://github.com/sketch7/FluentlyHttpClient/tree/main/.agents/skills/modern-csharp-coding-standards into .claude/skills/modern-csharp-coding-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "modern-csharp-coding-standards", 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/sketch7/FluentlyHttpClient/tree/main/.agents/skills/modern-csharp-coding-standardsType 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 sketch7/FluentlyHttpClient --skill modern-csharp-coding-standards -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install sketch7/FluentlyHttpClient modern-csharp-coding-standards --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sketch7/FluentlyHttpClient.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/modern-csharp-coding-standards .agents/skills/modern-csharp-coding-standards && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "modern-csharp-coding-standards" agent skill from https://github.com/sketch7/FluentlyHttpClient/tree/main/.agents/skills/modern-csharp-coding-standards into .agents/skills/modern-csharp-coding-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "modern-csharp-coding-standards", 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 sketch7/FluentlyHttpClient --skill modern-csharp-coding-standards -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install sketch7/FluentlyHttpClient modern-csharp-coding-standards --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sketch7/FluentlyHttpClient.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/modern-csharp-coding-standards .cursor/skills/modern-csharp-coding-standards && 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 "modern-csharp-coding-standards" agent skill from https://github.com/sketch7/FluentlyHttpClient/tree/main/.agents/skills/modern-csharp-coding-standards into .cursor/skills/modern-csharp-coding-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "modern-csharp-coding-standards", 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/sketch7/FluentlyHttpClient.git --path .agents/skills/modern-csharp-coding-standards--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 sketch7/FluentlyHttpClient --skill modern-csharp-coding-standards -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install sketch7/FluentlyHttpClient modern-csharp-coding-standards --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sketch7/FluentlyHttpClient.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/modern-csharp-coding-standards .gemini/skills/modern-csharp-coding-standards && 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 "modern-csharp-coding-standards" agent skill from https://github.com/sketch7/FluentlyHttpClient/tree/main/.agents/skills/modern-csharp-coding-standards into .gemini/skills/modern-csharp-coding-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "modern-csharp-coding-standards", 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 sketch7/FluentlyHttpClient modern-csharp-coding-standardsInstalls 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 sketch7/FluentlyHttpClient --skill modern-csharp-coding-standards -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/sketch7/FluentlyHttpClient.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/modern-csharp-coding-standards .github/skills/modern-csharp-coding-standards && 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 "modern-csharp-coding-standards" agent skill from https://github.com/sketch7/FluentlyHttpClient/tree/main/.agents/skills/modern-csharp-coding-standards into .github/skills/modern-csharp-coding-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "modern-csharp-coding-standards", 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 sketch7/FluentlyHttpClient --skill modern-csharp-coding-standards -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install sketch7/FluentlyHttpClient modern-csharp-coding-standards --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sketch7/FluentlyHttpClient.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/modern-csharp-coding-standards .opencode/skills/modern-csharp-coding-standards && 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 "modern-csharp-coding-standards" agent skill from https://github.com/sketch7/FluentlyHttpClient/tree/main/.agents/skills/modern-csharp-coding-standards into .opencode/skills/modern-csharp-coding-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "modern-csharp-coding-standards", 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.
modern-csharp-coding-standardsWrite modern, high-performance C code using records, pattern matching, value objects, async/await, Span<T/Memory<T, and best-practice API design patterns.
Modern Csharp Coding Standards is an agent skill from sketch7/FluentlyHttpClient. 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.
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files (for example `anti-patterns-and-reflection.md`, `composition-and-error-handling.md` and `performance-and-api-design.md`).
It sits in Development, covering Code quality, Async programming and API design. It works with C#. The repository describes itself as: Http Client for .NET Standard with fluent APIs which are intuitive, easy to use and also highly extensible. The licence is MIT.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 397ee9b. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are csharp).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
learn.microsoft.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.
Modern Csharp Coding Standards loads about 2.7k tokens when it runs. Until then it costs about 63 tokens; SKILL.md has 606 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 sketch7/FluentlyHttpClient at commit 397ee9b, republished under its MIT licence (© sketch7). 606 words, ~2,664 tokens.
.claude/skills/modern-csharp-coding-standards/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Use this skill when:
<T>/Memory<T> examples and API design principlesrecord types and init-only propertiesswitch expressions and patterns extensivelySpan<T> and Memory<T> for performance-critical codereadonly record struct for value objectsUse record types for DTOs, messages, events, and domain entities.
// Simple immutable DTO
public record CustomerDto(string Id, string Name, string Email);
// Record with validation in constructor
public record EmailAddress
{
public string Value { get; init; }
public EmailAddress(string value)
{
if (string.IsNullOrWhiteSpace(value) || !value.Contains('@'))
throw new ArgumentException("Invalid email address", nameof(value));
Value = value;
}
}
// Records with collections - use IReadOnlyList
public record ShoppingCart(
string CartId,
string CustomerId,
IReadOnlyList<CartItem> Items
)
{
public decimal Total => Items.Sum(item => item.Price * item.Quantity);
}When to use record class vs record struct:
record class (default): Reference types, use for entities, aggregates, DTOs with multiple propertiesrecord struct: Value types, use for value objects (see next section)Value objects should always be readonly record struct for performance and value semantics. Use explicit conversions, never implicit operators.
public readonly record struct OrderId(string Value)
{
public OrderId(string value) : this(
!string.IsNullOrWhiteSpace(value)
? value
: throw new ArgumentException("OrderId cannot be empty", nameof(value)))
{ }
public override string ToString() => Value;
}
public readonly record struct Money(decimal Amount, string Currency);
public readonly record struct CustomerId(Guid Value)
{
public static CustomerId New() => new(Guid.NewGuid());
}See value-objects-and-patterns.md for complete examples including multi-value objects, factory patterns, and the no-implicit-conversion rule.
Use switch expressions, property patterns, relational patterns, and list patterns for cleaner code.
public decimal CalculateDiscount(Order order) => order switch
{
{ Total: > 1000m } => order.Total * 0.15m,
{ Total: > 500m } => order.Total * 0.10m,
{ Total: > 100m } => order.Total * 0.05m,
_ => 0m
};See value-objects-and-patterns.md for full pattern matching examples.
Enable nullable reference types in your project and handle nulls explicitly.
// In .csproj
<PropertyGroup>
<Nullable>enable</Nullable>
</PropertyGroup>
// Explicit nullability
public string? FindUserName(string userId)
{
var user = _repository.Find(userId);
return user?.Name;
}
// Pattern matching with null checks
public decimal GetDiscount(Customer? customer) => customer switch
{
null => 0m,
{ IsVip: true } => 0.20m,
{ OrderCount: > 10 } => 0.10m,
_ => 0.05m
};
// Guard clauses with ArgumentNullException.ThrowIfNull (C# 11+)
public void ProcessOrder(Order? order)
{
ArgumentNullException.ThrowIfNull(order);
// order is now non-nullable in this scope
Console.WriteLine(order.Id);
}Avoid abstract base classes. Use interfaces + composition. Use static helpers for shared logic. Use records with factory methods for variants.
See composition-and-error-handling.md for full examples.
// Async all the way - always accept CancellationToken
public async Task<Order> GetOrderAsync(string orderId, CancellationToken cancellationToken)
{
var order = await _repository.GetAsync(orderId, cancellationToken);
return order;
}
// ValueTask for frequently-called, often-synchronous methods
public ValueTask<Order?> GetCachedOrderAsync(string orderId, CancellationToken cancellationToken)
{
if (_cache.TryGetValue(orderId, out var order))
return ValueTask.FromResult<Order?>(order);
return GetFromDatabaseAsync(orderId, cancellationToken);
}
// IAsyncEnumerable for streaming
public async IAsyncEnumerable<Order> StreamOrdersAsync(
string customerId,
[EnumeratorCancellation] CancellationToken cancellationToken = default)
{
await foreach (var order in _repository.StreamAllAsync(cancellationToken))
{
if (order.CustomerId == customerId)
yield return order;
}
}Key rules:
CancellationToken with = defaultConfigureAwait(false) in library code.Result or .Wait())<T> and Memory<T>Use Span<T> for synchronous zero-allocation operations, Memory<T> for async, and ArrayPool<T> for large temporary buffers.
See performance-and-api-design.md for complete Span/Memory examples and the API design section.
For expected errors, use Result<T, TError> instead of exceptions. Use exceptions only for unexpected/system errors.
See composition-and-error-handling.md for the full Result type implementation and usage examples.
Banned: AutoMapper, Mapster, ExpressMapper. Use explicit mapping extension methods instead. Use UnsafeAccessorAttribute (.NET 8+) when you genuinely need private member access.
See anti-patterns-and-reflection.md for full guidance.
// File: Domain/Orders/Order.cs
namespace MyApp.Domain.Orders;
// 1. Primary domain type
public record Order(
OrderId Id,
CustomerId CustomerId,
Money Total,
OrderStatus Status,
IReadOnlyList<OrderItem> Items
)
{
public bool IsCompleted => Status is OrderStatus.Completed;
public Result<Order, OrderError> AddItem(OrderItem item)
{
if (Status is not OrderStatus.Draft)
return Result<Order, OrderError>.Failure(
new OrderError("ORDER_NOT_DRAFT", "Can only add items to draft orders"));
var newItems = Items.Append(item).ToList();
var newTotal = new Money(
Items.Sum(i => i.Total.Amount) + item.Total.Amount,
Total.Currency);
return Result<Order, OrderError>.Success(
this with { Items = newItems, Total = newTotal });
}
}
// 2. Enums for state
public enum OrderStatus { Draft, Submitted, Processing, Completed, Cancelled }
// 3. Related types
public record OrderItem(ProductId ProductId, Quantity Quantity, Money UnitPrice)
{
public Money Total => new(UnitPrice.Amount * Quantity.Value, UnitPrice.Currency);
}
// 4. Value objects
public readonly record struct OrderId(Guid Value)
{
public static OrderId New() => new(Guid.NewGuid());
}
// 5. Errors
public readonly record struct OrderError(string Code, string Message);record for DTOs, messages, and domain entitiesreadonly record struct for value objectsswitch expressionsCancellationToken in all async methodsSpan<T> and Memory<T> for high-performance scenariosIEnumerable<T>, IReadOnlyList<T>)Result<T, TError> for expected errorsArrayPool<T> for large allocationsreadonly record struct).Result, .Wait())byte[] when Span<byte> sufficesCancellationToken parametersArrayPool)See anti-patterns-and-reflection.md for detailed anti-pattern examples.
<T> and Memory<T>: https://learn.microsoft.com/en-us/dotnet/standard/memory-and-spans/© sketch7, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files in .agents/skills/modern-csharp-coding-standards of sketch7/FluentlyHttpClient.
Open the folder on GitHubat commit 397ee9b
We found 3 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 3 other GitHub owners. This page covers the copy in sketch7/FluentlyHttpClient, which our catalogue first saw on October 7, 2026.
Modern Csharp Coding Standards 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 |
|---|---|---|---|---|---|---|
| Modern Csharp Coding Standards this skillsketch7/FluentlyHttpClient | 121 | 3 repos | ~2.7k | Automated safety check: Pass | MIT | |
| Dotnet Csharpnovotnyllc/dotnet-artisan | 233 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Akka.NET Best PracticesAaronontheweb/dotnet-skills | 1.2k | 1 repos | ~3.3k | Automated safety check: Pass | MIT | |
| Review Automation OrchestratorTencentCloudBase/CloudBase-AI-Toolkit | 1.1k | — | ~1.2k | Automated safety check: Pass | MIT | |
| .NET API Compatibility DesignAaronontheweb/dotnet-skills | 1.2k | 2 repos | ~2.7k | Automated safety check: Pass | MIT | |
| Code Qualitypiomin/claude-ai-spring-boot | 1.3k | — | ~2.2k | Automated safety check: Pass | Apache-2.0 |
novotnyllc/dotnet-artisan
Baseline C skill loaded for every .NET code path. An agent skill from novotnyllc/dotnet-artisan.
Aaronontheweb/dotnet-skills
Guidance for Akka.NET actor systems covering EventStream versus DistributedPubSub, supervision, Props versus DependencyResolver, work distribution and testable cluster code.
TencentCloudBase/CloudBase-AI-Toolkit
A skill your agent uses when running or scheduling periodic repository review cycles that must dispatch the correct reviewer, aggregate findings, and escalate outcomes into reports, issues, or…
Aaronontheweb/dotnet-skills
Applies extend-only design rules to NuGet packages and distributed systems, covering source, binary and wire compatibility and how to deprecate members safely.
piomin/claude-ai-spring-boot
Comprehensive code review for Java - clean code principles, API contracts, null safety, exception handling, and performance.
DynamoDS/Dynamo
Write and review C/.NET code in Dynamo following Dynamo coding standards, modern C patterns, and repo conventions.
sketch7/FluentlyHttpClient
A skill your agent uses when C async/await patterns including Task, ValueTask, async streams, and cancellation.
sketch7/FluentlyHttpClient
A skill your agent uses when building .NET 10 or C 14 applications; when using minimal APIs, modular monolith patterns, or feature folders; when implementing HTTP resilience, Options pattern…
sketch7/FluentlyHttpClient
A skill your agent uses when C nullable reference types, null safety patterns, and migration strategies.
Works with
Categories
Write modern, high-performance C code using records, pattern matching, value objects, async/await, Span<T/Memory<T, and best-practice API design patterns. Modern Csharp Coding Standards is an agent skill from sketch7/FluentlyHttpClient. Write modern, high-performance C code using records, pattern matching, value objects, async/await, Span<T/Memory<T, and best-practice API design patterns.
Modern Csharp Coding Standards fits situations like: tasks that involve Code quality; tasks that involve Async programming; tasks that involve API design.
Run `npx skills add sketch7/FluentlyHttpClient --skill modern-csharp-coding-standards -a claude-code`. Or copy the skill folder (.agents/skills/modern-csharp-coding-standards in sketch7/FluentlyHttpClient) into .claude/skills/modern-csharp-coding-standards in your project. Claude Code loads it when a task matches its description.
Run `npx skills add sketch7/FluentlyHttpClient --skill modern-csharp-coding-standards -a codex`. Or copy the skill folder (.agents/skills/modern-csharp-coding-standards in sketch7/FluentlyHttpClient) into .agents/skills/modern-csharp-coding-standards 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 sketch7/FluentlyHttpClient --skill modern-csharp-coding-standards -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/modern-csharp-coding-standards, .gemini/skills/modern-csharp-coding-standards, .github/skills/modern-csharp-coding-standards and .opencode/skills/modern-csharp-coding-standards in your project.
SKILL.md names no scripts, command-line tools or credentials: Modern Csharp Coding Standards is instructions for the agent only.
SKILL.md names 1 domain. As links in the text: learn.microsoft.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.
Modern Csharp Coding Standards is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k 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 Modern Csharp Coding Standards: Dotnet Csharp (novotnyllc/dotnet-artisan, 233 stars), Akka.NET Best Practices (Aaronontheweb/dotnet-skills, 1.2k stars), Review Automation Orchestrator (TencentCloudBase/CloudBase-AI-Toolkit, 1.1k stars) and .NET API Compatibility Design (Aaronontheweb/dotnet-skills, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
sketch7 (a GitHub organization) maintains it in sketch7/FluentlyHttpClient, which has 121 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on September 18, 2026.
Source: sketch7/FluentlyHttpClient on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.