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 agentmods add skills/ibrain-bvba/gutt-claude-code-plugin/weekly-recapnpx skills add iBrain-BVBA/gutt-claude-code-plugin --skill weekly-recapgit clone --depth 1 https://github.com/iBrain-BVBA/gutt-claude-code-pluginWrote 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/ibrain-bvba/gutt-claude-code-plugin/weekly-recap)<a href="https://agentmods.dev/skills/ibrain-bvba/gutt-claude-code-plugin/weekly-recap"><img src="https://agentmods.dev/badge/skills/ibrain-bvba/gutt-claude-code-plugin/weekly-recap.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.00145 | $0.03172 |
| Opus 5 | $0.00072 | $0.01586 |
| Sonnet 5 | $0.00029 | $0.00634 |
| Haiku 4.5 | $0.00015 | $0.00317 |
Grade A, and why
weekly-recap 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 5d 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 — 255 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Weekly Recap
A recap is a time-window question, and the graph's semantic search has no sense of time: it ranks by relevance, so asking it for "mentions of me last week" returns the best matches from any month and silently drops the week. The knowledge is in the graph; what is missing is the traversal. This skill is that traversal, written down: pivot from the subject's node to the episodes that mention it, sweep the window with the date filters that do exist, and turn what comes back into a brief a human wants to read — plain language, themed bullets, every line carrying its source and date.
Underneath, memory-search owns the search ladder and the relevance gate,
graph-traversal owns relationship walking, and memory-capture owns any
durable write; they ship with this plugin. The steps below compose those
skills rather than bypass them: subject resolution and the themed sweep
run under memory-search's rules, relationship checks under
graph-traversal's — only the window-paging of episode lists is native
to this skill. Work-tracker access comes from whatever tooling the
session surfaces (issue tracker, wiki, or none); names and prefixes vary
per install.
Hard rules (non-negotiable — read first)
- Resolve the window to absolute datetimes before any call, and print it. The report header states start, end, and timezone. A bare "recap" defaults to the trailing 7 days ending now. A named period means that calendar period in the user's timezone — "last week" is the previous Monday-to-Sunday week, "June" is June 1–30; a named period is never a trailing window. Tool calls take the resolved values; a relative phrase never reaches a parameter.
- Read-only. No writes to memory or to any external system. If the
user wants the recap's outcome persisted, that goes through
memory-capture's gate — hand it over rather than writing here. - Every line is cited and in-window — each point names its source
and date in reader's terms: a meeting or document name, a ticket key,
a page title. Keep the underlying ids at hand for drill-down; don't
print them through the brief. An item whose timestamp you have not
seen does not enter the report. Relevance gate per
memory-search: no loosely-matching filler. - Use the time filters that exist; never fake the ones that don't.
Fact search takes server-side
created_after/created_before— use them for the sweep — and by default it returns only facts still valid now, which is the wrong default for a recap: a decision made in the window and reversed after it would silently vanish. Windowed sweeps passinclude_invalidated=true, and an item the graph marks as later superseded enters the report labelled so — a reversal is part of the week's story, not noise. Episode listings take no date parameters; paging moves from newest toward oldest — page until the timestamps cross the window start; the stop condition is a date, not a count. The two listings order by different clocks — the per-group listing by event time, the per-entity mention walk by ingestion time — and nothing is ingested before it happens, so either way a page that has crossed the window start ends the walk: nothing deeper can still be in-window. Two cautions: items may present oldest-first inside a page even though pages step newest-to-older, so judge the stop on the page's date range, not its first row; and verify each further page actually advanced — a listing that repeats a page has given all it will give, so stop and let Coverage call the audit partial rather than refetch in a loop. Node search has no date filter at all — it resolves subjects to nodes and answers nothing about "when". - Scope is server-decided; default to all of it. A recap wants
everything the user is allowed to see, and that is what the search
tools deliver when no group filter is passed — so pass none by
default, and narrow with
group_idsonly when the user asks for one slice. Episode listings are the exception: one group per call, and omitting the group does not mean all of them — the server picks one team group, never the personal scope; passing the literalpersonalas the group id is how that scope gets swept. Name the group per call, taking ids from the groups already present in search results or the session's group listing — never from the user, never invented — and sweep each group you saw; Coverage names any you skipped. - Report coverage, not just content. The graph knows only what was ingested: state the episode date range actually observed per group, and report an empty window as "nothing recorded for this window", never as "nothing happened". Mentions come from extraction, not from a raw text scan — say so when a mentions section comes back thin. Content that declares itself test or fixture material stays out of the report, and Coverage names the group it was found in. An exhausted page is a stopping point, not proof of completeness — never present the sweep as exhaustive.
- Bare tool names, probed with ToolSearch — prefixes vary per install.
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.
- 5d ago First seen · 255 lines · 145 tokens per session scan A 7e490219e94f
weekly-recap is a skill published in the GitHub repository iBrain-BVBA/gutt-claude-code-plugin (5 stars, last pushed 3d ago), licensed MIT. It adds 145 tokens to every session and 3,172 once invoked, about $0.0007 per session on Opus 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
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…
next-cache-components-optimizer
Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route at a time; the shipped test then…
next-partial-prefetching-adoption
Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces. Use when the user wants to enable or adopt Partial Prefetching, flip the partialPrefetching flag, opt routes in with export const prefetch = 'partial', audit Link prefetch={true} behavior, preserve existing prefetched UI with…
chronicle
Analyze Copilot session history for standup reports, usage tips, session search, and session reindexing. Use when the user asks for a standup, daily summary, usage tips, workflow recommendations, wants to search or find past sessions by keyword/file/PR, wants to reindex their session store, or asks about deleting…