本文へ移動
cccskills
無料GitHub で公開

csharp-best-practices

Modern .NET and C# best practices for code quality, performance, and correctness. USE FOR: choosing struct/class/record/readonly-record-struct; nullable reference types; pattern matching; primary constructors; collection expressions; required members; init-only properties; file-scoped namespaces; global usings; async/await patterns; ConfigureAwait; ValueTask vs Task; CancellationToken propagation; IAsyncEnumerable; Span<T>/Memory<T> usage; avoiding boxing; readonly struct; ArrayPool<T>; FrozenDictionary/FrozenSet; LINQ vs loops in hot paths; ArgumentNullException.ThrowIfNull; ThrowIfNegative; ThrowIfZero; IReadOnlyList return types; error handling patterns; GeneratedRegex; LoggerMessage; source generators for regex and logging; avoiding Math/MathF in favor of static methods on the numeric type. DO NOT USE FOR: generic math interfaces (use dotnet-generic-math); ASP.NET Core middleware; EF Core modeling.

日本語の概要は準備中です。原文の説明を表示しています。

NetFabric/NetFabric.Numericsスター 36(GitHub 36 + cccskills 0)

実行スコア 未検証

インストール方法を見る

含まれるファイル(5)

  • SKILL.md4.7 KB
  • references/async.md3.8 KB
  • references/language-features.md3.9 KB
  • references/performance.md4.2 KB
  • references/source-generators.md3.5 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

C# Best Practices

Targets .NET 8+ / C# 12+ unless noted.

Type Selection

ScenarioPreferred type
Small immutable value (<4 fields)readonly record struct
Value type, mutated in placestruct (avoid) or ref struct
Mutable reference typeclass
Immutable data transferrecord class
Stack-only lifetimeref struct

Language Features Quick-Ref

FeatureVersionNote
required membersC# 11enforce init in object initializer
Primary constructorsC# 12classes & structs; params are in-scope everywhere
Collection expressions [1, 2, 3]C# 12replaces new List<>, new[], Array.Empty<>
Raw string literals """..."""C# 11no escape sequences needed
Pattern matching (switch expr)C# 8+prefer over if/else chains on type/value
is type patternsC# 9if (x is Foo { Bar: > 0 } f)
nameof()C# 6always use for param names in exceptions
File-scoped namespaceC# 10namespace Foo; — one per file
Global usingsC# 10put in GlobalUsings.cs
init-only settersC# 9immutable after construction

Full examples → references/language-features.md

Nullability

  • Enable project-wide: <Nullable>enable</Nullable> in .csproj
  • Use ! only when null is provably impossible; prefer null checks
  • ArgumentNullException.ThrowIfNull(param) — validates & throws in one line
  • Return T? from "not found" lookups; never return null for empty collections (return empty)

Error Handling

Validator.NET version
ArgumentNullException.ThrowIfNull(x).NET 6
ArgumentOutOfRangeException.ThrowIfNegative(x).NET 8
ArgumentOutOfRangeException.ThrowIfZero(x).NET 8
ArgumentOutOfRangeException.ThrowIfGreaterThan(x, max).NET 8
ObjectDisposedException.ThrowIf(condition, this).NET 7

Source Generators

PatternAttributeBenefit
Regex[GeneratedRegex("...")] on static partial methodCompile-time; no runtime compilation; faster
Logging[LoggerMessage(...)] on static partial methodZero-alloc structured logging; no boxing

Full examples → references/source-generators.md

API Design

  • Return IReadOnlyList<T> / IReadOnlyDictionary<K,V> for collections
  • Accept IEnumerable<T> for input (widest contract)
  • Accept ReadOnlySpan<T> overloads for hot paths
  • Use CancellationToken as last parameter; default to default

Math APIs

  • Never call Math.* or MathF.* — use the equivalent static method on the operand's own type instead (double.Sqrt(x), float.Pow(x, y), int.Abs(x)), available since .NET 7 via INumber<T>/IFloatingPointIeee754<T>
  • Same rule applies generically: T.Sqrt(x) when T : IRootFunctions<T> — avoids picking the wrong precision and works uniformly across float/double/custom numeric types
  • Full generic-math interface usage (INumber<T>, IFloatingPointIeee754<T>, etc.) → use the dotnet-generic-math skill

Reference Files

FileLoad When
references/language-features.mdRecords, pattern matching, primary constructors, collection expressions, raw strings
references/performance.mdSpan, Memory, ArrayPool, stackalloc, boxing, FrozenDictionary, LINQ vs loops
references/async.mdasync/await, ValueTask, ConfigureAwait, IAsyncEnumerable, CancellationToken
references/source-generators.mdGeneratedRegex, LoggerMessage

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

