wavemind

A tool for turning conversation transcripts and brainstorming notes into maps that show how ideas changed over time.

In plain words
What is it for?
It helps capture thinking artifacts, analyze their rounds and word counts, create visual thought maps, and list the reasoning process.
Why use it?
It makes the development of an idea easier to review than reading a long conversation or unstructured notes.

Skill for Claude CodeCodex

Install

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.

agentmods
npx agentmods add skills/lilyzhng/wavemind/wavemind
Any agent
npx skills add lilyzhng/WaveMind --skill wavemind
Clone the repo
git clone --depth 1 https://github.com/lilyzhng/WaveMind

Made for: Claude Code, Codex.

Per session 35 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 7,097 The whole file, excluding the scripts and references it only reads on demand.
Security scan B 1 finding. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00035 $0.07097
Opus 5 $0.00017 $0.03549
Sonnet 5 $0.00007 $0.01419
Haiku 4.5 $0.00003 $0.00710

Measured 2d ago against content hash 9eec75de8382, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade B, and why

wavemind 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 2d 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.

Asks for rootmediumPrivilege escalation

A mod that escalates privileges can change anything on the machine, not only the project.

- **Images:** When the user shares a screenshot or image during the conversation, save it to `~/Documents/lily-memory/Thoughts/artifacts/` with a descriptive filename (e.g., `milli-cafe-session.png`) and ensure the file
SKILL.md · 408 lines

How it starts

The opening of the file, as written. The whole thing — 408 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Usage tracking: Run bash ~/.agents/hooks/track-skill.sh <<< '{"tool_input":{"skill":"wavemind"}}' at the start of every invocation. Do not skip this step.

WaveMind: Thought Capture + Visualization

Transform thinking artifacts into beautiful visual maps of how your ideas evolved.

Commands

$wavemind capture [filepath]

Capture a thinking artifact. Two modes:

Mode 1: Import existing file ($wavemind capture <filepath>)

  1. Read the file at <filepath>
  2. Analyze the content to extract: title, round count, word count, source type
  3. Generate a short ID from the date and title (e.g., 20260327-zai-prep)
  4. Run bash lib/capture.sh <filepath> "<title>" to copy and index it
  5. Report what was captured

