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 wenlan-app/wenlan --skill wenlan-capturegit clone --depth 1 https://github.com/wenlan-app/wenlanWrote 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/wenlan-app/wenlan/wenlan-capture)<a href="https://agentmods.dev/skills/wenlan-app/wenlan/wenlan-capture"><img src="https://agentmods.dev/badge/skills/wenlan-app/wenlan/wenlan-capture/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/wenlan-app/wenlan/wenlan-capture"><img src="https://agentmods.dev/badge/skills/wenlan-app/wenlan/wenlan-capture.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.00066 | $0.02448 |
| Opus 5.5 | $0.00026 | $0.00979 |
| Sonnet 5.5 | $0.00013 | $0.00490 |
| Haiku 4.5 | $0.00007 | $0.00245 |
Grade A, and why
wenlan-capture 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 today.
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 — 223 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/wenlan-capture
Capture a single memory in the moment. Active verb: agent captures the moment of insight, like a photograph.
Resolve the active space
The /wenlan-capture skill accepts one optional inline token of the form
space:<name> anywhere in the argument string. The bundled resolver strips it
and returns the rest as the content. It prints the resolved Space line itself:
raw_args="<the full argument string passed to /wenlan-capture>"
resolved="$("{{WENLAN_SKILLS_DIR}}/wenlan/scripts/resolve-space.sh" --cwd "$PWD" --args "$raw_args")"
space="$(printf '%s\n' "$resolved" | cut -f1)"
source_layer="$(printf '%s\n' "$resolved" | cut -f2)"
content="$(printf '%s\n' "$resolved" | cut -f3-)"
If content is empty, ask the user what they want to capture before calling
the tool. Pass space="$space" to the capture MCP tool only when space is
non-empty.
The resolver line reports the proposed client context. After capture, relay
the tool's returned space, space_source, and write_outcome; those fields
describe what the daemon actually persisted and are authoritative.
Unknown spaces are not auto-created. Register one through the resolved CLI
binary, or omit space to store uncategorized:
W="$(command -v wenlan || echo "$HOME/.wenlan/bin/wenlan")"
"$W" spaces add <space>
Memory or note
Default to one memory. Save a note instead only when the user asks for one in
their own words: "save this as a note", "write this up", "存成筆記",
"寫成一篇筆記", or /wenlan-capture text that starts with "note:". Proactive
captures are always memories; never create a note on your own initiative, and
never save the same thing as both a memory and a note in one turn. Turning many
memories into notes is a different job: that is /wenlan distill.
To save a note, follow "Save a note" below and skip the memory steps.
Something from another app or the web
When the user wants to keep something you read in another app or on the web
(an email, a Notion or Drive page, a Slack thread, an issue, an article), save
the original with save_source instead of capturing it. Pass its permanent
link as url, its title, the text as you read it (not a summary), a
source_label such as gmail, notion, drive, slack, github or web,
and space when it is non-empty. Never make up a link: if you have no link to
the original, capture the insight as a memory instead. Save only what the user
asked to keep; never copy a whole inbox or channel.
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.
- today First seen · 223 lines · 66 tokens per session scan A edc38a965cb4
wenlan-capture is a skill published in the GitHub repository wenlan-app/wenlan (86 stars, last pushed today), licensed Apache-2.0. It adds 66 tokens to every session and 2,448 once invoked, about $0.0003 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-10-24.
Other skills, from other repositories
forget
Delete a Wenlan memory by exact id from Codex. Destructive and confirmation gated. Invoked as /forget .
recall
Search Wenlan's local memory from Codex by query. Targeted lookup, not session orientation. Invoked as /recall .
capture
Save a durable memory to Wenlan from Codex. Use proactively when the user states a preference, makes a decision, corrects you, or shares a durable fact. Invoked as /capture .
handoff
End a Codex work session. Stores durable captures, writes a narrative session log, and automatically applies typed item-level deltas to the current Space Brief. Invoked as /handoff.
lint
Lint Wenlan memory quality and hygiene, check vocabulary, or resolve every finding into a ready repair, review item, system action, or blocker.
run-wenlan-app
Build, launch, screenshot, and drive the wenlan-app Tauri desktop app in dev mode on macOS (WKWebView) or Windows (WebView2). Use when asked to run or start the app, verify a UI change in the real running app (not just tests), or take a screenshot of it.