Borrowing it
Nothing to install: this file belongs to jsilets/linkedin-outreach-agent. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/jsilets/linkedin-outreach-agent/main/.claude/skills/dogfood-review/SKILL.mdgit clone --depth 1 https://github.com/jsilets/linkedin-outreach-agentWrote 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/jsilets/linkedin-outreach-agent/dogfood-review)<a href="https://agentmods.dev/skills/jsilets/linkedin-outreach-agent/dogfood-review"><img src="https://agentmods.dev/badge/skills/jsilets/linkedin-outreach-agent/dogfood-review/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/jsilets/linkedin-outreach-agent/dogfood-review"><img src="https://agentmods.dev/badge/skills/jsilets/linkedin-outreach-agent/dogfood-review.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.00097 | $0.02121 |
| Opus 5.5 | $0.00039 | $0.00848 |
| Sonnet 5.5 | $0.00019 | $0.00424 |
| Haiku 4.5 | $0.00010 | $0.00212 |
Grade A, and why
dogfood-review 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 — 174 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Dogfood review
You are the operator's second pair of eyes on a local, self-hosted LinkedIn
outreach runtime. Nobody is watching the logs. Errors here are silent: they land
in the Postgres events table and nowhere else. The founding incident is the
model — the reply probe failed 42+ times over hours and froze the entire
message-approval pipeline, and no one knew until they went looking. Your job is
to go looking, on a schedule, and leave a written trail.
This is a self-improvement loop: run the report, read it critically, trace each anomaly to the code that produced it, and write down what you found and what should change. You are a reviewer and a scribe, not an operator.
Hard boundary: read-only on runtime state and on git/GitHub
You may read anything, and you may propose fixes in the journal (see step 5). You may not change the running system or produce outbound artifacts. Specifically, you must never:
- restart, stop, or redeploy the runtime, the web server, or Postgres;
- approve, reject, edit, send, or cancel any message or campaign action;
- mutate any campaign, target, account, list, or database row (no
UPDATE,INSERT,DELETE, no MCP write tools likeapprove/send_message/pause_account); - write to git or GitHub: no commits, no branches, no pushes, no pull requests, no issues, and never touch the operator's checked-out working tree. This is a public OSS repo; anything outbound is the operator's call, made deliberately, not a scheduled side effect.
If a finding is urgent (the pipeline is frozen right now), say so loudly in the journal and in your summary to the operator, and let a human act on the running system.
Steps
1. Run the ops report
From the repo root:
npm run ops:report # last 24h (default)
npm run ops:report -- --hours 72 # widen the window when chasing a slow trend
The report is read-only (all SELECTs) and prints markdown to stdout with five
sections: Errors by kind, Stuck pipeline, Action outcomes by type,
Account cap utilization, and Pending approvals. Read the whole thing
before reacting to any one line.
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 First seen · 174 lines · 97 tokens per session scan A 5f9b159297c3
dogfood-review is a skill published in the GitHub repository jsilets/linkedin-outreach-agent (1 stars, last pushed 4d ago), licensed Apache-2.0. It adds 97 tokens to every session and 2,121 once invoked, about $0.0004 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
linkedin-outreach
Use when running LinkedIn social selling as a repeatable motion — Sales Navigator saved searches and trigger alerts, weekly request budgets, fixing a low acceptance rate, turning profile views and post engagers into warm threads, logging every touch. NOT the note or DM copy (that is cold-outreach), NOT the deal after…
research-person
Build a structured intelligence brief on one person from their LinkedIn posts and their full profile — experience, education, skills, languages, volunteer work — using the Insaight MCP server. Covers role and career trajectory, content themes, decision-maker signals, outreach hooks, and uncommon commonalities to open…
draft-post
Draft a LinkedIn post for the user's own company page, in that company's own voice, plus an optional visual brief. Reads COMPANYNAME and COMPANYLINKEDIN from insaight:getconfig, loads the company's real past posts through the Insaight MCP, extracts their hook, structure, length, emoji, hashtag and language patterns…
research-company
Build a structured intelligence brief on a company from its LinkedIn page posts plus the personal posts of up to three of its executives, using the Insaight MCP server, then score it as a prospect on fit, pain signals and decision-maker visibility. Covers where the company came from, what it is shipping and hiring for…
draft-outreach
Draft a personalized cold LinkedIn DM or email from three inputs: the intelligence in a prior Insaight research brief, the learned style memory (insaight:getmemory — the user's distilled voice plus the playbook of what actually earns replies), and a prior-contact check against the outreach ledger…
research-post
Mine a LinkedIn post AND its comment thread for leads, using the Insaight MCP connector: who engaged, what they said, recurring themes, buying signals, decision-makers hiding in the replies, competitor and vendor mentions, and ranked warm leads with the hook each one hands you. Use this whenever a LinkedIn post URL…