Give this to your AI
The fastest way to build an app: your AI reads the guide (or installs it as a skill) and writes the whole app. Everything below is the same guide, for people.
Paste this into Claude, ChatGPT, Gemini, Grok or any assistant that can read a web page, and describe your app:
Read https://deepbot.studio/llms-full.txt and use it to build me a DeepBot app that ... (describe it). Ask me what you need to know first, then write the whole app in a folder, ready to link in DeepBot's developer mode.Install the skill once (macOS, Linux):
mkdir -p ~/.claude/skills && curl -fsSL https://deepbot.studio/skill/deepbot-app-builder.zip -o /tmp/deepbot-app-builder.zip && unzip -o /tmp/deepbot-app-builder.zip -d ~/.claude/skillsWindows (PowerShell):
iwr https://deepbot.studio/skill/deepbot-app-builder.zip -OutFile $env:TEMP\deepbot-app-builder.zip; Expand-Archive $env:TEMP\deepbot-app-builder.zip -DestinationPath $HOME\.claude\skills -ForceThen ask: “Build me a DeepBot app that …”
Any agent that uses skills (a folder with a SKILL.md): unzip the skill into its skills folder.
https://deepbot.studio/skill/deepbot-app-builder.zipAgents without skills: point them at the one-file guide, or add it to the project's instructions:
https://deepbot.studio/llms-full.txtDeepBot has the skill built in. Ask your Bot in any conversation:
Build me a DeepBot app that ...It writes the app into your workspace (my-apps/), tells you the folder, and you link it in Apps → Developer mode → From a folder.
Build a DeepBot app
A DeepBot app is a folder. DeepBot reads its app.json, gives the Bot its skill, shows its
cards in the chat when the Bot calls them, puts its pages in DeepBot (Apps), and lets the
Bot run its scripts on the person's computer. The interface is plain HTML, CSS and JavaScript in
a locked frame that talks to DeepBot through window.deepbot (the bridge).
my-app/
app.json what the app is and what it may do (references/manifest.md)
skill/SKILL.md what the Bot reads: when and how to use it (references/app-skill.md)
ui/ cards and pages: HTML, CSS, JS (references/surfaces.md, bridge.md, design.md)
scripts/ optional: programs the Bot runs (references/scripts.md)
listing.md the app's page in the catalogue (references/listing.md)
listing/ icon, banner, screenshots for that pageRead the reference for each part before you write it:
| File | Read it for |
|---|---|
| references/manifest.md | every field of app.json, permissions, checks |
| references/surfaces.md | cards and pages: where they appear, sizing, full screen, the card's life |
| references/bridge.md | every deepbot.* call with arguments, results, limits |
| references/app-skill.md | writing the app's SKILL.md so the Bot uses the app well |
| references/design.md | the kit, colours, light/dark, layout rules |
| references/scripts.md | scripts the Bot runs on the computer |
| references/patterns.md | big apps: data model, editors, uploads, exports, WebGL/WASM, long jobs, keys, tests |
| references/listing.md | listing.md and the pictures for the catalogue |
| references/publish.md | developer mode, the test pass, publishing, updates, review |
| references/reserved-cards.md | card names you may not use |
Three complete, working apps are in examples/ (notes-board: a card and a page with files,
storage, ask and openPage; quick-weather: a card that calls a web API; image-tools: a Python
script plus a result card). Start from the one closest to what you build. For anything bigger
than a card and a page, read references/patterns.md first.
#1. Understand the app
Ask (in one short message, only what you do not know yet):
- what the person wants to get done, and who will use it;
- what the Bot should be able to do with it, in a sentence the person would type ("make me a packing list for ...", "how much did we spend on ...");
- what the person needs to see (a result in the chat, a screen to come back to, both);
- whether it needs the internet (which services) or programs on the computer.
#2. Choose the parts
| The person needs | Build |
|---|---|
| to see a result right where they asked | a card (the Bot calls it with arguments) |
| a screen to come back to, browse, edit | a page (Apps -> the app, or a card's button) |
| the Bot to know when and how to use the app | the skill (always) |
| work done on the computer (files, conversions, heavy lifting) | a script the Bot runs, permissions.computer |
| data from a web service | deepbot.net.fetch from the card or page, hosts in permissions.network |
| to keep files the Bot also reads and writes | a workspace folder in permissions.files |
| to keep the person's own settings or state | deepbot.storage (the Bot does not see it) |
| an API key or token | deepbot.secrets + {{secret:name}} in net.fetch |
Most apps are: the Bot writes files in the app's workspace folder, then calls a card that reads them and shows them; a page shows all of them. Keep the data in files the Bot can read and write, in a format you define in the skill.
#3. Write it
app.json(references/manifest.md).idis permanent. Card names are tools the Bot calls: unique,show+ your app's name + thing (showRecipeBox), never one of DeepBot's own (references/reserved-cards.md). Ask only for the permissions the app uses.skill/SKILL.md(references/app-skill.md): when to use the app, the files and their exact format, which card to call with which arguments, what to say after.- The interface (references/surfaces.md, bridge.md, design.md):
- every page includes nothing extra: DeepBot injects the bridge (
window.deepbot) and the design kit (CSS variables,db-*classes) into every HTML page it serves; await deepbot.readybefore readingdeepbot.args;- a card ends with
deepbot.done(note)ordeepbot.fail(message): the Bot hears it; - use the kit's colour variables so light and dark mode both work;
- escape everything you put into HTML;
- keep every file inside the app (no CDNs): it must work offline and pass review.
- every page includes nothing extra: DeepBot injects the bridge (
- Scripts, if any (references/scripts.md): Python 3 by default, JSON lines out, never write into the app's own folder.
listing.mdandlisting/(references/listing.md): description, FAQ, changelog, icon, banner, 2-6 screenshots.
#4. Test it in developer mode
In DeepBot: Apps -> Developer mode (switch, top right) -> From a folder -> the app's folder -> Link. The app loads at once, every save reloads its pages and cards, and the checks show under the app. Then:
- ask the Bot in a new conversation something that should use the app; check it calls the card with the right arguments and that the card reports done;
- open each page; switch DeepBot to dark mode (Settings) and look again;
- try the failure paths (missing file, no network): the card must say what went wrong and call
deepbot.fail.
If you are DeepBot's own Bot building an app: write it in the workspace under
my-apps/<id>/ (never inside DeepBot's program folder), print its full path
($env:WORKSPACE_DIR / $WORKSPACE_DIR + /my-apps/<id>), and ask the person to link that
folder (Apps -> Developer mode -> From a folder). After they link it, the app's skill is yours
too: test it by doing the task yourself in a new conversation.
#5. Publish (references/publish.md)
Public GitHub repository, git tag v1.0.0 && git push --tags, then submit the repository and the
tag on the DeepBot site (Developers -> sign in with GitHub). Every version is reviewed; a new
version needs a higher version and a new tag.
#Rules that get an app rejected
- a card with a name DeepBot already uses, or two cards with the same name;
- network calls to hosts not in
permissions.network, requests from the page straight to other hosts instead ofdeepbot.net.fetch, or"*"without a reason; - scripts that touch files outside the workspace or the app's own folders without the person asking, download and run code, or hide what they do;
- obfuscated or minified code without its source, executables (
.exe,.dll...); - sending the person's data anywhere the listing does not say;
- copying another app or a name that imitates one.