Help us improve
Share bugs, ideas, or general feedback.
From devops-skills
Validates Azure Pipelines YAML (azure-pipelines.yml) for syntax errors, security vulnerabilities, and best practices using local linting scripts.
npx claudepluginhub akin-ozer/cc-devops-skills --plugin devops-skillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/devops-skills:azure-pipelines-validatorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
docs/azure-pipelines-reference.mdexamples/basic-pipeline.ymlexamples/deployment-pipeline.ymlexamples/docker-build.ymlexamples/multi-platform.ymlexamples/regression-conditional-danger.ymlexamples/regression-runonce-on-failure.ymlexamples/template-conditional-stages.ymlexamples/template-conditional-steps.ymlexamples/template-example.ymlexamples/test-with-issues.ymlscripts/check_best_practices.pyscripts/check_security.pyscripts/python_wrapper.shscripts/step_walker.pyscripts/test_regressions.pyscripts/validate_azure_pipelines.shscripts/validate_syntax.pyscripts/yamllint_check.shGenerates Azure DevOps pipeline YAML for CI/CD, including multi-stage workflows, Docker builds, Kubernetes deploys, language-specific setups, and reusable templates.
Provides Azure DevOps YAML pipeline best practices on multi-stage structures, triggers, scheduling, variables, caching, templates, and security for efficient CI/CD.
Discovers, triggers, monitors, and auto-fixes Azure DevOps pipelines (PR, Buddy Build, Release) for current repo/branch. Diagnoses failures from logs, applies fixes, commits/pushes, re-triggers until success or max retries. Validates PR existence and description.
Share bugs, ideas, or general feedback.
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.
Use this skill when the user asks things like:
azure-pipelines.yml."Do not use this skill for pipeline generation from scratch. Use azure-pipelines-generator for that.
Run from any directory using explicit absolute paths:
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 "$SKILL_DIR/scripts/validate_azure_pipelines.sh" "$PIPELINE_FILE"
Auto-detect from current directory (up to depth 3):
bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh"
If auto-detect returns multiple files, rerun with one explicit file path.
bash and python3 are available.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
0: pass (or non-blocking checks only)1: validation failed (blocking issues)2: invalid invocation (missing/ambiguous file or bad args)Always return results in this structure:
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>
Run local checks first. Escalate only when at least one condition is true:
Escalation order:
mcp__context7__resolve-library-id(...)
mcp__context7__query-docs(...)
learn.microsoft.com / Microsoft Azure DevOps docs).When escalating, cite the source URL and state what local check could not answer.
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."
Syntax examples:
yaml-syntaxyaml-invalid-rootinvalid-hierarchytask-invalid-formatpool-invaliddeployment-missing-strategyBest-practice examples:
missing-displaynametask-version-zerotask-missing-versionpool-latest-imagemissing-cachemissing-deployment-conditionSecurity examples:
hardcoded-passwordhardcoded-secretcurl-pipe-shelleval-commandinsecure-sslcontainer-latest-tagvariable-not-secretUse script output rule IDs directly in the report.
docs/azure-pipelines-reference.mdexamples/Quick local test:
bash "$SKILL_DIR/scripts/validate_azure_pipelines.sh" "$SKILL_DIR/examples/basic-pipeline.yml"
This skill execution is done when all conditions are true:
Blocking, Warning, Info, Skipped).