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 chadixearth/graphyloop --skill last30daysgit clone --depth 1 https://github.com/chadixearth/graphyloopWrote 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/chadixearth/graphyloop/last30days)<a href="https://agentmods.dev/skills/chadixearth/graphyloop/last30days"><img src="https://agentmods.dev/badge/skills/chadixearth/graphyloop/last30days.svg" alt="Measured on agentmods" 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.00049 | $0.32720 |
| Opus 5 | $0.00024 | $0.16360 |
| Sonnet 5 | $0.00010 | $0.06544 |
| Haiku 4.5 | $0.00005 | $0.03272 |
Grade B, and why
last30days scanned grade B 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 6d 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.
Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
CLAUDE_CACHE_LATEST=$(find "$HOME/.claude/plugins/cache/last30days-skill/last30days" -mindepth 1 -maxdepth 1 -type d 2>/dev/null | sort -V | tail -1) This is a copy
95% identical to last30days — 147 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 — 1,710 lines — stays where its author put it; the contents beside it link to each section on GitHub.
STEP 0: STALE-CLONE SELF-CHECK — RUN BEFORE READING BELOW
Before reading anything else in this file, check whether you loaded SKILL.md from the one known stale-clone location: Claude Code's marketplaces directory.
Run this check:
CLAUDE_CACHE_LATEST=$(find "$HOME/.claude/plugins/cache/last30days-skill/last30days" -mindepth 1 -maxdepth 1 -type d 2>/dev/null | sort -V | tail -1)
# Two cache layouts ship in the wild — nested ({version}/skills/last30days/SKILL.md)
# and flat ({version}/SKILL.md). Resolve to whichever shape actually exists.
CLAUDE_CACHE_SKILL_MD=""
if [ -n "$CLAUDE_CACHE_LATEST" ]; then
if [ -f "$CLAUDE_CACHE_LATEST/skills/last30days/SKILL.md" ]; then
CLAUDE_CACHE_SKILL_MD="$CLAUDE_CACHE_LATEST/skills/last30days/SKILL.md"
elif [ -f "$CLAUDE_CACHE_LATEST/SKILL.md" ]; then
CLAUDE_CACHE_SKILL_MD="$CLAUDE_CACHE_LATEST/SKILL.md"
fi
fi
echo "CLAUDE_CACHE_SKILL_MD=$CLAUDE_CACHE_SKILL_MD"
If the SKILL.md path you just Read contains /.claude/plugins/marketplaces/ AND $CLAUDE_CACHE_SKILL_MD is non-empty, STOP and re-read $CLAUDE_CACHE_SKILL_MD before proceeding. Otherwise the SKILL.md you have is fine — continue.
Why this specific check: ~/.claude/plugins/marketplaces/last30days-skill/ is a git clone Claude Code auto-restores to origin/main on session start. It can lag the versioned cache by one or more releases. Three 2026-04-22 test runs (Linear, Coinbase) loaded SKILL.md from marketplaces/, ran --help from the same stale path, did not see the --competitors flag that existed in the cache, and fell back to a manual comparison plan. Result: 2 of 3 windows never invoked the feature they were asked to test. STEP 0 defends against that one Claude Code-specific bug.
Other install paths are fine: ~/.codex/skills/, ~/.agents/skills/, an npx skills add install dir, or a repo checkout are all valid load points - the resolver in Step 1 picks them up. Do NOT abort or hop on those paths.
SKILL CONTRACT — READ BEFORE ANY TOOL CALL
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.
- agents/openai.yaml 448 B
- assets/aging-portrait.jpeg 2751 KB
- assets/claude-code-rap.mp3 2299 KB
- assets/dog-as-human.png 2403 KB
- assets/dog-original.jpeg 3920 KB
- assets/swimmom-mockup.jpeg 2700 KB
- references/save-html-brief.md 5.8 KB
- scripts/briefing.py 8.1 KB runs code
- scripts/build-skill.sh 1.3 KB runs code
- scripts/compare.sh 2.2 KB runs code
- scripts/evaluate_search_quality.py 19 KB runs code
- scripts/last30days.py 43 KB runs code
- scripts/lib/__init__.py 29 B runs code
- scripts/lib/bird_x.py 18 KB runs code
- scripts/lib/bluesky.py 12 KB runs code
- scripts/lib/categories.py 7.5 KB runs code
- scripts/lib/chrome_cookies.py 11 KB runs code
- scripts/lib/cluster.py 11 KB runs code
- scripts/lib/competitors.py 7.2 KB runs code
- scripts/lib/cookie_extract.py 14 KB runs code
- scripts/lib/dates.py 3.1 KB runs code
- scripts/lib/dedupe.py 3.2 KB runs code
- scripts/lib/digg.py 13 KB runs code
- scripts/lib/entity_extract.py 4.1 KB runs code
- scripts/lib/env.py 25 KB runs code
- scripts/lib/fanout.py 3.1 KB runs code
- scripts/lib/fusion.py 8.4 KB runs code
- scripts/lib/github.py 37 KB runs code
- scripts/lib/grounding.py 11 KB runs code
- scripts/lib/hackernews.py 11 KB runs code
- scripts/lib/html_render.py 17 KB runs code
- scripts/lib/http.py 11 KB runs code
- scripts/lib/instagram.py 18 KB runs code
- scripts/lib/log.py 831 B runs code
- scripts/lib/normalize.py 19 KB runs code
- scripts/lib/perplexity.py 4.7 KB runs code
- scripts/lib/pinterest.py 5.2 KB runs code
- scripts/lib/pipeline.py 45 KB runs code
- scripts/lib/planner.py 30 KB runs code
- scripts/lib/polymarket.py 30 KB runs code
- scripts/lib/preflight.py 4.4 KB runs code
- scripts/lib/providers.py 15 KB runs code
- scripts/lib/quality_nudge.py 13 KB runs code
- scripts/lib/query.py 3.9 KB runs code
- scripts/lib/reddit_enrich.py 9.3 KB runs code
- scripts/lib/reddit_keyless.py 9.9 KB runs code
- scripts/lib/reddit_listing.py 6.2 KB runs code
- scripts/lib/reddit_public.py 9.2 KB runs code
- scripts/lib/reddit_rss.py 7.6 KB runs code
- scripts/lib/reddit_shreddit.py 6.3 KB runs code
- scripts/lib/reddit.py 24 KB runs code
- scripts/lib/relevance.py 5.8 KB runs code
- scripts/lib/render.py 70 KB runs code
- scripts/lib/rerank.py 17 KB runs code
- scripts/lib/resolve.py 12 KB runs code
- scripts/lib/safari_cookies.py 5.6 KB runs code
- scripts/lib/schema.py 11 KB runs code
- scripts/lib/setup_wizard.py 18 KB runs code
- scripts/lib/signals.py 9.5 KB runs code
- scripts/lib/skill_meta.py 1.2 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.
- 6d ago First seen · 1,710 lines · 49 tokens per session scan B bee461995acc
last30days is a skill published in the GitHub repository chadixearth/graphyloop (2 stars, last pushed 20d ago), licensed MIT. It adds 49 tokens to every session and 32,720 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it B with 1 finding (reads agent configuration directories). It is 95% identical to last30days, differing in 147 lines, and is treated as a copy.
Other skills, from other repositories
aikito
Install, configure, and operate Aikito workspaces, including memory, skills, project resources, MCP servers, subagents, adoption, synchronization, and status verification.
kirby-collections-and-navigation
Builds Kirby listings, pagination, search, filtering/sorting/grouping, and navigation menus. Use when implementing collection logic in templates/controllers/snippets.
kirby-scaffold-page-type
Scaffolds a new Kirby page type (blueprint + template, optional controller/model) using project roots, index tools, and Panel field/section references. Use when creating a new page type or extending an existing blueprint/template.
durable-memory
Git-versioned memory stored in the Aikito workspace, separate from any Agent's built-in memory. Use to search, retrieve, or persist cross-project and project-scoped durable knowledge, historical decisions, user preferences, or verified architecture constraints.
kirby-debugging-and-tracing
Diagnoses Kirby rendering/runtime issues using MCP runtime rendering, dump traces, and template/snippet/controller indexes. Use when outputs are wrong, errors occur, or tracing execution paths is required.
kirby-headless-api
Exposes Kirby content to headless clients using the API, KQL, and JSON representations. Use when building API endpoints, KQL queries, or headless frontends.