Abstract math for 3D rotation representations and conversions. USE FOR: understanding axis-angle representation; Euler angles (yaw/pitch/roll, convention choices); rotation matrices (SO(3)); quaternion-based rotation; converting between representations; identifying and avoiding gimbal lock; composing rotations; half-angle formula; right-hand rule. DO NOT USE FOR: quaternion arithmetic details (use quaternion-algebra); slerp/lerp interpolation (use interpolation-on-manifolds); coordinate system definitions (use coordinate-system-conversions).

日本語の概要は準備中です。原文の説明を表示しています。

NetFabric/NetFabric.Numerics362026年8月10日 更新

Design and scaffold multi-agent squads/swarms using the graph orchestration pattern (nodes = agents, edges = dependencies/data flow). USE FOR: designing a coordination topology for a multi-agent squad (sequential pipeline, parallel fan-out/aggregation, branching, feedback loop, cyclic); building an orchestrator agent that delegates to specialist agents; setting up an adversarial/tribunal code or document review with independent reviewers; scaffolding a squad's agent files for a target coding-agent harness (e.g. Copilot CLI or Claude Code custom agents). DO NOT USE FOR: authoring a single agent's frontmatter/prompt body (use copilot-cli-custom-agents, claude-code-custom-agents, or the target harness's own skill); SKILL.md authoring (use create-skill); ad-hoc multi-agent chat with no explicit topology.

日本語の概要は準備中です。原文の説明を表示しています。

NetFabric/NetFabric.Numerics362026年8月10日 更新

Find, inspect, query, redact, and troubleshoot logs, transcripts, sessions, and OpenTelemetry data from coding-agent harnesses on Windows, macOS, Linux, and WSL. USE FOR: GitHub Copilot in VS Code; Copilot CLI; Claude Code; OpenAI Codex; Gemini CLI; OpenCode; Cursor, Windsurf, Kiro, or other VS Code-family editors; locating log files; diagnosing tool or model failures; correlating turns, subagents, and tool calls; querying JSONL, plaintext, or SQLite without spending model tokens; preparing sanitized diagnostics. DO NOT USE FOR: application logs unrelated to coding agents; uploading raw logs; treating unstable transcript schemas as public APIs.

日本語の概要は準備中です。原文の説明を表示しています。

NetFabric/NetFabric.Numerics362026年8月10日 更新

agents-md

無料

Author and maintain AGENTS.md files — the open, tool-agnostic format for giving coding agents project context. Use when: creating AGENTS.md; writing an agent instructions file; root or nested AGENTS.md for monorepos; migrating CLAUDE.md, AGENT.md, .cursor/rules, or copilot-instructions.md to AGENTS.md; greenfield project setup before code exists; brownfield onboarding for an existing codebase; documenting build/test/lint commands, code style, PR/commit conventions, and security considerations for agents; AGENTS.md discovery and precedence rules. Works for any language, framework, or project size. DO NOT USE FOR: authoring SKILL.md skill files (use create-skill); APM package/plugin authoring (use apm-producer); language-specific style rules (use language skills e.g. csharp-best-practices).

日本語の概要は準備中です。原文の説明を表示しています。

NetFabric/NetFabric.Numerics362026年8月10日 更新

Abstract math for angle measurement, unit systems, and circular arithmetic. USE FOR: implementing angle types; converting between degrees/radians/gradians/revolutions; reducing angles to canonical range [0, Full); computing reference angles and quadrants; implementing safe modular arithmetic with negative inputs; angle addition and subtraction; classifying angles by sign and size. DO NOT USE FOR: trigonometric functions (use trigonometric-functions); coordinate conversions (use coordinate-system-conversions); interpolation (use interpolation-on-manifolds).

日本語の概要は準備中です。原文の説明を表示しています。

NetFabric/NetFabric.Numerics362026年8月10日 更新

Create and maintain Claude Code custom subagents (.claude/agents/*.md files). USE FOR: authoring project (.claude/agents/) or user (~/.claude/agents/) subagent files; frontmatter fields (name, description, tools, disallowedTools, model, permissionMode, maxTurns, skills, mcpServers, hooks, memory, background, effort, isolation, color, initialPrompt); writing descriptions that drive automatic delegation and 'use proactively' phrasing; invoking subagents via natural language, @-mention, session-wide --agent, or the Agent tool; restricting which subagent types a coordinator can spawn with Agent(name1, name2); nested subagents and depth limits; built-in subagents (Explore, Plan, general-purpose, claude); troubleshooting a subagent that won't load or isn't invoked. DO NOT USE FOR: GitHub Copilot CLI custom agents (use copilot-cli-custom-agents); agent teams/teammates (a different, session-spanning feature); MCP server authoring; SKILL.md authoring (use create-skill).

日本語の概要は準備中です。原文の説明を表示しています。

NetFabric/NetFabric.Numerics362026年8月10日 更新

NetFabric のスキルをすべて見る

このスキルの問題を報告する