modern-csharp について
リポジトリのターゲットフレームワーク、SDK、言語バージョンに合わせて、最新の C# 機能を選択・適用するスキルです。計画、検証、構造化された結果報告を通じて機能に基づく変更を進めます。
主な機能
- 01フレームワーク、SDK、言語バージョンの制約確認
- 02サポート対象の安定した言語機能の優先
- 03依頼されていない一括構文変更の回避
- 04プレビュー機能の明示的な選択扱い
- 05具体的な変更の計画、検証、報告
活用シーン
- 01C# 13 または C# 14 の互換性評価
- 02プロジェクトの制約に沿ったコードのモダナイズ
- 03各バージョンでの言語機能使用のレビュー
- 04必要な機能に合わせたツールチェーンの更新
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ managedcode/ dotnet-skills --skill modern-csharpインストール後、Claude Code で/modern-csharpを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
manifest.jsonreferences/csharp-modern-features.mdmigration.mdpatterns.md詳細
.NET 向けモダン C#
使用するタイミング
- リポジトリで、よりモダンで慣用的な C# コードが求められている
- 変更が言語バージョンとの互換性に依存する
- チームが、バージョンをまたいだ C# 機能の使い方をアップグレードまたはレビューしている
- C# 13 または C# 14 の機能を安全に使用できるか確認したい
価値
- コード、ドキュメント、設定、テスト、CI、レビュー成果物など、具体的なプロジェクト差分を作成します
- 明確な計画、検証、最終確認のスキルを通じて曖昧さを減らします
- 再利用可能なプロジェクトコンテキストを残し、今後のタスクをより迅速かつ安全に進められるようにします
使用しないケース
- F# や VB など、C# 以外の .NET 言語
- 言語機能の選択を伴わない、アナライザーのみまたはフォーマッターのみの設定
入力
- 対象の
TFMまたはTFMs - 明示的に指定された
LangVersion(存在する場合) - 現在の SDK バージョン
.editorconfigとAGENTS.mdに記載されたチームのスタイルルール
クイックスタート
- 最も近い
AGENTS.mdを読み、対象範囲と制約を確認します。 - このスキルの
Workflowを、結果が許容できるものになるまでRalph Loopで実行します。 - 具体的な成果物と検証の証拠を含めて、
Required Result Formatを返します。
ワークフロー
- リポジトリのターゲットフレームワークと明示的な
LangVersionから、実際に使用できる言語バージョンの上限を判定します。 - 現在のリポジトリで実際にサポートされている安定版の機能を優先します。
- 定型コードを減らし、正確性を高め、または不変条件を明確にできる場合は、モダンな構文を使用します。
- リポジトリがその変更を望んでいない限り、新しい構文へコードベースを一括で書き換えないでください。
- プレビュー機能は、明示的に選択された場合にのみ使用します。現在のマシンに新しい SDK があるからといって、プレビュー機能が利用可能だと想定しないでください。
- C# 13 と C# 14 には特に注意します。
- C# 13 は
.NET 9の安定版言語です - C# 14 は
.NET 10の安定版言語です
- C# 13 は
- 機能の選択によってアーキテクチャ、スタイルルール、または生成コードのパターンが変わる場合は、以下と調整します。
dotnetanalyzer-configarchitecture
- 機能主導のリファクタリング後は、リポジトリの .NET 品質確認を
dotnetで実行します。
最新の上流情報
.NET runtimeのv10.0.11はサービスリリースです。それだけを理由に言語機能の書き換えを行うべきではありません。.NET SDKのv10.0.400は現在の 10.0.4xx 機能バンドであり、ファイルベースのアプリの動作を拡張します。ただし、言語機能は引き続きリポジトリが選択するコンパイラーに依存します。互換性のあるコンパイラーとLangVersionを明示的に設定していない限り、古いツールセットに固定されたリポジトリで C# 13 または C# 14 の構文を使用しないでください。
不足している場合のブートストラップ
要求された C# 機能に、リポジトリにまだない SDK または言語サポートが必要な場合:
- 現状を確認します。
dotnet --list-sdksrg -n "TargetFramework|LangVersion|TargetFrameworks" -g '*.csproj' -g 'Directory.Build.*' .
- リポジトリが現在の安定版言語レベルを維持するのか、意図的にアップグレードするのかを確認します。
- 機能に新しい対応 SDK またはターゲットフレームワークが必要な場合、ローカルマシンに偶然依存するのではなく、リポジトリのツールチェーンを計画的にアップグレードします。
- リポジトリで明示的な
LangVersionが必要な場合は、プロジェクトまたは共有 MSBuild 設定に記録します。 - 機能またはツールチェーンの変更後に
dotnet build SOLUTION_OR_PROJECTを実行し、status: configuredまたはstatus: improvedを返します。 - リポジトリが必要な言語レベルより下の状態を意図的に維持する場合は、
status: not_applicableを返します。
提供内容
- リポジトリで実際に使用できる言語バージョンに適合したモダンな C# コード
- 新しい安定版機能のほうが明確な場合に、古いパターンを減らします
- プレビュー機能や未対応の言語機能が誤って混入しないようにします
検証
- 選択した構文が、リポジトリの
TFMとLangVersionでサポートされている - その機能によって、明確さ、正確性、または保守性が向上する
- プレビュー専用の機能は、リポジトリで明示的に選択されている場合にのみ使用されている
- スタイルとアナライザーのルールが、新しい構文と引き続き一致している
Ralph Loop
ドキュメント、アーキテクチャ、テスト、ツール関連の作業を含め、すべてのタスクで Ralph Loop を使用します。
- 最初に計画を立てます(必須):
- 現状を分析する
- 目標とする成果、制約、リスクを定義する
- 詳細な実行計画を作成する
- 最後に実行する最終検証スキルを、順序と理由を添えて列挙する
- 計画したステップを1つ実行し、具体的な差分を作成します。
- 結果をレビューし、次に行う修正を実行可能な形で記録します。
- 小さな単位で修正を適用し、関連するチェックまたはレビューを再実行します。
- 各反復の後に計画を更新します。
- 成果が許容できる状態になるか、明示的な例外のみが残るまで繰り返します。
- 依存関係が不足している場合は、それをセットアップするか、明示的な理由と代替手段を添えて
status: not_applicableを返します。
必須の結果形式
status:complete|clean|improved|configured|not_applicable|blockedplan:簡潔な計画と現在の反復ステップactions_taken:実施した具体的な変更validation_skills:最後に実行したスキル、または理由を添えてスキップしたスキルverification:コマンド、チェック、またはレビューの根拠の概要remaining:未解決の主要項目、またはnone
実行を伴わないセットアップのみの依頼では、status: configured と、次に実行する正確なコマンドを返します。
参考資料の読み込み
リクエストの例
- 「この C# コードをよりモダンにしてください。」
- 「.NET 9 ではどの機能を使用できますか?」
- 「このリポジトリで C# 13 または C# 14 を活用できる箇所をレビューしてください。」
コメント
Markdown 対応