src/skills/builtin/apps/SKILL.md
Create, deploy, and manage web apps accessible at subdomains of your configured base domain
npx skillsauth add mcarcaso/phousevito appsInstall 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.
Create and deploy web apps using ANY technology stack — static HTML, React, Node.js, Python, Astro, whatever the job calls for. Apps run locally on PM2 and are accessible via your configured domain.
user/apps/<name>/ — each deployed app gets its own folder.vito-app.json in each app folder (name, description, port, URL, createdAt)app-<name> in PM2apps.portStart in config.json)In your vito.config.json:
{
"apps": {
"baseDomain": "your-domain.com",
"portStart": 3100
}
}
If not set, apps will be accessible at http://localhost:<port>.
pm2 savepm2 savepm2 savePM2 persistence is non-optional. If you create, update, restore, restart, or delete app processes, finish by running:
pm2 save
Without pm2 save, the app family may not come back properly after a reboot.
Use this skill when you need to:
Choose the right technology for the job:
server.js that serves built files (bundle everything, don't rely on build steps)server.js or Python server.pypackage.jsonServer conventions:
server.js that accepts --port <port> flagserver.py that accepts --port <port> flagpackage.json, npm install is run automatically before startingrequirements.txt, pip install is run automatically before startingImportant:
npm run build during deploy) — ship ready-to-run code--port flagRun the CLI script at src/skills/builtin/apps/index.js:
node src/skills/builtin/apps/index.js create \
--name "my-app" \
--description "My cool app" \
--files '[{"path":"index.html","content":"<h1>Hello</h1>"},{"path":"style.css","content":"body{margin:0}"}]'
--files flag takes a JSON array of {path, content} objects.node src/skills/builtin/apps/index.js list
node src/skills/builtin/apps/index.js delete --name "my-app"
user/apps/
├── my-portfolio/
│ ├── .vito-app.json (metadata — port, url, description)
│ ├── index.html
│ ├── style.css
│ └── script.js
├── my-api/
│ ├── .vito-app.json
│ ├── server.js
│ └── package.json
├── my-flask-app/
│ ├── .vito-app.json
│ ├── server.py
│ └── requirements.txt
data-ai
Maintain and discover updates for user/profile.md — what belongs, how to edit, daily discovery sweeps, and refinement passes
tools
Browse the web, take screenshots, and extract content from web pages using Playwright MCP
tools
Generic MCP client bridge for skills — discover and call tools from MCP servers declared in SKILL.md frontmatter or passed as URLs
data-ai
How to update user/profile.md — what's profile-worthy, where to put it, when to clean up. Read this skill any time you're about to Edit profile.md.