Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/ovid/paad/makefilenpx skills add Ovid/paad --skill makefilegit clone --depth 1 https://github.com/Ovid/paadWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00053 | $0.02179 |
| Opus 5 | $0.00026 | $0.01090 |
| Sonnet 5 | $0.00011 | $0.00436 |
| Haiku 4.5 | $0.00005 | $0.00218 |
Grade A, and why
makefile scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 189 lines — stays where its author put it; the contents beside it link to each section on GitHub.
On invocation: announce "Running paad:makefile v1.31.0" before anything else.
Makefile Management
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";
}
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 189 lines · 53 tokens per session scan A dd1ba2d87178
makefile is a skill published in the GitHub repository Ovid/paad (105 stars, last pushed 3d ago), licensed MIT. It adds 53 tokens to every session and 2,179 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
i-have-adhd
Shape every response for an ADHD reader who reviews the work but does not do the coding — the agent does. Use whenever responding to ANY message — coding, debugging, planning, casual. Lead with the result or the decision. Surface anything needing the user's input as a structured question, never buried in prose they'll…
snip
You are an expert at writing declarative YAML filters for snip, a CLI proxy that reduces LLM token consumption by filtering shell output.
diary
Use when the user says 'save diary', 'log session', 'wrapping up', or at end of a productive session.
memstack-automation-n8n-workflow-builder
Use this skill when the user says 'n8n workflow', 'build a workflow', 'automation workflow', 'connect services', or needs visual workflow design with node mapping, data transformations, and error handling for n8n. Do NOT use for standalone webhook endpoints or cron jobs.
offer-toolkit-skill
求职工具包。把「找岗位 → 签 offer」拆成六个独立子 skill:⓪ Job Hunt 批量发现岗位,① Job Description 解码具体 JD,② Resume 定向简历,③ BQ 准备行为面试,④ Offer Compare 对比多份 offer,⑤ Salary Negotiation 谈 package。任何求职相关请求(找工作、该不该投、改简历、准备面试、选 offer、谈薪)都从这里进,再路由到对应子 skill。关键词:求职, offer, career, job hunt, LinkedIn jobs, JD, resume, CV, behavioral interview, BQ, STAR…
job-hunt-skill
批量发现、整理和持续维护求职岗位清单。根据用户的简历、目标方向或种子 JD,搜索 LinkedIn 与公开网页,去重并建立尽量完整的候选池,用证据区分已核验事实和方向性推断,最后生成可搜索、可筛选的单文件 HTML job-hunt-skill 报告。用户说‘帮我批量找岗位’、‘整理职位清单’、‘使用 job-hunt-skill’、‘根据简历搜工作’、‘把这些 LinkedIn 职位做成表格’、‘持续跟踪岗位’时必须使用。只发现和分析岗位;绝不自动申请、处理登录凭据或绕过访问限制。.