Mode 2: Live capture ($wavemind capture or $wavemind capture "Topic Name" or $wavemind capture "Topic Name" --output /path/to/file.md) When no filepath is given (or filepath doesn't exist as a file to import), start a live capture session:

  1. Ask the user for a topic name if not provided
  2. Determine output path:
    • If --output <path> is specified, write to that exact path. Skip folder selection and naming convention. This allows other skills (e.g. dadclawd) to call WaveMind and control where the conversation is recorded.
    • If no --output, pick the right folder based on topic:
      • Interview prep conversations → ~/Documents/lily-memory/Thoughts/interview_preps/<id>.md Interview prep = mock interviews, interview gameplan, company research for a specific role, day-plans whose primary focus is interview prep, course-selection conversations for interview prep, pre-interview check-ins.
      • Everything else → ~/Documents/lily-memory/Thoughts/artifacts/<id>.md
  3. Naming convention (when no --output): YYYYMMDD-<topic-slug>.md. Use the format YYYYMMDD with the date the conversation happened. For interview prep, prefer YYYYMMDD-interview-<slug>.md or YYYYMMDD-interview-study-<day>.md / YYYYMMDD-interview-plan-MMDD.md over generic names like thursday-thinking or plan-apr17. The word "interview" in the slug makes the file self-describing.
  4. Create the artifact file immediately at the chosen path with this structure:
    # Topic Name - YYYY-MM-DD
    
    **Participants:** Lily + Jackie
    **Topic:** Brief description
    
    ## Promises
    <!-- Updated as promises emerge from conversation -->
    
    ---
    
    ## Round 1: Title
    **Lily:** ...
    **Jackie:** ...
    
  5. Run date "+%Y-%m-%d %H:%M %A" at the start of every capture session. Record the start time in the artifact header. Run date again when wrapping up to calculate session duration. Never estimate times.
  6. Tell the user: "Recording. Talk naturally. Say 'done' or 'save' when finished."
  7. Write-first flow: Write both the user's words AND your response directly to the artifact markdown file first. Then give a short terminal reply (1-2 sentences max, e.g. "Written to artifact, Round 3. [brief pointer to what you said]"). Never write a full response in terminal AND in the file. The file is the single source of truth. This avoids duplication and rephrasing.
    • Speak human. WaveMind is a conversation, usually with voice on. Your artifact responses must read like spoken language: short, plain, first-person, no report-style structure. No multi-part numbered breakdowns, no bolded headers inside a reply, no "the arc across the five tests" prose. If you'd catch yourself writing a paragraph you wouldn't say out loud, cut it down to the sentences you would say. Follow the anti-slop skill's banned words (no "surface," "load-bearing," "verdict," etc.). A good round reply is 3-6 plain sentences; go longer only when the user asked for depth.
    • Bullet long replies in the artifact. When a response runs long (multi-concept explanations, reading maps, analyses), do NOT write it as one big paragraph in the .md file — break it into bullet points (with sub-bullets where natural) so it stays readable on re-read. Keep the spoken, plain tone inside each bullet; the bullets are a formatting aid, not a license for report-style structure. Short replies stay as plain sentences. (Added 2026-07-29 per Lily's request.)
    • Break up long user quotes too. The same rule applies to the user's side: when Lily pastes a long paragraph (a take, a quote, meeting notes), split it into shorter paragraphs or bullets at natural boundaries when writing it to the artifact — without changing her words. One wall of text under **Lily:** is as unreadable as one under the agent's name. (Added 2026-07-29 per Lily's request.)
    • Embed links for every cited work — REQUIRED. (Added 2026-08-22 per Lily's request.) Any time a round names a paper, blog post, benchmark, or repo, write it as a markdown link in the artifact — [Let's Verify Step by Step](https://arxiv.org/abs/2305.20050), never a bare "Lightman et al." or a naked arXiv id. Verify the id/URL resolves before writing it (a wrong arXiv id was caught this way on 2026-08-22). No link findable → say "couldn't locate the source" instead of citing from memory.
    • Ground every analytical reply; no slop. (Added 2026-08-07 per Lily's request.) When a round analyzes something real (a job description, a company, a technical decision), every claim must trace to a source: a document quote, a fetched page, or Lily's own verified artifacts. If it can't be traced, either say "not verifiable" or cut it. Length without sources reads as hallucination and Lily will call it out.
      • Structure is a tool, not a mandate. Lily's full checklist is: problem / solution / impact / what others do / significance / in scope / out of scope / critical feedback. Use whichever points the question actually needs, 1-2 lines each. What is never optional: soul. That means a real position, a genuine debate from more than one perspective (hers, the counterparty's, the org's), and a skeptical read of her own stance when warranted. Agreement without something new added is slop.
      • Condition the answer on HER question and context, not on the generic topic. She asks from a specific situation (a referral in flight, an interview scheduled, a stated career goal); an answer that ignores that situation is generic even if factually correct.
      • Slop answer (real example, rejected 2026-08-07, on "what does a research TPM actually do?"): a long invented "day in the life" narrative: "the day looks like: morning scanning run health and transcripts, midday research review, afternoon chasing a compute-allocation conflict..." Plausible, unsourced, could describe any TPM at any company, and none of it traceable to the JD. Rejected as "blog slop, hallucinated."
      • Good answer (same question, accepted): quote the JD's own responsibility list ("deliver a regular read on the ground truth in RL research"), infer only what the quote supports ("you don't hire someone to build a read that already exists"), name what's verifiable from job boards (three research TPM reqs posted since April = building a bench, not backfilling), then debate: the hiring manager's skeptical read of Lily's profile, AND a skeptical read of her own motivation given her stated #1 goal of building agent products. End by asking her to pick a side, not with a summary.
  8. Capture incrementally, not at the end. After each round (a topic reaches a natural pause, the user moves to a new question, or a decision is made), append that round to the artifact file right away. Each round gets:
    • A section header: ## Round N: Title
    • The raw dialogue with **Speaker:** labels
    • Original words preserved (including mixed languages). Fix obvious typos but do not rewrite or summarize.
    • This avoids the lossy "reconstruct everything from memory at the end" problem.
    • Images: When the user shares a screenshot or image during the conversation, save it to ~/Documents/lily-memory/Thoughts/artifacts/ with a descriptive filename (e.g., milli-cafe-session.png) and ensure the file has readable permissions (chmod 644). Embed it in the artifact markdown using standard markdown syntax with explicit relative path: ![description](./filename.png). Always use the ./ prefix so both VS Code and Obsidian can render the image. Place the image reference in the dialogue at the point it was shared, under the speaker who shared it.
    • Promises: When promises/action items emerge from the conversation (decisions made, tasks identified, next steps agreed), update the ## Promises section at the top of the file. Use - [ ] [MMDD-N] format with IDs so the /promise skill can auto-extract them. Group by category if natural. Promises are a living section that grows as the conversation progresses, not something reconstructed at the end.
  9. When the user says "done", "save", or "stop recording":
    • Append any remaining conversation not yet written
    • Do a final pass on the Promises section to make sure all promises from the conversation are captured with IDs
    • Run bash lib/capture.sh to finalize and index it
    • Report: artifact ID, title, round count, word count, file path
    • Suggest: "Run $wavemind visualize <id> to generate the visual."

Read the full file on GitHub · 408 lines

Changes

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.

  1. 2d ago First seen · 408 lines · 35 tokens per session scan B 9eec75de8382

Subscribe to this mod's changes

wavemind is a skill published in the GitHub repository lilyzhng/WaveMind (5 stars, last pushed 9d ago), licensed MIT. It adds 35 tokens to every session and 7,097 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it B with 1 finding (asks for root). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

systematic-debugging

Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.

obra/superpowers · 21 tokens

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.

obra/superpowers · 37 tokens

auto-perf-optimize

Run agent-driven VS Code performance or memory investigations. Use when asked to launch Code OSS, automate a VS Code scenario, run the Chat memory smoke runner, capture renderer heap snapshots, take workflow screenshots, compare run summaries, or drive a repeatable scenario before heap-snapshot analysis.

microsoft/vscode · 62 tokens

chat-perf

Run chat perf benchmarks and memory leak checks against the local dev build or any published VS Code version. Use when investigating chat rendering regressions, validating perf-sensitive changes to chat UI, or checking for memory leaks in the chat response pipeline.

microsoft/vscode · 51 tokens

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.

microsoft/vscode · 53 tokens

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…

microsoft/vscode · 71 tokens