Agent skill

Makefile

by Ovid in Ovid/paad

A skill your agent uses when creating or updating a Makefile for a project, especially when standard targets (build, test, lint, format, etc.) are missing or when modifying targets that may already…

MITAuto-check passedDevelopment

Install Makefile

skills CLI
$ npx skills add Ovid/paad --skill makefile -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Ovid/paad makefile --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Ovid/paad.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/paad/skills/makefile .claude/skills/makefile && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
makefile
GitHub stars
131
Token cost
~2.2k tokens
SKILL.md length
744 words
Files
1
Skills in repo
16
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when creating or updating a Makefile for a project, especially when standard targets (build, test, lint, format, etc.) are missing or when modifying targets that may already…

  • Works in 5 steps: Detect stack (read CLAUDE.md, AGENTS.md,… → Check if Makefile exists → Creating → build from scratch with all… → …
  • Updating a Makefile for a project
  • SKILL.md covers When NOT to Use This Skill, Overview, Process and Stack Detection, plus 7 more sections
  • Calls make, npm and cargo

What it does

Makefile is an agent skill from Ovid/paad. Use when creating or updating a Makefile for a project, especially when standard targets (build, test, lint, format, etc.) are missing or when modifying targets that may already be wired into other tooling. Not for debugging why a build fails.

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Linting and formatting. It works with npm. The repository describes itself as: The practices that made software work didn't stop working. They stopped keeping up. PAAD brings them back at AI speed. The licence is MIT.

When your agent uses it

  • Updating a Makefile for a project
  • Especially when standard targets (build
  • Etc.) are missing
  • Modifying targets that may already be wired into other tooling

Example prompts

  • “/makefile”

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Detect stack (read CLAUDE.md, AGENTS.md, README, package.json, pyproject.toml, Cargo.toml, go.mod, etc.)
  2. Check if Makefile exists
  3. Creating → build from scratch with all required targets mapped to detected stack
  4. Updating → add missing targets; STOP and ask before changing any existing one
  5. Announce the file you wrote — see "Announce What You Wrote"

What it can do on your machine

Read from SKILL.md and the folder at commit 1c48121. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • make
    • npm
    • cargo

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Makefile loads about 2.2k tokens when it runs. Until then it costs about 63 tokens; SKILL.md has 744 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~63
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Ovid/paad at commit 1c48121, republished under its MIT licence (© Ovid). 744 words, ~2,229 tokens.

Download SKILL.mdSave it as .claude/skills/makefile/SKILL.md (or your agent's skills folder).
name
makefile
description
Use when creating or updating a Makefile for a project, especially when standard targets (build, test, lint, format, etc.) are missing or when modifying targets that may already be wired into other tooling. Not for debugging why a build fails.

On invocation: announce "Running paad:makefile v1.31.0" before anything else.

Makefile Management

Process:

dot
digraph makefile_flow {
    "Makefile exists?" [shape=diamond];
    "Existing target needs change?" [shape=diamond];
    "Approved?" [shape=diamond];
    "Coverage tool defaults to watch mode?" [shape=diamond];
    "Test tool supports balanced output?" [shape=diamond];

    "Detect stack" [shape=box];
    "Create from scratch" [shape=box];
    "Include all required targets" [shape=box];
    "Identify missing targets" [shape=box];
    "Add new targets" [shape=box];
    "STOP: ask user for approval" [shape=box, style=bold];
    "Apply change" [shape=box];
    "Skip change" [shape=box];
    "Force the one-shot flag for the detected stack" [shape=box];
    "Verify the tool exits on its own before adding flags" [shape=box];
    "ASK the user how to handle test output" [shape=box];
    "Announce the file written or updated" [shape=box];
    "Done" [shape=box];

    "Detect stack" -> "Makefile exists?";
    "Makefile exists?" -> "Create from scratch" [label="no"];
    "Makefile exists?" -> "Identify missing targets" [label="yes"];
    "Create from scratch" -> "Include all required targets";
    "Include all required targets" -> "Coverage tool defaults to watch mode?";
    "Identify missing targets" -> "Add new targets";
    "Add new targets" -> "Existing target needs change?";
    "Existing target needs change?" -> "Coverage tool defaults to watch mode?" [label="no"];
    "Coverage tool defaults to watch mode?" -> "Force the one-shot flag for the detected stack" [label="yes — vitest, jest"];
    "Coverage tool defaults to watch mode?" -> "Verify the tool exits on its own before adding flags" [label="unclear — pytest-cov, cargo, go test"];
    "Force the one-shot flag for the detected stack" -> "Test tool supports balanced output?";
    "Verify the tool exits on its own before adding flags" -> "Test tool supports balanced output?";
    "Existing target needs change?" -> "STOP: ask user for approval" [label="yes"];
    "STOP: ask user for approval" -> "Approved?";
    "Approved?" -> "Apply change" [label="yes"];
    "Approved?" -> "Skip change" [label="no"];
    "Apply change" -> "Existing target needs change?" [label="next target"];
    "Skip change" -> "Existing target needs change?" [label="next target"];
    "Test tool supports balanced output?" -> "Announce the file written or updated" [label="yes"];
    "Test tool supports balanced output?" -> "ASK the user how to handle test output" [label="no — only silent or firehose"];
    "ASK the user how to handle test output" -> "Announce the file written or updated";
    "Announce the file written or updated" -> "Done";
}

When NOT to Use This Skill

  • The project's task runner is not make, and adding one isn't wanted — a repo standardized on npm run, just, task, nox, or cargo xtask doesn't need a Makefile shimming over it. Ask before introducing a second entry point.
  • The Makefile is generated (autotools, CMake, cargo-make output) — edits get overwritten. Change the generator.

Overview

Creates or updates a project Makefile with standard targets. Never modifies an existing target without explicit user approval.

Process

  1. Detect stack (read CLAUDE.md, AGENTS.md, README, package.json, pyproject.toml, Cargo.toml, go.mod, etc.)
  2. Check if Makefile exists
  3. Creating → build from scratch with all required targets mapped to detected stack
  4. Updating → add missing targets; STOP and ask before changing any existing one
  5. Announce the file you wrote — see "Announce What You Wrote"

Stack Detection

Read project files in this order to understand the technology and available commands:

  1. CLAUDE.md or AGENTS.md — often lists exact commands for test, lint, format, build
  2. README.md — frequently documents dev workflow
  3. Language manifest (package.json, pyproject.toml, Cargo.toml, go.mod, Gemfile, etc.) — reveals available scripts/tasks

Use the commands the project already documents. Do not invent commands that aren't confirmed to exist.

Required Targets

Every Makefile must include at minimum:

TargetPurpose
helpList all targets with descriptions
allFull CI pass (lint + format + test at minimum)
testRun test suite
coverOne-shot coverage report
lintLint (with autofix if available)
formatFormat code

Add extra targets (e.g. build, dev, preview) only if the project supports them.

The Self-Documenting Pattern

Every target gets a ## description. help extracts them with grep + awk:

makefile
.PHONY: all test cover lint format help

all: lint format test ## Lint, format, and test

test: ## Run full test suite
	<stack-specific command>

cover: ## Generate code coverage report (one-shot)
	<stack-specific command, forced one-shot — see below>

lint: ## Lint with autofix
	<stack-specific command>

format: ## Format code
	<stack-specific command>

help: ## Show this help
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "  %-10s %s\n", $$1, $$2}'

All targets must appear in .PHONY.

Critical Rule: Updating Existing Targets

If an existing target's implementation would change, stop and tell the user:

"The existing cover target runs X. I'd change it to Y because [reason]. Should I make this change?"

Wait for explicit approval. Adding a brand-new target never requires approval.

cover: Avoid Watch Mode Hanging

Coverage tools often default to watch mode. Force one-shot execution:

  • vitest: append -- --run
  • jest: append -- --watchAll=false
  • pytest-cov / cargo / go test: typically exit on their own; verify before adding flags
  • other: check the tool's docs for a non-interactive/CI flag

test: Balanced Output Verbosity

make test output should be actionable, not overwhelming. Avoid both extremes:

  • Too verbose: full test names for passing tests, stack traces for every assertion, watch-mode chatter
  • Too silent: a single pass/fail line with no detail on failures

Goal: On success, show a concise summary (total passed/failed/skipped). On failure, show the failing test name, assertion, and enough context to act on it.

Common approaches by stack:

StackFlag / Approach
vitest--reporter=default is usually fine; avoid --reporter=verbose
jestDefault is good; avoid --verbose
pytest-q or --tb=short — default is often too verbose
cargo testDefault is fine; --quiet if too noisy
go testDefault is fine; avoid -v unless debugging
prove (Perl)Default is fine; avoid --verbose

If the testing tool doesn't support balanced output (e.g., only offers silent vs. firehose), inform the user and ask how they'd like to handle it rather than guessing.

Show full SKILL.md (227 more words)Show less

Announce What You Wrote

End the run with the file list, always. One line per path, marked new or updated:

Files written or updated:
  updated  Makefile

Say it even though only one file changed, and even when the user watched you change it. If you were asked to change an existing target and stopped for approval instead, say that too — an unapproved target is not a written one.

Common Mistakes

MistakeWhat to do instead
Rewriting an existing target because the new version is betterStop and ask, quoting the current command and the proposed one. Other tooling (CI, hooks, docs, muscle memory) may depend on the current behaviour.
Treating "add a flag to an existing target" as additiveChanging a target's implementation is a change, flag or not. It needs approval.
Inventing commands the stack doesn't haveDetect first — read CLAUDE.md, README, and the language manifest. A lint target running a linter that isn't installed is worse than no target.
Writing a help target that lists targets by handUse the self-documenting ## pattern, so help can't drift from reality.
Leaving cover in watch modeIt hangs the agent and CI. Force one-shot explicitly, per the stack.
Omitting targets from .PHONYA file named test in the repo root silently breaks make test.
Adding every optional target for completenessExtra targets (build, dev, preview) go in only when the project actually supports them.

© Ovid, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in plugins/paad/skills/makefile of Ovid/paad.

Open the folder on GitHubat commit 1c48121

Compare with similar skills

Makefile next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Makefile compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Makefile this skillOvid/paad131—~2.2kAutomated safety check: PassMIT
Install Anti-Slop Oxlint Rulesdmmulroy/anti-slop5.2k—~2.2kAutomated safety check: PassMIT
Setup Pre Commitfossasia/eventyay-interpretation1.6k12 repos~565Automated safety check: PassApache-2.0
Releasehyhmrright/brooks-lint1.5k—~1.2kAutomated safety check: PassMIT
Create Saleor Packagesaleor/apps162—~608Automated safety check: PassCustom licence
Prepare Rslint npm Releaseweb-infra-dev/rslint460—~1.5kAutomated safety check: PassMIT

Similar skills

  • Installs, updates or migrates the vendored anti-slop Oxlint plugin in a repository, keeping local rule changes and the plugin's license and provenance files.

    5.2k GitHub stars~2.2k tokensUpdated 27 days ago
    DevelopmentAuto-check passed
  • Setup Pre Commit

    fossasia/eventyay-interpretation

    Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo.

    1.6k GitHub starsUsed in 12 repos~565 tokens
    DevelopmentAuto-check passed
  • Release

    hyhmrright/brooks-lint

    Cut a brooks-lint release: set the version in package.json, propagate it across all four plugin manifests and every version-bearing text file (README badges, docs site metadata), write the CHANGELOG…

    1.5k GitHub stars~1.2k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Scaffold a new shared package in the saleor-apps monorepo under ./packages/.

    162 GitHub stars~608 tokensUpdated 6 days ago
    DevelopmentAuto-check passed
  • Prepare Rslint npm Release

    web-infra-dev/rslint

    Prepare a stable release PR for the unified rslint npm packages by updating package versions and rule/TypeScript release metadata.

    460 GitHub stars~1.5k tokensUpdated today
    DevelopmentAuto-check passed
  • Dev

    Automattic/wordpress-activitypub

    Development workflows for WordPress ActivityPub plugin including wp-env setup, testing commands, linting, and build processes.

    582 GitHub stars~1.1k tokensUpdated today
    DevelopmentAuto-check passed

More from Ovid/paad

All 16 skills in this repo
  • A skill your agent uses when reviewing current branch for bugs before pushing or merging, when wanting a thorough multi-agent review of local changes, or when preparing work for human review.

    131 GitHub starsUsed in 1 repo~10k tokens
    Auto-check passed
  • Test Roadmap

    Ovid/paad

    EXPERIMENTAL. An agent skill from Ovid/paad.

    131 GitHub stars~2.3k tokensUpdated yesterday
    Auto-check passed
  • Alignment

    Ovid/paad

    A skill your agent uses when verifying that requirements/specs/PRDs and their implementation plans match — before starting work, after a spec or plan update, or when suspecting coverage gaps, scope…

    131 GitHub stars~4.9k tokensUpdated yesterday
    Auto-check passed
  • Backlog

    Ovid/paad

    EXPERIMENTAL. An agent skill from Ovid/paad.

    131 GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed
  • Handoff

    Ovid/paad

    EXPERIMENTAL. An agent skill from Ovid/paad.

    131 GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed
  • Rethink

    Ovid/paad

    EXPERIMENTAL. An agent skill from Ovid/paad.

    131 GitHub stars~4.3k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Makefile

What does Makefile do?

A skill your agent uses when creating or updating a Makefile for a project, especially when standard targets (build, test, lint, format, etc.) are missing or when modifying targets that may already…. Makefile is an agent skill from Ovid/paad.) are missing or when modifying targets that may already be wired into other tooling.

