About prefer-make
prefer-make is a development skill for Go projects that prioritizes existing Makefile targets over direct Go commands. It guides developers to inspect available targets, use them for builds and checks, and verify results.
Key features
- 01Check Makefile targets before Go commands
- 02Discover targets with make help
- 03Prefer targets for build, test, lint, and formatting
- 04Fall back to Go commands only when needed
- 05Verify exit status and output
Use cases
- 01Running project tests through its Makefile
- 02Finding the correct build or lint target
- 03Avoiding duplicate flags in Make commands
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ lwlee2608/ agent-skills --skill prefer-makeAfter installing, type/prefer-makein Claude Code to confirm it loaded.
Details
From the project READMEBuild with Make
This project uses a Makefile. Always prefer make targets over running go commands directly.
Rules
- Check the Makefile first before running any
go build,go test,go run,go vet,go fmt, orgolangci-lintcommand. Look for a corresponding target. - Use the Makefile target instead of the raw
gocommand. For example:make buildinstead ofgo build ./...make testinstead ofgo test ./...make lintinstead ofgolangci-lint runmake runinstead ofgo run main.gomake fmtinstead ofgo fmt ./...
- Run
make helpto discover targets. If that fails, read the Makefile directly. - Fall back to raw
gocommands only if no relevant Makefile target exists for the task.
Verification procedure
- Before executing, confirm the target exists by checking
make helpoutput or the Makefile. - After execution, verify the command exited with status 0 and produced expected output.
Common mistakes to watch for
- Assuming target names without checking. Don't guess that
make unit-testexists — read the Makefile. Target names vary across projects. - Adding flags to make targets that already set them. For example, running
make test ARGS="-v -race"when the Makefile already passes-race. Check what the target does before adding flags. - Running raw
go test ./specific/pkg/...for a subset when the Makefile has a target that accepts a package argument (e.g.,make test PKG=./specific/pkg/...).
Comments
Markdown supported