neo-csharp について
neo-csharpは、モダンなC#コードの作成、デバッグ、リファクタリング、レビューを支援するスキルです。対象フレームワークに応じて構文を選び、更新案や検証を提示します。
主な機能
- 01フレームワークに応じた構文選択
- 02モダン化とリファクタリングの提案
- 03強い型付けと不変データの活用
- 04Null許容と非同期処理の確認
- 05C#規約と構文の説明
活用シーン
- 01旧式C#構文のモダン化
- 02対象フレームワークに合わせたコードレビュー
- 03Null許容とキャンセルトークン処理の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ benknightdark/ neo-skills --skill neo-csharpインストール後、Claude Code で/neo-csharpを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference/anti-patterns.mdcoding-style.mdpatterns.md詳細
モダン C#(10 以降)エキスパートスキル
発動条件
- ユーザーが C# コードの作成、デバッグ、リファクタリング、またはレビューを依頼した場合。
- プロジェクトディレクトリに
*.cs、*.csproj、または単一ファイルの C# スクリプトが含まれている場合。 - 対象フレームワークが .NET 6.0(LTS)以降の場合。
- コードのモダナイズが必要な場合(例:従来の入れ子になった名前空間をファイルスコープの名前空間に変換する)。
ワークフロー
- 把握(バージョンの確認):
.csprojを確認してTargetFrameworkを特定し、使用できる構文の上限を判断します。net6.0:C# 10(ファイルスコープの名前空間、グローバル using)。net7.0:C# 11(生文字列リテラル、必須メンバー)。net8.0:C# 12(プライマリコンストラクター、コレクション式)。net9.0:C# 13(paramsコレクション、Lockオブジェクト)。net10.0:C# 14(拡張メンバー、fieldキーワード)。
- 検討(計画フェーズ):
- 現在のコードのモダナイズの度合いを評価し、リファクタリング方針を決定します。
- 低いバージョンの環境(.NET 6 など)では、プライマリコンストラクターなどの上位バージョンの構文を避けつつ、ファイルスコープの名前空間を優先的に使用します。
- 高いバージョンの環境では、定型コードを減らすため、新機能を積極的に採用します。
- 実行(実装フェーズ):
- 可読性を向上させる「シンタックスシュガー」を優先し、高品質なコードを記述します。
- 強い型付けと不変データ構造(
record、record struct)を実装します。 - パフォーマンスが重要な処理経路の最適化に、補間文字列ハンドラーと**Span**を活用します。
- 検証(標準的な検証):
- NRT(Null 許容参照型)の安全性を検証します。
- 非同期操作でキャンセルトークン(
CancellationToken)が正しく処理されていることを確認します。 - 命名規則が公式の .NET の推奨事項に準拠していることを確認します。
機能ロードマップ(C# 10~14)
C# 10 および 11(基礎)
- ファイルスコープの名前空間: インデントの階層を減らします。
- グローバル using ディレクティブ: 共通の名前空間管理を一元化します。
- 生文字列リテラル:
"""..."""を使うと、複数行の文字列や特殊文字を簡単に扱えます。 - 必須メンバー: オブジェクトの初期化時に必須プロパティが設定されるようにします。
- リストパターン:
if (list is [1, 2, ..])で強力なコレクション照合を行えます。
C# 12 および 13(生産性)
- プライマリコンストラクター: クラスレベルの依存性注入を簡素化します。
- コレクション式:
[1, 2, 3]を使って、コレクションを統一的に初期化します。 paramsコレクション: メソッドのパラメーターで、さまざまなコレクション型をサポートします。- 暗黙的な Span 変換: メモリー安全なコードをより自然に扱えます。
C# 14 以降(バージョン固有の機能)
- 拡張メンバー: 拡張プロパティ、演算子、静的メンバーを利用できます。
fieldキーワード: プロパティのロジック内でバッキングフィールドに直接アクセスします。- Null 条件付き代入:
target?.Property = value;。 - スクリプティング:
dotnet run file.csによる直接実行をサポートします。
コーディング標準
- すっきりした構造: ファイルスコープの名前空間を優先して使用します。
- 不変性: データ転送オブジェクト(DTO)には
recordを使用します。 - パフォーマンス: 重要な処理経路では
Span<T>とReadOnlySpan<char>を使用します。 - 非同期処理の安全性: 常に
CancellationTokenを渡し、.Resultや.Wait()は避けます。
提供内容
- バージョンに最適化されたコード: 対象の C# バージョンに基づき、最適なモダン構文のコードを提供します。
- モダナイズに関する知見: 古い C# 構文から新機能への移行(例:入れ子になった名前空間からファイルスコープの名前空間への移行)について、具体的なリファクタリング案を提示します。
- 構文の説明: 使用する新しい C# 機能の設計意図と構文上の利点を明確に説明します。
検証
- 提供するコードが対象の C# バージョンの構文仕様に準拠していることを確認します。
- コードが C# の強い型付けと Null 安全性(NRT)の原則に従っているか検証します。
- 純粋な C# 言語レベルで、コードの可読性とベストプラクティス(例:
Span<T>、recordの適切な使用)が確保されていることを確認します。
ドキュメント
公式リファレンス
- C# 14 の新機能(拡張メンバー、field キーワード)
- C# 13 の新機能(params コレクション、Lock オブジェクト)
- C# 12 の新機能(プライマリコンストラクター、コレクション式)
- C# 11 の新機能(生文字列リテラル、必須メンバー)
- C# 10 の新機能(ファイルスコープの名前空間、グローバル using)
- Null 許容参照型
内部リファレンス
コメント
Markdown 対応