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 skills add boringmarketer/kimi-first --skill meta-adsgit clone --depth 1 https://github.com/boringmarketer/kimi-firstWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/boringmarketer/kimi-first/meta-ads)<a href="https://agentmods.dev/skills/boringmarketer/kimi-first/meta-ads"><img src="https://agentmods.dev/badge/skills/boringmarketer/kimi-first/meta-ads.svg" alt="Measured on agentmods" height="20"></a>- NVIDIA SkillSpector pass
What 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.1 | $0.00089 | $0.02828 |
| Opus 5 | $0.00044 | $0.01414 |
| Sonnet 5 | $0.00018 | $0.00566 |
| Haiku 4.5 | $0.00009 | $0.00283 |
Grade A, and why
meta-ads scanned grade A with 1 finding 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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
One `curl` then proves the whole server path in isolation. This is the only How it starts
The opening of the file, as written. The whole thing — 271 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Meta Ads — launch and verification
Everything here was learned by getting it wrong in production first. The API rejections are real rejections, the permission chain is the one that actually unblocks, and the verification section exists because measuring the wrong thing produced three confidently-wrong conclusions in a single session.
1. Verification comes first, because it is where the damage happens
Read this before believing any test result.
Three separate false negatives in one launch. Each looked like a real bug. Each was the instrument, not the system.
| Trap | What happened | What to use instead |
|---|---|---|
| Testing on localhost | Verified the pixel and an embed on localhost. Both were blocked in production by a CSP that localhost does not have. |
Always verify against the deployed URL. A localhost pass proves nothing about production headers. |
performance.getEntriesByType('resource') |
Concluded "the Lead never fires" because no beacon appeared. fbevents uses navigator.sendBeacon when an eventID is present, and sendBeacon never appears in resource timing. |
Meta's Test Events tool. It is Meta's own instrumentation and it ends the argument. |
| "Received From: Browser" in Test Events | Concluded the server-side CAPI was broken because no server rows appeared. Test Events only shows server events if the server sends a test_event_code. |
Have the server return its own send result (see §6). Absence of display ≠ absence of delivery. |
The pattern: absence of evidence was read as evidence of absence, from an instrument that structurally could not observe the thing being measured. Before concluding something is broken, ask what the instrument can actually see.
Confounded variables. One "isolation test" removed two variables at once and the wrong one got the blame. Change one thing.
2. The permission chain (the part that actually blocks you)
To create ads via API you need four separate grants. Missing any one gives a different, unhelpful error.
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 · 271 lines · 89 tokens per session scan A 8cb6450c144e
meta-ads is a skill published in the GitHub repository boringmarketer/kimi-first (46 stars, last pushed 3d ago), licensed MIT. It adds 89 tokens to every session and 2,828 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-04.
Other skills, from other repositories
deepseek-and-destroy
Continuously execute a complex multi-phase implementation plan through configurable worker-agent loops until the plan is complete or a genuinely human-level blocker is reached. Uses fresh implementation and review contexts, reviewer-led repair, fresh re-review, durable multi-orchestrator state, and main-orchestrator…
espalier-migrate
Migrate an existing harness/espalier install to the current Espalier version — auto-detects which of v0.1→v0.2, v0.3→v0.4, v0.4→v0.5, the v0.5.3 coder-agent patch, v0.5→v0.6 (Stage 1 grill), v0.6→v0.7 (read-only /espalier-ask lane), v0.7→v0.8 (requirements approval gate), the v0.8.1 impact-analysis agent patch, the…
espalier-init
Analyze any existing codebase, discover its patterns and best practices, and generate an Espalier structure (rules, skills, wiki, pipeline) so AI coders produce code matching that project's language and conventions. Greenfield repos take the two-pass Decide-Then-Bind path (/espalier-map charts the conventions, init…
blind-rediscovery
Operational checklist + helper for blind-rediscovery fan-out work. Splits per-target dossiers into blind/ (voice-readable, no prior-finding refs) and curated/ (operator-only, prior findings + comparisons). Use when running Stage 3 hypothesis exploration on a target with prior chrono work.
compact-now
Operator-triggered proactive compaction — Chrono externalizes load-bearing state (active decisions, open tasks, next action) to a snapshot + a durable Vault learning note before invoking Claude Code's native /compact, then resumes from the snapshot. Use when the operator says "/compact-now" / "compact now" or when…
sandbox-provision-discipline
Verify authorization, isolation, egress, credentials, persistence, evidence, and cleanup gates before provisioning or using a sandbox for PoCs, untrusted binaries, fuzzing, or other risky tests.