[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-letta-remote-desktop-testing-linux":3,"mdc--lfd6ah-key":37,"related-org-letta-remote-desktop-testing-linux":1256,"related-repo-letta-remote-desktop-testing-linux":1417},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"remote-desktop-testing-linux","test GUI applications on Linux desktops","Test any GUI app or change on a Daytona Linux (Ubuntu xfce4 + noVNC) 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 Windows, use remote-desktop-testing-windows.",{"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],{"name":14,"slug":15,"type":16},"QA","qa","tag",{"name":18,"slug":19,"type":16},"Linux","linux",{"name":21,"slug":22,"type":16},"Desktop","desktop",{"name":24,"slug":25,"type":16},"Testing","testing",127,"https:\u002F\u002Fgithub.com\u002Fletta-ai\u002Fskills","2026-07-13T06:25:17.485225",null,20,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"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-linux","---\nname: remote-desktop-testing-linux\ndescription: Test any GUI app or change on a Daytona Linux (Ubuntu xfce4 + noVNC) 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 Windows, use remote-desktop-testing-windows.\n---\n\n# Remote Desktop Testing on Linux\n\n## Overview\n\nGeneric Daytona Linux desktop sandbox driver. It creates (or reuses) a sandbox running an\nxfce4 desktop streamed over noVNC, and provides the primitives for visual testing of any\nGUI app: sync code, run shell commands, launch GUI programs on the live desktop, 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 X11) on Linux without a local Linux desktop\n- Produce a screenshot + video + clickable live-desktop link for a teammate\n- Debug Linux-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-linux\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 desktop sandbox. Default: image daytonaio\u002Fsandbox:0.8.0, cpu 2 \u002F mem 4 \u002F disk 5.\nnode scripts\u002Fremote-desktop.mjs start\n\n# 2. (Optional) push a local project to \u002Fhome\u002Fdaytona\u002Fremote-desktop\u002Fworkspace\nnode scripts\u002Fremote-desktop.mjs sync --project-path ~\u002Frepos\u002Fmy-app --sync-mode working_tree\n\n# 3. Set up \u002F build with shell commands (runs bash in the sandbox)\nnode scripts\u002Fremote-desktop.mjs shell \\\n  --command \"cd \u002Fhome\u002Fdaytona\u002Fremote-desktop\u002Fworkspace && npm install\"\n\n# 4. Launch the GUI app on the live desktop and verify its window appeared\nnode scripts\u002Fremote-desktop.mjs launch \\\n  --command \".\u002Fmy-app --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. `--fresh` forces a new one. |\n| `sync` | Sync `--project-path` to `\u002Fhome\u002Fdaytona\u002Fremote-desktop\u002Fworkspace` (`git_archive` = committed HEAD, `working_tree` = uncommitted too; preserves remote `node_modules`). |\n| `shell --command SH` | Run a bash command. `--timeout \u003Cs>` for long ones. |\n| `launch --command CMD` | Launch a GUI command on the xfce4 desktop (detached, `DISPLAY` set, logged to `\u002Fhome\u002Fdaytona\u002Fremote-desktop\u002Flaunch-\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 (installs ffmpeg in-sandbox on first use). |\n| `snapshot --snapshot \u003Cname>` | Bake the sandbox into a snapshot (stops, snapshots, restarts). |\n| `cleanup` | Stop the active sandbox. |\n\n## Sizing and snapshots\n\n- Daytona's **default Linux sandbox is tiny (cpu 1 \u002F mem 1 \u002F disk 3GB)**. This skill creates\n  from the desktop-capable image `daytonaio\u002Fsandbox:0.8.0` with `--cpu 2 --memory 4 --disk 5`\n  by default; raise them for big projects (`--cpu 4 --memory 8 --disk 10`). Disk is capped at\n  **10GB per sandbox**.\n- `resources` cannot be combined with a snapshot — `--snapshot \u003Cname>` creates with whatever\n  size was baked in. Use `snapshot` to bake a prepared box (deps installed, caches warm) so\n  future `start --snapshot \u003Cname>` runs skip setup. Revert throwaway edits before baking.\n\n## Gotchas\n\n- Electron\u002FChromium apps need `--no-sandbox` inside the container, and often\n  `--disable-gpu --disable-dev-shm-usage` too; put those flags in your `launch --command`.\n- `launch` runs the command detached with `DISPLAY` pointed at the live desktop (detected from\n  `\u002Ftmp\u002F.X11-unix`, falls back to `:0`). Check the launch log via `shell` if nothing appears.\n- For the shareable link, send `desktopUrl` (the interactive desktop), not a raw app-port URL —\n  the app URL only serves HTTP and shows nothing of the desktop.\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- The base image has `xfce4-terminal`, `chromium`, and `xeyes` available for quick desktop\n  sanity checks (e.g. `launch --command \"xfce4-terminal\" --wait-window Terminal`).\n",{"data":38,"body":39},{"name":4,"description":6},{"type":40,"children":41},"root",[42,51,58,64,70,104,110,115,171,240,246,589,648,654,983,989,1070,1076,1250],{"type":43,"tag":44,"props":45,"children":47},"element","h1",{"id":46},"remote-desktop-testing-on-linux",[48],{"type":49,"value":50},"text","Remote Desktop Testing on Linux",{"type":43,"tag":52,"props":53,"children":55},"h2",{"id":54},"overview",[56],{"type":49,"value":57},"Overview",{"type":43,"tag":59,"props":60,"children":61},"p",{},[62],{"type":49,"value":63},"Generic Daytona Linux desktop sandbox driver. It creates (or reuses) a sandbox running an\nxfce4 desktop streamed over noVNC, and provides the primitives for visual testing of any\nGUI app: sync code, run shell commands, launch GUI programs on the live desktop, screenshot,\nrecord video, and mint a clickable desktop link a teammate can open to drive the app.",{"type":43,"tag":52,"props":65,"children":67},{"id":66},"when-to-use",[68],{"type":49,"value":69},"When to Use",{"type":43,"tag":71,"props":72,"children":73},"ul",{},[74,80,85,90],{"type":43,"tag":75,"props":76,"children":77},"li",{},[78],{"type":49,"value":79},"Demo or visually verify a GUI app (Electron, browser, native X11) on Linux without a local Linux desktop",{"type":43,"tag":75,"props":81,"children":82},{},[83],{"type":49,"value":84},"Produce a screenshot + video + clickable live-desktop link for a teammate",{"type":43,"tag":75,"props":86,"children":87},{},[88],{"type":49,"value":89},"Debug Linux-specific desktop behavior of a cross-platform app",{"type":43,"tag":75,"props":91,"children":92},{},[93,95,102],{"type":49,"value":94},"Run throwaway desktop sessions that are fully disposable (stop with ",{"type":43,"tag":96,"props":97,"children":99},"code",{"className":98},[],[100],{"type":49,"value":101},"cleanup",{"type":49,"value":103},")",{"type":43,"tag":52,"props":105,"children":107},{"id":106},"usage",[108],{"type":49,"value":109},"Usage",{"type":43,"tag":59,"props":111,"children":112},{},[113],{"type":49,"value":114},"Run the bundled script with Node from the skill directory:",{"type":43,"tag":116,"props":117,"children":122},"pre",{"className":118,"code":119,"language":120,"meta":121,"style":121},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","node scripts\u002Fremote-desktop.mjs \u003Ccommand> [options]\n","bash","",[123],{"type":43,"tag":96,"props":124,"children":125},{"__ignoreMap":121},[126],{"type":43,"tag":127,"props":128,"children":131},"span",{"class":129,"line":130},"line",1,[132,138,144,150,155,161,166],{"type":43,"tag":127,"props":133,"children":135},{"style":134},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[136],{"type":49,"value":137},"node",{"type":43,"tag":127,"props":139,"children":141},{"style":140},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[142],{"type":49,"value":143}," scripts\u002Fremote-desktop.mjs",{"type":43,"tag":127,"props":145,"children":147},{"style":146},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[148],{"type":49,"value":149}," \u003C",{"type":43,"tag":127,"props":151,"children":152},{"style":140},[153],{"type":49,"value":154},"comman",{"type":43,"tag":127,"props":156,"children":158},{"style":157},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[159],{"type":49,"value":160},"d",{"type":43,"tag":127,"props":162,"children":163},{"style":146},[164],{"type":49,"value":165},">",{"type":43,"tag":127,"props":167,"children":168},{"style":157},[169],{"type":49,"value":170}," [options]\n",{"type":43,"tag":59,"props":172,"children":173},{},[174,176,182,184,190,192,198,200,206,208,214,216,222,224,230,232,238],{"type":49,"value":175},"Credentials: ",{"type":43,"tag":96,"props":177,"children":179},{"className":178},[],[180],{"type":49,"value":181},"DAYTONA_API_KEY",{"type":49,"value":183}," (and optionally ",{"type":43,"tag":96,"props":185,"children":187},{"className":186},[],[188],{"type":49,"value":189},"DAYTONA_API_URL",{"type":49,"value":191},"\u002F",{"type":43,"tag":96,"props":193,"children":195},{"className":194},[],[196],{"type":49,"value":197},"DAYTONA_TARGET",{"type":49,"value":199},") from the\nenvironment or a dotenv file — ",{"type":43,"tag":96,"props":201,"children":203},{"className":202},[],[204],{"type":49,"value":205},".\u002F.env",{"type":49,"value":207}," by default, override with ",{"type":43,"tag":96,"props":209,"children":211},{"className":210},[],[212],{"type":49,"value":213},"--env-path \u003Cfile>",{"type":49,"value":215},".\nThe script auto-installs ",{"type":43,"tag":96,"props":217,"children":219},{"className":218},[],[220],{"type":49,"value":221},"@daytona\u002Fsdk",{"type":49,"value":223}," under ",{"type":43,"tag":96,"props":225,"children":227},{"className":226},[],[228],{"type":49,"value":229},"~\u002F.letta\u002Fskill-state\u002Fremote-desktop-testing-linux\u002F",{"type":49,"value":231},"\non first use and remembers the active sandbox id there, so later commands don't need ",{"type":43,"tag":96,"props":233,"children":235},{"className":234},[],[236],{"type":49,"value":237},"--sandbox",{"type":49,"value":239},".",{"type":43,"tag":52,"props":241,"children":243},{"id":242},"typical-flow",[244],{"type":49,"value":245},"Typical flow",{"type":43,"tag":116,"props":247,"children":249},{"className":118,"code":248,"language":120,"meta":121,"style":121},"# 1. Start (or reuse) a desktop sandbox. Default: image daytonaio\u002Fsandbox:0.8.0, cpu 2 \u002F mem 4 \u002F disk 5.\nnode scripts\u002Fremote-desktop.mjs start\n\n# 2. (Optional) push a local project to \u002Fhome\u002Fdaytona\u002Fremote-desktop\u002Fworkspace\nnode scripts\u002Fremote-desktop.mjs sync --project-path ~\u002Frepos\u002Fmy-app --sync-mode working_tree\n\n# 3. Set up \u002F build with shell commands (runs bash in the sandbox)\nnode scripts\u002Fremote-desktop.mjs shell \\\n  --command \"cd \u002Fhome\u002Fdaytona\u002Fremote-desktop\u002Fworkspace && npm install\"\n\n# 4. Launch the GUI app on the live desktop and verify its window appeared\nnode scripts\u002Fremote-desktop.mjs launch \\\n  --command \".\u002Fmy-app --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",[250],{"type":43,"tag":96,"props":251,"children":252},{"__ignoreMap":121},[253,262,279,289,298,335,343,352,374,398,406,415,436,486,494,503,530,572],{"type":43,"tag":127,"props":254,"children":255},{"class":129,"line":130},[256],{"type":43,"tag":127,"props":257,"children":259},{"style":258},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[260],{"type":49,"value":261},"# 1. Start (or reuse) a desktop sandbox. Default: image daytonaio\u002Fsandbox:0.8.0, cpu 2 \u002F mem 4 \u002F disk 5.\n",{"type":43,"tag":127,"props":263,"children":265},{"class":129,"line":264},2,[266,270,274],{"type":43,"tag":127,"props":267,"children":268},{"style":134},[269],{"type":49,"value":137},{"type":43,"tag":127,"props":271,"children":272},{"style":140},[273],{"type":49,"value":143},{"type":43,"tag":127,"props":275,"children":276},{"style":140},[277],{"type":49,"value":278}," start\n",{"type":43,"tag":127,"props":280,"children":282},{"class":129,"line":281},3,[283],{"type":43,"tag":127,"props":284,"children":286},{"emptyLinePlaceholder":285},true,[287],{"type":49,"value":288},"\n",{"type":43,"tag":127,"props":290,"children":292},{"class":129,"line":291},4,[293],{"type":43,"tag":127,"props":294,"children":295},{"style":258},[296],{"type":49,"value":297},"# 2. (Optional) push a local project to \u002Fhome\u002Fdaytona\u002Fremote-desktop\u002Fworkspace\n",{"type":43,"tag":127,"props":299,"children":301},{"class":129,"line":300},5,[302,306,310,315,320,325,330],{"type":43,"tag":127,"props":303,"children":304},{"style":134},[305],{"type":49,"value":137},{"type":43,"tag":127,"props":307,"children":308},{"style":140},[309],{"type":49,"value":143},{"type":43,"tag":127,"props":311,"children":312},{"style":140},[313],{"type":49,"value":314}," sync",{"type":43,"tag":127,"props":316,"children":317},{"style":140},[318],{"type":49,"value":319}," --project-path",{"type":43,"tag":127,"props":321,"children":322},{"style":140},[323],{"type":49,"value":324}," ~\u002Frepos\u002Fmy-app",{"type":43,"tag":127,"props":326,"children":327},{"style":140},[328],{"type":49,"value":329}," --sync-mode",{"type":43,"tag":127,"props":331,"children":332},{"style":140},[333],{"type":49,"value":334}," working_tree\n",{"type":43,"tag":127,"props":336,"children":338},{"class":129,"line":337},6,[339],{"type":43,"tag":127,"props":340,"children":341},{"emptyLinePlaceholder":285},[342],{"type":49,"value":288},{"type":43,"tag":127,"props":344,"children":346},{"class":129,"line":345},7,[347],{"type":43,"tag":127,"props":348,"children":349},{"style":258},[350],{"type":49,"value":351},"# 3. Set up \u002F build with shell commands (runs bash in the sandbox)\n",{"type":43,"tag":127,"props":353,"children":355},{"class":129,"line":354},8,[356,360,364,369],{"type":43,"tag":127,"props":357,"children":358},{"style":134},[359],{"type":49,"value":137},{"type":43,"tag":127,"props":361,"children":362},{"style":140},[363],{"type":49,"value":143},{"type":43,"tag":127,"props":365,"children":366},{"style":140},[367],{"type":49,"value":368}," shell",{"type":43,"tag":127,"props":370,"children":371},{"style":157},[372],{"type":49,"value":373}," \\\n",{"type":43,"tag":127,"props":375,"children":377},{"class":129,"line":376},9,[378,383,388,393],{"type":43,"tag":127,"props":379,"children":380},{"style":140},[381],{"type":49,"value":382},"  --command",{"type":43,"tag":127,"props":384,"children":385},{"style":146},[386],{"type":49,"value":387}," \"",{"type":43,"tag":127,"props":389,"children":390},{"style":140},[391],{"type":49,"value":392},"cd \u002Fhome\u002Fdaytona\u002Fremote-desktop\u002Fworkspace && npm install",{"type":43,"tag":127,"props":394,"children":395},{"style":146},[396],{"type":49,"value":397},"\"\n",{"type":43,"tag":127,"props":399,"children":401},{"class":129,"line":400},10,[402],{"type":43,"tag":127,"props":403,"children":404},{"emptyLinePlaceholder":285},[405],{"type":49,"value":288},{"type":43,"tag":127,"props":407,"children":409},{"class":129,"line":408},11,[410],{"type":43,"tag":127,"props":411,"children":412},{"style":258},[413],{"type":49,"value":414},"# 4. Launch the GUI app on the live desktop and verify its window appeared\n",{"type":43,"tag":127,"props":416,"children":418},{"class":129,"line":417},12,[419,423,427,432],{"type":43,"tag":127,"props":420,"children":421},{"style":134},[422],{"type":49,"value":137},{"type":43,"tag":127,"props":424,"children":425},{"style":140},[426],{"type":49,"value":143},{"type":43,"tag":127,"props":428,"children":429},{"style":140},[430],{"type":49,"value":431}," launch",{"type":43,"tag":127,"props":433,"children":434},{"style":157},[435],{"type":49,"value":373},{"type":43,"tag":127,"props":437,"children":439},{"class":129,"line":438},13,[440,444,448,453,458,463,468,473,477,482],{"type":43,"tag":127,"props":441,"children":442},{"style":140},[443],{"type":49,"value":382},{"type":43,"tag":127,"props":445,"children":446},{"style":146},[447],{"type":49,"value":387},{"type":43,"tag":127,"props":449,"children":450},{"style":140},[451],{"type":49,"value":452},".\u002Fmy-app --some-flag",{"type":43,"tag":127,"props":454,"children":455},{"style":146},[456],{"type":49,"value":457},"\"",{"type":43,"tag":127,"props":459,"children":460},{"style":140},[461],{"type":49,"value":462}," --label",{"type":43,"tag":127,"props":464,"children":465},{"style":140},[466],{"type":49,"value":467}," my-app",{"type":43,"tag":127,"props":469,"children":470},{"style":140},[471],{"type":49,"value":472}," --wait-window",{"type":43,"tag":127,"props":474,"children":475},{"style":146},[476],{"type":49,"value":387},{"type":43,"tag":127,"props":478,"children":479},{"style":140},[480],{"type":49,"value":481},"My App",{"type":43,"tag":127,"props":483,"children":484},{"style":146},[485],{"type":49,"value":397},{"type":43,"tag":127,"props":487,"children":489},{"class":129,"line":488},14,[490],{"type":43,"tag":127,"props":491,"children":492},{"emptyLinePlaceholder":285},[493],{"type":49,"value":288},{"type":43,"tag":127,"props":495,"children":497},{"class":129,"line":496},15,[498],{"type":43,"tag":127,"props":499,"children":500},{"style":258},[501],{"type":49,"value":502},"# 5. Deliverables: screenshot, video, and a clickable live-desktop link\n",{"type":43,"tag":127,"props":504,"children":506},{"class":129,"line":505},16,[507,511,515,520,525],{"type":43,"tag":127,"props":508,"children":509},{"style":134},[510],{"type":49,"value":137},{"type":43,"tag":127,"props":512,"children":513},{"style":140},[514],{"type":49,"value":143},{"type":43,"tag":127,"props":516,"children":517},{"style":140},[518],{"type":49,"value":519}," screenshot",{"type":43,"tag":127,"props":521,"children":522},{"style":140},[523],{"type":49,"value":524}," --output",{"type":43,"tag":127,"props":526,"children":527},{"style":140},[528],{"type":49,"value":529}," \u002Ftmp\u002Fdemo.png\n",{"type":43,"tag":127,"props":531,"children":533},{"class":129,"line":532},17,[534,538,542,547,551,556,561,566],{"type":43,"tag":127,"props":535,"children":536},{"style":134},[537],{"type":49,"value":137},{"type":43,"tag":127,"props":539,"children":540},{"style":140},[541],{"type":49,"value":143},{"type":43,"tag":127,"props":543,"children":544},{"style":140},[545],{"type":49,"value":546}," record",{"type":43,"tag":127,"props":548,"children":549},{"style":140},[550],{"type":49,"value":524},{"type":43,"tag":127,"props":552,"children":553},{"style":140},[554],{"type":49,"value":555}," \u002Ftmp\u002Fdemo.mp4",{"type":43,"tag":127,"props":557,"children":558},{"style":140},[559],{"type":49,"value":560}," --mp4",{"type":43,"tag":127,"props":562,"children":563},{"style":140},[564],{"type":49,"value":565}," --duration",{"type":43,"tag":127,"props":567,"children":569},{"style":568},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[570],{"type":49,"value":571}," 12\n",{"type":43,"tag":127,"props":573,"children":575},{"class":129,"line":574},18,[576,580,584],{"type":43,"tag":127,"props":577,"children":578},{"style":134},[579],{"type":49,"value":137},{"type":43,"tag":127,"props":581,"children":582},{"style":140},[583],{"type":49,"value":143},{"type":43,"tag":127,"props":585,"children":586},{"style":140},[587],{"type":49,"value":588}," preview\n",{"type":43,"tag":59,"props":590,"children":591},{},[592,594,600,602,608,610,616,618,624,626,631,633,639,641,646],{"type":49,"value":593},"Always confirm the result visually (open the screenshot, or check ",{"type":43,"tag":96,"props":595,"children":597},{"className":596},[],[598],{"type":49,"value":599},"windows",{"type":49,"value":601}," \u002F ",{"type":43,"tag":96,"props":603,"children":605},{"className":604},[],[606],{"type":49,"value":607},"--wait-window",{"type":49,"value":609},")\nbefore reporting success — never report success from process existence alone. When sharing with\na teammate, send the ",{"type":43,"tag":96,"props":611,"children":613},{"className":612},[],[614],{"type":49,"value":615},"desktopUrl",{"type":49,"value":617}," from ",{"type":43,"tag":96,"props":619,"children":621},{"className":620},[],[622],{"type":49,"value":623},"preview",{"type":49,"value":625}," (signed noVNC link, expires ~6h; re-run\n",{"type":43,"tag":96,"props":627,"children":629},{"className":628},[],[630],{"type":49,"value":623},{"type":49,"value":632}," to refresh). Pass ",{"type":43,"tag":96,"props":634,"children":636},{"className":635},[],[637],{"type":49,"value":638},"--port \u003Cn>",{"type":49,"value":640}," to ",{"type":43,"tag":96,"props":642,"children":644},{"className":643},[],[645],{"type":49,"value":623},{"type":49,"value":647}," to also mint a signed URL for an app's\nHTTP port.",{"type":43,"tag":52,"props":649,"children":651},{"id":650},"commands",[652],{"type":49,"value":653},"Commands",{"type":43,"tag":655,"props":656,"children":657},"table",{},[658,677],{"type":43,"tag":659,"props":660,"children":661},"thead",{},[662],{"type":43,"tag":663,"props":664,"children":665},"tr",{},[666,672],{"type":43,"tag":667,"props":668,"children":669},"th",{},[670],{"type":49,"value":671},"Command",{"type":43,"tag":667,"props":673,"children":674},{},[675],{"type":49,"value":676},"What it does",{"type":43,"tag":678,"props":679,"children":680},"tbody",{},[681,707,763,788,829,845,862,901,933,950,967],{"type":43,"tag":663,"props":682,"children":683},{},[684,694],{"type":43,"tag":685,"props":686,"children":687},"td",{},[688],{"type":43,"tag":96,"props":689,"children":691},{"className":690},[],[692],{"type":49,"value":693},"start",{"type":43,"tag":685,"props":695,"children":696},{},[697,699,705],{"type":49,"value":698},"Create\u002Freuse a sandbox and start the desktop. ",{"type":43,"tag":96,"props":700,"children":702},{"className":701},[],[703],{"type":49,"value":704},"--fresh",{"type":49,"value":706}," forces a new one.",{"type":43,"tag":663,"props":708,"children":709},{},[710,719],{"type":43,"tag":685,"props":711,"children":712},{},[713],{"type":43,"tag":96,"props":714,"children":716},{"className":715},[],[717],{"type":49,"value":718},"sync",{"type":43,"tag":685,"props":720,"children":721},{},[722,724,730,731,737,739,745,747,753,755,761],{"type":49,"value":723},"Sync ",{"type":43,"tag":96,"props":725,"children":727},{"className":726},[],[728],{"type":49,"value":729},"--project-path",{"type":49,"value":640},{"type":43,"tag":96,"props":732,"children":734},{"className":733},[],[735],{"type":49,"value":736},"\u002Fhome\u002Fdaytona\u002Fremote-desktop\u002Fworkspace",{"type":49,"value":738}," (",{"type":43,"tag":96,"props":740,"children":742},{"className":741},[],[743],{"type":49,"value":744},"git_archive",{"type":49,"value":746}," = committed HEAD, ",{"type":43,"tag":96,"props":748,"children":750},{"className":749},[],[751],{"type":49,"value":752},"working_tree",{"type":49,"value":754}," = uncommitted too; preserves remote ",{"type":43,"tag":96,"props":756,"children":758},{"className":757},[],[759],{"type":49,"value":760},"node_modules",{"type":49,"value":762},").",{"type":43,"tag":663,"props":764,"children":765},{},[766,775],{"type":43,"tag":685,"props":767,"children":768},{},[769],{"type":43,"tag":96,"props":770,"children":772},{"className":771},[],[773],{"type":49,"value":774},"shell --command SH",{"type":43,"tag":685,"props":776,"children":777},{},[778,780,786],{"type":49,"value":779},"Run a bash command. ",{"type":43,"tag":96,"props":781,"children":783},{"className":782},[],[784],{"type":49,"value":785},"--timeout \u003Cs>",{"type":49,"value":787}," for long ones.",{"type":43,"tag":663,"props":789,"children":790},{},[791,800],{"type":43,"tag":685,"props":792,"children":793},{},[794],{"type":43,"tag":96,"props":795,"children":797},{"className":796},[],[798],{"type":49,"value":799},"launch --command CMD",{"type":43,"tag":685,"props":801,"children":802},{},[803,805,811,813,819,821,827],{"type":49,"value":804},"Launch a GUI command on the xfce4 desktop (detached, ",{"type":43,"tag":96,"props":806,"children":808},{"className":807},[],[809],{"type":49,"value":810},"DISPLAY",{"type":49,"value":812}," set, logged to ",{"type":43,"tag":96,"props":814,"children":816},{"className":815},[],[817],{"type":49,"value":818},"\u002Fhome\u002Fdaytona\u002Fremote-desktop\u002Flaunch-\u003Clabel>.log",{"type":49,"value":820},"). ",{"type":43,"tag":96,"props":822,"children":824},{"className":823},[],[825],{"type":49,"value":826},"--wait-window \u003Cregex>",{"type":49,"value":828}," verifies a matching window title appears.",{"type":43,"tag":663,"props":830,"children":831},{},[832,840],{"type":43,"tag":685,"props":833,"children":834},{},[835],{"type":43,"tag":96,"props":836,"children":838},{"className":837},[],[839],{"type":49,"value":599},{"type":43,"tag":685,"props":841,"children":842},{},[843],{"type":49,"value":844},"List visible desktop windows.",{"type":43,"tag":663,"props":846,"children":847},{},[848,857],{"type":43,"tag":685,"props":849,"children":850},{},[851],{"type":43,"tag":96,"props":852,"children":854},{"className":853},[],[855],{"type":49,"value":856},"screenshot",{"type":43,"tag":685,"props":858,"children":859},{},[860],{"type":49,"value":861},"Save a PNG of the full desktop locally.",{"type":43,"tag":663,"props":863,"children":864},{},[865,873],{"type":43,"tag":685,"props":866,"children":867},{},[868],{"type":43,"tag":96,"props":869,"children":871},{"className":870},[],[872],{"type":49,"value":623},{"type":43,"tag":685,"props":874,"children":875},{},[876,878,883,885,891,893,899],{"type":49,"value":877},"Print signed ",{"type":43,"tag":96,"props":879,"children":881},{"className":880},[],[882],{"type":49,"value":615},{"type":49,"value":884}," (noVNC), plus ",{"type":43,"tag":96,"props":886,"children":888},{"className":887},[],[889],{"type":49,"value":890},"appUrl",{"type":49,"value":892}," if ",{"type":43,"tag":96,"props":894,"children":896},{"className":895},[],[897],{"type":49,"value":898},"--port",{"type":49,"value":900}," given.",{"type":43,"tag":663,"props":902,"children":903},{},[904,913],{"type":43,"tag":685,"props":905,"children":906},{},[907],{"type":43,"tag":96,"props":908,"children":910},{"className":909},[],[911],{"type":49,"value":912},"record",{"type":43,"tag":685,"props":914,"children":915},{},[916,918,924,926,932],{"type":49,"value":917},"Record the live desktop via Playwright + local Chrome (",{"type":43,"tag":96,"props":919,"children":921},{"className":920},[],[922],{"type":49,"value":923},"--duration \u003Cs>",{"type":49,"value":925},", ",{"type":43,"tag":96,"props":927,"children":929},{"className":928},[],[930],{"type":49,"value":931},"--mp4",{"type":49,"value":762},{"type":43,"tag":663,"props":934,"children":935},{},[936,945],{"type":43,"tag":685,"props":937,"children":938},{},[939],{"type":43,"tag":96,"props":940,"children":942},{"className":941},[],[943],{"type":49,"value":944},"recording-start\u002Fstop\u002Fdownload",{"type":43,"tag":685,"props":946,"children":947},{},[948],{"type":49,"value":949},"Native Daytona recording (installs ffmpeg in-sandbox on first use).",{"type":43,"tag":663,"props":951,"children":952},{},[953,962],{"type":43,"tag":685,"props":954,"children":955},{},[956],{"type":43,"tag":96,"props":957,"children":959},{"className":958},[],[960],{"type":49,"value":961},"snapshot --snapshot \u003Cname>",{"type":43,"tag":685,"props":963,"children":964},{},[965],{"type":49,"value":966},"Bake the sandbox into a snapshot (stops, snapshots, restarts).",{"type":43,"tag":663,"props":968,"children":969},{},[970,978],{"type":43,"tag":685,"props":971,"children":972},{},[973],{"type":43,"tag":96,"props":974,"children":976},{"className":975},[],[977],{"type":49,"value":101},{"type":43,"tag":685,"props":979,"children":980},{},[981],{"type":49,"value":982},"Stop the active sandbox.",{"type":43,"tag":52,"props":984,"children":986},{"id":985},"sizing-and-snapshots",[987],{"type":49,"value":988},"Sizing and snapshots",{"type":43,"tag":71,"props":990,"children":991},{},[992,1035],{"type":43,"tag":75,"props":993,"children":994},{},[995,997,1003,1005,1011,1013,1019,1021,1027,1029,1034],{"type":49,"value":996},"Daytona's ",{"type":43,"tag":998,"props":999,"children":1000},"strong",{},[1001],{"type":49,"value":1002},"default Linux sandbox is tiny (cpu 1 \u002F mem 1 \u002F disk 3GB)",{"type":49,"value":1004},". This skill creates\nfrom the desktop-capable image ",{"type":43,"tag":96,"props":1006,"children":1008},{"className":1007},[],[1009],{"type":49,"value":1010},"daytonaio\u002Fsandbox:0.8.0",{"type":49,"value":1012}," with ",{"type":43,"tag":96,"props":1014,"children":1016},{"className":1015},[],[1017],{"type":49,"value":1018},"--cpu 2 --memory 4 --disk 5",{"type":49,"value":1020},"\nby default; raise them for big projects (",{"type":43,"tag":96,"props":1022,"children":1024},{"className":1023},[],[1025],{"type":49,"value":1026},"--cpu 4 --memory 8 --disk 10",{"type":49,"value":1028},"). Disk is capped at\n",{"type":43,"tag":998,"props":1030,"children":1031},{},[1032],{"type":49,"value":1033},"10GB per sandbox",{"type":49,"value":239},{"type":43,"tag":75,"props":1036,"children":1037},{},[1038,1044,1046,1052,1054,1060,1062,1068],{"type":43,"tag":96,"props":1039,"children":1041},{"className":1040},[],[1042],{"type":49,"value":1043},"resources",{"type":49,"value":1045}," cannot be combined with a snapshot — ",{"type":43,"tag":96,"props":1047,"children":1049},{"className":1048},[],[1050],{"type":49,"value":1051},"--snapshot \u003Cname>",{"type":49,"value":1053}," creates with whatever\nsize was baked in. Use ",{"type":43,"tag":96,"props":1055,"children":1057},{"className":1056},[],[1058],{"type":49,"value":1059},"snapshot",{"type":49,"value":1061}," to bake a prepared box (deps installed, caches warm) so\nfuture ",{"type":43,"tag":96,"props":1063,"children":1065},{"className":1064},[],[1066],{"type":49,"value":1067},"start --snapshot \u003Cname>",{"type":49,"value":1069}," runs skip setup. Revert throwaway edits before baking.",{"type":43,"tag":52,"props":1071,"children":1073},{"id":1072},"gotchas",[1074],{"type":49,"value":1075},"Gotchas",{"type":43,"tag":71,"props":1077,"children":1078},{},[1079,1107,1149,1161,1215],{"type":43,"tag":75,"props":1080,"children":1081},{},[1082,1084,1090,1092,1098,1100,1106],{"type":49,"value":1083},"Electron\u002FChromium apps need ",{"type":43,"tag":96,"props":1085,"children":1087},{"className":1086},[],[1088],{"type":49,"value":1089},"--no-sandbox",{"type":49,"value":1091}," inside the container, and often\n",{"type":43,"tag":96,"props":1093,"children":1095},{"className":1094},[],[1096],{"type":49,"value":1097},"--disable-gpu --disable-dev-shm-usage",{"type":49,"value":1099}," too; put those flags in your ",{"type":43,"tag":96,"props":1101,"children":1103},{"className":1102},[],[1104],{"type":49,"value":1105},"launch --command",{"type":49,"value":239},{"type":43,"tag":75,"props":1108,"children":1109},{},[1110,1116,1118,1123,1125,1131,1133,1139,1141,1147],{"type":43,"tag":96,"props":1111,"children":1113},{"className":1112},[],[1114],{"type":49,"value":1115},"launch",{"type":49,"value":1117}," runs the command detached with ",{"type":43,"tag":96,"props":1119,"children":1121},{"className":1120},[],[1122],{"type":49,"value":810},{"type":49,"value":1124}," pointed at the live desktop (detected from\n",{"type":43,"tag":96,"props":1126,"children":1128},{"className":1127},[],[1129],{"type":49,"value":1130},"\u002Ftmp\u002F.X11-unix",{"type":49,"value":1132},", falls back to ",{"type":43,"tag":96,"props":1134,"children":1136},{"className":1135},[],[1137],{"type":49,"value":1138},":0",{"type":49,"value":1140},"). Check the launch log via ",{"type":43,"tag":96,"props":1142,"children":1144},{"className":1143},[],[1145],{"type":49,"value":1146},"shell",{"type":49,"value":1148}," if nothing appears.",{"type":43,"tag":75,"props":1150,"children":1151},{},[1152,1154,1159],{"type":49,"value":1153},"For the shareable link, send ",{"type":43,"tag":96,"props":1155,"children":1157},{"className":1156},[],[1158],{"type":49,"value":615},{"type":49,"value":1160}," (the interactive desktop), not a raw app-port URL —\nthe app URL only serves HTTP and shows nothing of the desktop.",{"type":43,"tag":75,"props":1162,"children":1163},{},[1164,1169,1171,1177,1178,1184,1186,1191,1193,1198,1200,1206,1208,1213],{"type":43,"tag":96,"props":1165,"children":1167},{"className":1166},[],[1168],{"type":49,"value":912},{"type":49,"value":1170}," runs Playwright locally: it resolves ",{"type":43,"tag":96,"props":1172,"children":1174},{"className":1173},[],[1175],{"type":49,"value":1176},"playwright",{"type":49,"value":191},{"type":43,"tag":96,"props":1179,"children":1181},{"className":1180},[],[1182],{"type":49,"value":1183},"playwright-core",{"type":49,"value":1185}," from\n",{"type":43,"tag":96,"props":1187,"children":1189},{"className":1188},[],[1190],{"type":49,"value":729},{"type":49,"value":1192}," first, else auto-installs ",{"type":43,"tag":96,"props":1194,"children":1196},{"className":1195},[],[1197],{"type":49,"value":1183},{"type":49,"value":1199}," into skill state, and drives the\nlocal Chrome binary (",{"type":43,"tag":96,"props":1201,"children":1203},{"className":1202},[],[1204],{"type":49,"value":1205},"--chrome-path",{"type":49,"value":1207},", default macOS Chrome). ",{"type":43,"tag":96,"props":1209,"children":1211},{"className":1210},[],[1212],{"type":49,"value":931},{"type":49,"value":1214}," needs local ffmpeg.",{"type":43,"tag":75,"props":1216,"children":1217},{},[1218,1220,1226,1227,1233,1235,1241,1243,1249],{"type":49,"value":1219},"The base image has ",{"type":43,"tag":96,"props":1221,"children":1223},{"className":1222},[],[1224],{"type":49,"value":1225},"xfce4-terminal",{"type":49,"value":925},{"type":43,"tag":96,"props":1228,"children":1230},{"className":1229},[],[1231],{"type":49,"value":1232},"chromium",{"type":49,"value":1234},", and ",{"type":43,"tag":96,"props":1236,"children":1238},{"className":1237},[],[1239],{"type":49,"value":1240},"xeyes",{"type":49,"value":1242}," available for quick desktop\nsanity checks (e.g. ",{"type":43,"tag":96,"props":1244,"children":1246},{"className":1245},[],[1247],{"type":49,"value":1248},"launch --command \"xfce4-terminal\" --wait-window Terminal",{"type":49,"value":762},{"type":43,"tag":1251,"props":1252,"children":1253},"style",{},[1254],{"type":49,"value":1255},"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":1257,"total":1416},[1258,1276,1291,1303,1315,1329,1341,1352,1364,1378,1389,1401],{"slug":1259,"name":1259,"fn":1260,"description":1261,"org":1262,"tags":1263,"stars":1273,"repoUrl":1274,"updatedAt":1275},"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},[1264,1267,1270],{"name":1265,"slug":1266,"type":16},"Agents","agents",{"name":1268,"slug":1269,"type":16},"Automation","automation",{"name":1271,"slug":1272,"type":16},"GitHub","github",2831,"https:\u002F\u002Fgithub.com\u002Fletta-ai\u002Fletta-code","2026-07-13T06:22:58.45767",{"slug":1277,"name":1278,"fn":1279,"description":1280,"org":1281,"tags":1282,"stars":1273,"repoUrl":1274,"updatedAt":1290},"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},[1283,1284,1287],{"name":1265,"slug":1266,"type":16},{"name":1285,"slug":1286,"type":16},"AI Context","ai-context",{"name":1288,"slug":1289,"type":16},"Debugging","debugging","2026-07-13T06:22:50.151002",{"slug":1292,"name":1292,"fn":1293,"description":1294,"org":1295,"tags":1296,"stars":1273,"repoUrl":1274,"updatedAt":1302},"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},[1297,1298,1299],{"name":1265,"slug":1266,"type":16},{"name":1268,"slug":1269,"type":16},{"name":1300,"slug":1301,"type":16},"MCP","mcp","2026-07-13T06:23:37.646079",{"slug":1304,"name":1304,"fn":1305,"description":1306,"org":1307,"tags":1308,"stars":1273,"repoUrl":1274,"updatedAt":1314},"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},[1309,1310,1311],{"name":1265,"slug":1266,"type":16},{"name":1268,"slug":1269,"type":16},{"name":1312,"slug":1313,"type":16},"Coding","coding","2026-07-23T05:42:38.133565",{"slug":1316,"name":1316,"fn":1317,"description":1318,"org":1319,"tags":1320,"stars":1273,"repoUrl":1274,"updatedAt":1328},"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},[1321,1322,1325],{"name":1265,"slug":1266,"type":16},{"name":1323,"slug":1324,"type":16},"Documentation","documentation",{"name":1326,"slug":1327,"type":16},"Plugin Development","plugin-development","2026-07-13T06:22:56.998659",{"slug":1330,"name":1330,"fn":1331,"description":1332,"org":1333,"tags":1334,"stars":1273,"repoUrl":1274,"updatedAt":1340},"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},[1335,1336,1337],{"name":1265,"slug":1266,"type":16},{"name":1268,"slug":1269,"type":16},{"name":1338,"slug":1339,"type":16},"CLI","cli","2026-07-13T06:23:18.266798",{"slug":1342,"name":1342,"fn":1343,"description":1344,"org":1345,"tags":1346,"stars":1273,"repoUrl":1274,"updatedAt":1351},"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},[1347,1348],{"name":1338,"slug":1339,"type":16},{"name":1349,"slug":1350,"type":16},"Engineering","engineering","2026-07-13T06:23:27.465985",{"slug":1353,"name":1353,"fn":1354,"description":1355,"org":1356,"tags":1357,"stars":1273,"repoUrl":1274,"updatedAt":1363},"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},[1358,1359,1360],{"name":1265,"slug":1266,"type":16},{"name":1312,"slug":1313,"type":16},{"name":1361,"slug":1362,"type":16},"Multi-Agent","multi-agent","2026-07-26T05:46:56.388845",{"slug":1365,"name":1365,"fn":1366,"description":1367,"org":1368,"tags":1369,"stars":1273,"repoUrl":1274,"updatedAt":1377},"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},[1370,1373,1374],{"name":1371,"slug":1372,"type":16},"Configuration","configuration",{"name":21,"slug":22,"type":16},{"name":1375,"slug":1376,"type":16},"Themes","themes","2026-07-13T06:23:41.407811",{"slug":1379,"name":1379,"fn":1380,"description":1381,"org":1382,"tags":1383,"stars":1273,"repoUrl":1274,"updatedAt":1388},"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},[1384,1385],{"name":1265,"slug":1266,"type":16},{"name":1386,"slug":1387,"type":16},"Management","management","2026-07-16T06:02:17.297841",{"slug":1390,"name":1390,"fn":1391,"description":1392,"org":1393,"tags":1394,"stars":1273,"repoUrl":1274,"updatedAt":1400},"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},[1395,1396,1399],{"name":1265,"slug":1266,"type":16},{"name":1397,"slug":1398,"type":16},"AI Infrastructure","ai-infrastructure",{"name":1371,"slug":1372,"type":16},"2026-07-13T06:23:08.838181",{"slug":1402,"name":1402,"fn":1403,"description":1404,"org":1405,"tags":1406,"stars":1273,"repoUrl":1274,"updatedAt":1415},"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},[1407,1410,1413],{"name":1408,"slug":1409,"type":16},"Creative","creative",{"name":1411,"slug":1412,"type":16},"Graphics","graphics",{"name":1414,"slug":1402,"type":16},"Image Generation","2026-07-13T06:23:06.189403",69,{"items":1418,"total":1530},[1419,1433,1448,1467,1480,1501,1511],{"slug":1420,"name":1420,"fn":1421,"description":1422,"org":1423,"tags":1424,"stars":26,"repoUrl":27,"updatedAt":1432},"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},[1425,1428,1429],{"name":1426,"slug":1427,"type":16},"Authentication","authentication",{"name":1338,"slug":1339,"type":16},{"name":1430,"slug":1431,"type":16},"Security","security","2026-07-13T06:24:39.504387",{"slug":1434,"name":1434,"fn":1435,"description":1436,"org":1437,"tags":1438,"stars":26,"repoUrl":27,"updatedAt":1447},"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},[1439,1440,1441,1444],{"name":1268,"slug":1269,"type":16},{"name":1338,"slug":1339,"type":16},{"name":1442,"slug":1443,"type":16},"Messaging","messaging",{"name":1445,"slug":1446,"type":16},"Slack","slack","2026-07-13T06:23:51.908511",{"slug":1449,"name":1449,"fn":1450,"description":1451,"org":1452,"tags":1453,"stars":26,"repoUrl":27,"updatedAt":1466},"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},[1454,1457,1460,1463],{"name":1455,"slug":1456,"type":16},"Communications","communications",{"name":1458,"slug":1459,"type":16},"LLM","llm",{"name":1461,"slug":1462,"type":16},"Research","research",{"name":1464,"slug":1465,"type":16},"Summarization","summarization","2026-07-13T06:24:20.520223",{"slug":1468,"name":1468,"fn":1469,"description":1470,"org":1471,"tags":1472,"stars":26,"repoUrl":27,"updatedAt":1479},"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},[1473,1474,1477,1478],{"name":1265,"slug":1266,"type":16},{"name":1475,"slug":1476,"type":16},"API Development","api-development",{"name":1442,"slug":1443,"type":16},{"name":1445,"slug":1446,"type":16},"2026-07-13T06:25:55.843495",{"slug":1481,"name":1481,"fn":1482,"description":1483,"org":1484,"tags":1485,"stars":26,"repoUrl":27,"updatedAt":1500},"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},[1486,1488,1491,1494,1497],{"name":1487,"slug":1481,"type":16},"Datadog",{"name":1489,"slug":1490,"type":16},"Logs","logs",{"name":1492,"slug":1493,"type":16},"Metrics","metrics",{"name":1495,"slug":1496,"type":16},"Monitoring","monitoring",{"name":1498,"slug":1499,"type":16},"Observability","observability","2026-07-13T06:24:27.990605",{"slug":1502,"name":1502,"fn":1503,"description":1504,"org":1505,"tags":1506,"stars":26,"repoUrl":27,"updatedAt":1510},"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},[1507,1508,1509],{"name":1268,"slug":1269,"type":16},{"name":1338,"slug":1339,"type":16},{"name":1442,"slug":1443,"type":16},"2026-07-13T06:24:26.62387",{"slug":1512,"name":1512,"fn":1513,"description":1514,"org":1515,"tags":1516,"stars":26,"repoUrl":27,"updatedAt":1529},"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},[1517,1520,1523,1526],{"name":1518,"slug":1519,"type":16},"Documents","documents",{"name":1521,"slug":1522,"type":16},"DOCX","docx",{"name":1524,"slug":1525,"type":16},"Office","office",{"name":1527,"slug":1528,"type":16},"Word","word","2026-07-13T06:23:44.299568",45]