ln-770-crosscutting-setup について
.NET(ASP.NET Core)とPython(FastAPI)プロジェクトの横断的な設定を調整するスキルです。既存設定を検出し、ログ、エラー処理、CORS、ヘルスチェック、APIドキュメントのうち未設定の項目だけを各ワーカースキルに委任します。
主な機能
- 01.NETとPythonのスタック検出
- 02既存の横断設定の確認
- 035種類の設定ワーカーへの条件付き委任
- 04集約用エントリーポイントの生成
- 05冪等な実行
活用シーン
- 01ASP.NET Coreの共通サービス設定
- 02FastAPIのミドルウェアとヘルスチェック設定
- 03設定済み項目を保ちながら未設定項目を追加
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ levnikolaevich/ claude-code-skills --skill ln-770-crosscutting-setupインストール後、Claude Code で/ln-770-crosscutting-setupを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/cors_configuration.mderror_handling_patterns.mdlogging_patterns.mdmeta_analysis_protocol.md詳細
パス: ファイルパス(
references/、../ln-*)は、このスキルディレクトリからの相対パスです。
ln-770-crosscutting-setup
タイプ: L2 ドメインコーディネーター カテゴリ: 7XX プロジェクトブートストラップ 親: ln-700-project-bootstrap
.NET および Python プロジェクトの横断的な関心事の設定を調整します。
概要
| 項目 | 詳細 |
|---|---|
| 入力 | プロジェクトのルートディレクトリ |
| 出力 | 設定済みのロギング、エラー処理、CORS、ヘルスチェック、API ドキュメント |
| ワーカー | ln-771~ln-775 |
| スタック | .NET(ASP.NET Core)、Python(FastAPI) |
フェーズ 1:プロジェクトスタックの検出
プロジェクトファイルをスキャンして、技術スタックを特定します。
検出ルール:
| ファイルパターン | スタック | フレームワーク |
|---|---|---|
*.csproj | .NET | ASP.NET Core |
pyproject.toml または requirements.txt + FastAPI | Python | FastAPI |
アクション:
*.csprojファイルを Glob で検索します- 見つからない場合は、
pyproject.tomlまたはrequirements.txtを Glob で検索します - Python の場合は、依存関係に FastAPI が含まれているか確認します
- 検出したスタックを Context Store に保存します
Context Store の初期状態:
{
"STACK": ".NET" | "Python",
"FRAMEWORK": "ASP.NET Core" | "FastAPI",
"PROJECT_ROOT": "/path/to/project",
"FRAMEWORK_VERSION": "8.0" | "0.109.0"
}
フェーズ 2:既存の設定を確認
すでに設定されている横断的な関心事をスキャンします。
検出パターン:
| 関心事 | .NET パターン | Python パターン |
|---|---|---|
| ロギング | *.csproj 内の Serilog、Program.cs 内の UseSerilog | requirements 内の structlog、ロギング設定 |
| エラー処理 | GlobalExceptionMiddleware、UseExceptionHandler | @app.exception_handler、exception_handlers.py |
| CORS | AddCors、UseCors | CORSMiddleware |
| ヘルスチェック | AddHealthChecks、MapHealthChecks | /health ルート |
| API ドキュメント | AddSwaggerGen、UseSwagger | FastAPI が自動生成 |
アクション:
- 各パターンを Grep で検索します
- 設定済みの関心事に
skip: trueを設定します - 検出結果で Context Store を更新します
更新後の Context Store:
{
"concerns": {
"logging": { "configured": false },
"errorHandling": { "configured": false },
"cors": { "configured": true, "skip": true },
"healthChecks": { "configured": false },
"apiDocs": { "configured": false }
}
}
フェーズ 3:ワーカーの呼び出し(条件付き)
未設定の関心事に対してのみ、ワーカーに委任します。
ワーカーの呼び出し順:
| 順序 | ワーカー | 条件 | スキル呼び出し |
|---|---|---|---|
| 1 | ln-771-logging-configurator | logging.configured == false | /skill ln-771-logging-configurator |
| 2 | ln-772-error-handler-setup | errorHandling.configured == false | /skill ln-772-error-handler-setup |
| 3 | ln-773-cors-configurator | cors.configured == false | /skill ln-773-cors-configurator |
| 4 | ln-774-healthcheck-setup | healthChecks.configured == false | /skill ln-774-healthcheck-setup |
| 5 | ln-775-api-docs-generator | apiDocs.configured == false | /skill ln-775-api-docs-generator |
呼び出し(条件付き — 関心事がすでに設定済みの場合はスキップ):
Skill(skill: "ln-771-logging-configurator", args: "{STACK} {FRAMEWORK}")
Skill(skill: "ln-772-error-handler-setup", args: "{STACK} {FRAMEWORK}")
Skill(skill: "ln-773-cors-configurator", args: "{STACK} {FRAMEWORK}")
Skill(skill: "ln-774-healthcheck-setup", args: "{STACK} {FRAMEWORK}")
Skill(skill: "ln-775-api-docs-generator", args: "{STACK} {FRAMEWORK}")
各ワーカーに Context Store を渡します。
ワーカーの応答形式:
{
"status": "success" | "skipped" | "error",
"files_created": ["path/to/file.cs"],
"packages_added": ["Serilog.AspNetCore"],
"message": "Configured structured logging with Serilog"
}
フェーズ 4:集約ファイルの生成
すべての横断的サービスの単一エントリーポイントを作成します。
.NET:Extensions/ServiceExtensions.cs
設定済みのワーカーに基づいて生成します:
// Structure only - actual code generated via MCP ref
public static class ServiceExtensions
{
public static IServiceCollection AddCrosscuttingServices(
this IServiceCollection services,
IConfiguration configuration)
{
// Calls added based on configured workers:
// services.AddLogging(configuration); // if ln-771 ran
// services.AddCorsPolicy(configuration); // if ln-773 ran
// services.AddHealthChecks(); // if ln-774 ran
// services.AddSwaggerServices(); // if ln-775 ran
return services;
}
}
Python:middleware/init.py
設定済みのワーカーに基づいて生成します:
# Structure only - actual code generated via MCP ref
def configure_middleware(app):
# Middleware added based on configured workers:
# configure_logging(app) # if ln-771 ran
# configure_error_handlers(app) # if ln-772 ran
# configure_cors(app) # if ln-773 ran
# configure_health_routes(app) # if ln-774 ran
pass
フェーズ 5:概要レポート
設定されたすべての関心事の概要を表示します。
出力形式:
Cross-cutting Setup Complete
============================
Stack: .NET (ASP.NET Core 8.0)
Configured:
✓ Logging (Serilog) - Extensions/LoggingExtensions.cs
✓ Error Handling - Middleware/GlobalExceptionMiddleware.cs
✓ CORS - Extensions/CorsExtensions.cs
✓ Health Checks - Extensions/HealthCheckExtensions.cs
✓ API Docs (Swagger) - Extensions/SwaggerExtensions.cs
Skipped (already configured):
- None
Entry Point: Extensions/ServiceExtensions.cs
Add to Program.cs: builder.Services.AddCrosscuttingServices(builder.Configuration);
Packages to Install:
dotnet add package Serilog.AspNetCore
dotnet add package Swashbuckle.AspNetCore
ワーカー
| ワーカー | 目的 | スタック |
|---|---|---|
| ln-771-logging-configurator | 構造化ロギング | .NET(Serilog)、Python(structlog) |
| ln-772-error-handler-setup | グローバル例外ミドルウェア | .NET、Python |
| ln-773-cors-configurator | CORS ポリシーの設定 | .NET、Python |
| ln-774-healthcheck-setup | /health エンドポイント | .NET、Python |
| ln-775-api-docs-generator | Swagger/OpenAPI | .NET(Swashbuckle)、Python(FastAPI 組み込み) |
Context Store インターフェース
ワーカーは Context Store を介して情報を受け取り、返します。
ワーカーへの入力:
{
"STACK": ".NET",
"FRAMEWORK": "ASP.NET Core",
"FRAMEWORK_VERSION": "8.0",
"PROJECT_ROOT": "/path/to/project",
"ENVIRONMENT": "Development"
}
ワーカーからの出力:
{
"status": "success",
"files_created": [],
"packages_added": [],
"registration_code": "services.AddLogging(configuration);"
}
冪等性
このスキルは冪等です。
- フェーズ 2 では既存の設定を検出します
- すでに設定済みの場合、ワーカーはスキップします
- 集約ファイルでは既存のエントリーを保持します
重要なルール
- すでに設定済みの項目はスキップする — フェーズ 2 の検出結果に基づいてワーカーの呼び出しを制御してください(
skip: trueを設定) - すべてのワーカーに Context Store を渡す — ワーカーは
STACK、FRAMEWORK、PROJECT_ROOTに依存します - 実行したワーカーに対してのみ集約ファイルを生成する — スキップした項目の登録呼び出しは追加しないでください
- サポート対象は .NET と Python のみ —
*.csprojまたはpyproject.toml/requirements.txtと FastAPI を使って検出します - 冪等な実行 — 再実行しても設定が重複したり、既存のセットアップが壊れたりしてはなりません
TodoWrite の形式(必須):
- Detect project stack (in_progress)
- Check existing configuration (pending)
- Invoke ln-771-logging-configurator (pending)
- Invoke ln-772-error-handler-setup (pending)
- Invoke ln-773-cors-configurator (pending)
- Invoke ln-774-healthcheck-setup (pending)
- Invoke ln-775-api-docs-generator (pending)
- Generate aggregation file (pending)
- Summary report (pending)
ワーカーの呼び出し(必須)
ホストスキルの呼び出し: Skill(skill: "...", args: "...") による委任は必須です。
- Claude:Skill ツールを、上記のとおり正確に呼び出してください。
- Codex:Skill ツールがない場合は、利用可能なスキルから指定されたスキルを探し、その
SKILL.mdを読み、argsを$ARGUMENTSとして扱って、そのスキルのワークフローを実行した後、結果/成果物を持ってここに戻ってください。 - ワーカーのロジックをインラインで実行したり、対象スキルを実行せずにワーカーを完了扱いにしたりしないでください。
| フェーズ | ワーカー | コンテキスト |
|---|---|---|
| 3 | ln-771-logging-configurator | 共有(Skill ツール) — 構造化ログのセットアップ |
| 3 | ln-772-error-handler-setup | 共有(Skill ツール) — グローバル例外ミドルウェア |
| 3 | ln-773-cors-configurator | 共有(Skill ツール) — CORS ポリシーの設定 |
| 3 | ln-774-healthcheck-setup | 共有(Skill ツール) — /health エンドポイント |
| 3 | ln-775-api-docs-generator | 共有(Skill ツール) — Swagger/OpenAPI ドキュメント |
すべてのワーカー: Skill ツールを介して呼び出してください。ワーカーにはコーディネーターのコンテキストが渡されます。
完了条件
- プロジェクトのスタックを検出し、Context Store に保存した
- 既存の設定を検出した(フェーズ 2 完了)
- 未設定の項目をすべてワーカーに委任した(ln-771 から ln-775)
- 集約エントリーポイントを生成した(
ServiceExtensions.csまたはmiddleware/__init__.py) - 設定済み/スキップした項目とパッケージのインストールコマンドを含む概要レポートを表示した
参考ファイル
- ワーカーのスキル:
ln-771-logging-configurator/SKILL.mdからln-775-api-docs-generator/SKILL.md references/logging_patterns.md— スタックごとの構造化ログパターン(ln-771 に渡します)references/error_handling_patterns.md— グローバルな例外処理パターン(ln-772 に渡します)references/cors_configuration.md— スタックごとの CORS 開発/本番ポリシー(ln-773 に渡します)
フェーズ 6:メタ分析
任意の参考資料:ユーザーが実行後のメタ分析またはプロトコル形式での実行の振り返りを求めた場合に限り、references/meta_analysis_protocol.md を読み込みます。
スキルの種類:execution-orchestrator。依頼された場合は、すべてのフェーズの完了後に実行します。execution-orchestrator 形式を使ってチャットに出力します。
バージョン: 2.0.0 最終更新日: 2026-01-10