mcpField
A
azure-pipelines-validator

azure-pipelines-validator

github.com/akin-ozerクラウド・DevOps329642 回インストール16 週間前に更新
リポジトリ

azure-pipelines-validator について

azure-pipelines-validatorは、Azure DevOpsのパイプラインYAMLを管理・レビューするチーム向けのスキルです。構文、ベストプラクティス、セキュリティをローカルで検査し、結果だけでは判断できない場合に外部文書を参照します。

主な機能

  1. 01パイプラインYAMLの構文検査
  2. 02ベストプラクティスのルール検査
  3. 03セキュリティ問題のスキャン
  4. 04厳格モードと項目別検査
  5. 05重大度別のレポート

活用シーン

  1. 01マージ前のパイプライン設定レビュー
  2. 02YAML構文エラーの特定
  3. 03ハードコードされたシークレットなどの確認

インストール

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

$npx skills add https://github.com/akin-ozer/cc-devops-skills --skill azure-pipelines-validator

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

同梱ファイル

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

.gitignore
assets/
.yamllint
docs/
azure-pipelines-reference.md
examples/
basic-pipeline.yml
deployment-pipeline.yml
docker-build.yml
multi-platform.yml
regression-conditional-danger.yml
regression-runonce-on-failure.yml
template-conditional-stages.yml
template-conditional-steps.yml
template-example.yml
test-with-issues.yml
scripts/
check_best_practices.py
check_security.py
python_wrapper.sh
step_walker.py
test_regressions.py
validate_azure_pipelines.sh
validate_syntax.py
yamllint_check.sh

詳細

Azure Pipelines バリデーター

このスキルを使って、Azure DevOps パイプライン YAML(azure-pipelines.yml/azure-pipelines.yaml)を、まずローカルスクリプトで検証し、ローカルの出力だけでは不十分な場合に限り、ドキュメントを確認してください。

トリガーフレーズ

次のような依頼があった場合に、このスキルを使います。

  • 「azure-pipelines.yml を検証してください。」
  • 「この Azure パイプライン YAML が失敗する原因は何ですか?」
  • 「この Azure DevOps パイプラインのセキュリティスキャンを実行してください。」
  • 「このパイプラインにベストプラクティス上の問題がないか確認してください。」
  • 「マージ前に CI でこのパイプラインをレビューしてください。」

パイプラインをゼロから生成する場合は、このスキルを使わないでください。その場合は azure-pipelines-generator を使ってください。

決定的なパス設定(曖昧さなし)

明示的な絶対パスを使うことで、どのディレクトリからでも実行できます。

REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null)"
SKILL_DIR="$REPO_ROOT/devops-skills-plugin/skills/azure-pipelines-validator"
PIPELINE_FILE="$REPO_ROOT/azure-pipelines.yml"

REPO_ROOT が空の場合は停止し、リポジトリのルートパスを確認してください。パスを推測してはいけません。

単一ファイルを検証する場合:

bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh" "$PIPELINE_FILE"

現在のディレクトリから自動検出する場合(深さ 3 まで):

bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh"

自動検出で複数のファイルが見つかった場合は、ファイルパスを 1 つ明示して再実行してください。

ローカル優先の実行モデル

  1. 事前確認
  • bash と python3 が利用可能であることを確認します。
  • 対象ファイルが存在することを確認します。
  1. ローカルバリデーターを実行
  • デフォルトの全チェック:
bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh" "$PIPELINE_FILE"
  • 構文のみ:
bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh" "$PIPELINE_FILE" --syntax-only
  • ベストプラクティスのみ:
bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh" "$PIPELINE_FILE" --best-practices
  • セキュリティのみ:
bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh" "$PIPELINE_FILE" --security-only
  • 厳格モード(警告を失敗として扱う):
bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh" "$PIPELINE_FILE" --strict
  1. 終了コードの解釈
  • 0:合格(またはブロック対象ではないチェックのみ)
  • 1:検証失敗(ブロック対象の問題あり)
  • 2:呼び出しが無効(ファイルがない/曖昧、または引数が不正)
  1. 以下のレポート形式で検出結果を返します。

想定されるレポート形式(重大度別)

必ず次の構成で結果を返します。

Validation Report: <path>

