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 sergeyizmailov/knowledge-delta-skills --skill meta-grey-opsgit clone --depth 1 https://github.com/sergeyizmailov/knowledge-delta-skillsWrote 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/sergeyizmailov/knowledge-delta-skills/meta-grey-ops)<a href="https://agentmods.dev/skills/sergeyizmailov/knowledge-delta-skills/meta-grey-ops"><img src="https://agentmods.dev/badge/skills/sergeyizmailov/knowledge-delta-skills/meta-grey-ops/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/sergeyizmailov/knowledge-delta-skills/meta-grey-ops"><img src="https://agentmods.dev/badge/skills/sergeyizmailov/knowledge-delta-skills/meta-grey-ops.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.00229 | $0.02501 |
| Opus 5.5 | $0.00092 | $0.01000 |
| Sonnet 5.5 | $0.00046 | $0.00500 |
| Haiku 4.5 | $0.00023 | $0.00250 |
Grade A, and why
meta-grey-ops 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 1mo 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 — 96 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Meta Grey Ops
Reviewed 2026-09-03. Baseline 2026-09-03 (Sonnet 5 blind): bulk-launch task [K] — shared BM pixel still needs per-account attach (1815045). Launch/operate via API on your own token (= autolaunch SaaS without UI, 13) + grey survival. "buy well" → meta-ads · "count & sync" → tracker-ops · "portfolio decisions" → senior-buyer-ops.
Start here
| You are… | Read | Then |
|---|---|---|
In a directory with workspace.json |
references/16-metaops-agent-cli.md |
use metaops --workspace … --json; before activation also read 00 §6–8 |
| Handed a token / asked to launch anything via API | references/00-launch-runbook.md |
create a workspace in a project dir outside the skill (scripts/specs/example-workspace.json), validate it, then use metaops |
| Setting up access, deciding MCP vs API, minting/handing over a token | references/02-access-tokens-and-mcp.md |
come back to 00 |
| Hit an error, a gate, a rejection, a dead token | 00 § "When a step fails" |
the one file it names |
Agent writes a JSON spec; metaops controls the lifecycle; launch.py writes Graph
payloads. Never hand-assemble a payload or invoke a low-level Graph mutation directly.
New shape → extend metaops/the implementation and its tests.
Launch defaults (what every ad set/ad gets unless the spec says otherwise)
| Setting | Default | Enforced by | Override |
|---|---|---|---|
| Object status at create | PAUSED, all levels |
internal launcher; spend only via metaops activate --confirm-ui REVIEWED --confirm SPEND |
none |
| Attribution | 1d click / 1d engaged-view / 1d view on conversion goals; 1d click only on LINK_CLICKS/REACH/etc. (Meta rejects view windows there, 1885501). Set at CREATE (immutable after, 1504040) | launch.py DEFAULT_ATTRIBUTION; verify.py reads it back |
attribution: {...} or "account_default" |
| Advantage+ creative enhancements | every feature OPT_OUT incl. adapt_to_placement; music via audios: [] |
launch.py DEFAULT_OPT_OUT; verify.py flags any OPT_IN |
creative.opt_out_features |
| Multi-advertiser ads | contextual_multi_ads: OPT_OUT on every creative (Meta Ads MCP cannot set it — its creatives inherit OPT_IN) |
launch.py; readable on link/template creatives, UI check while PAUSED on FORMAT_AUTOMATION collections |
creative.multi_advertiser: true |
| Advantage+ audience | must be explicit true/false in targeting; true caps age_min at 25 and forces age_max 65 — any hard age/gender requirement means false (04) |
spec rejected without it (v23+ Graph rule) | — |
| Placements | Advantage+ (all) | pass publisher_platforms/positions to restrict; ["facebook"] alone is warned (it is the wrong 1772103 fix) |
targeting keys |
| Budget mode | CBO (campaign.daily_budget_minor) or ABO (every adsets[].daily_budget_minor) |
spec rejected if both/neither; cap strategies need bid_amount_minor |
— |
| Budget unit | integer minor units; whole units on no-offset currencies (TWD, JPY, KRW, HUF…) | launch.py prints every budget in major units and fails on spec.currency ≠ account currency |
put currency in the spec |
start_time |
conversions 06:00–08:00 geo-time, never 00:00; reach/traffic next 00:00 | spec required; metaops activate --refresh-start |
— |
| Identity | Page + PBIA (instagram_user_id: "auto") |
internal launcher resolves it; metaops doctor --create-pbia creates it |
explicit id |
| EU/EEA geo | dsa_beneficiary + dsa_payor required |
spec rejected without them | — |
| Tracking | spec-level url_tags inherited by every ad; catalog cards need template_url |
launch.py; verify.py diffs destination per creative kind |
per-creative url_tags |
| Special ad categories | must be declared explicitly ([] or the real one) |
spec rejected if absent | — |
What ships with it
60 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- .gitignore 91 B
- playbooks/casino.md 6.8 KB
- playbooks/crypto-trading.md 2.5 KB
- playbooks/news-tg.md 3.5 KB
- playbooks/nutra.md 2.8 KB
- pyproject.toml 941 B
- references/00-launch-runbook.md 15 KB
- references/01-infra-and-identity.md 4.7 KB
- references/02-access-tokens-and-mcp.md 17 KB
- references/03-agency-accounts-and-bm.md 11 KB
- references/04-mass-launch-api.md 29 KB
- references/05-api-error-catalog.md 2.1 KB
- references/06-portfolio-forensics.md 3.6 KB
- references/07-review-layer-and-cloaking.md 17 KB
- references/08-geo-fees-and-waba.md 4.4 KB
- references/09-verification-gates.md 12 KB
- references/10-no-path-and-permissions.md 11 KB
- references/11-pwa-funnel-builders.md 6.1 KB
- references/12-meta-ads-cli.md 7.1 KB
- references/13-autolaunch-parity.md 6.6 KB
- references/15-mcp-tools-live.md 13 KB
- references/16-metaops-agent-cli.md 16 KB
- references/17-catalog-via-google-sheets.md 5.7 KB
- references/18-fanpage-lifecycle-and-shielding.md 12 KB
- schemas/result.v1.json 636 B
- schemas/workspace.v1.json 2.4 KB
- scripts/activate.py 9.2 KB runs code
- scripts/asset_graph.py 9.0 KB runs code
- scripts/bulk.py 11 KB runs code
- scripts/clone.py 10 KB runs code
- scripts/cmd_business.py 23 KB runs code
- scripts/cmd_catalog.py 24 KB runs code
- scripts/cmd_edit.py 20 KB runs code
- scripts/cmd_operate.py 40 KB runs code
- scripts/comments.py 7.1 KB runs code
- scripts/edit.py 9.3 KB runs code
- scripts/feed_upload.py 3.1 KB runs code
- scripts/graph.py 20 KB runs code
- scripts/insights.py 7.2 KB runs code
- scripts/launch.py 49 KB runs code
- scripts/mcp.py 4.7 KB runs code
- scripts/media.py 9.9 KB runs code
- scripts/meta_workspace.py 12 KB runs code
- scripts/metaops.py 81 KB runs code
- scripts/monitor.py 9.2 KB runs code
- scripts/mutate_set.py 3.9 KB runs code
- scripts/page.py 4.1 KB runs code
- scripts/probe.py 18 KB runs code
- scripts/rules.py 14 KB runs code
- scripts/selftest.py 27 KB runs code
- scripts/sheetfeed.py 19 KB runs code
- scripts/specs/example-abo-1-3-1.json 3.4 KB
- scripts/specs/example-accounts.json 1.0 KB
- scripts/specs/example-catalog-collection-tr.json 1.6 KB
- scripts/specs/example-catalog-single.json 1.7 KB
- scripts/specs/example-dlo.json 2.5 KB
- scripts/specs/example-eu-dsa.json 1.3 KB
- scripts/specs/example-link-video.json 1.4 KB
- scripts/specs/example-workspace.json 775 B
- scripts/test_cmd_business.py 19 KB runs code
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.
- 1mo ago Changed facd7923f302
- 1mo ago Changed · +1 lines da37bcb61859
- 1mo ago Changed · +6 lines · +117 tokens per session 44c00ad18535
- 1mo ago First seen · 89 lines · 112 tokens per session scan A 99d986d3bb6c
meta-grey-ops is a skill published in the GitHub repository sergeyizmailov/knowledge-delta-skills (3 stars, last pushed 1mo ago), licensed MIT. It adds 229 tokens to every session and 2,501 once invoked, about $0.0009 per session on Opus 5.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-31.
Other skills, from other repositories
firebase-auth
Use when setting up auth, managing auth state, implementing email/password or social sign-in, handling auth errors, or managing users.
developing-genkit-dart
Use when building AI agents in Dart, implementing Genkit flows or tools, integrating LLMs into Dart or Flutter applications, or using Genkit Dart plugins.
firebase-cloud-functions
Use when calling callable functions (httpsCallable), passing data to server-side logic, handling function errors/timeouts, configuring regions, or testing with the Emulator Suite.
firebase-data-connect
Use when setting up Data Connect, writing GraphQL queries/mutations, configuring generated SDKs, handling offline, or applying security rules.
stripe-backend
Centralized LLM prompt instructions for Copilot and Cursor, including scripts to convert and sync rules for Python, React, Shell, and TypeScript. Designed for rapid reuse and contribution across projects.
implement-fastapi-routes
The file docstring contains a description of the FastAPI routes we need to implement. Implement these routes.