configure-makefile
SKILL.md
/configure:makefile
Check and configure project Makefile against project standards.
When to Use This Skill
| Use this skill when... | Use another approach when... |
|---|---|
| Setting up a new Makefile for a project that requires Make | Project can use Just instead — use /configure:justfile (preferred) |
| Auditing existing Makefile for missing standard targets | Writing complex build rules with dependencies — consult GNU Make documentation |
| Ensuring Makefile follows team conventions (help target, PHONY, colors) | Project uses a language-native build system (cargo, go build) exclusively |
| Running CI/CD compliance checks on Makefile structure | Migrating from Makefile to Justfile — use /configure:justfile which handles migration |
| Adding language-specific build/test/lint targets to existing Makefile | Debugging a specific Make target — run make -n <target> directly |
Context
- Project root: !
pwd - Makefile exists: !
find . -maxdepth 1 -name 'Makefile' - Makefile targets: !
grep -E '^[a-zA-Z_-]+:' Makefile - Package files: !
find . -maxdepth 1 \( -name 'package.json' -o -name 'pyproject.toml' -o -name 'Cargo.toml' -o -name 'go.mod' \) - Docker files: !
find . -maxdepth 1 \( -name 'Dockerfile' -o -name 'docker-compose.yml' -o -name 'compose.yml' \) - Server files: !
find src -maxdepth 1 \( -name 'server.*' -o -name 'main.*' \)
Parameters
Parse from $ARGUMENTS:
--check-only: Report Makefile compliance status without modifications--fix: Apply fixes automatically without prompting
Required Makefile targets: help, test, build, clean, lint
Execution
Execute this Makefile compliance check:
Step 1: Detect project type
Read the context values and determine project type (in order):
- Python:
pyproject.tomlorrequirements.txtpresent - Node:
package.jsonpresent - Rust:
Cargo.tomlpresent - Go:
go.modpresent - Generic: None of the above
Check for service indicators (start/stop needed):
- Has
docker-compose.ymlorcompose.yml-> Docker Compose service - Has
Dockerfile+ HTTP server code -> Container service - Has
src/server.*orsrc/main.*-> Application service
Step 2: Analyze existing Makefile targets
If Makefile exists, check against required targets:
Required targets for all projects:
| Target | Purpose |
|---|---|
help |
Display available targets (default goal) |
test |
Run test suite |
build |
Build project artifacts |
clean |
Remove temporary files and build artifacts |
lint |
Run linters |
Additional targets (context-dependent):
| Target | When Required |
|---|---|
start |
If project has runnable service |
stop |
If project has background service |
format |
If project uses auto-formatters |
Step 3: Run compliance checks
| Check | Standard | Severity |
|---|---|---|
| File exists | Makefile present | FAIL if missing |
| Default goal | .DEFAULT_GOAL := help |
WARN if missing |
| PHONY declarations | All targets marked .PHONY |
WARN if missing |
| Colored output | Color variables defined | INFO |
| Help target | Auto-generated from comments | WARN if missing |
| Language-specific | Commands match project type | FAIL if mismatched |
Step 4: Generate compliance report
Print a report showing:
- Project type (detected)
- Each target with PASS/FAIL status and the command used
- Makefile structural checks (default goal, PHONY, colors, help)
- Missing targets list
- Issue count
If --check-only is set, stop here.
Step 5: Create or update Makefile (if --fix or user confirms)
- Missing Makefile: Create from standard template using the detected project type
- Missing targets: Add targets with appropriate language-specific commands
- Missing defaults: Add
.DEFAULT_GOAL,.PHONY, color variables - Missing help: Add auto-generated help target using awk comment parsing
Use the language-specific commands below:
Python (uv-based):
lint:@uv run ruff check .format:@uv run ruff format .test:@uv run pytestbuild:@docker build -t {{PROJECT_NAME}} .clean:@find . -type f -name "*.pyc" -delete+ remove cache dirs
Node.js:
lint:@npm run lintformat:@npm run formattest:@npm testbuild:@npm run buildclean:@rm -rf node_modules/ dist/ .next/ .turbo/
Rust:
lint:@cargo clippy -- -D warningsformat:@cargo fmttest:@cargo nextest runbuild:@cargo build --releaseclean:@cargo clean
Go:
lint:@golangci-lint runformat:@gofmt -s -w .test:@go test ./...build:@go build -o bin/{{PROJECT_NAME}}clean:@rm -rf bin/ dist/+@go clean
Step 6: Update standards tracking
Update .project-standards.yaml:
components:
makefile: "2025.1"
Step 7: Print final report
Print a summary of changes applied, targets added, and suggest running make help to verify.
For the universal Makefile template structure, see REFERENCE.md.
Agentic Optimizations
| Context | Command |
|---|---|
| Quick compliance check | /configure:makefile --check-only |
| Auto-fix all issues | /configure:makefile --fix |
| List existing targets | grep -E '^[a-zA-Z_-]+:' Makefile |
| Dry-run a target | make -n <target> |
| Show default goal | make -p | grep '.DEFAULT_GOAL' |
Flags
| Flag | Description |
|---|---|
--check-only |
Report status without offering fixes |
--fix |
Apply fixes automatically |
Examples
# Check current Makefile compliance
/configure:makefile --check-only
# Create/update Makefile for Python project
/configure:makefile --fix
# Check compliance and prompt for fixes
/configure:makefile
See Also
/configure:all- Run all compliance checks/configure:workflows- GitHub Actions workflows/configure:dockerfile- Docker configuration
Weekly Installs
42
Repository
laurigates/clau…-pluginsGitHub Stars
13
First Seen
Feb 9, 2026
Security Audits
Installed on
cline42
github-copilot42
codex42
kimi-cli42
gemini-cli42
cursor42