mcpField
N
neo-dotnet-tag-helper

neo-dotnet-tag-helper

github.com/benknightdark開発735 回インストール4 日前に更新
リポジトリ

neo-dotnet-tag-helper について

neo-dotnet-tag-helperは、C#でカスタムRazor Tag Helperを設計・生成するスキルです。タグや属性の要件を整理して実装と検証を支援し、`.cshtml`ファイルは生成しません。

主な機能

  1. 01タグと属性の要件整理
  2. 02C# Tag Helperクラスの生成
  3. 03TagBuilderによるHTML構築
  4. 04依存性注入とコンテキスト処理の指針
  5. 05型とスレッド安全性の確認

活用シーン

  1. 01再利用可能なカスタムHTMLタグの作成
  2. 02C#でのUIロジックのカプセル化
  3. 03サービス依存のTag Helperの生成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/benknightdark/neo-skills --skill neo-dotnet-tag-helper

インストール後、Claude Code で/neo-dotnet-tag-helperを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

reference/
anti-patterns.md
coding-style.md
patterns.md

詳細

.NET Tag Helper エキスパートスキル

トリガー条件

  • ユーザーが、C# でカスタム Razor Tag Helper の作成、生成、設計を依頼した場合。
  • Partial View や CSHTML を使わずに、複雑な HTML/UI ロジックを再利用可能なカスタムタグにカプセル化したい場合。
  • 対象フレームワークが .NET 6.0(LTS)以降の場合。

ワークフロー(ジェネレーターパターン)

堅牢で高性能な C# Tag Helper を作成するには、以下の手順に厳密に従ってください。

ステップ 1:要件の把握と収集(逆質問)

コードを書く前に、まだ提示されていない場合は、以下についてユーザーに確認してください。

  1. 対象 HTML タグ:HTML 内で使用するカスタムタグの名前は何ですか?(例:<my-button>、<user-card>)
  2. プロパティ:このタグが受け付けるパラメーター/属性は何ですか?(例:theme、is-active、user-id)
  3. 依存関係(DI):このタグはデータベースへのクエリやサービスの呼び出しを行う必要がありますか?(依存性注入が必要です)
  4. コンテキスト:ViewContext にアクセスする必要がありますか?(例:URL の生成やモデルの状態の確認)
ステップ 2:検討と設計(計画)

回答に基づいて、以下を行います。

  • クラス名:クラス名の末尾が TagHelper になるようにします(例:MyButtonTagHelper)。
  • 対象要素:[HtmlTargetElement("my-button")] を適用します。
  • プロパティ:HTML の kebab-case 属性を C# の PascalCase プロパティに割り当てます。必要に応じて [HtmlAttributeName("is-active")] を適用します。
  • メソッドの選択:
    • IO/非同期処理がない場合は、Process をオーバーライドします。
    • DI を使ってデータベース/API を呼び出す場合は、ProcessAsync をオーバーライドします。
ステップ 3:実行(コード生成)

C# クラス全体を生成します。以下のルールを厳守してください。

  1. Microsoft.AspNetCore.Razor.TagHelpers.TagHelper を継承します。
  2. .cshtml ファイルは生成しないでください。すべての HTML は、C# クラス内で TagBuilder を使って構築する必要があります。
  3. ViewContext が必要な場合は、[ViewContext] と [HtmlAttributeNotBound] を使用します。
  4. output.TagName、output.Attributes.SetAttribute、output.Content.SetHtmlContent を使用して、コンテンツを適切に処理します。
  5. スレッドセーフ性を確保します(注入されたスコープ付き/一時的なものを除き、インスタンスフィールドにリクエスト固有の状態を保存しないでください)。
ステップ 4:検証(品質チェック)

提示する前に、生成したコードが以下の基準を満たしているか確認します。

  • すべてのプロパティが強い型付けになっていますか?
  • HTML 要素に文字列連結ではなく TagBuilder を使用していますか?
  • タスクを待機する場合、ProcessAsync を正しく使用していますか?

成果物

C# コードを Markdown のコードブロックで囲んで提示します。_ViewImports.cshtml に登録する方法(例:@addTagHelper *, YourAssemblyName)も簡潔に説明します。

ドキュメント

公式リファレンス
内部リファレンス

コメント