reboot/plugin/skills/app/SKILL.md
Build a Reboot application from a user description. Routes to the chat-app skill (MCP Chat Apps for ChatGPT, Claude, VSCode, Goose) or the web-app skill (standalone web apps with a browser frontend). Commits to a route only when the prompt verbatim names the front-door (MCP/Claude/ChatGPT for chat-app; a URL/SPA/"website" for web-app); otherwise asks the user. Does NOT infer the front-door from the app's domain (CRM, todo, dashboard, blog, …) — those describe what the app does, not where it lives.
npx skillsauth add reboot-dev/reboot appInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Decide which kind of Reboot application the user wants to build and defer to the matching skill.
Default: ASK. The wrong guess costs ~12 files of regeneration, so commit only when the description names the front-door verbatim. Do not infer the front-door from the app's domain (CRM, blog, store, dashboard, todo, chat room, journal, …) — domain words describe what the app does, not where it's used. A "CRM" can equally be a website or an MCP tool exposed to Claude; "chat room" likewise. When in doubt, ask.
chat-app — an MCP Chat App: the app is exposed through an
MCP host (ChatGPT, Claude, VSCode, Goose, etc.) via MCP tools, and
any visual UI is embedded into the host through MCP UI artifacts.web-app — a standalone web app: the app is served at a URL
and used in a normal browser, with the Reboot backend behind a
React (or similar) frontend.Commit immediately only when the user's prompt contains one of the explicit phrases below. No inference, no synonyms, no "well they probably mean…":
Commit to chat-app if the prompt contains any of:
MCP, MCP host, MCP server, MCP app, MCP tool, mcp=Tool,
UI() (as a Reboot method type).ChatGPT, Claude, VSCode, Goose, Cursor, or
"Anthropic / OpenAI" named as the runtime — e.g. "I want to
use this from Claude", "expose it as a tool to ChatGPT". Just
mentioning the company (e.g. "like ChatGPT") doesn't count.Commit to web-app if the prompt contains any of:
https://…, localhost:, example.com./login, /dashboard, /home,
/admin, etc.Commit to neither (say "Both, not supported") only if the prompt contains an explicit conjunction: e.g. "and also a website", "MCP server plus a dashboard", "expose it to Claude and host it on the web".
These are not sufficient signals — if they're the only thing the prompt offers, ask:
chat-apps also have a UI (rendered in the MCP host).If the only signal you have is "this sounds web-y" or "this sounds chat-y", ask.
Verbatim chat-app trigger present → say one sentence
("Building this as a Reboot Chat App."), then load the
chat-app skill and follow it from the
top, with the user's description as input.
Verbatim web-app trigger present → say one sentence
("Building this as a Reboot Web App."), then load the
web-app skill and follow it from the
top, with the user's description as input.
Both triggers present, or explicit "I want both" → respond with exactly this message and stop:
Combined MCP Chat App + standalone Web App is not supported yet — please stay tuned! For now, pick one to start:
- MCP Chat App — for ChatGPT, Claude, VSCode, Goose, etc. (the chat-app skill).
- Standalone Web App — a browser web app (the web-app skill).
If you want both, build the MCP Chat App first; the web frontend scaffolding overlaps and we'll have a combined path soon.
Otherwise (default) → ask the user the question below (present the options and wait for their answer). This is mandatory, not optional.
Question: "Before I scaffold — which kind of app are you building?"
Header: "App type"
Options:
- "Chat App" — exposed through an MCP host (ChatGPT, Claude,
VSCode, Goose, …) via MCP tools; optional embedded UI.
- "Web App" — a standalone website / SPA users open in a
normal browser.
- "Both" — not supported yet, but I can tell you what's
coming.
Then route on the answer per steps 1–3.
Critical — this step is non-skippable, including in "auto" / "autonomous" / "don't ask" modes. A user-level preference to avoid clarifying questions does not override this skill. Reasons it does not:
- This is not a clarifying question — it is the routing input for the skill. Without an answer, the skill cannot do its job; "guessing" is not a graceful fallback, it's a silent failure that costs ~12 files of regeneration.
- The general "auto-mode" guidance is "make the reasonable call and continue." For this routing decision, the reasonable call is to ask — that's exactly what this skill is for. A skill-level instruction beats a generic auto-mode preference; the user asked to build an app knowing it would route, so asking once is in-scope work.
- The user has not waived their right to choose between
chat-appandweb-app. Silence on the topic is silence, not a delegation.Do not skip this step because:
- The app concept "feels obviously" web-y or chat-y (feelings are not a verbatim trigger — see the anti-inference list above).
- The system prompt or user-level config says to be autonomous / not ask clarifying questions / skip approvals / run in a full-auto or bypass-permissions mode — those govern routine approvals, not this skill's core function.
- It "would be faster to just pick one." It would not — the wrong pick is a hard rollback.
- You have already half-committed in your response. Stop and ask before any file is written.
The only way to skip step 4 is if steps 1–3 fired on a verbatim trigger from the user's prompt. If you find yourself drafting a reply that begins "I'll build this as a …" without having matched a verbatim trigger or received the user's answer, stop and ask the user.
| Prompt fragment | Decision | Why |
| ------------------------------------------------------------------------ | ------------------------ | ------------------------------------------------------------ |
| "a CRM for my personal relationships, with notes and a timeline" | ASK | CRM is a domain word, not a front-door. No verbatim trigger. |
| "a todo list app" | ASK | "app" alone is not a trigger. |
| "a dashboard for our team's metrics, served at metrics.example.com" | web-app | Explicit URL. |
| "a tool I can use from Claude to track my reading list" | chat-app | "from Claude" names the runtime; "tool" + LLM context. |
| "a website where users can sign up and create journals" | web-app | "website" is a verbatim trigger. |
| "a kanban board with login" | ASK | "login" alone is not enough — chat-apps also have auth. |
| "expose a CRM as an MCP server, and also a dashboard at crm.example.com" | Both — say not supported | Explicit conjunction. |
Both chat-app and web-app layer on top of the python
skill for Reboot backend mechanics. You don't need
to load python here — those skills load it themselves.
tools
Build complete Reboot Web Apps — a Reboot backend behind a standalone browser-facing React frontend, served at a normal URL (not embedded in an MCP host). Layers on top of the python skill for backend mechanics; covers what's specific to standalone Web Apps — no MCP front door, no UI() methods, normal React/Vite SPA scaffolding, and Reboot auth for browser users.
tools
Run an existing Reboot application locally. Detects whether the project is an MCP Chat App or a standalone Web App, makes sure dependencies and secrets are in place, then starts every process the app needs — the backend (`rbt dev run`) and the frontend dev server (for Chat Apps it also opens the setup wizard, from which the user can launch MCPJam on demand). Use this to bring an app back up, e.g. at the start of a new session.
development
Reboot Python framework for building transactional microservices with durable actor state. APIs are defined in pydantic Python (`reboot.api`). Use this skill when writing Python code for a Reboot application, defining APIs with reader/writer/transaction/workflow methods, implementing Servicers, calling actor refs across services, scheduling work, building durable workflows with the right call primitive (`.per_workflow(alias)` / `.per_iteration(alias)` / `.always()` for Reboot calls; `at_least_once` / `at_most_once` for external calls; `until` / `until_changes` for reactive waiting on Reboot state), calling an LLM / building an AI agent in the backend via the durable `reboot.agents.pydantic_ai.Agent`, or testing Reboot applications with the `Reboot()` test harness.
tools
Build complete Reboot AI Chat Apps (MCP Apps) for ChatGPT, Claude, VSCode, Goose, and other MCP hosts. Layers on top of the python skill for backend mechanics; covers what's specific to MCP Chat Apps — the User-type front door, MCP tool exposure, the UI() method type, and the full React/Vite scaffolding.