Best for
- User asks to run the app, open the UI, “подними фронт”, “запусти preview”, “открой в браузере”
- Project has Vite / Next / Nuxt / CRA / static SPA ± API
- You are about to say the app is ready
javded-itres/Holix/core/skills/bundled/holix-studio-frontend-backend/SKILL.md
Run frontend (and FE+BE) apps in Holix Studio: always bind 0.0.0.0, always open Studio preview links in chat, always prefer docker-compose with an nginx reverse proxy that joins frontend and backend. Use when starting Vite/Next/Nuxt/React, SPA+API monorepos, or any web app the user should open in Studio Browser. Invoke via /holix-studio-frontend-backend.
Decision brief
Apply this skill whenever you start, fix, or demo a web frontend (or FE+API) in Holix Studio:
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/javded-itres/Holix --skill "core/skills/bundled/holix-studio-frontend-backend"Inspect the Agent Skill "holix-studio-frontend-backend" from https://github.com/javded-itres/Holix/blob/2b0735f8a5e86be092e4918f1ff2e305bcea693a/core/skills/bundled/holix-studio-frontend-backend/SKILL.md at commit 2b0735f8a5e86be092e4918f1ff2e305bcea693a. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
1. Inspect project (package.json, existing Dockerfile/compose, ports). 2. Propose (and implement if user agrees / task implies run): - docker-compose with frontend, backend (if any), nginx - nginx joins FE+BE as above - host bind 0.0.0.0 inside services; one published host port…
Apply this skill whenever you start, fix, or demo a web frontend (or FE+API) in Holix Studio:
1. Listen on 0.0.0.0 (never only 127.0.0.1) for any process that Studio Preview must reach (Vite/Nuxt host: '0.0.0.0', uvicorn --host 0.0.0.0, nginx published port, etc.). 2. Always form real preview links in chat after the app listens: - Call MCP openpreviewurl(port=…) (and for…
Single public port → one openpreviewurl → one link in chat.
Write under the project (e.g. docker-compose.yml or deploy/docker-compose.studio.yml):
Permission review
The documentation includes network, browsing, or remote request actions.
proxy_pass http://frontend:3000;The documentation includes network, browsing, or remote request actions.
proxy_pass http://backend:8000/; # trailing slash strips /api prefix if BE has no /apiEvidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 86/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 12 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Apply this skill whenever you start, fix, or demo a web frontend (or FE+API) in Holix Studio:
This skill is platform / required: do not ignore it for Studio web work.
0.0.0.0 (never only 127.0.0.1) for any process that Studio Preview must reachhost: '0.0.0.0', uvicorn --host 0.0.0.0, nginx published port, etc.).open_preview_url(port=…) (and for FE+BE, for every public port users need).frame_url / public origin from the tool result (Markdown link).localhost / bare host:port as the main URL./ → FE, /api/ → BE) so the browser does not need a separate API host when possible.open_preview_url.Browser → Studio preview (public HTTPS) → host:PORT → nginx container
├─ / → frontend:3000
└─ /api/ → backend:8000
Single public port → one open_preview_url → one link in chat.
Write under the project (e.g. docker-compose.yml or deploy/docker-compose.studio.yml):
services:
frontend:
build: ./frontend # or image + command for node
# CRITICAL: app inside container must listen 0.0.0.0
environment:
- HOST=0.0.0.0
- PORT=3000
# Prefer same-origin /api via nginx — no absolute localhost API
- VITE_API_URL=/api
- NEXT_PUBLIC_API_URL=/api
expose:
- "3000"
# no ports: on host — only nginx publishes
backend:
build: ./backend
environment:
- HOST=0.0.0.0
- PORT=8000
expose:
- "8000"
nginx:
image: nginx:alpine
depends_on:
- frontend
- backend
ports:
# Published port = Studio preview port (pick free project port)
- "8080:80"
volumes:
- ./deploy/nginx.studio.conf:/etc/nginx/conf.d/default.conf:ro
server {
listen 80;
server_name _;
client_max_body_size 50m;
# Frontend (Vite/Next/Nuxt/static)
location / {
proxy_pass http://frontend:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# Backend API (adjust prefix to match the app)
location /api/ {
proxy_pass http://backend:8000/; # trailing slash strips /api prefix if BE has no /api
# use proxy_pass http://backend:8000; # if BE routes already start with /api
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Optional OpenAPI / health
location /docs {
proxy_pass http://backend:8000/docs;
proxy_set_header Host $host;
}
location /health {
proxy_pass http://backend:8000/health;
proxy_set_header Host $host;
}
}
| Stack | Prefer |
|---|---|
| Vite | VITE_API_URL=/api (or empty + relative /api/...) |
| Next | NEXT_PUBLIC_API_URL=/api |
| CRA | REACT_APP_API_URL=/api |
| Axios/fetch | relative /api/... |
Only if the user must call a separate public BE port (no nginx): set API base from MCP backend public origin (not localhost) — see “Split ports” below.
Inspect project (package.json, existing Dockerfile/compose, ports).
Propose (and implement if user agrees / task implies run):
docker-compose with frontend, backend (if any), nginxStart stack from workspace:
docker compose up -d --build in the project dirWait until nginx port accepts HTTP (health / log / check_background_process / docker ps).
open_preview_url(port=NGINX_HOST_PORT) (e.g. 8080).
In the same assistant message after tools succeed, include Markdown links, e.g.:
**Приложение:** [открыть preview](<frame_url or public origin from tool>)
Порт: 8080 · nginx → frontend + `/api` → backend
If FE-only (no BE), still use nginx (or the FE process on 0.0.0.0) and still call open_preview_url + link in chat.
Only if Docker is unavailable or user forbids it:
0.0.0.0:
server: { host: '0.0.0.0', port, strictPort: true, allowedHosts: true }devServer: { host: '0.0.0.0', port }--host 0.0.0.0 --port …open_preview_url for each user-facing port; put all links in chat.open_preview_url for FE and BEresolve_preview_origin_tool / preview_originsSame as before, but secondary to nginx:
resolve_preview_origin_tool(port=BACKEND) or preview_originshttp://localhost:PORT for the browserHMR WebSocket may fail behind Studio preview. SPA can still work without hot reload.
open_preview_urlallowedHosts: true, host 0.0.0.0hmr: false or clientPort: 443 for wss edge — see stack docs127.0.0.1 when Studio preview is requiredopen_preview_url / preview_origins/ → FE and /api/ (or project prefix) → BE/api or backend public origin (not laptop localhost)open_preview_url called for the public port(s)holix_studio: open_preview_url, list_preview_targets, preview_origins, resolve_preview_origin_toolstart_background_process / terminal only as fallback when compose is impossibleProcesses started from Telegram for a user profile must appear in Studio for that same profile (Processes panel + Browser targets):
HOLIX_HOME/profiles/<profile>/data/background_processes.jsonstart_background_process (not detached raw nohup outside Holix)open_preview_url so Studio Browser can attach/holix-studio-frontend-backend — re-apply this workflow (ports, compose+nginx, preview links).
Alternatives
ConardLi/garden-skills
Build or redesign polished browser-rendered visual artifacts with HTML/CSS/JavaScript/React: pages, dashboards, prototypes, slide decks, animations, UI mockups, and data visualizations. Use for visual front-end creation, design-system exploration, design critique, or explicit browser acceptance / QA of a web artifact. Not for back-end, CLI, non-visual coding, source-to-longform article conversion, or narration-driven click-through video presentations.
MoizIbnYousaf/marketing-cli
Brand-grounded Remotion video pipeline. Take a brief, ground it in `brand/` (voice, audience, positioning, creative-kit), write a beat sheet, scaffold a fresh Remotion project, generate any required assets, compose with frame-driven animations, and bake a final MP4. Use this skill whenever the user wants to build a NEW Remotion video from scratch — product films, motion graphics, code-driven shaders, CRT/glitch effects, HTML-in-canvas demos, React video. Triggers on requests like "make a remotio
aAAaqwq/AGI-Super-Team
UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 9 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind, shadcn/ui). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: g
github/awesome-copilot
Write, debug, and optimize Adobe Illustrator automation scripts using ExtendScript (JavaScript/JSX). Use when creating or modifying scripts that manipulate documents, layers, paths, text frames, colors, symbols, artboards, or any Illustrator DOM objects. Covers the complete JavaScript object model, coordinate system, measurement units, export workflows, and scripting best practices.