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 aaronjmars/aeon-agent --skill social-monitorgit clone --depth 1 https://github.com/aaronjmars/aeon-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/aaronjmars/aeon-agent/social-monitor)<a href="https://agentmods.dev/skills/aaronjmars/aeon-agent/social-monitor"><img src="https://agentmods.dev/badge/skills/aaronjmars/aeon-agent/social-monitor/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/aaronjmars/aeon-agent/social-monitor"><img src="https://agentmods.dev/badge/skills/aaronjmars/aeon-agent/social-monitor.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.00000 | $0.01064 |
| Opus 5 | $0.00000 | $0.00532 |
| Sonnet 5 | $0.00000 | $0.00213 |
| Haiku 4.5 | $0.00000 | $0.00106 |
Grade B, and why
social-monitor scanned grade B with 2 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 12d 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.
Sends data to an external URLmediumData exfiltration
A POST to an outside endpoint may be telemetry or may be exfiltration; either way the mod talks to somewhere, and you should know where.
# ./secretcurl -H "Authorization: Bearer {XAI_API_KEY}" -d @/tmp/payload.json Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
# Reddit's keyless JSON endpoint. WebFetch fallback if curl fails (sandbox). This is a copy
100% identical to [REPLACE: SKILL_NAME] — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 83 lines — stays where its author put it; the contents beside it link to each section on GitHub.
name: [REPLACE: SKILL_NAME] description: Mention/keyword sweep on social platforms for [REPLACE: KEYWORDS] — trends, sentiment, top posts metadata: category: social var: "" tags: - social requires: - XAI_API_KEY?
${var} — Optional. Pass alternative keywords (comma-separated) to override the default. If empty, monitors
[REPLACE: KEYWORDS].
Today is ${today}. Monitor social mentions of [REPLACE: KEYWORDS] and produce a summary.
Steps
-
Resolve keywords —
KEYWORDS="${var:-[REPLACE: KEYWORDS]}". Split on commas, trim each, lower-case. Each token becomes its own search query. -
Search X — for each keyword, use the X / xAI search path (project's standard pattern):
# Uses XAI_API_KEY in-run via ./secretcurl (the key is injected via requires:). # Mirror the fetch-tweets skill: POST https://api.x.ai/v1/responses with # ./secretcurl -H "Authorization: Bearer {XAI_API_KEY}" -d @/tmp/payload.json # WebFetch (or a Nitter mirror) is the last-resort fallback.Restrict to language
[REPLACE: LANGUAGE](e.g.en,fr,any). Drop posts with fewer than[REPLACE: MIN_LIKES]likes — that filter is what protects the channel from low-signal noise. -
Search Reddit — for each keyword:
# Reddit's keyless JSON endpoint. WebFetch fallback if curl fails (sandbox). curl -sf "https://www.reddit.com/search.json?q=$KEYWORD&t=day&restrict_sr=0" \ -H "User-Agent: aeon/1.0" > .reddit-cache.json || \ echo "use WebFetch on https://www.reddit.com/search.json?q=$KEYWORD&t=day" -
Score and pick top 5 per platform — score on engagement (likes, comments, score) × recency (last 24h gets full marks). Drop reposts and obvious bot accounts (handles like
*_bot, account age < 7 days with > 100 posts). -
Tag sentiment — for the top 10 posts overall, label each
positive/neutral/negativebased on tone of the post text. Keep this lightweight — one-token classification, no nested reasoning. -
Write
output/articles/[REPLACE: SKILL_NAME]-${today}.md:# [REPLACE: KEYWORDS] — ${today} ## Volume - X: N posts (vs 7d avg M) - Reddit: N posts (vs 7d avg M) ## Sentiment positive: X · neutral: Y · negative: Z ## Top posts 1. [Author · platform · timestamp] "Excerpt or paraphrase." → URL 2. ... -
Notify via
./notifywith a 2-3 line summary:*[REPLACE: KEYWORDS] — ${today}* · N posts · sentiment skews positive/negative · top: <one-line title>. Full digest: <url>. Silent on quiet days (volume < 25% of 7d average AND no negative-sentiment spike). -
Log to
memory/logs/${today}.md:## [REPLACE: SKILL_NAME] - **Volume**: x_posts=N, reddit_posts=N, vs_7d_avg=Δ% - **Sentiment**: pos=X, neu=Y, neg=Z - **Status**: SOCIAL_OK | SOCIAL_QUIET | SOCIAL_SPIKE (vol > 2x avg) | SOCIAL_DEGRADED
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.
- 12d ago First seen · 83 lines · 0 tokens per session scan B 485a54b7e9f8
social-monitor is a skill published in the GitHub repository aaronjmars/aeon-agent (11 stars, last pushed today), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,064 tokens. A static security scan graded it B with 2 findings (sends data to an external url, makes network calls). It is 100% identical to [REPLACE: SKILL_NAME], differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
local-ai-agents
Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…
next-cache-components-adoption
Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…
chat-pet-sprite-creation
Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…
insight-error-page
Write or audit an insight-kind error page for the Next.js dev overlay. Use when creating a new errors/ .mdx page, auditing an existing one, or checking that a page matches the framework fix cards. Covers page structure, title alignment, FixCard cards with Copy prompt button, code snippets, terminology verification…