review-powershell について
指定された範囲の PowerShell コードについて、言語とランタイムの規約を確認するレビュー用スキルです。ファイルと行番号を示す指摘を出力し、セキュリティ、アーキテクチャ、範囲選定は扱いません。
主な機能
- 01高度な関数の規約チェック
- 02パラメーター設計と検証
- 03エラーとパイプラインの動作確認
- 04状態と互換性の確認
- 05テスト容易性のレビュー
- 06ファイルと行番号付きの指摘
活用シーン
- 01プルリクエスト前の PowerShell スクリプト確認
- 02パラメーターとパイプライン契約の検証
- 03オーケストレーションレビューの言語工程
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ nesnilnehc/ ai-cortex --skill review-powershellインストール後、Claude Code で/review-powershellを入力して読み込まれたか確認します。
同梱ファイルREADME.md
詳細
スキル:PowerShell のレビュー
目的
PowerShell のコードを、言語およびランタイムの規約に限ってレビューします。スコープ(差分かコードベース全体か)は定義せず、セキュリティやアーキテクチャの分析も行いません。これらはスコープスキルと認知スキルが担当します。集約に使う標準形式で指摘事項のリストを出力します。高度な関数の設計、パラメーターの検証とバインド、エラー処理の意味論、オブジェクトのパイプライン動作、モジュールのエクスポートと命名規約、互換性(Windows PowerShell と PowerShell 7 以降)、テスト容易性に重点を置きます。
中核目標
主な目標:指定されたコード範囲について、関数設計、パラメーターの契約、エラー処理、パイプライン動作、状態とスコープ、互換性、テスト容易性を網羅する、PowerShell 言語/ランタイムの指摘事項リストを作成します。
成功基準(すべてを満たす必要があります):
- ✅ PowerShell のみを対象とする:PowerShell の言語およびランタイムの規約のみをレビューします。スコープの選択、セキュリティ分析、アーキテクチャ分析は行いません
- ✅ PowerShell の 7 つの観点をすべて確認する:高度な関数/コマンドレットの規約、パラメーターの設計/検証、エラー処理の意味論、オブジェクトのパイプライン動作、状態/スコープ/厳密性、互換性/移植性、テスト容易性を、関連する範囲で評価します
- ✅ 指摘事項の形式に準拠する:各指摘事項に、findings-list §5.1 が求めるすべての要素を含め、カテゴリを
language-powershellとします - ✅ ファイルと行番号を記載する:すべての指摘事項に、行番号を含む具体的なファイル位置を記載します
- ✅ PowerShell 以外のコードを除外する:明示的に対象範囲に含まれていない限り、PowerShell 固有の規則について PowerShell 以外のファイルを分析しません
受け入れテスト:セキュリティ、アーキテクチャ、スコープの分析を行わずに、関連するすべての言語/ランタイムの観点を網羅し、ファイルと行番号を記載した PowerShell に特化した指摘事項リストが出力されていますか?
スコープの境界
このスキルが扱うこと:
[CmdletBinding()]、Verb-Noun命名、承認済みの動詞、begin/process/endブロック- パラメーターの型、
Mandatory、ValueFromPipeline、パラメーターセット、検証属性 - 終了エラーと非終了エラー、
-ErrorAction Stop、エラーの黙殺防止 - オブジェクトのパイプライン動作(書式設定済みテキストよりオブジェクトを優先、
Write-HostとWrite-Verboseの使い分け) - 状態、スコープ、厳密性(グローバル状態への副作用、設定変数の変更)
- Windows PowerShell 5.1 と PowerShell 7 以降の互換性および移植性
- パフォーマンスとテスト容易性(Pester でテストしやすい関数設計、DI の分離点)
このスキルが扱わないこと:
- スコープの選択 — スコープは呼び出し元が指定します
- セキュリティ分析 —
review-securityを使用してください - アーキテクチャ分析 —
review-architectureを使用してください - レビュー全体のオーケストレーション —
orchestrate-code-reviewを使用してください
引き継ぎ先:PowerShell に関する指摘事項をすべて出力したら、集約のため orchestrate-code-review に引き継ぎます。セキュリティ上の懸念(例:コマンドインジェクション、認証情報の露出)がある場合は、その旨を記載し、review-security の利用を提案してください。
ユースケース
- オーケストレーションされたレビュー:orchestrate-code-review が PowerShell プロジェクトに対し、scope -> language -> framework -> library -> cognitive の順で実行される際、言語レビューのステップとして使われます。
- PowerShell のみのレビュー:ユーザーが言語/ランタイムの規約だけの確認を希望する場合に使われます。
- PR 前のスクリプト品質チェック:マージ前にパラメーターの契約、パイプライン動作、エラーの意味論を検証します。
使用する場合:レビュー対象のコードが PowerShell(.ps1、.psm1、.psd1)であり、タスクに言語/ランタイムの品質確認が含まれる場合に使用します。スコープは呼び出し元またはユーザーが決定します。
動作
このスキルの対象範囲
- 分析対象:呼び出し元から提示された指定コード範囲(ファイルまたは差分)における、PowerShell の言語仕様とランタイムの慣例。対象範囲は決めず、入力として受け取ってください。
- 対象外:対象範囲の選定、セキュリティレビュー、アーキテクチャレビューは行わないでください。明示的に対象範囲に含まれていない限り、PowerShell 固有のルールに関して PowerShell 以外のファイルをレビューしないでください。
レビューチェックリスト(PowerShell の観点のみ)
- 高度な関数とコマンドレットの慣例:適切な場合は
[CmdletBinding()]を使用し、承認済み動詞を使ったVerb-Noun形式の命名にし、必要な場合にのみbegin/process/endブロックを使用します。 - パラメーターの設計と検証:パラメーターの型、
Mandatory、ValueFromPipeline、パラメーターセット、検証属性(ValidateSet、ValidatePattern、ValidateScript)に矛盾がなく、一貫性があることを確認します。 - エラー処理のセマンティクス:終了エラーと非終了エラーを区別し、必要に応じて
-ErrorAction Stopを使用します。エラーを黙って無視したり、空のcatchを使用したりしないでください。 - オブジェクトパイプラインの動作:内部処理では書式設定済みテキストよりもオブジェクトを優先し、データ出力に
Write-Hostを使用しないでください。関数の出力が予測可能で、パイプラインで安全に扱えることを確認します。 - 状態、スコープ、厳密性:意図しないグローバルな副作用や状態を持つ副作用、制御されていない設定変数の変更、曖昧な変数の初期化を避けます。適切な場合は厳密モードを使用します。
- 互換性と移植性:Windows PowerShell 5.1 と PowerShell 7 以降の違い、プラットフォーム固有のコマンドやモジュール、パスの扱いを考慮します。
- パフォーマンスとテスト容易性:パイプラインのコストの高い誤用や、配列の繰り返し結合を避けます。Pester でテストしやすく、依存関係を分離しやすいように関数を構成します。
トーンと参照
- プロフェッショナルかつ技術的に:具体的な場所(file:line)を示します。 findings-list §5.1 が求めるすべての要素を含む指摘を出力します。
入力と出力
入力
- コード範囲:ユーザーまたはスコープスキルがすでに選定したファイル、ディレクトリ、または差分。このスキルでは対象範囲を決めず、提示された PowerShell コードについて言語上の慣例のみをレビューします。
出力
Categoryがlanguage-powershellの、specs/findings-list.md で定義された形式の指摘を、0 件以上出力します。- このスキルの Category は
language-powershellです。
制約
厳守すべき境界
- セキュリティ、アーキテクチャ、対象範囲の選定に関する作業は行わないでください。PowerShell の言語仕様とランタイムの慣例に限定してください。
- 具体的な場所や実行可能な提案なしに結論を述べないでください。
- 明示的に対象範囲に含まれていない限り、PowerShell 固有のルールに関して PowerShell 以外のコードをレビューしないでください。
スキルの境界
以下の作業は行わないでください(他のスキルが担当します)。
- コード範囲の選定や定義は行わないでください。対象範囲は呼び出し元または
orchestrate-code-reviewが決定します。 - セキュリティ分析(認証情報の取り扱い、インジェクションのリスク)は行わないでください。
review-securityを使用してください。 - アーキテクチャ分析は行わないでください。
review-architectureを使用してください。
作業を終了して引き継ぐタイミング:
- PowerShell に関するすべての指摘を出力したら、集約のために
orchestrate-code-reviewへ引き継ぎます。 - ユーザーが完全なレビュー(対象範囲+言語+認知面)を必要としている場合は、
orchestrate-code-reviewへ案内します。 - セキュリティ上の懸念(認証情報の露出、コマンドインジェクション)が見つかった場合は、その旨を伝え、
review-securityを提案します。
セルフチェック
主な成功基準
- PowerShell のみを対象:PowerShell 言語とランタイムの規約のみをレビューし、スコープの選定、セキュリティ、アーキテクチャの分析は行わない
- PowerShell の 7 つの観点をすべて網羅:該当する場合に、高度な関数/コマンドレットの規約、パラメーターの設計/検証、エラー処理のセマンティクス、オブジェクトのパイプライン動作、状態/スコープ/厳格性、互換性/移植性、テスト容易性を評価する
- 指摘事項の形式に準拠:すべての指摘事項に findings-list §5.1 で必須とされるすべての要素を含め、カテゴリを
language-powershellとする - ファイルと行番号の参照:すべての指摘事項で、行番号を含む具体的なファイル位置を参照する
- PowerShell 以外のコードを除外:明示的に対象に含まれていない限り、PowerShell 固有のルールについて PowerShell 以外のファイルを分析しない
プロセス品質チェック
- PowerShell 言語/ランタイムの観点のみをレビューしましたか(スコープ/セキュリティ/アーキテクチャの分析は行わず)?
- 該当する場合に、関数/パラメーターの規約、エラー処理、パイプラインの動作、互換性、テスト容易性を網羅していますか?
- すべての指摘事項に findings-list §5.1 で必須とされるすべての要素が含まれ、category=language-powershell となっていますか?
- 問題を file:line 形式で参照していますか?
受け入れテスト
出力には、セキュリティ、アーキテクチャ、スコープの分析を行わずに、該当するすべての言語/ランタイムの観点を網羅し、file:line 形式の参照を含む、PowerShell に特化した指摘事項の一覧が含まれていますか?
例
例 1:パイプライン契約の不一致
- 入力:関数はパイプライン入力に対応するとしていますが、
ValueFromPipelineを宣言せず、endで配列全体のみを処理します。 - 期待される結果:パイプライン契約の不一致について指摘事項を出し、パラメーター属性と
processの使用を提案します。カテゴリ = language-powershell。
例 2:エラー処理
- 入力:スクリプトはリスクのあるコマンドを
try/catchで囲んでいますが、-ErrorAction Stopを設定していないため、非終端エラーがcatchを迂回します。 - 期待される結果:効果のないエラー処理について指摘事項を出し、明示的に終端エラーとして扱う方法を提案します。カテゴリ = language-powershell。
エッジケース:ホストへの出力によるデータ出力の汚染
- 入力:関数はオブジェクトを返しますが、処理ループ内で
Write-Hostも使用しています。 - 期待される結果:表示用の出力とデータ出力の混在により、自動化と合成可能性が損なわれることを指摘事項として出し、診断には
Write-Verbose/Write-Informationを使用し、パイプラインの利用側にはクリーンなオブジェクトを出力するよう提案します。