| name | coding-pattern-check |
| description | コーディングパターン準拠チェックを実行するスキル。 「パターンチェック」「コーディング規約」「coding pattern」「パターン準拠」 「コード規約チェック」「規約違反」「パターン違反」などのキーワードで発動する。 |
コーディングパターン準拠チェック
概要
CODING_PATTERN.md に定義されたコーディングパターンへの準拠状況をチェックし、違反箇所を報告する。
ファイル種別ごとにSub-Agentを並列起動し、効率的にチェックを実行する。
入力
- 対象: ファイルパスまたはglobパターン(デフォルト:
src/**/*.ts、テスト除外)
--include-tests: テストファイル(*.test.ts)も対象に含める
実行フロー
Step 1: パターンドキュメント読み込み
以下を読み込む:
CODING_PATTERN.md(インデックス)— パターンファイルの一覧と構成を把握
harness/patterns/*.md(分割パターンファイル)— チェック対象カテゴリに関連するファイルを選択的に読み込む
Step 2: チェックリスト読み込み
skills/coding-pattern-check/references/checklist.md を読み込み、チェック項目を把握する。
Step 3: 対象ファイルの特定と分類
引数で指定されたパスまたはglobパターンに基づいて対象ファイルを特定する。
指定がない場合は src/**/*.ts を対象とし、テストファイル(*.test.ts)を除外する。
--include-tests オプションが指定された場合はテストファイルも対象に含める。
対象ファイルを以下の4グループに分類する:
| グループ | 担当ファイル種別 | 判定条件 |
|---|
| グループ1: クライアント + 共通 | *-client.ts, common/*.ts | ファイル名が -client.ts で終わる、または common/ 配下 |
| グループ2: スキーマ + フォーマッター | *-schema.ts, *-response-formatter.ts | ファイル名が -schema.ts または -response-formatter.ts で終わる |
| グループ3: コアファイル | index.ts, types.ts, tool-routing-tables.ts, tool-descriptions.ts, constants.ts | 上記のいずれにも該当しないソースファイル |
| グループ4: テスト | *.test.ts | --include-tests 指定時のみ |
Step 4: Sub-Agent並列起動
Agent toolを使い、グループごとにSub-Agentを並列起動する。
すべてのAgentを1つのメッセージ内で同時に呼び出すこと(並列実行)。
--include-tests が未指定の場合は Agent 1〜3 の3本を並列起動する。
--include-tests が指定された場合は Agent 1〜4 の4本を並列起動する。
各Agentには subagent_type を指定せず(general-purpose)、以下のプロンプトテンプレートに基づいて指示を与える。
Agent 1: クライアント + 共通モジュール
プロンプトテンプレート:
コーディングパターン準拠チェックを実行してください。
## 参照ドキュメント
以下の2ファイルを最初に読み込んでください:
1. CODING_PATTERN.md(プロジェクトルート)
2. skills/coding-pattern-check/references/checklist.md
## チェック対象ファイル
{グループ1のファイルパス一覧を列挙}
## 適用するチェックカテゴリ
各ファイルの種別に応じて以下のカテゴリを適用してください:
- `*-client.ts`(storage除外): A, B(1-5), F, G(1-3), H
- `storage/storage-client.ts`: A, B(1-4,6), F, G(1-3), H
- `common/*.ts`: A, F, G(1-3), H
## チェック方法
- 各対象ファイルを Read ツールで読み込む
- checklist.md の該当カテゴリのルールに基づいてセマンティックにチェック
- 正規表現リントではなく、コードの文脈を理解した上で柔軟に判定する
- 明らかにパターンの意図に沿っていれば厳密な形式不一致はWARNとする
## 出力形式
ファイルごとに以下の形式で結果を出力してください:
### {ファイルパス}
- OK: すべてのパターンに準拠
or
- [ERROR] L{行番号}: {チェックID}: {説明}
- [WARN] L{行番号}: {チェックID}: {説明}
最後にこのグループのサマリを出力:
- チェック対象: {N}ファイル
- 違反あり: {N}ファイル
- ERROR: {N}件, WARN: {N}件
Agent 2: スキーマ + レスポンスフォーマッター
プロンプトテンプレート:
コーディングパターン準拠チェックを実行してください。
## 参照ドキュメント
以下の2ファイルを最初に読み込んでください:
1. CODING_PATTERN.md(プロジェクトルート)
2. skills/coding-pattern-check/references/checklist.md
## チェック対象ファイル
{グループ2のファイルパス一覧を列挙}
## 適用するチェックカテゴリ
各ファイルの種別に応じて以下のカテゴリを適用してください:
- `*-schema.ts`: A, C, G(1-3), H
- `*-response-formatter.ts`: A, D, F, G(1-3), H
## チェック方法
- 各対象ファイルを Read ツールで読み込む
- checklist.md の該当カテゴリのルールに基づいてセマンティックにチェック
- 正規表現リントではなく、コードの文脈を理解した上で柔軟に判定する
- 明らかにパターンの意図に沿っていれば厳密な形式不一致はWARNとする
## 出力形式
ファイルごとに以下の形式で結果を出力してください:
### {ファイルパス}
- OK: すべてのパターンに準拠
or
- [ERROR] L{行番号}: {チェックID}: {説明}
- [WARN] L{行番号}: {チェックID}: {説明}
最後にこのグループのサマリを出力:
- チェック対象: {N}ファイル
- 違反あり: {N}ファイル
- ERROR: {N}件, WARN: {N}件
Agent 3: コアファイル
プロンプトテンプレート:
コーディングパターン準拠チェックを実行してください。
## 参照ドキュメント
以下の2ファイルを最初に読み込んでください:
1. CODING_PATTERN.md(プロジェクトルート)
2. skills/coding-pattern-check/references/checklist.md
## チェック対象ファイル
{グループ3のファイルパス一覧を列挙}
## 適用するチェックカテゴリ
以下のカテゴリを全ファイルに適用してください:
- F, G(1-3), H
さらに、以下のパス型整合性チェックを追加で実施してください:
- `src/types.ts` のパス型(`ConoHaGetPaths` 等)に定義されたリテラルが、
`src/tool-routing-tables.ts` のハンドラーマッピングおよび `src/index.ts` の `inputSchema` 内 Zod enum と一致していること
## チェック方法
- 各対象ファイルを Read ツールで読み込む
- checklist.md の該当カテゴリのルールに基づいてセマンティックにチェック
- 正規表現リントではなく、コードの文脈を理解した上で柔軟に判定する
- 明らかにパターンの意図に沿っていれば厳密な形式不一致はWARNとする
## 出力形式
ファイルごとに以下の形式で結果を出力してください:
### {ファイルパス}
- OK: すべてのパターンに準拠
or
- [ERROR] L{行番号}: {チェックID}: {説明}
- [WARN] L{行番号}: {チェックID}: {説明}
パス型整合性チェックの結果も以下の形式で出力:
### パス型整合性チェック
- OK: types.ts / tool-routing-tables.ts / index.ts のパス定義が一致
or
- [ERROR]: {不一致の説明}
最後にこのグループのサマリを出力:
- チェック対象: {N}ファイル
- 違反あり: {N}ファイル
- ERROR: {N}件, WARN: {N}件
Agent 4: テストファイル(--include-tests 時のみ)
プロンプトテンプレート:
コーディングパターン準拠チェックを実行してください。
## 参照ドキュメント
以下の2ファイルを最初に読み込んでください:
1. CODING_PATTERN.md(プロジェクトルート)
2. skills/coding-pattern-check/references/checklist.md
## チェック対象ファイル
{グループ4のファイルパス一覧を列挙}
## 適用するチェックカテゴリ
以下のカテゴリを全ファイルに適用してください:
- A, E, G(4), H(1)
注意:
- テストファイルはF(JSDoc)カテゴリのチェック対象外
- テストファイルのインポートには `.js` 拡張子がないことを確認(E-5, E-6, G-4)
## チェック方法
- 各対象ファイルを Read ツールで読み込む
- checklist.md の該当カテゴリのルールに基づいてセマンティックにチェック
- 正規表現リントではなく、コードの文脈を理解した上で柔軟に判定する
- 明らかにパターンの意図に沿っていれば厳密な形式不一致はWARNとする
## 出力形式
ファイルごとに以下の形式で結果を出力してください:
### {ファイルパス}
- OK: すべてのパターンに準拠
or
- [ERROR] L{行番号}: {チェックID}: {説明}
- [WARN] L{行番号}: {チェックID}: {説明}
最後にこのグループのサマリを出力:
- チェック対象: {N}ファイル
- 違反あり: {N}ファイル
- ERROR: {N}件, WARN: {N}件
Step 5: 結果集約
全Sub-Agentの結果を集約し、統合レポートを生成する。
- 各Agentから返された結果をグループ順(Agent 1→2→3→4)にマージ
- 全体のサマリを算出(各Agentのサマリを合算)
Step 6: 結果出力
以下の形式で統合レポートを出力する:
## チェック結果
### src/features/openstack/compute/compute-client.ts
- OK: すべてのパターンに準拠
### src/features/openstack/example/example-client.ts
- [ERROR] L1: B-1: @packageDocumentationが見つかりません
- [WARN] L10: G-1: 相対インポートに.js拡張子がありません: "./helper"
- [ERROR] L25: B-5: executeOpenstackApi→formatResponseの呼び出しチェーンが確認できません
### src/features/openstack/compute/compute-schema.ts
- [WARN] L15: C-2: .describe()がありません: フィールド "name"
- OK: その他のパターンに準拠
## サマリ
- チェック対象: 21ファイル
- 違反あり: 2ファイル
- ERROR: 3件, WARN: 2件
重要度
| レベル | 意味 | 対応 |
|---|
| ERROR | 必須修正。パターンから明確に逸脱している | 修正必須 |
| WARN | 推奨修正。パターンに完全には合致しないが動作に影響なし | 修正推奨 |
注意事項
src/index.ts はカバレッジ対象外だがパターンチェック対象
- storageモジュールはB-5(executeOpenstackApiチェーン)の対象外、代わりにB-6を適用
- テストファイルはF(JSDoc)カテゴリのチェック対象外
- チェックはコード読解ベースで柔軟に判定する。明らかにパターンの意図に沿っていれば厳密な形式不一致はWARNとする
- 各Sub-Agentは独立して動作するため、ファイル間の依存関係チェック(パス型整合性など)はAgent 3が担当する
enforcement-level: L4 のルール(A-2, A-3, C-1, E-5, E-6, F-1, G-1, G-4, H-1, H-2)は src/architecture.test.ts で検証済みのためスキップ可能