Install Anti-Slop Oxlint Rules
dmmulroy/anti-slop
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.
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…
$ npx skills add Ovid/paad --skill makefile -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Ovid/paad makefile --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "makefile" agent skill from https://github.com/Ovid/paad/tree/main/plugins/paad/skills/makefile into .claude/skills/makefile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "makefile", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Ovid/paad/tree/main/plugins/paad/skills/makefileType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Ovid/paad --skill makefile -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Ovid/paad makefile --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Ovid/paad.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/paad/skills/makefile .agents/skills/makefile && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "makefile" agent skill from https://github.com/Ovid/paad/tree/main/plugins/paad/skills/makefile into .agents/skills/makefile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "makefile", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Ovid/paad --skill makefile -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Ovid/paad makefile --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Ovid/paad.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/paad/skills/makefile .cursor/skills/makefile && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "makefile" agent skill from https://github.com/Ovid/paad/tree/main/plugins/paad/skills/makefile into .cursor/skills/makefile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "makefile", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Ovid/paad.git --path plugins/paad/skills/makefile--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Ovid/paad --skill makefile -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Ovid/paad makefile --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Ovid/paad.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/paad/skills/makefile .gemini/skills/makefile && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "makefile" agent skill from https://github.com/Ovid/paad/tree/main/plugins/paad/skills/makefile into .gemini/skills/makefile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "makefile", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Ovid/paad makefileInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Ovid/paad --skill makefile -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Ovid/paad.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/paad/skills/makefile .github/skills/makefile && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "makefile" agent skill from https://github.com/Ovid/paad/tree/main/plugins/paad/skills/makefile into .github/skills/makefile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "makefile", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Ovid/paad --skill makefile -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Ovid/paad makefile --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Ovid/paad.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/paad/skills/makefile .opencode/skills/makefile && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "makefile" agent skill from https://github.com/Ovid/paad/tree/main/plugins/paad/skills/makefile into .opencode/skills/makefile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "makefile", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
makefileA 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. 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.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 1c48121. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
makenpmcargoFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from Ovid/paad at commit 1c48121, republished under its MIT licence (© Ovid). 744 words, ~2,229 tokens.
.claude/skills/makefile/SKILL.md (or your agent's skills folder).On invocation: announce "Running paad:makefile v1.31.0" before anything else.
Process:
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";
}npm run, just, task, nox, or cargo xtask doesn't need a Makefile shimming over it. Ask before introducing a second entry point.Creates or updates a project Makefile with standard targets. Never modifies an existing target without explicit user approval.
Read project files in this order to understand the technology and available commands:
CLAUDE.md or AGENTS.md — often lists exact commands for test, lint, format, buildREADME.md — frequently documents dev workflowpackage.json, pyproject.toml, Cargo.toml, go.mod, Gemfile, etc.) — reveals available scripts/tasksUse the commands the project already documents. Do not invent commands that aren't confirmed to exist.
Every Makefile must include at minimum:
| Target | Purpose |
|---|---|
help | List all targets with descriptions |
all | Full CI pass (lint + format + test at minimum) |
test | Run test suite |
cover | One-shot coverage report |
lint | Lint (with autofix if available) |
format | Format code |
Add extra targets (e.g. build, dev, preview) only if the project supports them.
Every target gets a ## description. help extracts them with grep + awk:
.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.
If an existing target's implementation would change, stop and tell the user:
"The existing
covertarget runsX. I'd change it toYbecause [reason]. Should I make this change?"
Wait for explicit approval. Adding a brand-new target never requires approval.
Coverage tools often default to watch mode. Force one-shot execution:
-- --run-- --watchAll=falsemake test output should be actionable, not overwhelming. Avoid both extremes:
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:
| Stack | Flag / Approach |
|---|---|
| vitest | --reporter=default is usually fine; avoid --reporter=verbose |
| jest | Default is good; avoid --verbose |
| pytest | -q or --tb=short — default is often too verbose |
| cargo test | Default is fine; --quiet if too noisy |
| go test | Default 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.
End the run with the file list, always. One line per path, marked new or updated:
Files written or updated:
updated MakefileSay 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.
| Mistake | What to do instead |
|---|---|
| Rewriting an existing target because the new version is better | Stop 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 additive | Changing a target's implementation is a change, flag or not. It needs approval. |
| Inventing commands the stack doesn't have | Detect 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 hand | Use the self-documenting ## pattern, so help can't drift from reality. |
Leaving cover in watch mode | It hangs the agent and CI. Force one-shot explicitly, per the stack. |
Omitting targets from .PHONY | A file named test in the repo root silently breaks make test. |
| Adding every optional target for completeness | Extra 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
Just SKILL.md in plugins/paad/skills/makefile of Ovid/paad.
Open the folder on GitHubat commit 1c48121
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Makefile this skillOvid/paad | 131 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Install Anti-Slop Oxlint Rulesdmmulroy/anti-slop | 5.2k | — | ~2.2k | Automated safety check: Pass | MIT | |
| Setup Pre Commitfossasia/eventyay-interpretation | 1.6k | 12 repos | ~565 | Automated safety check: Pass | Apache-2.0 | |
| Releasehyhmrright/brooks-lint | 1.5k | — | ~1.2k | Automated safety check: Pass | MIT | |
| Create Saleor Packagesaleor/apps | 162 | — | ~608 | Automated safety check: Pass | Custom licence | |
| Prepare Rslint npm Releaseweb-infra-dev/rslint | 460 | — | ~1.5k | Automated safety check: Pass | MIT |
dmmulroy/anti-slop
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.
fossasia/eventyay-interpretation
Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo.
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…
saleor/apps
Scaffold a new shared package in the saleor-apps monorepo under ./packages/.
web-infra-dev/rslint
Prepare a stable release PR for the unified rslint npm packages by updating package versions and rule/TypeScript release metadata.
Automattic/wordpress-activitypub
Development workflows for WordPress ActivityPub plugin including wp-env setup, testing commands, linting, and build processes.
Ovid/paad
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.
Ovid/paad
EXPERIMENTAL. An agent skill from Ovid/paad.
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…
Ovid/paad
EXPERIMENTAL. An agent skill from Ovid/paad.
Ovid/paad
EXPERIMENTAL. An agent skill from Ovid/paad.
Ovid/paad
EXPERIMENTAL. An agent skill from Ovid/paad.
Works with
Categories
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.
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.
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.
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.
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.
Going by SKILL.md and its folder, Makefile needs the command-line tools its instructions call (make, npm and cargo).
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.
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.
Makefile is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
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.
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.
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.