.claude/skills/ai-standardize-pipeline/SKILL.md
Audit and fix CI/CD GitHub Actions workflows. Checks security scanning, coverage enforcement, type checking, CVE ignores, and concurrency settings.
npx skillsauth add svange/tagmania ai-standardize-pipelineInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Audit and fix CI/CD pipeline configuration for this repository: $ARGUMENTS
Reads GitHub Actions workflow files and validates they meet the standard security/quality gate structure. Detects missing scans, inconsistent settings, and provides fixes.
/ai-standardize-pipeline # Full audit with recommendations
/ai-standardize-pipeline --validate # Report issues only, no fixes
/ai-standardize-pipeline --fix # Auto-fix detected issues
# Find all workflow files
WORKFLOWS=$(find .github/workflows -name '*.yml' -o -name '*.yaml' 2>/dev/null)
if [ -z "$WORKFLOWS" ]; then
echo "ERROR: No GitHub Actions workflows found in .github/workflows/"
exit 1
fi
# Detect ecosystem
ECOSYSTEM="unknown"
[ -f "pyproject.toml" ] && ECOSYSTEM="python"
[ -f "package.json" ] && ECOSYSTEM="node"
# Detect if repo has infrastructure (SAM/CloudFormation)
HAS_INFRA=false
[ -f "template.yaml" ] && HAS_INFRA=true
[ -f "infrastructure/template.yaml" ] && HAS_INFRA=true
# Detect repo type (library vs IaC)
DEV_BRANCH=""
for candidate in dev develop staging; do
git show-ref --verify --quiet "refs/remotes/origin/$candidate" 2>/dev/null && DEV_BRANCH=$candidate && break
done
Report: ecosystem, workflow files found, infrastructure presence, repo type.
Read each workflow file and check for the presence of required security tools.
Bandit (static security analysis)
grep -l "bandit" .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null
uv run bandit -r src/ -ll (medium+high severity)pip-audit (dependency vulnerability scanning)
grep -l "pip-audit" .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null
uv run pip-audit --desc --format json --output pip-audit-report.json--no-dev or default)--ignore-vuln GHSA-xxxx-xxxx-xxxx), not CVE IDsSemgrep (SAST pattern matching)
grep -l "semgrep" .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null
p/python, p/security-audit, p/secrets, p/owasp-top-ten)semgrep/semgrep-action@v1 or manual installLicense compliance (GPL/AGPL detection)
grep -l "pip-licenses" .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null
uv run pip-licenses --from=mixed --format=jsonnpm audit (dependency vulnerability scanning)
npm audit --audit-level=critical --omit=devSemgrep (SAST pattern matching)
p/javascript, p/typescript, p/security-audit, p/secretsFlag any missing tools with severity ERROR and provide the job/step YAML to add.
Search for coverage enforcement in test jobs:
grep -n "cov-fail-under\|coverage.*fail" .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null
--cov-fail-under=80 in pytest commands- name: Run tests with coverage
run: uv run pytest --cov=src --cov-fail-under=80 -v
Search for coverage thresholds in test configuration:
vitest.config.js or jest.config.js for coverageThreshold--coverage flaggrep -n "mypy" .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null
uv run mypy src/grep -n "tsc\|type-check\|vue-tsc" .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null
Extract all vulnerability ignore directives:
grep -n "ignore-vuln\|--ignore\|GHSA-\|CVE-" .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null
Validate:
GHSA-5239-wwwm-4pmq), not CVE IDs
grep -l "cve-review\|cve_review\|vulnerability.*review" .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null
Read concurrency config from each workflow:
grep -A3 "concurrency:" .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null
Rules:
cancel-in-progress: false
cancel-in-progress: true is acceptable
If a repo has infrastructure jobs but uses cancel-in-progress: true, flag as ERROR.
Check the standard job dependency chain:
pre-commit -> [security-scan, compliance, unit-tests] (parallel) -> release -> [publish, docs] (parallel)
pre-commit -> [security-scan, compliance, unit-tests, infra-validation] (parallel) -> deploy -> [integration-tests, smoke-tests] -> release
[quality-checks, sast-scan, unit-tests] (parallel) -> build-deploy -> deploy-verify -> [e2e suites] (parallel)
Flag if:
Check that security reports are preserved:
grep -n "upload-artifact\|actions/upload" .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null
Verify:
.github/workflows/ but has .gitlab-ci.yml, Jenkinsfile, etc., warn that this skill only supports GitHub Actions=== CI/CD Pipeline Standardization Report ===
Ecosystem: Python
Repo type: IaC (dev+main)
Infrastructure: SAM (template.yaml detected)
Workflows analyzed: 3
Security Scanning:
[PASS] Bandit: present in pipeline.yaml
[PASS] pip-audit: present in pipeline.yaml
[FAIL] Semgrep: MISSING -- add SAST scanning
[FAIL] License compliance: MISSING -- add GPL/AGPL detection
Quality Gates:
[PASS] Coverage enforcement: 80% floor in unit-tests job
[FAIL] MyPy type checking: not found in any workflow
[PASS] Pre-commit: runs as first job
Pipeline Safety:
[PASS] Concurrency: cancel-in-progress: false (correct for infra)
[WARN] CVE ignores use CVE format -- recommend GHSA identifiers
[WARN] No quarterly CVE review workflow found
Artifacts:
[PASS] Bandit report uploaded
[PASS] pip-audit report uploaded
[WARN] Semgrep SARIF not uploaded (Semgrep not configured)
Next steps:
/ai-standardize-precommit # Validate pre-commit hooks
/ai-standardize-dotfiles # Validate project config files
/ai-standardize-repo # Full standardization checklist
development
Deploy or validate Renovate dependency update configuration. Detects repo type (library vs IaC), package ecosystem, and generates or fixes renovate.json5.
development
Deploy or validate semantic-release configuration. Handles Python (python-semantic-release) and Node (JS semantic-release) repos with correct Renovate prefix alignment.
development
Audit and fix pre-commit hook configuration. Ensures consistent developer-side quality gates for formatting, linting, type checking, and secret protection.
tools
Audit and fix project config files (.editorconfig, .gitignore, pyproject.toml tool sections). Ensures consistent development experience across repos.