Turn thinking artifacts (conversation transcripts, brainstorm notes) into beautiful visual thought evolution maps. Capture, visualize, and list your thinking process.
Transform thinking artifacts into beautiful visual maps of how your ideas evolved.
/wavemind capture [filepath]Capture a thinking artifact. Two modes:
Mode 1: Import existing file (/wavemind capture <filepath>)
<filepath>20260327-zai-prep)bash lib/capture.sh <filepath> "<title>" to copy and index itMode 2: Live capture (/wavemind capture or /wavemind capture "Topic Name")
When no filepath is given, start a live capture session:
data/artifacts/<id>.md## Round N: Title**Speaker:** labelsdata/artifacts/ with a descriptive filename (e.g., milli-cafe-session.png). Embed it in the artifact markdown using . Place the image reference in the dialogue at the point it was shared, under the speaker who shared it.bash lib/capture.sh to finalize and index it/wavemind visualize <id> to generate the visual."/wavemind visualize <artifact-id>Generate a living memory document from a stored thinking artifact.
Steps:
data/artifacts/<id>.mddata/visuals/<id>.html/wavemind listBrowse all stored thinking artifacts and their visualization status.
Steps:
data/index.jsonID | Title | Rounds | Date | Status
20260327-zai-prep | ZAI Ambassador Prep | 11 | 2026-03-27 | visualized
20260329-design-evolution | Design Evolution | 6 | 2026-03-29 | not visualized
/wavemind capture to start."When analyzing a thinking artifact, produce this structure:
{
"title": "Title from the user's perspective",
"date": "2026-03-27",
"participants": "Lily + Growth",
"sections": [
{
"round": 1,
"header": "High-signal title from user's perspective",
"quote": "Memorable speaker quote, max 10 words",
"dialogue": [
{"speaker": "lily", "text": "One thought per bubble. Keep it short."},
{"speaker": "lily", "text": "", "image": "screenshot.png", "image_alt": "Terminal color comparison"},
{"speaker": "lily", "text": "Here's what it looked like after the fix:", "image": "after-fix.png", "image_alt": "Terminal after color fix"},
{"speaker": "growth", "text": "Response in their original words."}
],
"is_pivoting_moment": false
}
],
"actionables": {
"why_it_matters": "One paragraph explaining why this conversation mattered and what shifted.",
"items": [
"Concrete next step 1",
"Concrete next step 2",
"Concrete next step 3"
]
}
}
Key rules:
header: High-signal, from the user's perspective. BAD: "Discussion of Opportunity." GOOD: "I'm the Orchestrator, Not the Promoter."quote: A real speaker quote, not AI-generated. The "memory hook," what you'd remember a week later.dialogue: The actual back-and-forth, one thought per bubble. Use original words (including mixed Chinese/English). Clean filler but don't rewrite. Entries with an image field render as an <img> tag inside the bubble instead of (or alongside) text.is_pivoting_moment: True only when thinking genuinely shifted direction. Not every round is a pivot.actionables: Always include. why_it_matters is a single paragraph explaining significance. items are concrete, specific next steps. Not vague ("think about X") but actionable ("build X", "pair Y with Z", "test A").When generating the HTML visualization:
<img src="../artifacts/filename.png"> inside the bubble. Style with max-width: 100%; border-radius: 8px; margin-top: 8px; cursor: pointer. Add a lightbox overlay so clicking the image shows it fullscreen with an Escape-to-close handler. Use direct file paths (same approach as frontend-slides), not base64 embedding.Reference: See data/visuals/glm-benchmark.html for an approved example (GLM Aesthetic Benchmark).
Runtime data lives in data/. New artifacts and visuals are gitignored, but seeded examples are checked in for reference.
data/
├── .gitignore # Ignores runtime data, keeps seeded examples
├── index.json # Artifact registry (created at runtime)
├── artifacts/ # Raw markdown files (glm-benchmark.md seeded)
└── visuals/ # Generated HTML files (glm-benchmark.html seeded)
index.json is an array of artifact entries:
[
{
"id": "20260327-zai-prep",
"title": "ZAI Ambassador Prep",
"source": "brainstorm",
"tags": ["zai", "ambassador", "strategy"],
"rounds": 11,
"word_count": 3200,
"created_at": "2026-03-27T00:00:00Z",
"file": "artifacts/20260327-zai-prep.md",
"visualized": true
}
]