[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-letta-remote-desktop-testing-windows":3,"mdc-3mdynp-key":40,"related-org-letta-remote-desktop-testing-windows":1335,"related-repo-letta-remote-desktop-testing-windows":1496},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":29,"repoUrl":30,"updatedAt":31,"license":32,"forks":33,"topics":34,"repo":35,"sourceUrl":38,"mdContent":39},"remote-desktop-testing-windows","test GUI applications on Windows","Test any GUI app or change on a Daytona Windows remote desktop sandbox. Use to launch a GUI program, sync a local project, take a screenshot, record a video, or share a clickable live-desktop link with a teammate. Generic — the only dependency is Daytona. For Linux, use remote-desktop-testing-linux.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"letta","Letta","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fletta.png","letta-ai",[13,17,20,23,26],{"name":14,"slug":15,"type":16},"Windows","windows","tag",{"name":18,"slug":19,"type":16},"Desktop","desktop",{"name":21,"slug":22,"type":16},"Screenshots","screenshots",{"name":24,"slug":25,"type":16},"Video","video",{"name":27,"slug":28,"type":16},"Testing","testing",127,"https:\u002F\u002Fgithub.com\u002Fletta-ai\u002Fskills","2026-07-13T06:25:18.885874",null,20,[],{"repoUrl":30,"stars":29,"forks":33,"topics":36,"description":37},[],"A shared repository for skills. Intended to be used with Letta Code, Claude Code, Codex CLI, and other agents that support skills.","https:\u002F\u002Fgithub.com\u002Fletta-ai\u002Fskills\u002Ftree\u002FHEAD\u002Ftools\u002Fremote-desktop-testing-windows","---\nname: remote-desktop-testing-windows\ndescription: Test any GUI app or change on a Daytona Windows remote desktop sandbox. Use to launch a GUI program, sync a local project, take a screenshot, record a video, or share a clickable live-desktop link with a teammate. Generic — the only dependency is Daytona. For Linux, use remote-desktop-testing-linux.\n---\n\n# Remote Desktop Testing on Windows\n\n## Overview\n\nGeneric Daytona Windows sandbox driver. It creates (or reuses) a Windows sandbox whose desktop\nis streamed over noVNC, and provides the primitives for visual testing of any GUI app: sync\ncode, run PowerShell, launch GUI programs in the interactive desktop session, screenshot,\nrecord video, and mint a clickable desktop link a teammate can open to drive the app.\n\n## When to Use\n\n- Demo or visually verify a GUI app (Electron, browser, native Win32) on Windows without a local Windows machine\n- Produce a screenshot + video + clickable live-desktop link for a teammate\n- Debug Windows-specific desktop behavior of a cross-platform app\n- Run throwaway desktop sessions that are fully disposable (stop with `cleanup`)\n\n## Usage\n\nRun the bundled script with Node from the skill directory:\n\n```bash\nnode scripts\u002Fremote-desktop.mjs \u003Ccommand> [options]\n```\n\nCredentials: `DAYTONA_API_KEY` (and optionally `DAYTONA_API_URL`\u002F`DAYTONA_TARGET`) from the\nenvironment or a dotenv file — `.\u002F.env` by default, override with `--env-path \u003Cfile>`.\nThe script auto-installs `@daytona\u002Fsdk` under `~\u002F.letta\u002Fskill-state\u002Fremote-desktop-testing-windows\u002F`\non first use and remembers the active sandbox id there, so later commands don't need `--sandbox`.\n\n## Typical flow\n\n```bash\n# 1. Start (or reuse) a Windows sandbox (default snapshot: \"windows\", the stock Daytona one)\nnode scripts\u002Fremote-desktop.mjs start\n\n# 2. (Optional) push a local project to C:\\Users\\Public\\remote-desktop\\workspace\nnode scripts\u002Fremote-desktop.mjs sync --project-path ~\u002Frepos\u002Fmy-app --sync-mode working_tree\n\n# 3. Set up \u002F build with PowerShell commands\nnode scripts\u002Fremote-desktop.mjs shell \\\n  --command \"Set-Location C:\\Users\\Public\\remote-desktop\\workspace; npm install\"\n\n# 4. Launch the GUI app in the interactive desktop session and verify its window appeared\nnode scripts\u002Fremote-desktop.mjs launch \\\n  --command \"my-app.exe --some-flag\" --label my-app --wait-window \"My App\"\n\n# 5. Deliverables: screenshot, video, and a clickable live-desktop link\nnode scripts\u002Fremote-desktop.mjs screenshot --output \u002Ftmp\u002Fdemo.png\nnode scripts\u002Fremote-desktop.mjs record --output \u002Ftmp\u002Fdemo.mp4 --mp4 --duration 12\nnode scripts\u002Fremote-desktop.mjs preview\n```\n\nAlways confirm the result visually (open the screenshot, or check `windows` \u002F `--wait-window`)\nbefore reporting success — never report success from process existence alone. When sharing with\na teammate, send the `desktopUrl` from `preview` (signed noVNC link, expires ~6h; re-run\n`preview` to refresh). Pass `--port \u003Cn>` to `preview` to also mint a signed URL for an app's\nHTTP port.\n\n## Commands\n\n| Command | What it does |\n| --- | --- |\n| `start` | Create\u002Freuse a sandbox and start the desktop stream. `--fresh` forces a new one. |\n| `sync` | Sync `--project-path` to `C:\\Users\\Public\\remote-desktop\\workspace` (`git_archive` = committed HEAD, `working_tree` = uncommitted too; `robocopy \u002FMIR` preserving remote `node_modules`). |\n| `shell --command PS` | Run PowerShell. `--timeout \u003Cs>` for long ones. |\n| `launch --command CMD` | Launch a GUI command in the interactive desktop session via `schtasks \u002FIT` (logged to `C:\\Users\\Public\\remote-desktop\\launch-\u003Clabel>.log`). `--wait-window \u003Cregex>` verifies a matching window title appears. |\n| `windows` | List visible desktop windows. |\n| `screenshot` | Save a PNG of the full desktop locally. |\n| `preview` | Print signed `desktopUrl` (noVNC), plus `appUrl` if `--port` given. |\n| `record` | Record the live desktop via Playwright + local Chrome (`--duration \u003Cs>`, `--mp4`). |\n| `recording-start\u002Fstop\u002Fdownload` | Native Daytona recording — **unreliable on Windows** (recordings can silently vanish); prefer `record`. |\n| `snapshot --snapshot \u003Cname>` | Bake the sandbox into a snapshot (Daytona snapshots Windows from STOPPED; stops, snapshots, restarts). |\n| `cleanup` | Stop the active sandbox. |\n\n## Snapshots\n\nCold Windows boxes are slow to set up. After installing your toolchain\u002Fdeps once, bake a\nprepared snapshot so future `start --snapshot \u003Cname>` runs skip setup:\n\n```bash\nnode scripts\u002Fremote-desktop.mjs snapshot --snapshot my-app-windows-dev-v1\n```\n\nRevert throwaway edits before baking. Keep install-skip markers or caches **outside** the\nworkspace directory (e.g. directly under `C:\\Users\\Public\\remote-desktop\\`) — `sync` mirrors\nwith `robocopy \u002FMIR`, which deletes anything in the workspace not present locally.\n\n## Gotchas\n\n- **Daytona shell\u002Fprocess commands run as SYSTEM.** GUI apps launched from `shell` can run\n  invisibly. `launch` exists precisely for this: it wraps the command in a `.cmd` and runs it\n  via `schtasks \u002FIT \u002FRU Administrator`, which puts the window in the interactive session that\n  the noVNC link shows. Always use `launch` (not `shell`) to start GUI apps.\n- Verify with `--wait-window` or `windows` + `screenshot` — a running process is not a visible\n  window.\n- For the shareable link, send `desktopUrl` (the interactive desktop), not a raw app-port URL.\n- `record` runs Playwright locally: it resolves `playwright`\u002F`playwright-core` from\n  `--project-path` first, else auto-installs `playwright-core` into skill state, and drives the\n  local Chrome binary (`--chrome-path`, default macOS Chrome). `--mp4` needs local ffmpeg.\n- Maintainer note: the launch `.cmd` generation uses `String.raw` — keep it that way. A plain\n  template literal turns Windows path backslashes (`\\node_modules`, `\\bin`) into JS escapes\n  (`\\n`, `\\b`) and silently corrupts the launcher.\n- Native `schtasks \u002FDelete` on a missing task writes to stderr, which PowerShell's\n  `$ErrorActionPreference='Stop'` escalates — the script routes it through `cmd.exe \u002Fc` to\n  swallow that; do the same for any other best-effort native command you add.\n",{"data":41,"body":42},{"name":4,"description":6},{"type":43,"children":44},"root",[45,54,61,67,73,107,113,118,174,243,249,592,650,656,1007,1013,1026,1059,1093,1099,1329],{"type":46,"tag":47,"props":48,"children":50},"element","h1",{"id":49},"remote-desktop-testing-on-windows",[51],{"type":52,"value":53},"text","Remote Desktop Testing on Windows",{"type":46,"tag":55,"props":56,"children":58},"h2",{"id":57},"overview",[59],{"type":52,"value":60},"Overview",{"type":46,"tag":62,"props":63,"children":64},"p",{},[65],{"type":52,"value":66},"Generic Daytona Windows sandbox driver. It creates (or reuses) a Windows sandbox whose desktop\nis streamed over noVNC, and provides the primitives for visual testing of any GUI app: sync\ncode, run PowerShell, launch GUI programs in the interactive desktop session, screenshot,\nrecord video, and mint a clickable desktop link a teammate can open to drive the app.",{"type":46,"tag":55,"props":68,"children":70},{"id":69},"when-to-use",[71],{"type":52,"value":72},"When to Use",{"type":46,"tag":74,"props":75,"children":76},"ul",{},[77,83,88,93],{"type":46,"tag":78,"props":79,"children":80},"li",{},[81],{"type":52,"value":82},"Demo or visually verify a GUI app (Electron, browser, native Win32) on Windows without a local Windows machine",{"type":46,"tag":78,"props":84,"children":85},{},[86],{"type":52,"value":87},"Produce a screenshot + video + clickable live-desktop link for a teammate",{"type":46,"tag":78,"props":89,"children":90},{},[91],{"type":52,"value":92},"Debug Windows-specific desktop behavior of a cross-platform app",{"type":46,"tag":78,"props":94,"children":95},{},[96,98,105],{"type":52,"value":97},"Run throwaway desktop sessions that are fully disposable (stop with ",{"type":46,"tag":99,"props":100,"children":102},"code",{"className":101},[],[103],{"type":52,"value":104},"cleanup",{"type":52,"value":106},")",{"type":46,"tag":55,"props":108,"children":110},{"id":109},"usage",[111],{"type":52,"value":112},"Usage",{"type":46,"tag":62,"props":114,"children":115},{},[116],{"type":52,"value":117},"Run the bundled script with Node from the skill directory:",{"type":46,"tag":119,"props":120,"children":125},"pre",{"className":121,"code":122,"language":123,"meta":124,"style":124},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","node scripts\u002Fremote-desktop.mjs \u003Ccommand> [options]\n","bash","",[126],{"type":46,"tag":99,"props":127,"children":128},{"__ignoreMap":124},[129],{"type":46,"tag":130,"props":131,"children":134},"span",{"class":132,"line":133},"line",1,[135,141,147,153,158,164,169],{"type":46,"tag":130,"props":136,"children":138},{"style":137},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[139],{"type":52,"value":140},"node",{"type":46,"tag":130,"props":142,"children":144},{"style":143},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[145],{"type":52,"value":146}," scripts\u002Fremote-desktop.mjs",{"type":46,"tag":130,"props":148,"children":150},{"style":149},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[151],{"type":52,"value":152}," \u003C",{"type":46,"tag":130,"props":154,"children":155},{"style":143},[156],{"type":52,"value":157},"comman",{"type":46,"tag":130,"props":159,"children":161},{"style":160},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[162],{"type":52,"value":163},"d",{"type":46,"tag":130,"props":165,"children":166},{"style":149},[167],{"type":52,"value":168},">",{"type":46,"tag":130,"props":170,"children":171},{"style":160},[172],{"type":52,"value":173}," [options]\n",{"type":46,"tag":62,"props":175,"children":176},{},[177,179,185,187,193,195,201,203,209,211,217,219,225,227,233,235,241],{"type":52,"value":178},"Credentials: ",{"type":46,"tag":99,"props":180,"children":182},{"className":181},[],[183],{"type":52,"value":184},"DAYTONA_API_KEY",{"type":52,"value":186}," (and optionally ",{"type":46,"tag":99,"props":188,"children":190},{"className":189},[],[191],{"type":52,"value":192},"DAYTONA_API_URL",{"type":52,"value":194},"\u002F",{"type":46,"tag":99,"props":196,"children":198},{"className":197},[],[199],{"type":52,"value":200},"DAYTONA_TARGET",{"type":52,"value":202},") from the\nenvironment or a dotenv file — ",{"type":46,"tag":99,"props":204,"children":206},{"className":205},[],[207],{"type":52,"value":208},".\u002F.env",{"type":52,"value":210}," by default, override with ",{"type":46,"tag":99,"props":212,"children":214},{"className":213},[],[215],{"type":52,"value":216},"--env-path \u003Cfile>",{"type":52,"value":218},".\nThe script auto-installs ",{"type":46,"tag":99,"props":220,"children":222},{"className":221},[],[223],{"type":52,"value":224},"@daytona\u002Fsdk",{"type":52,"value":226}," under ",{"type":46,"tag":99,"props":228,"children":230},{"className":229},[],[231],{"type":52,"value":232},"~\u002F.letta\u002Fskill-state\u002Fremote-desktop-testing-windows\u002F",{"type":52,"value":234},"\non first use and remembers the active sandbox id there, so later commands don't need ",{"type":46,"tag":99,"props":236,"children":238},{"className":237},[],[239],{"type":52,"value":240},"--sandbox",{"type":52,"value":242},".",{"type":46,"tag":55,"props":244,"children":246},{"id":245},"typical-flow",[247],{"type":52,"value":248},"Typical flow",{"type":46,"tag":119,"props":250,"children":252},{"className":121,"code":251,"language":123,"meta":124,"style":124},"# 1. Start (or reuse) a Windows sandbox (default snapshot: \"windows\", the stock Daytona one)\nnode scripts\u002Fremote-desktop.mjs start\n\n# 2. (Optional) push a local project to C:\\Users\\Public\\remote-desktop\\workspace\nnode scripts\u002Fremote-desktop.mjs sync --project-path ~\u002Frepos\u002Fmy-app --sync-mode working_tree\n\n# 3. Set up \u002F build with PowerShell commands\nnode scripts\u002Fremote-desktop.mjs shell \\\n  --command \"Set-Location C:\\Users\\Public\\remote-desktop\\workspace; npm install\"\n\n# 4. Launch the GUI app in the interactive desktop session and verify its window appeared\nnode scripts\u002Fremote-desktop.mjs launch \\\n  --command \"my-app.exe --some-flag\" --label my-app --wait-window \"My App\"\n\n# 5. Deliverables: screenshot, video, and a clickable live-desktop link\nnode scripts\u002Fremote-desktop.mjs screenshot --output \u002Ftmp\u002Fdemo.png\nnode scripts\u002Fremote-desktop.mjs record --output \u002Ftmp\u002Fdemo.mp4 --mp4 --duration 12\nnode scripts\u002Fremote-desktop.mjs preview\n",[253],{"type":46,"tag":99,"props":254,"children":255},{"__ignoreMap":124},[256,265,282,292,301,338,346,355,377,401,409,418,439,489,497,506,533,575],{"type":46,"tag":130,"props":257,"children":258},{"class":132,"line":133},[259],{"type":46,"tag":130,"props":260,"children":262},{"style":261},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[263],{"type":52,"value":264},"# 1. Start (or reuse) a Windows sandbox (default snapshot: \"windows\", the stock Daytona one)\n",{"type":46,"tag":130,"props":266,"children":268},{"class":132,"line":267},2,[269,273,277],{"type":46,"tag":130,"props":270,"children":271},{"style":137},[272],{"type":52,"value":140},{"type":46,"tag":130,"props":274,"children":275},{"style":143},[276],{"type":52,"value":146},{"type":46,"tag":130,"props":278,"children":279},{"style":143},[280],{"type":52,"value":281}," start\n",{"type":46,"tag":130,"props":283,"children":285},{"class":132,"line":284},3,[286],{"type":46,"tag":130,"props":287,"children":289},{"emptyLinePlaceholder":288},true,[290],{"type":52,"value":291},"\n",{"type":46,"tag":130,"props":293,"children":295},{"class":132,"line":294},4,[296],{"type":46,"tag":130,"props":297,"children":298},{"style":261},[299],{"type":52,"value":300},"# 2. (Optional) push a local project to C:\\Users\\Public\\remote-desktop\\workspace\n",{"type":46,"tag":130,"props":302,"children":304},{"class":132,"line":303},5,[305,309,313,318,323,328,333],{"type":46,"tag":130,"props":306,"children":307},{"style":137},[308],{"type":52,"value":140},{"type":46,"tag":130,"props":310,"children":311},{"style":143},[312],{"type":52,"value":146},{"type":46,"tag":130,"props":314,"children":315},{"style":143},[316],{"type":52,"value":317}," sync",{"type":46,"tag":130,"props":319,"children":320},{"style":143},[321],{"type":52,"value":322}," --project-path",{"type":46,"tag":130,"props":324,"children":325},{"style":143},[326],{"type":52,"value":327}," ~\u002Frepos\u002Fmy-app",{"type":46,"tag":130,"props":329,"children":330},{"style":143},[331],{"type":52,"value":332}," --sync-mode",{"type":46,"tag":130,"props":334,"children":335},{"style":143},[336],{"type":52,"value":337}," working_tree\n",{"type":46,"tag":130,"props":339,"children":341},{"class":132,"line":340},6,[342],{"type":46,"tag":130,"props":343,"children":344},{"emptyLinePlaceholder":288},[345],{"type":52,"value":291},{"type":46,"tag":130,"props":347,"children":349},{"class":132,"line":348},7,[350],{"type":46,"tag":130,"props":351,"children":352},{"style":261},[353],{"type":52,"value":354},"# 3. Set up \u002F build with PowerShell commands\n",{"type":46,"tag":130,"props":356,"children":358},{"class":132,"line":357},8,[359,363,367,372],{"type":46,"tag":130,"props":360,"children":361},{"style":137},[362],{"type":52,"value":140},{"type":46,"tag":130,"props":364,"children":365},{"style":143},[366],{"type":52,"value":146},{"type":46,"tag":130,"props":368,"children":369},{"style":143},[370],{"type":52,"value":371}," shell",{"type":46,"tag":130,"props":373,"children":374},{"style":160},[375],{"type":52,"value":376}," \\\n",{"type":46,"tag":130,"props":378,"children":380},{"class":132,"line":379},9,[381,386,391,396],{"type":46,"tag":130,"props":382,"children":383},{"style":143},[384],{"type":52,"value":385},"  --command",{"type":46,"tag":130,"props":387,"children":388},{"style":149},[389],{"type":52,"value":390}," \"",{"type":46,"tag":130,"props":392,"children":393},{"style":143},[394],{"type":52,"value":395},"Set-Location C:\\Users\\Public\\remote-desktop\\workspace; npm install",{"type":46,"tag":130,"props":397,"children":398},{"style":149},[399],{"type":52,"value":400},"\"\n",{"type":46,"tag":130,"props":402,"children":404},{"class":132,"line":403},10,[405],{"type":46,"tag":130,"props":406,"children":407},{"emptyLinePlaceholder":288},[408],{"type":52,"value":291},{"type":46,"tag":130,"props":410,"children":412},{"class":132,"line":411},11,[413],{"type":46,"tag":130,"props":414,"children":415},{"style":261},[416],{"type":52,"value":417},"# 4. Launch the GUI app in the interactive desktop session and verify its window appeared\n",{"type":46,"tag":130,"props":419,"children":421},{"class":132,"line":420},12,[422,426,430,435],{"type":46,"tag":130,"props":423,"children":424},{"style":137},[425],{"type":52,"value":140},{"type":46,"tag":130,"props":427,"children":428},{"style":143},[429],{"type":52,"value":146},{"type":46,"tag":130,"props":431,"children":432},{"style":143},[433],{"type":52,"value":434}," launch",{"type":46,"tag":130,"props":436,"children":437},{"style":160},[438],{"type":52,"value":376},{"type":46,"tag":130,"props":440,"children":442},{"class":132,"line":441},13,[443,447,451,456,461,466,471,476,480,485],{"type":46,"tag":130,"props":444,"children":445},{"style":143},[446],{"type":52,"value":385},{"type":46,"tag":130,"props":448,"children":449},{"style":149},[450],{"type":52,"value":390},{"type":46,"tag":130,"props":452,"children":453},{"style":143},[454],{"type":52,"value":455},"my-app.exe --some-flag",{"type":46,"tag":130,"props":457,"children":458},{"style":149},[459],{"type":52,"value":460},"\"",{"type":46,"tag":130,"props":462,"children":463},{"style":143},[464],{"type":52,"value":465}," --label",{"type":46,"tag":130,"props":467,"children":468},{"style":143},[469],{"type":52,"value":470}," my-app",{"type":46,"tag":130,"props":472,"children":473},{"style":143},[474],{"type":52,"value":475}," --wait-window",{"type":46,"tag":130,"props":477,"children":478},{"style":149},[479],{"type":52,"value":390},{"type":46,"tag":130,"props":481,"children":482},{"style":143},[483],{"type":52,"value":484},"My App",{"type":46,"tag":130,"props":486,"children":487},{"style":149},[488],{"type":52,"value":400},{"type":46,"tag":130,"props":490,"children":492},{"class":132,"line":491},14,[493],{"type":46,"tag":130,"props":494,"children":495},{"emptyLinePlaceholder":288},[496],{"type":52,"value":291},{"type":46,"tag":130,"props":498,"children":500},{"class":132,"line":499},15,[501],{"type":46,"tag":130,"props":502,"children":503},{"style":261},[504],{"type":52,"value":505},"# 5. Deliverables: screenshot, video, and a clickable live-desktop link\n",{"type":46,"tag":130,"props":507,"children":509},{"class":132,"line":508},16,[510,514,518,523,528],{"type":46,"tag":130,"props":511,"children":512},{"style":137},[513],{"type":52,"value":140},{"type":46,"tag":130,"props":515,"children":516},{"style":143},[517],{"type":52,"value":146},{"type":46,"tag":130,"props":519,"children":520},{"style":143},[521],{"type":52,"value":522}," screenshot",{"type":46,"tag":130,"props":524,"children":525},{"style":143},[526],{"type":52,"value":527}," --output",{"type":46,"tag":130,"props":529,"children":530},{"style":143},[531],{"type":52,"value":532}," \u002Ftmp\u002Fdemo.png\n",{"type":46,"tag":130,"props":534,"children":536},{"class":132,"line":535},17,[537,541,545,550,554,559,564,569],{"type":46,"tag":130,"props":538,"children":539},{"style":137},[540],{"type":52,"value":140},{"type":46,"tag":130,"props":542,"children":543},{"style":143},[544],{"type":52,"value":146},{"type":46,"tag":130,"props":546,"children":547},{"style":143},[548],{"type":52,"value":549}," record",{"type":46,"tag":130,"props":551,"children":552},{"style":143},[553],{"type":52,"value":527},{"type":46,"tag":130,"props":555,"children":556},{"style":143},[557],{"type":52,"value":558}," \u002Ftmp\u002Fdemo.mp4",{"type":46,"tag":130,"props":560,"children":561},{"style":143},[562],{"type":52,"value":563}," --mp4",{"type":46,"tag":130,"props":565,"children":566},{"style":143},[567],{"type":52,"value":568}," --duration",{"type":46,"tag":130,"props":570,"children":572},{"style":571},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[573],{"type":52,"value":574}," 12\n",{"type":46,"tag":130,"props":576,"children":578},{"class":132,"line":577},18,[579,583,587],{"type":46,"tag":130,"props":580,"children":581},{"style":137},[582],{"type":52,"value":140},{"type":46,"tag":130,"props":584,"children":585},{"style":143},[586],{"type":52,"value":146},{"type":46,"tag":130,"props":588,"children":589},{"style":143},[590],{"type":52,"value":591}," preview\n",{"type":46,"tag":62,"props":593,"children":594},{},[595,597,602,604,610,612,618,620,626,628,633,635,641,643,648],{"type":52,"value":596},"Always confirm the result visually (open the screenshot, or check ",{"type":46,"tag":99,"props":598,"children":600},{"className":599},[],[601],{"type":52,"value":15},{"type":52,"value":603}," \u002F ",{"type":46,"tag":99,"props":605,"children":607},{"className":606},[],[608],{"type":52,"value":609},"--wait-window",{"type":52,"value":611},")\nbefore reporting success — never report success from process existence alone. When sharing with\na teammate, send the ",{"type":46,"tag":99,"props":613,"children":615},{"className":614},[],[616],{"type":52,"value":617},"desktopUrl",{"type":52,"value":619}," from ",{"type":46,"tag":99,"props":621,"children":623},{"className":622},[],[624],{"type":52,"value":625},"preview",{"type":52,"value":627}," (signed noVNC link, expires ~6h; re-run\n",{"type":46,"tag":99,"props":629,"children":631},{"className":630},[],[632],{"type":52,"value":625},{"type":52,"value":634}," to refresh). Pass ",{"type":46,"tag":99,"props":636,"children":638},{"className":637},[],[639],{"type":52,"value":640},"--port \u003Cn>",{"type":52,"value":642}," to ",{"type":46,"tag":99,"props":644,"children":646},{"className":645},[],[647],{"type":52,"value":625},{"type":52,"value":649}," to also mint a signed URL for an app's\nHTTP port.",{"type":46,"tag":55,"props":651,"children":653},{"id":652},"commands",[654],{"type":52,"value":655},"Commands",{"type":46,"tag":657,"props":658,"children":659},"table",{},[660,679],{"type":46,"tag":661,"props":662,"children":663},"thead",{},[664],{"type":46,"tag":665,"props":666,"children":667},"tr",{},[668,674],{"type":46,"tag":669,"props":670,"children":671},"th",{},[672],{"type":52,"value":673},"Command",{"type":46,"tag":669,"props":675,"children":676},{},[677],{"type":52,"value":678},"What it does",{"type":46,"tag":680,"props":681,"children":682},"tbody",{},[683,709,773,798,839,855,872,911,943,974,991],{"type":46,"tag":665,"props":684,"children":685},{},[686,696],{"type":46,"tag":687,"props":688,"children":689},"td",{},[690],{"type":46,"tag":99,"props":691,"children":693},{"className":692},[],[694],{"type":52,"value":695},"start",{"type":46,"tag":687,"props":697,"children":698},{},[699,701,707],{"type":52,"value":700},"Create\u002Freuse a sandbox and start the desktop stream. ",{"type":46,"tag":99,"props":702,"children":704},{"className":703},[],[705],{"type":52,"value":706},"--fresh",{"type":52,"value":708}," forces a new one.",{"type":46,"tag":665,"props":710,"children":711},{},[712,721],{"type":46,"tag":687,"props":713,"children":714},{},[715],{"type":46,"tag":99,"props":716,"children":718},{"className":717},[],[719],{"type":52,"value":720},"sync",{"type":46,"tag":687,"props":722,"children":723},{},[724,726,732,733,739,741,747,749,755,757,763,765,771],{"type":52,"value":725},"Sync ",{"type":46,"tag":99,"props":727,"children":729},{"className":728},[],[730],{"type":52,"value":731},"--project-path",{"type":52,"value":642},{"type":46,"tag":99,"props":734,"children":736},{"className":735},[],[737],{"type":52,"value":738},"C:\\Users\\Public\\remote-desktop\\workspace",{"type":52,"value":740}," (",{"type":46,"tag":99,"props":742,"children":744},{"className":743},[],[745],{"type":52,"value":746},"git_archive",{"type":52,"value":748}," = committed HEAD, ",{"type":46,"tag":99,"props":750,"children":752},{"className":751},[],[753],{"type":52,"value":754},"working_tree",{"type":52,"value":756}," = uncommitted too; ",{"type":46,"tag":99,"props":758,"children":760},{"className":759},[],[761],{"type":52,"value":762},"robocopy \u002FMIR",{"type":52,"value":764}," preserving remote ",{"type":46,"tag":99,"props":766,"children":768},{"className":767},[],[769],{"type":52,"value":770},"node_modules",{"type":52,"value":772},").",{"type":46,"tag":665,"props":774,"children":775},{},[776,785],{"type":46,"tag":687,"props":777,"children":778},{},[779],{"type":46,"tag":99,"props":780,"children":782},{"className":781},[],[783],{"type":52,"value":784},"shell --command PS",{"type":46,"tag":687,"props":786,"children":787},{},[788,790,796],{"type":52,"value":789},"Run PowerShell. ",{"type":46,"tag":99,"props":791,"children":793},{"className":792},[],[794],{"type":52,"value":795},"--timeout \u003Cs>",{"type":52,"value":797}," for long ones.",{"type":46,"tag":665,"props":799,"children":800},{},[801,810],{"type":46,"tag":687,"props":802,"children":803},{},[804],{"type":46,"tag":99,"props":805,"children":807},{"className":806},[],[808],{"type":52,"value":809},"launch --command CMD",{"type":46,"tag":687,"props":811,"children":812},{},[813,815,821,823,829,831,837],{"type":52,"value":814},"Launch a GUI command in the interactive desktop session via ",{"type":46,"tag":99,"props":816,"children":818},{"className":817},[],[819],{"type":52,"value":820},"schtasks \u002FIT",{"type":52,"value":822}," (logged to ",{"type":46,"tag":99,"props":824,"children":826},{"className":825},[],[827],{"type":52,"value":828},"C:\\Users\\Public\\remote-desktop\\launch-\u003Clabel>.log",{"type":52,"value":830},"). ",{"type":46,"tag":99,"props":832,"children":834},{"className":833},[],[835],{"type":52,"value":836},"--wait-window \u003Cregex>",{"type":52,"value":838}," verifies a matching window title appears.",{"type":46,"tag":665,"props":840,"children":841},{},[842,850],{"type":46,"tag":687,"props":843,"children":844},{},[845],{"type":46,"tag":99,"props":846,"children":848},{"className":847},[],[849],{"type":52,"value":15},{"type":46,"tag":687,"props":851,"children":852},{},[853],{"type":52,"value":854},"List visible desktop windows.",{"type":46,"tag":665,"props":856,"children":857},{},[858,867],{"type":46,"tag":687,"props":859,"children":860},{},[861],{"type":46,"tag":99,"props":862,"children":864},{"className":863},[],[865],{"type":52,"value":866},"screenshot",{"type":46,"tag":687,"props":868,"children":869},{},[870],{"type":52,"value":871},"Save a PNG of the full desktop locally.",{"type":46,"tag":665,"props":873,"children":874},{},[875,883],{"type":46,"tag":687,"props":876,"children":877},{},[878],{"type":46,"tag":99,"props":879,"children":881},{"className":880},[],[882],{"type":52,"value":625},{"type":46,"tag":687,"props":884,"children":885},{},[886,888,893,895,901,903,909],{"type":52,"value":887},"Print signed ",{"type":46,"tag":99,"props":889,"children":891},{"className":890},[],[892],{"type":52,"value":617},{"type":52,"value":894}," (noVNC), plus ",{"type":46,"tag":99,"props":896,"children":898},{"className":897},[],[899],{"type":52,"value":900},"appUrl",{"type":52,"value":902}," if ",{"type":46,"tag":99,"props":904,"children":906},{"className":905},[],[907],{"type":52,"value":908},"--port",{"type":52,"value":910}," given.",{"type":46,"tag":665,"props":912,"children":913},{},[914,923],{"type":46,"tag":687,"props":915,"children":916},{},[917],{"type":46,"tag":99,"props":918,"children":920},{"className":919},[],[921],{"type":52,"value":922},"record",{"type":46,"tag":687,"props":924,"children":925},{},[926,928,934,936,942],{"type":52,"value":927},"Record the live desktop via Playwright + local Chrome (",{"type":46,"tag":99,"props":929,"children":931},{"className":930},[],[932],{"type":52,"value":933},"--duration \u003Cs>",{"type":52,"value":935},", ",{"type":46,"tag":99,"props":937,"children":939},{"className":938},[],[940],{"type":52,"value":941},"--mp4",{"type":52,"value":772},{"type":46,"tag":665,"props":944,"children":945},{},[946,955],{"type":46,"tag":687,"props":947,"children":948},{},[949],{"type":46,"tag":99,"props":950,"children":952},{"className":951},[],[953],{"type":52,"value":954},"recording-start\u002Fstop\u002Fdownload",{"type":46,"tag":687,"props":956,"children":957},{},[958,960,966,968,973],{"type":52,"value":959},"Native Daytona recording — ",{"type":46,"tag":961,"props":962,"children":963},"strong",{},[964],{"type":52,"value":965},"unreliable on Windows",{"type":52,"value":967}," (recordings can silently vanish); prefer ",{"type":46,"tag":99,"props":969,"children":971},{"className":970},[],[972],{"type":52,"value":922},{"type":52,"value":242},{"type":46,"tag":665,"props":975,"children":976},{},[977,986],{"type":46,"tag":687,"props":978,"children":979},{},[980],{"type":46,"tag":99,"props":981,"children":983},{"className":982},[],[984],{"type":52,"value":985},"snapshot --snapshot \u003Cname>",{"type":46,"tag":687,"props":987,"children":988},{},[989],{"type":52,"value":990},"Bake the sandbox into a snapshot (Daytona snapshots Windows from STOPPED; stops, snapshots, restarts).",{"type":46,"tag":665,"props":992,"children":993},{},[994,1002],{"type":46,"tag":687,"props":995,"children":996},{},[997],{"type":46,"tag":99,"props":998,"children":1000},{"className":999},[],[1001],{"type":52,"value":104},{"type":46,"tag":687,"props":1003,"children":1004},{},[1005],{"type":52,"value":1006},"Stop the active sandbox.",{"type":46,"tag":55,"props":1008,"children":1010},{"id":1009},"snapshots",[1011],{"type":52,"value":1012},"Snapshots",{"type":46,"tag":62,"props":1014,"children":1015},{},[1016,1018,1024],{"type":52,"value":1017},"Cold Windows boxes are slow to set up. After installing your toolchain\u002Fdeps once, bake a\nprepared snapshot so future ",{"type":46,"tag":99,"props":1019,"children":1021},{"className":1020},[],[1022],{"type":52,"value":1023},"start --snapshot \u003Cname>",{"type":52,"value":1025}," runs skip setup:",{"type":46,"tag":119,"props":1027,"children":1029},{"className":121,"code":1028,"language":123,"meta":124,"style":124},"node scripts\u002Fremote-desktop.mjs snapshot --snapshot my-app-windows-dev-v1\n",[1030],{"type":46,"tag":99,"props":1031,"children":1032},{"__ignoreMap":124},[1033],{"type":46,"tag":130,"props":1034,"children":1035},{"class":132,"line":133},[1036,1040,1044,1049,1054],{"type":46,"tag":130,"props":1037,"children":1038},{"style":137},[1039],{"type":52,"value":140},{"type":46,"tag":130,"props":1041,"children":1042},{"style":143},[1043],{"type":52,"value":146},{"type":46,"tag":130,"props":1045,"children":1046},{"style":143},[1047],{"type":52,"value":1048}," snapshot",{"type":46,"tag":130,"props":1050,"children":1051},{"style":143},[1052],{"type":52,"value":1053}," --snapshot",{"type":46,"tag":130,"props":1055,"children":1056},{"style":143},[1057],{"type":52,"value":1058}," my-app-windows-dev-v1\n",{"type":46,"tag":62,"props":1060,"children":1061},{},[1062,1064,1069,1071,1077,1079,1084,1086,1091],{"type":52,"value":1063},"Revert throwaway edits before baking. Keep install-skip markers or caches ",{"type":46,"tag":961,"props":1065,"children":1066},{},[1067],{"type":52,"value":1068},"outside",{"type":52,"value":1070}," the\nworkspace directory (e.g. directly under ",{"type":46,"tag":99,"props":1072,"children":1074},{"className":1073},[],[1075],{"type":52,"value":1076},"C:\\Users\\Public\\remote-desktop\\",{"type":52,"value":1078},") — ",{"type":46,"tag":99,"props":1080,"children":1082},{"className":1081},[],[1083],{"type":52,"value":720},{"type":52,"value":1085}," mirrors\nwith ",{"type":46,"tag":99,"props":1087,"children":1089},{"className":1088},[],[1090],{"type":52,"value":762},{"type":52,"value":1092},", which deletes anything in the workspace not present locally.",{"type":46,"tag":55,"props":1094,"children":1096},{"id":1095},"gotchas",[1097],{"type":52,"value":1098},"Gotchas",{"type":46,"tag":74,"props":1100,"children":1101},{},[1102,1158,1184,1196,1250,1300],{"type":46,"tag":78,"props":1103,"children":1104},{},[1105,1110,1112,1118,1120,1126,1128,1134,1136,1142,1144,1149,1151,1156],{"type":46,"tag":961,"props":1106,"children":1107},{},[1108],{"type":52,"value":1109},"Daytona shell\u002Fprocess commands run as SYSTEM.",{"type":52,"value":1111}," GUI apps launched from ",{"type":46,"tag":99,"props":1113,"children":1115},{"className":1114},[],[1116],{"type":52,"value":1117},"shell",{"type":52,"value":1119}," can run\ninvisibly. ",{"type":46,"tag":99,"props":1121,"children":1123},{"className":1122},[],[1124],{"type":52,"value":1125},"launch",{"type":52,"value":1127}," exists precisely for this: it wraps the command in a ",{"type":46,"tag":99,"props":1129,"children":1131},{"className":1130},[],[1132],{"type":52,"value":1133},".cmd",{"type":52,"value":1135}," and runs it\nvia ",{"type":46,"tag":99,"props":1137,"children":1139},{"className":1138},[],[1140],{"type":52,"value":1141},"schtasks \u002FIT \u002FRU Administrator",{"type":52,"value":1143},", which puts the window in the interactive session that\nthe noVNC link shows. Always use ",{"type":46,"tag":99,"props":1145,"children":1147},{"className":1146},[],[1148],{"type":52,"value":1125},{"type":52,"value":1150}," (not ",{"type":46,"tag":99,"props":1152,"children":1154},{"className":1153},[],[1155],{"type":52,"value":1117},{"type":52,"value":1157},") to start GUI apps.",{"type":46,"tag":78,"props":1159,"children":1160},{},[1161,1163,1168,1170,1175,1177,1182],{"type":52,"value":1162},"Verify with ",{"type":46,"tag":99,"props":1164,"children":1166},{"className":1165},[],[1167],{"type":52,"value":609},{"type":52,"value":1169}," or ",{"type":46,"tag":99,"props":1171,"children":1173},{"className":1172},[],[1174],{"type":52,"value":15},{"type":52,"value":1176}," + ",{"type":46,"tag":99,"props":1178,"children":1180},{"className":1179},[],[1181],{"type":52,"value":866},{"type":52,"value":1183}," — a running process is not a visible\nwindow.",{"type":46,"tag":78,"props":1185,"children":1186},{},[1187,1189,1194],{"type":52,"value":1188},"For the shareable link, send ",{"type":46,"tag":99,"props":1190,"children":1192},{"className":1191},[],[1193],{"type":52,"value":617},{"type":52,"value":1195}," (the interactive desktop), not a raw app-port URL.",{"type":46,"tag":78,"props":1197,"children":1198},{},[1199,1204,1206,1212,1213,1219,1221,1226,1228,1233,1235,1241,1243,1248],{"type":46,"tag":99,"props":1200,"children":1202},{"className":1201},[],[1203],{"type":52,"value":922},{"type":52,"value":1205}," runs Playwright locally: it resolves ",{"type":46,"tag":99,"props":1207,"children":1209},{"className":1208},[],[1210],{"type":52,"value":1211},"playwright",{"type":52,"value":194},{"type":46,"tag":99,"props":1214,"children":1216},{"className":1215},[],[1217],{"type":52,"value":1218},"playwright-core",{"type":52,"value":1220}," from\n",{"type":46,"tag":99,"props":1222,"children":1224},{"className":1223},[],[1225],{"type":52,"value":731},{"type":52,"value":1227}," first, else auto-installs ",{"type":46,"tag":99,"props":1229,"children":1231},{"className":1230},[],[1232],{"type":52,"value":1218},{"type":52,"value":1234}," into skill state, and drives the\nlocal Chrome binary (",{"type":46,"tag":99,"props":1236,"children":1238},{"className":1237},[],[1239],{"type":52,"value":1240},"--chrome-path",{"type":52,"value":1242},", default macOS Chrome). ",{"type":46,"tag":99,"props":1244,"children":1246},{"className":1245},[],[1247],{"type":52,"value":941},{"type":52,"value":1249}," needs local ffmpeg.",{"type":46,"tag":78,"props":1251,"children":1252},{},[1253,1255,1260,1262,1268,1270,1276,1277,1283,1285,1291,1292,1298],{"type":52,"value":1254},"Maintainer note: the launch ",{"type":46,"tag":99,"props":1256,"children":1258},{"className":1257},[],[1259],{"type":52,"value":1133},{"type":52,"value":1261}," generation uses ",{"type":46,"tag":99,"props":1263,"children":1265},{"className":1264},[],[1266],{"type":52,"value":1267},"String.raw",{"type":52,"value":1269}," — keep it that way. A plain\ntemplate literal turns Windows path backslashes (",{"type":46,"tag":99,"props":1271,"children":1273},{"className":1272},[],[1274],{"type":52,"value":1275},"\\node_modules",{"type":52,"value":935},{"type":46,"tag":99,"props":1278,"children":1280},{"className":1279},[],[1281],{"type":52,"value":1282},"\\bin",{"type":52,"value":1284},") into JS escapes\n(",{"type":46,"tag":99,"props":1286,"children":1288},{"className":1287},[],[1289],{"type":52,"value":1290},"\\n",{"type":52,"value":935},{"type":46,"tag":99,"props":1293,"children":1295},{"className":1294},[],[1296],{"type":52,"value":1297},"\\b",{"type":52,"value":1299},") and silently corrupts the launcher.",{"type":46,"tag":78,"props":1301,"children":1302},{},[1303,1305,1311,1313,1319,1321,1327],{"type":52,"value":1304},"Native ",{"type":46,"tag":99,"props":1306,"children":1308},{"className":1307},[],[1309],{"type":52,"value":1310},"schtasks \u002FDelete",{"type":52,"value":1312}," on a missing task writes to stderr, which PowerShell's\n",{"type":46,"tag":99,"props":1314,"children":1316},{"className":1315},[],[1317],{"type":52,"value":1318},"$ErrorActionPreference='Stop'",{"type":52,"value":1320}," escalates — the script routes it through ",{"type":46,"tag":99,"props":1322,"children":1324},{"className":1323},[],[1325],{"type":52,"value":1326},"cmd.exe \u002Fc",{"type":52,"value":1328}," to\nswallow that; do the same for any other best-effort native command you add.",{"type":46,"tag":1330,"props":1331,"children":1332},"style",{},[1333],{"type":52,"value":1334},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1336,"total":1495},[1337,1355,1370,1382,1394,1408,1420,1431,1443,1457,1468,1480],{"slug":1338,"name":1338,"fn":1339,"description":1340,"org":1341,"tags":1342,"stars":1352,"repoUrl":1353,"updatedAt":1354},"acquiring-skills","discover and install agent skills","Discover and install skills from Hermes, ClawHub, GitHub, and other registries. Load this skill whenever a user asks for a capability you don't already have — image generation, social media, email, calendar, finance, DevOps, search, browser automation, etc.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1343,1346,1349],{"name":1344,"slug":1345,"type":16},"Agents","agents",{"name":1347,"slug":1348,"type":16},"Automation","automation",{"name":1350,"slug":1351,"type":16},"GitHub","github",2831,"https:\u002F\u002Fgithub.com\u002Fletta-ai\u002Fletta-code","2026-07-13T06:22:58.45767",{"slug":1356,"name":1357,"fn":1358,"description":1359,"org":1360,"tags":1361,"stars":1352,"repoUrl":1353,"updatedAt":1369},"context-doctor","Context Doctor","repair system prompt and memory degradation","Identify and repair degradation in system prompt, external memory, and skills preventing you from following instructions or remembering information as well as you should.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1362,1363,1366],{"name":1344,"slug":1345,"type":16},{"name":1364,"slug":1365,"type":16},"AI Context","ai-context",{"name":1367,"slug":1368,"type":16},"Debugging","debugging","2026-07-13T06:22:50.151002",{"slug":1371,"name":1371,"fn":1372,"description":1373,"org":1374,"tags":1375,"stars":1352,"repoUrl":1353,"updatedAt":1381},"converting-mcps-to-skills","connect MCP servers to create skills","Connect to MCP (Model Context Protocol) servers and create skills for repeated use. Load when a user wants to use an MCP server, connect to external tools via MCP, or when they mention MCP, model context protocol, or specific MCP servers.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1376,1377,1378],{"name":1344,"slug":1345,"type":16},{"name":1347,"slug":1348,"type":16},{"name":1379,"slug":1380,"type":16},"MCP","mcp","2026-07-13T06:23:37.646079",{"slug":1383,"name":1383,"fn":1384,"description":1385,"org":1386,"tags":1387,"stars":1352,"repoUrl":1353,"updatedAt":1393},"creating-mods","create and edit Letta Code mods","Creates and edits trusted local Letta Code mods, including tools, slash commands, local-only model providers, lifecycle\u002Fturn events, scoped conversation helpers, panels, and capability-gated behavior. Use when asked to make a mod, add an agent-callable tool, add a slash command, add a local provider\u002Fmodel adapter, transform turns, react to app events, or add lightweight mod UI outside the dedicated \u002Fstatusline flow.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1388,1389,1390],{"name":1344,"slug":1345,"type":16},{"name":1347,"slug":1348,"type":16},{"name":1391,"slug":1392,"type":16},"Coding","coding","2026-07-23T05:42:38.133565",{"slug":1395,"name":1395,"fn":1396,"description":1397,"org":1398,"tags":1399,"stars":1352,"repoUrl":1353,"updatedAt":1407},"creating-skills","create and update agent skills","Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Letta Code's capabilities with specialized knowledge, workflows, or tool integrations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1400,1401,1404],{"name":1344,"slug":1345,"type":16},{"name":1402,"slug":1403,"type":16},"Documentation","documentation",{"name":1405,"slug":1406,"type":16},"Plugin Development","plugin-development","2026-07-13T06:22:56.998659",{"slug":1409,"name":1409,"fn":1410,"description":1411,"org":1412,"tags":1413,"stars":1352,"repoUrl":1353,"updatedAt":1419},"customizing-commands","create and manage Letta slash commands","Creates, edits, and enables Letta Code mod-provided slash commands. Use when the user asks to add a custom \u002Fcommand, slash command, command shortcut, scoped conversation-backed command, or command-driven panel behavior.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1414,1415,1416],{"name":1344,"slug":1345,"type":16},{"name":1347,"slug":1348,"type":16},{"name":1417,"slug":1418,"type":16},"CLI","cli","2026-07-13T06:23:18.266798",{"slug":1421,"name":1421,"fn":1422,"description":1423,"org":1424,"tags":1425,"stars":1352,"repoUrl":1353,"updatedAt":1430},"customizing-statusline","customize Letta Code statusline mods","Creates, edits, and migrates Letta Code statusline mods. Use when handling the \u002Fstatusline command or continuing work started by \u002Fstatusline.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1426,1427],{"name":1417,"slug":1418,"type":16},{"name":1428,"slug":1429,"type":16},"Engineering","engineering","2026-07-13T06:23:27.465985",{"slug":1432,"name":1432,"fn":1433,"description":1434,"org":1435,"tags":1436,"stars":1352,"repoUrl":1353,"updatedAt":1442},"dispatching-coding-agents","dispatch stateless coding agents","Dispatch stateless coding agents (Claude Code or Codex) via Bash. Use when you're stuck, need a second opinion, or need parallel research on a hard problem. They have no memory — you must provide all context.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1437,1438,1439],{"name":1344,"slug":1345,"type":16},{"name":1391,"slug":1392,"type":16},{"name":1440,"slug":1441,"type":16},"Multi-Agent","multi-agent","2026-07-26T05:46:56.388845",{"slug":1444,"name":1444,"fn":1445,"description":1446,"org":1447,"tags":1448,"stars":1352,"repoUrl":1353,"updatedAt":1456},"editing-letta-code-desktop-preferences","edit Letta Code Desktop preferences","Edits Letta Code Desktop (LCD) preferences by safely reading and updating ~\u002F.letta\u002Fdesktop_preferences.json. Use only when the user asks to change current Desktop\u002FLCD settings such as theme, default working directory, remote access preference, or remote environment name via the preferences JSON.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1449,1452,1453],{"name":1450,"slug":1451,"type":16},"Configuration","configuration",{"name":18,"slug":19,"type":16},{"name":1454,"slug":1455,"type":16},"Themes","themes","2026-07-13T06:23:41.407811",{"slug":1458,"name":1458,"fn":1459,"description":1460,"org":1461,"tags":1462,"stars":1352,"repoUrl":1353,"updatedAt":1467},"finding-agents","locate and manage agents on server","Find other agents on the same server. Use when the user asks about other agents, wants to migrate memory from another agent, or needs to find an agent by name or tags.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1463,1464],{"name":1344,"slug":1345,"type":16},{"name":1465,"slug":1466,"type":16},"Management","management","2026-07-16T06:02:17.297841",{"slug":1469,"name":1469,"fn":1470,"description":1471,"org":1472,"tags":1473,"stars":1352,"repoUrl":1353,"updatedAt":1479},"generating-mod-envs","generate Letta mod learning environments","Generates and reviews mod learning env JSON files for Letta Code local mods. Use when asked to teach, learn, or optimize a mod behavior; create, draft, validate, improve, or explain envs for `\u002Fmods learn --env`; or design evaluation scenarios, memory fixtures, requiredResultMarkers, requiredTraceMarkers, negative controls, and candidate diversity hints.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1474,1475,1478],{"name":1344,"slug":1345,"type":16},{"name":1476,"slug":1477,"type":16},"AI Infrastructure","ai-infrastructure",{"name":1450,"slug":1451,"type":16},"2026-07-13T06:23:08.838181",{"slug":1481,"name":1481,"fn":1482,"description":1483,"org":1484,"tags":1485,"stars":1352,"repoUrl":1353,"updatedAt":1494},"image-generation","generate images from text prompts","Generate images from text prompts (and optionally edit\u002Fremix input images). Use when the user asks to create, generate, draw, render, or edit an image, illustration, logo, icon, diagram, or photo.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1486,1489,1492],{"name":1487,"slug":1488,"type":16},"Creative","creative",{"name":1490,"slug":1491,"type":16},"Graphics","graphics",{"name":1493,"slug":1481,"type":16},"Image Generation","2026-07-13T06:23:06.189403",69,{"items":1497,"total":1609},[1498,1512,1527,1546,1559,1580,1590],{"slug":1499,"name":1499,"fn":1500,"description":1501,"org":1502,"tags":1503,"stars":29,"repoUrl":30,"updatedAt":1511},"1password","manage secrets with 1Password CLI","Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading\u002Finjecting\u002Frunning secrets via op.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1504,1507,1508],{"name":1505,"slug":1506,"type":16},"Authentication","authentication",{"name":1417,"slug":1418,"type":16},{"name":1509,"slug":1510,"type":16},"Security","security","2026-07-13T06:24:39.504387",{"slug":1513,"name":1513,"fn":1514,"description":1515,"org":1516,"tags":1517,"stars":29,"repoUrl":30,"updatedAt":1526},"agent-slack","automate Slack messaging and workflows","Slack automation CLI — read\u002Fsend\u002Fsearch messages, browse threads and channels, manage channels, download attachments, look up users, and run workflows.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1518,1519,1520,1523],{"name":1347,"slug":1348,"type":16},{"name":1417,"slug":1418,"type":16},{"name":1521,"slug":1522,"type":16},"Messaging","messaging",{"name":1524,"slug":1525,"type":16},"Slack","slack","2026-07-13T06:23:51.908511",{"slug":1528,"name":1528,"fn":1529,"description":1530,"org":1531,"tags":1532,"stars":29,"repoUrl":30,"updatedAt":1545},"ai-news","fetch and summarize AI news","Fetch and summarize recent AI news from curated RSS feeds (Hugging Face, VentureBeat, The Verge, OpenAI, Anthropic, DeepMind, etc.) and YouTube channels (Yannic Kilcher, Two Minute Papers, AI Explained, etc.). Also fetches full transcripts for specific YouTube videos. Use when the user asks about recent AI news, what's happened in AI lately, summaries of AI research or product announcements, or wants a digest of what's going on in the AI space.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1533,1536,1539,1542],{"name":1534,"slug":1535,"type":16},"Communications","communications",{"name":1537,"slug":1538,"type":16},"LLM","llm",{"name":1540,"slug":1541,"type":16},"Research","research",{"name":1543,"slug":1544,"type":16},"Summarization","summarization","2026-07-13T06:24:20.520223",{"slug":1547,"name":1547,"fn":1548,"description":1549,"org":1550,"tags":1551,"stars":29,"repoUrl":30,"updatedAt":1558},"creating-letta-code-channels","build and debug Letta Code channels","Builds and debugs Letta Code channels, including first-party channel adapters and dynamic user channel plugins under ~\u002F.letta\u002Fchannels. Use when adding Telegram, WhatsApp, Bluesky, Slack, Discord, or custom channel support; testing channel routing, pairing, MessageChannel, runtime dependencies, or channel plugin manifests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1552,1553,1556,1557],{"name":1344,"slug":1345,"type":16},{"name":1554,"slug":1555,"type":16},"API Development","api-development",{"name":1521,"slug":1522,"type":16},{"name":1524,"slug":1525,"type":16},"2026-07-13T06:25:55.843495",{"slug":1560,"name":1560,"fn":1561,"description":1562,"org":1563,"tags":1564,"stars":29,"repoUrl":30,"updatedAt":1579},"datadog","query Datadog observability data","Query Datadog observability data (logs, metrics, monitors, dashboards, hosts) via direct API. Use when investigating production issues, checking monitors, searching logs, or accessing Datadog data.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1565,1567,1570,1573,1576],{"name":1566,"slug":1560,"type":16},"Datadog",{"name":1568,"slug":1569,"type":16},"Logs","logs",{"name":1571,"slug":1572,"type":16},"Metrics","metrics",{"name":1574,"slug":1575,"type":16},"Monitoring","monitoring",{"name":1577,"slug":1578,"type":16},"Observability","observability","2026-07-13T06:24:27.990605",{"slug":1581,"name":1581,"fn":1582,"description":1583,"org":1584,"tags":1585,"stars":29,"repoUrl":30,"updatedAt":1589},"discord","automate Discord server and channel tasks","Discord automation CLI — send\u002Fread\u002Fsearch messages, manage channels and servers, react, create threads, pin messages, and look up users.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1586,1587,1588],{"name":1347,"slug":1348,"type":16},{"name":1417,"slug":1418,"type":16},{"name":1521,"slug":1522,"type":16},"2026-07-13T06:24:26.62387",{"slug":1591,"name":1591,"fn":1592,"description":1593,"org":1594,"tags":1595,"stars":29,"repoUrl":30,"updatedAt":1608},"doc","create and edit Word documents","Use when the task involves reading, creating, or editing `.docx` documents, especially when formatting or layout fidelity matters; prefer `python-docx` plus the bundled `scripts\u002Frender_docx.py` for visual checks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1596,1599,1602,1605],{"name":1597,"slug":1598,"type":16},"Documents","documents",{"name":1600,"slug":1601,"type":16},"DOCX","docx",{"name":1603,"slug":1604,"type":16},"Office","office",{"name":1606,"slug":1607,"type":16},"Word","word","2026-07-13T06:23:44.299568",45]