Skip to main content

azure-pipelines-validator

Validate, lint, audit, or review azure-pipelines.yml — syntax, security, best practices. Use when this capability is needed.

Aller à l'installation

Informations de source

Dépôt
tomevault-io/skills-registry
Dernière activité de la source
28 avril 2026 à 22:53
Langue détectée de SKILL.md
anglais
Étoiles
0
Forks
0

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
2 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
azure-pipelines-validator
description
Validate, lint, audit, or review azure-pipelines.yml — syntax, security, best practices. Use when this capability is needed.
metadata
{"author":"akin-ozer"}
# Azure Pipelines Validator Use this skill to validate Azure DevOps pipeline YAML (`azure-pipelines.yml` / `azure-pipelines.yaml`) with local scripts first, then escalate to docs only when local output is not enough. ## Trigger Phrases Use this skill when the user asks things like: - "Validate my `azure-pipelines.yml`." - "Why is this Azure pipeline YAML failing?" - "Run a security scan on this Azure DevOps pipeline." - "Check this pipeline for best-practice issues." - "Review this pipeline in CI before merge." Do not use this skill for pipeline generation from scratch. Use `azure-pipelines-generator` for that. ## Deterministic Path Setup (No Ambiguity) Run from any directory using explicit absolute paths: ```bash 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" ``` If `REPO_ROOT` is empty, stop and ask for the repository root path. Do not guess paths. Validate one file: ```bash bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh" "$PIPELINE_FILE" ``` Auto-detect from current directory (up to depth 3): ```bash bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh" ``` If auto-detect returns multiple files, rerun with one explicit file path. ## Local-First Execution Model 1. Preflight - Confirm `bash` and `python3` are available. - Confirm target file exists. 2. Run local validator - Default full pass: ```bash bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh" "$PIPELINE_FILE" ``` - Syntax only: ```bash bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh" "$PIPELINE_FILE" --syntax-only ``` - Best practices only: ```bash bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh" "$PIPELINE_FILE" --best-practices ``` - Security only: ```bash bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh" "$PIPELINE_FILE" --security-only ``` - Strict mode (warnings fail): ```bash bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh" "$PIPELINE_FILE" --strict ``` 3. Interpret exit behavior - `0`: pass (or non-blocking checks only) - `1`: validation failed (blocking issues) - `2`: invalid invocation (missing/ambiguous file or bad args) 4. Return findings in the report format below. ## Expected Report Format (Severity Buckets) Always return results in this structure: ```text 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> ``` ## Escalation Policy (Docs Only When Needed) Run local checks first. Escalate only when at least one condition is true: - Local finding depends on current upstream behavior (task versions, deprecations, new inputs). - User asks for "latest/current/recent" Azure Pipelines task or schema details. - Local scripts cannot determine validity for a specific task/resource syntax. Escalation order: 1. Context7 docs tooling first. ```text mcp__context7__resolve-library-id(...) mcp__context7__query-docs(...) ``` 2. Official docs second (`learn.microsoft.com` / Microsoft Azure DevOps docs). 3. General web search only if the first two are insufficient. When escalating, cite the source URL and state what local check could not answer. ## Fallback Behavior Use this matrix when tools are unavailable: - Condition: `yamllint` unavailable. - Action: Continue with syntax/best-practice/security checks. - Report note: "YAML lint skipped because yamllint is unavailable." - Condition: `python3` unavailable or venv/dependency setup fails. - Action: Mark scripted validation blocked; perform manual YAML review only if requested. - Report note: "Local scripted validation blocked by missing Python runtime/dependencies." - Condition: No network while dependencies/docs are needed. - Action: Run whatever local checks are still possible; defer doc/version verification. - Report note: "External verification deferred due offline environment." - Condition: Multiple auto-detected pipeline files. - Action: Do not pick arbitrarily; require explicit target file path. - Report note: "Validation paused until a single target file is specified." ## Rule Buckets (What the Scripts Check) Syntax examples: - `yaml-syntax` - `yaml-invalid-root` - `invalid-hierarchy` - `task-invalid-format` - `pool-invalid` - `deployment-missing-strategy` Best-practice examples: - `missing-displayname` - `task-version-zero` - `task-missing-version` - `pool-latest-image` - `missing-cache` - `missing-deployment-condition` Security examples: - `hardcoded-password` - `hardcoded-secret` - `curl-pipe-shell` - `eval-command` - `insecure-ssl` - `container-latest-tag` - `variable-not-secret` Use script output rule IDs directly in the report. ## References and Examples - Syntax reference: `docs/azure-pipelines-reference.md` - Example pipelines: `examples/` Quick local test: ```bash bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh" "$SKILL_DIR/examples/basic-pipeline.yml" ``` ## Done Criteria This skill execution is done when all conditions are true: - Trigger match is explicit and plain-language examples are provided near the top. - Validation command(s) were run with unambiguous paths. - Report uses severity buckets (`Blocking`, `Warning`, `Info`, `Skipped`). - Fallback behavior is explicitly reported for unavailable tools/environment constraints. - External docs were consulted only when local checks were insufficient. --- > Converted and distributed by [TomeVault](https://tomevault.io/claim/akin-ozer) — claim your Tome and manage your conversions. <!-- tomevault:4.0:skill_md:2026-04-11 -->
Voir sur GitHub