一键导入
stella-desktop
Use this skill before modifying Stella, the desktop app and runtime the user is talking to you on. It provides necessary guidance and rules.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use this skill before modifying Stella, the desktop app and runtime the user is talking to you on. It provides necessary guidance and rules.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Control Stella-owned browser tabs through the persistent node_repl runtime and its frozen browser API. Use for navigation, page interaction, semantic locators, state inspection, new-tab flows, and browser screenshots.
Generate images, video, audio, and 3D through Stella's managed media gateway. Use when the user asks for any generated media. Don't call provider APIs directly — the gateway handles auth, billing, and persistence centrally.
Extend Stella's Pi-shaped runtime with agents, tools, hooks, providers, and prompt templates.
Control macOS desktop apps through Stella's persistent Computer Use runtime.
Control Windows desktop apps through Stella's persistent Computer Use runtime.
Control Stella-owned browser tabs through the persistent node_repl runtime and its frozen browser API. Use for navigation, page interaction, semantic locators, state inspection, new-tab flows, and browser screenshots.
| name | stella-desktop |
| description | Use this skill before modifying Stella, the desktop app and runtime the user is talking to you on. It provides necessary guidance and rules. |
cd — a relative path is never resolved
against your exec_command working directory. When editing Stella's own
source, pass the full absolute path under the running install root (the
directory containing desktop/ and runtime/). Find that root once (e.g. with
pwd from the install root, or the Install root value when given) and prefix
every file-tool path with it, even after you cd elsewhere in a command.For broad Stella UI changes, these are the main surfaces to inspect:
desktop/src/shell/ShellTopBar.tsx,
shell/sidebar/ShellTopBarNav.tsx, shell/sidebar/ShellTopBarAccount.tsx.desktop/src/app/home/HomeContent.tsx.desktop/src/app/chat/ —
ChatColumn.tsx, ConversationEvents.tsx, MessageRow.tsx,
UserMessageBody.tsx, Markdown.tsx.desktop/src/app/chat/Composer.tsx +
features/chat/ComposerPrimitives.tsx.desktop/src/shell/ChatSidebar.tsx.desktop/src/shell/DisplaySidebar.tsx, shell/display/.desktop/src/ui/ (dropdown-menu,
dialog, popover, pill, button, select),
desktop/src/shell/context-menu/StellaContextMenu.tsx,
desktop/src/shell/overlay/RadialDial.tsx.desktop/src/app/{settings,store,social,pets,apps,media}/,
each with its own App.tsx + css.Every user is on the built-in Custom overlay theme
(desktop/src/shared/theme/themes/custom.ts), which inherits a base theme
until it is populated. Write redesigns and personal look changes into Custom so
they show immediately — the user is already on it — and survive switching
palettes. Never create a new named theme or scope styling to a non-active
[data-theme="…"]: that strands the change until the user selects it in
Settings, which is the wrong experience.
overrides.light / overrides.dark, then set
populated: true so Custom surfaces in the picker.:root[data-theme="custom"]
in CSS. The base theme's tuning still applies via data-base-theme, so empty
Custom stays identical to its base.For background-image looks, make the image visible through the Custom surface,
not hidden behind ShiftingGradient. Stella's UI is glass-heavy, so tune the
background treatment and foreground surfaces together: dim or blur busy imagery,
strengthen translucent shells where needed, and add fit-to-content assistant
message bubbles if readability requires them. Preserve the requested aesthetic
rather than simply making every panel opaque.
Run from the Stella install root (the directory containing desktop/ and
runtime/):
node node_modules/typescript-7/lib/tsc.js -p desktop/tsconfig.app.json --noEmit
bun run electron:typecheck
bun run lint
bun run test:run -- tests/runtime/sidebar-discovery.test.ts tests/runtime/route-smoke.test.ts
package.json at the repo root — install all dependencies there.desktop/src/routeTree.gen.ts is auto-generated by Vite's TanStack
plugin on every save. Don't edit it; edit files under
desktop/src/routes/ instead.import.meta.glob("../../app/*/metadata.ts")
in desktop/src/shell/sidebar/app-registry.ts and rendered by
ShellTopBarNav.tsx. Add an app by dropping a new
desktop/src/app/<id>/metadata.ts; don't hardcode entries in the nav.UiState, not router state.useFullShellChat() is mounted exactly once in
desktop/src/routes/__root.tsx inside <ChatRuntimeProvider>.
Everything else (chat route, sidebars) reads it via
useChatRuntime(). Mounting it elsewhere double-instantiates the
streaming subscription./apps page (also covers canvas / game surfaces)