From devops-skills
Validates, lints, audits, and checks Makefiles and .mk files for syntax errors, security issues, best practices, and optimizations using GNU make dry-run, mbake, and custom bash scripts.
How this skill is triggered — by the user, by Claude, or both
Slash command
/devops-skills:makefile-validatorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill to validate Makefiles with a local-first, deterministic flow.
Use this skill to validate Makefiles with a local-first, deterministic flow.
Default validator entrypoint:
bash scripts/validate_makefile.sh <makefile-path>
Validation layers:
python3, pip3, make)make -n --dry-run) when make is availablembake validatembake format --checkcheckmake and unmake checks when installedUse this skill when the request includes Makefile quality, linting, validation, hardening, or troubleshooting.
.mk file"makefile-generator)Run from this skill directory for shortest commands:
cd devops-skills-plugin/skills/makefile-validator
writable) or only suggestions can be returned (read-only).# From skill directory
bash scripts/validate_makefile.sh <makefile-path>
# From repository root
bash devops-skills-plugin/skills/makefile-validator/scripts/validate_makefile.sh <makefile-path>
Always record:
Errors, Warnings, Info)| Exit code | Meaning | Expected summary line | Action |
|---|---|---|---|
0 | no blocking findings | Validation PASSED | optional improvements only |
1 | warning-only result | Validation PASSED with warnings | fix recommended; merge policy dependent |
2 | error result | Validation FAILED - errors must be fixed | fix required, then rerun |
Open only the docs required by the current findings.
| Finding type | Reference doc |
|---|---|
.PHONY, .DELETE_ON_ERROR, .ONESHELL, variable usage, performance structure | docs/best-practices.md |
| tabs vs spaces, dependency mistakes, credential patterns, anti-patterns | docs/common-mistakes.md |
mbake behavior, formatter flags, known mbake caveats | docs/bake-tool.md |
After applying fixes, rerun:
bash scripts/validate_makefile.sh <makefile-path>
Loop rules:
Use explicit file-open commands so paths are unambiguous.
From repository root:
sed -n '1,220p' devops-skills-plugin/skills/makefile-validator/docs/best-practices.md
sed -n '1,220p' devops-skills-plugin/skills/makefile-validator/docs/common-mistakes.md
sed -n '1,220p' devops-skills-plugin/skills/makefile-validator/docs/bake-tool.md
rg -n "PHONY|DELETE_ON_ERROR|ONESHELL|tab|credential|mbake" devops-skills-plugin/skills/makefile-validator/docs/*.md
From devops-skills-plugin/skills/makefile-validator:
sed -n '1,220p' docs/best-practices.md
sed -n '1,220p' docs/common-mistakes.md
sed -n '1,220p' docs/bake-tool.md
rg -n "PHONY|DELETE_ON_ERROR|ONESHELL|tab|credential|mbake" docs/*.md
If shell commands are unavailable, use the environment's file-open/read actions on the same paths.
Use these only when the default validator path cannot run fully.
| Constraint | Fallback action | Reporting requirement |
|---|---|---|
python3 or pip3 unavailable | Run limited checks (make -f <file> -n --dry-run if make exists, plus focused grep checks) | State that mbake stages were skipped and coverage is reduced |
pip3 install mbake fails (offline/proxy/index issue) | Keep syntax/custom checks that still work; defer formatter/linter stages | Report install failure and request rerun in a network-enabled environment |
make unavailable | Continue with non-syntax stages; script already downgrades syntax stage | Explicitly note syntax coverage was skipped |
checkmake or unmake unavailable | Continue; these are optional stages | Note optional lint/portability coverage not executed |
| target file is read-only | Provide patch suggestions only | Mark response as advisory only |
| command execution unavailable | Provide static review from file contents and docs | Mark result as non-executed analysis |
Minimal fallback commands:
# Syntax only (when make exists)
make -f <makefile-path> -n --dry-run
# Focused quick checks
grep -n "^\\.DELETE_ON_ERROR:" <makefile-path>
grep -n "^\\.PHONY:" <makefile-path>
grep -nE "^( | | )[a-zA-Z@\\$\\(]" <makefile-path>
exit 0)Errors: 0
Warnings: 0
Info: 2
✓ Validation PASSED
exit 1)Errors: 0
Warnings: 3
Info: 1
⚠ Validation PASSED with warnings
exit 2)Errors: 2
Warnings: 1
Info: 0
⚠ Validation FAILED - errors must be fixed
command -v python3 pip3 make
make -f <makefile-path> -n --dry-run
grep -nE "^( | | )[a-zA-Z@\\$\\(]" <makefile-path>
NO_COLOR=1 bash scripts/validate_makefile.sh <makefile-path> > /tmp/makefile-validator.log 2>&1
echo "exit=$? log=/tmp/makefile-validator.log"
makefile-validator/
├── SKILL.md
├── scripts/
│ └── validate_makefile.sh
├── docs/
│ ├── best-practices.md
│ ├── common-mistakes.md
│ └── bake-tool.md
└── examples/
├── good-makefile.mk
└── bad-makefile.mk
This skill update is complete when all are true:
0, 1, 2).name and description remain unchanged.npx claudepluginhub akin-ozer/cc-devops-skills --plugin devops-skillsGenerates Makefiles for C/C++, Python, Go, Java projects with .PHONY targets, GNU standards, standard targets, security hardening, and CI/CD integration.
Audits Makefiles for build correctness, recipe duplication, dependency graphs, portability issues, and best practices. Useful for build optimization and CI/CD improvements.
Checks and configures project Makefile with standard targets (help, test, build, clean, lint) for Python, Node, Rust, Go, or generic projects. Detects project type and services; supports --check-only and --fix.