- **`#focus`** makes a Focus and opens it: `#focus the spring recital`
+
+```embedhtml
+<style>
+.mi{font:14px/1.4 var(--body,system-ui,sans-serif);color:var(--ink);max-width:520px;min-height:112px;margin:2px 0 6px}
+.mi .box{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:12px;background:var(--card);padding:6px 8px}
+.mi .q{flex:1;min-height:20px;white-space:pre}.mi .q .ph{color:var(--soft)}.mi .q .at{color:var(--ink);font-weight:600}
+.mi .cur{display:inline-block;width:1px;height:1.05em;background:var(--ink);vertical-align:-2px;animation:mib 1s steps(1) infinite}@keyframes mib{50%{opacity:0}}
+.mi .go{border:1px solid var(--line);border-radius:9px;padding:3px 10px;background:var(--paper);color:var(--ink);font-size:12px;flex:none;transition:background .2s}
+.mi .go.hot{background:color-mix(in srgb,var(--ink) 12%,var(--paper))}
+.mi .msg{margin:8px 0 0 auto;max-width:80%;border:1px solid var(--line);border-radius:12px;background:var(--paper);padding:6px 10px;font-size:13px;opacity:0;transform:translateY(4px);transition:opacity .3s,transform .3s}
+.mi .pop{margin-top:6px;border:1px solid var(--line);border-radius:10px;background:var(--card);padding:4px;max-width:300px;opacity:0;transition:opacity .2s}.mi .pop.on{opacity:1}.mi .pop div{padding:3px 8px;border-radius:7px;font-size:13px}.mi .pop div.sel{background:color-mix(in srgb,var(--ink) 9%,transparent)}.mi .pop span{color:var(--soft);margin-left:6px}
+.mi .msg.on{opacity:1;transform:none}.mi .msg.ag{margin-left:0}.mi .msg b{font-weight:600}
+</style>
+<div class="mi"><div class="box"><span class="q" id="q"></span><span class="go" id="go">Go</span></div><div class="pop" id="pop"></div><div class="msg ag" id="m1"></div></div>
+<script>
+(()=>{const $=i=>document.getElementById(i),q=$('q'),go=$('go'),m1=$('m1'),pop=$('pop'),sleep=ms=>new Promise(r=>setTimeout(r,ms));
+const S={"text": "#focus the spring recital", "go": "Create focus", "goAt": 6, "done": "<b>d2</b> \u00b7 Focus <i>the spring recital</i> made, and opened"};const esc=s=>s.replace(/&/g,'&').replace(/</g,'<');
+const show=t=>{q.innerHTML=t?esc(t).replace(/^([@#\/$]\S*)/,'<span class="at">$1</span>')+'<span class="cur"></span>':'<span class="ph">What do you want to make?</span><span class="cur"></span>'};
+const menu=(it,sel)=>{pop.innerHTML=it.map((x,i)=>'<div class="'+(i===sel?'sel':'')+'">'+esc(x[0])+(x[1]?'<span>'+esc(x[1])+'</span>':'')+'</div>').join('');pop.classList.add('on')};
+(async()=>{for(;;){show('');go.textContent='Go';m1.classList.remove('on');pop.classList.remove('on');await sleep(700);
+ const t=S.text;for(let i=1;i<=t.length;i++){show(t.slice(0,i));const mm=S.menus&&S.menus[i];if(mm)menu(mm[0],mm[1]);if(S.goAt&&i===S.goAt)go.textContent=S.go;await sleep(S.ms||55)}
+ await sleep(600);if(S.pick){menu(S.pick[0],S.pick[1]);await sleep(800)}pop.classList.remove('on');go.classList.add('hot');await sleep(250);go.classList.remove('hot');show('');go.textContent='Go';
+ m1.innerHTML=S.done;m1.classList.add('on');await sleep(2800)}})()})();
+</script>
+```
+
- **`#thought`** saves a thought: `#thought call the venue on Monday`
+
+```embedhtml
+<style>
+.mi{font:14px/1.4 var(--body,system-ui,sans-serif);color:var(--ink);max-width:520px;min-height:112px;margin:2px 0 6px}
+.mi .box{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:12px;background:var(--card);padding:6px 8px}
+.mi .q{flex:1;min-height:20px;white-space:pre}.mi .q .ph{color:var(--soft)}.mi .q .at{color:var(--ink);font-weight:600}
+.mi .cur{display:inline-block;width:1px;height:1.05em;background:var(--ink);vertical-align:-2px;animation:mib 1s steps(1) infinite}@keyframes mib{50%{opacity:0}}
+.mi .go{border:1px solid var(--line);border-radius:9px;padding:3px 10px;background:var(--paper);color:var(--ink);font-size:12px;flex:none;transition:background .2s}
+.mi .go.hot{background:color-mix(in srgb,var(--ink) 12%,var(--paper))}
+.mi .msg{margin:8px 0 0 auto;max-width:80%;border:1px solid var(--line);border-radius:12px;background:var(--paper);padding:6px 10px;font-size:13px;opacity:0;transform:translateY(4px);transition:opacity .3s,transform .3s}
+.mi .pop{margin-top:6px;border:1px solid var(--line);border-radius:10px;background:var(--card);padding:4px;max-width:300px;opacity:0;transition:opacity .2s}.mi .pop.on{opacity:1}.mi .pop div{padding:3px 8px;border-radius:7px;font-size:13px}.mi .pop div.sel{background:color-mix(in srgb,var(--ink) 9%,transparent)}.mi .pop span{color:var(--soft);margin-left:6px}
+.mi .msg.on{opacity:1;transform:none}.mi .msg.ag{margin-left:0}.mi .msg b{font-weight:600}
+</style>
+<div class="mi"><div class="box"><span class="q" id="q"></span><span class="go" id="go">Go</span></div><div class="pop" id="pop"></div><div class="msg ag" id="m1"></div></div>
+<script>
+(()=>{const $=i=>document.getElementById(i),q=$('q'),go=$('go'),m1=$('m1'),pop=$('pop'),sleep=ms=>new Promise(r=>setTimeout(r,ms));
+const S={"text": "#thought call the venue on Monday", "go": "Save thought", "goAt": 8, "done": "<b>d2</b> \u00b7 saved to your Thoughts"};const esc=s=>s.replace(/&/g,'&').replace(/</g,'<');
+const show=t=>{q.innerHTML=t?esc(t).replace(/^([@#\/$]\S*)/,'<span class="at">$1</span>')+'<span class="cur"></span>':'<span class="ph">What do you want to make?</span><span class="cur"></span>'};
+const menu=(it,sel)=>{pop.innerHTML=it.map((x,i)=>'<div class="'+(i===sel?'sel':'')+'">'+esc(x[0])+(x[1]?'<span>'+esc(x[1])+'</span>':'')+'</div>').join('');pop.classList.add('on')};
+(async()=>{for(;;){show('');go.textContent='Go';m1.classList.remove('on');pop.classList.remove('on');await sleep(700);
+ const t=S.text;for(let i=1;i<=t.length;i++){show(t.slice(0,i));const mm=S.menus&&S.menus[i];if(mm)menu(mm[0],mm[1]);if(S.goAt&&i===S.goAt)go.textContent=S.go;await sleep(S.ms||55)}
+ await sleep(600);if(S.pick){menu(S.pick[0],S.pick[1]);await sleep(800)}pop.classList.remove('on');go.classList.add('hot');await sleep(250);go.classList.remove('hot');show('');go.textContent='Go';
+ m1.innerHTML=S.done;m1.classList.add('on');await sleep(2800)}})()})();
+</script>
+```
+
- **Any `#tag`** saves the line as a thought with those tags (`#bug`, `#idea`…): `#bug the Go button does nothing on my iPad`. With Mind Meld at *Active*, a `#bug` or `#idea` also goes to the designer.
+
+```embedhtml
+<style>
+.mi{font:14px/1.4 var(--body,system-ui,sans-serif);color:var(--ink);max-width:520px;min-height:112px;margin:2px 0 6px}
+.mi .box{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:12px;background:var(--card);padding:6px 8px}
+.mi .q{flex:1;min-height:20px;white-space:pre}.mi .q .ph{color:var(--soft)}.mi .q .at{color:var(--ink);font-weight:600}
+.mi .cur{display:inline-block;width:1px;height:1.05em;background:var(--ink);vertical-align:-2px;animation:mib 1s steps(1) infinite}@keyframes mib{50%{opacity:0}}
+.mi .go{border:1px solid var(--line);border-radius:9px;padding:3px 10px;background:var(--paper);color:var(--ink);font-size:12px;flex:none;transition:background .2s}
+.mi .go.hot{background:color-mix(in srgb,var(--ink) 12%,var(--paper))}
+.mi .msg{margin:8px 0 0 auto;max-width:80%;border:1px solid var(--line);border-radius:12px;background:var(--paper);padding:6px 10px;font-size:13px;opacity:0;transform:translateY(4px);transition:opacity .3s,transform .3s}
+.mi .pop{margin-top:6px;border:1px solid var(--line);border-radius:10px;background:var(--card);padding:4px;max-width:300px;opacity:0;transition:opacity .2s}.mi .pop.on{opacity:1}.mi .pop div{padding:3px 8px;border-radius:7px;font-size:13px}.mi .pop div.sel{background:color-mix(in srgb,var(--ink) 9%,transparent)}.mi .pop span{color:var(--soft);margin-left:6px}
+.mi .msg.on{opacity:1;transform:none}.mi .msg.ag{margin-left:0}.mi .msg b{font-weight:600}
+</style>
+<div class="mi"><div class="box"><span class="q" id="q"></span><span class="go" id="go">Go</span></div><div class="pop" id="pop"></div><div class="msg ag" id="m1"></div></div>
+<script>
+(()=>{const $=i=>document.getElementById(i),q=$('q'),go=$('go'),m1=$('m1'),pop=$('pop'),sleep=ms=>new Promise(r=>setTimeout(r,ms));
+const S={"text": "#bug the Go button does nothing on my iPad", "go": "Save thought", "goAt": 4, "done": "<b>d2</b> \u00b7 saved to your Thoughts, tagged <b>#bug</b>"};const esc=s=>s.replace(/&/g,'&').replace(/</g,'<');
+const show=t=>{q.innerHTML=t?esc(t).replace(/^([@#\/$]\S*)/,'<span class="at">$1</span>')+'<span class="cur"></span>':'<span class="ph">What do you want to make?</span><span class="cur"></span>'};
+const menu=(it,sel)=>{pop.innerHTML=it.map((x,i)=>'<div class="'+(i===sel?'sel':'')+'">'+esc(x[0])+(x[1]?'<span>'+esc(x[1])+'</span>':'')+'</div>').join('');pop.classList.add('on')};
+(async()=>{for(;;){show('');go.textContent='Go';m1.classList.remove('on');pop.classList.remove('on');await sleep(700);
+ const t=S.text;for(let i=1;i<=t.length;i++){show(t.slice(0,i));const mm=S.menus&&S.menus[i];if(mm)menu(mm[0],mm[1]);if(S.goAt&&i===S.goAt)go.textContent=S.go;await sleep(S.ms||55)}
+ await sleep(600);if(S.pick){menu(S.pick[0],S.pick[1]);await sleep(800)}pop.classList.remove('on');go.classList.add('hot');await sleep(250);go.classList.remove('hot');show('');go.textContent='Go';
+ m1.innerHTML=S.done;m1.classList.add('on');await sleep(2800)}})()})();
+</script>
+```
+
- **`/`** opens a page on the stage: type a few letters and pick, as `/pipeline`, `/thoughts`, `/agents`, `/toolbox` or any `/path`.
+
+```embedhtml
+<style>
+.mi{font:14px/1.4 var(--body,system-ui,sans-serif);color:var(--ink);max-width:520px;min-height:112px;margin:2px 0 6px}
+.mi .box{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:12px;background:var(--card);padding:6px 8px}
-- **`$ `** (a dollar and a space) is a d2 call, picked from a list as you type.
+.mi .q{flex:1;min-height:20px;white-space:pre}.mi .q .ph{color:var(--soft)}.mi .q .at{color:var(--ink);font-weight:600}
+.mi .cur{display:inline-block;width:1px;height:1.05em;background:var(--ink);vertical-align:-2px;animation:mib 1s steps(1) infinite}@keyframes mib{50%{opacity:0}}
+.mi .go{border:1px solid var(--line);border-radius:9px;padding:3px 10px;background:var(--paper);color:var(--ink);font-size:12px;flex:none;transition:background .2s}
+.mi .go.hot{background:color-mix(in srgb,var(--ink) 12%,var(--paper))}
+.mi .msg{margin:8px 0 0 auto;max-width:80%;border:1px solid var(--line);border-radius:12px;background:var(--paper);padding:6px 10px;font-size:13px;opacity:0;transform:translateY(4px);transition:opacity .3s,transform .3s}
+.mi .pop{margin-top:6px;border:1px solid var(--line);border-radius:10px;background:var(--card);padding:4px;max-width:300px;opacity:0;transition:opacity .2s}.mi .pop.on{opacity:1}.mi .pop div{padding:3px 8px;border-radius:7px;font-size:13px}.mi .pop div.sel{background:color-mix(in srgb,var(--ink) 9%,transparent)}.mi .pop span{color:var(--soft);margin-left:6px}
+.mi .msg.on{opacity:1;transform:none}.mi .msg.ag{margin-left:0}.mi .msg b{font-weight:600}
+</style>
+<div class="mi"><div class="box"><span class="q" id="q"></span><span class="go" id="go">Go</span></div><div class="pop" id="pop"></div><div class="msg ag" id="m1"></div></div>
+<script>
+(()=>{const $=i=>document.getElementById(i),q=$('q'),go=$('go'),m1=$('m1'),pop=$('pop'),sleep=ms=>new Promise(r=>setTimeout(r,ms));
+const S={"text": "/pi", "ms": 260, "menus": {"1": [[["/thoughts", "your notes"], ["/pipeline", "the work"], ["/agents", "who is up"], ["/toolbox", "everything"]], -1], "2": [[["/pipeline", "the work"]], 0], "3": [[["/pipeline", "the work"]], 0]}, "done": "<b>d2</b> \u00b7 the Pipeline opens on the stage"};const esc=s=>s.replace(/&/g,'&').replace(/</g,'<');
+const show=t=>{q.innerHTML=t?esc(t).replace(/^([@#\/$]\S*)/,'<span class="at">$1</span>')+'<span class="cur"></span>':'<span class="ph">What do you want to make?</span><span class="cur"></span>'};
+const menu=(it,sel)=>{pop.innerHTML=it.map((x,i)=>'<div class="'+(i===sel?'sel':'')+'">'+esc(x[0])+(x[1]?'<span>'+esc(x[1])+'</span>':'')+'</div>').join('');pop.classList.add('on')};
+(async()=>{for(;;){show('');go.textContent='Go';m1.classList.remove('on');pop.classList.remove('on');await sleep(700);
+ const t=S.text;for(let i=1;i<=t.length;i++){show(t.slice(0,i));const mm=S.menus&&S.menus[i];if(mm)menu(mm[0],mm[1]);if(S.goAt&&i===S.goAt)go.textContent=S.go;await sleep(S.ms||55)}
+ await sleep(600);if(S.pick){menu(S.pick[0],S.pick[1]);await sleep(800)}pop.classList.remove('on');go.classList.add('hot');await sleep(250);go.classList.remove('hot');show('');go.textContent='Go';
+ m1.innerHTML=S.done;m1.classList.add('on');await sleep(2800)}})()})();
+</script>
+```
+
+- **`$ `** (a dollar and a space) picks one of d2's actions by name, the same ones your words are read as (*publish* is `topic.publish`): type a few letters, pick, fill it in.
+
+```embedhtml
+<style>
+.mi{font:14px/1.4 var(--body,system-ui,sans-serif);color:var(--ink);max-width:520px;min-height:112px;margin:2px 0 6px}
+.mi .box{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:12px;background:var(--card);padding:6px 8px}
+.mi .q{flex:1;min-height:20px;white-space:pre}.mi .q .ph{color:var(--soft)}.mi .q .at{color:var(--ink);font-weight:600}
+.mi .cur{display:inline-block;width:1px;height:1.05em;background:var(--ink);vertical-align:-2px;animation:mib 1s steps(1) infinite}@keyframes mib{50%{opacity:0}}
+.mi .go{border:1px solid var(--line);border-radius:9px;padding:3px 10px;background:var(--paper);color:var(--ink);font-size:12px;flex:none;transition:background .2s}
+.mi .go.hot{background:color-mix(in srgb,var(--ink) 12%,var(--paper))}
+.mi .msg{margin:8px 0 0 auto;max-width:80%;border:1px solid var(--line);border-radius:12px;background:var(--paper);padding:6px 10px;font-size:13px;opacity:0;transform:translateY(4px);transition:opacity .3s,transform .3s}
+.mi .pop{margin-top:6px;border:1px solid var(--line);border-radius:10px;background:var(--card);padding:4px;max-width:300px;opacity:0;transition:opacity .2s}.mi .pop.on{opacity:1}.mi .pop div{padding:3px 8px;border-radius:7px;font-size:13px}.mi .pop div.sel{background:color-mix(in srgb,var(--ink) 9%,transparent)}.mi .pop span{color:var(--soft);margin-left:6px}
+.mi .msg.on{opacity:1;transform:none}.mi .msg.ag{margin-left:0}.mi .msg b{font-weight:600}
+</style>
+<div class="mi"><div class="box"><span class="q" id="q"></span><span class="go" id="go">Go</span></div><div class="pop" id="pop"></div><div class="msg ag" id="m1"></div></div>
+<script>
+(()=>{const $=i=>document.getElementById(i),q=$('q'),go=$('go'),m1=$('m1'),pop=$('pop'),sleep=ms=>new Promise(r=>setTimeout(r,ms));
+const S={"text": "$ pub", "ms": 220, "menus": {"2": [[["topic.publish", "publish, put live"], ["topic.update", "update, fix"], ["topic.tag", "tag"], ["item.send", "send"]], -1], "5": [[["topic.publish", "publish, put live"]], 0]}, "done": "<b>d2</b> \u00b7 <code>$ topic.publish(</code> is in the box: name the topic and Go"};const esc=s=>s.replace(/&/g,'&').replace(/</g,'<');
+const show=t=>{q.innerHTML=t?esc(t).replace(/^([@#\/$]\S*)/,'<span class="at">$1</span>')+'<span class="cur"></span>':'<span class="ph">What do you want to make?</span><span class="cur"></span>'};
+const menu=(it,sel)=>{pop.innerHTML=it.map((x,i)=>'<div class="'+(i===sel?'sel':'')+'">'+esc(x[0])+(x[1]?'<span>'+esc(x[1])+'</span>':'')+'</div>').join('');pop.classList.add('on')};
+(async()=>{for(;;){show('');go.textContent='Go';m1.classList.remove('on');pop.classList.remove('on');await sleep(700);
+ const t=S.text;for(let i=1;i<=t.length;i++){show(t.slice(0,i));const mm=S.menus&&S.menus[i];if(mm)menu(mm[0],mm[1]);if(S.goAt&&i===S.goAt)go.textContent=S.go;await sleep(S.ms||55)}
+ await sleep(600);if(S.pick){menu(S.pick[0],S.pick[1]);await sleep(800)}pop.classList.remove('on');go.classList.add('hot');await sleep(250);go.classList.remove('hot');show('');go.textContent='Go';
+ m1.innerHTML=S.done;m1.classList.add('on');await sleep(2800)}})()})();
+</script>
+```
+
While you type `@`, `#`, `/` or `$ `, a list offers what fits; **↑ ↓** and **Enter** pick.