When should I use Makefile?

Makefile fits situations like: updating a Makefile for a project; especially when standard targets (build; etc.) are missing; modifying targets that may already be wired into other tooling.

How do I install Makefile in Claude Code?

Run `npx skills add Ovid/paad --skill makefile -a claude-code`. Or copy the skill folder (plugins/paad/skills/makefile in Ovid/paad) into .claude/skills/makefile in your project. Claude Code loads it when a task matches its description.

How do I install Makefile in Codex?

Run `npx skills add Ovid/paad --skill makefile -a codex`. Or copy the skill folder (plugins/paad/skills/makefile in Ovid/paad) into .agents/skills/makefile in your project. Codex loads it when a task matches its description.

Can I use Makefile in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Ovid/paad --skill makefile -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/makefile, .gemini/skills/makefile, .github/skills/makefile and .opencode/skills/makefile in your project.

What does Makefile need to run?

Going by SKILL.md and its folder, Makefile needs the command-line tools its instructions call (make, npm and cargo).

Does Makefile access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Makefile safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Makefile use?

Makefile is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Makefile use?

About 2.2k tokens (SKILL.md is roughly 8.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Makefile?

Skills that share tags, products or a category with Makefile: Install Anti-Slop Oxlint Rules (dmmulroy/anti-slop, 5.2k stars), Setup Pre Commit (fossasia/eventyay-interpretation, 1.6k stars), Release (hyhmrright/brooks-lint, 1.5k stars) and Create Saleor Package (saleor/apps, 162 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Makefile?

Ovid (a GitHub user) maintains it in Ovid/paad, which has 131 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on October 6, 2026.

Source: Ovid/paad on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.