Summary:
- Blocking: <count>        # Syntax errors + Security critical/high
- Warning: <count>         # Security medium/low + best-practice warnings
- Info: <count>            # Suggestions
- Skipped: <count>         # Explicitly name skipped checks

Findings:
- [Blocking][syntax][<rule-id>] line <n> - <message>
- [Blocking][security-high][<rule-id>] line <n> - <message>
- [Warning][security-medium][<rule-id>] line <n> - <message>
- [Warning][best-practice][<rule-id>] line <n> - <message>
- [Info][best-practice][<rule-id>] line <n> - <message>

Remediation:
- <short, concrete fix per finding>

Execution Notes:
- Commands run: <exact commands>
- Environment/fallback notes: <tool missing, skipped checks, offline constraints>

エスカレーションポリシー(必要な場合のみドキュメントを確認)

まずローカルチェックを実行してください。次のいずれかに該当する場合のみ、エスカレーションしてください。

  • ローカルでの検出結果が、現在のアップストリームの挙動(タスクのバージョン、非推奨化、新しい入力)に依存する。
  • ユーザーが Azure Pipelines のタスクやスキーマについて「最新」「現在」「最近」の詳細を求めている。
  • 特定のタスク/リソース構文の妥当性をローカルスクリプトで判断できない。

エスカレーションの順序:

  1. まず Context7 のドキュメントツールを使います。
mcp__context7__resolve-library-id(...)
mcp__context7__query-docs(...)
  1. 次に公式ドキュメント(learn.microsoft.com/Microsoft Azure DevOps ドキュメント)を確認します。
  2. 最初の 2 つで不十分な場合のみ、一般的なウェブ検索を使います。

エスカレーションする場合は、参照元 URL を引用し、ローカルチェックでは何を確認できなかったかを明記してください。

フォールバック動作

ツールを利用できない場合は、次の表に従ってください。

  • 条件:yamllint を利用できない。

  • 対応:構文/ベストプラクティス/セキュリティのチェックを続行します。

  • レポート注記:「yamllint を利用できないため、YAML lint をスキップしました。」

  • 条件:python3 を利用できない、または venv/依存関係のセットアップに失敗した。

  • 対応:スクリプトによる検証を実行できないものとして扱います。依頼された場合のみ、手動で YAML をレビューします。

  • レポート注記:「Python ランタイム/依存関係が不足しているため、ローカルでのスクリプト検証を実行できませんでした。」

  • 条件:依存関係/ドキュメントが必要だが、ネットワークに接続できない。

  • 対応:実行可能なローカルチェックを行い、ドキュメント/バージョンの確認は保留します。

  • レポート注記:「オフライン環境のため、外部での確認を保留しました。」

  • 条件:自動検出で複数のパイプラインファイルが見つかった。

  • 対応:任意に選択せず、対象ファイルのパスを明示するよう求めます。

  • レポート注記:「対象ファイルを 1 つ指定するまで、検証を保留しました。」

ルール分類(スクリプトのチェック項目)

構文の例:

  • yaml-syntax
  • yaml-invalid-root
  • invalid-hierarchy
  • task-invalid-format
  • pool-invalid
  • deployment-missing-strategy

ベストプラクティスの例:

  • missing-displayname
  • task-version-zero
  • task-missing-version
  • pool-latest-image
  • missing-cache
  • missing-deployment-condition

セキュリティの例:

  • hardcoded-password
  • hardcoded-secret
  • curl-pipe-shell
  • eval-command
  • insecure-ssl
  • container-latest-tag
  • variable-not-secret

レポートでは、スクリプト出力のルール ID をそのまま使ってください。

参考資料と例

  • 構文リファレンス:docs/azure-pipelines-reference.md
  • パイプラインの例:examples/

ローカルでの簡易テスト:

bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh" "$SKILL_DIR/examples/basic-pipeline.yml"

完了条件

このスキルの実行は、以下のすべての条件を満たした時点で完了です。

  • トリガー条件が明確に記載され、冒頭近くに平易な言葉での例が示されています。
  • 検証コマンドが、曖昧さのないパスを指定して実行されています。
  • 報告では、重要度別の区分(Blocking、Warning、Info、Skipped)が使用されています。
  • ツールを利用できない場合や環境上の制約がある場合のフォールバック動作が明確に報告されています。
  • 外部ドキュメントは、ローカルでの確認だけでは不十分な場合に限って参照されています。

コメント