Source profileQuality 86/100

javded-itres/Holix/core/skills/bundled/holix-studio-frontend-backend/SKILL.md

holix-studio-frontend-backend

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.

Source repository stars
12
Declared platforms
0
Static risk flags
1
Last source update
2026-08-04
Source checked
2026-08-04

Decision brief

What it does—and where it fits

Apply this skill whenever you start, fix, or demo a web frontend (or FE+API) in Holix Studio:

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

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/javded-itres/Holix --skill "core/skills/bundled/holix-studio-frontend-backend"
Safe inspection promptEditorial

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

What the source asks the agent to do

  1. 01

    Mandatory agent 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…

    Inspect project (package.json, existing Dockerfile/compose, ports).Propose (and implement if user agrees / task implies run):docker-compose with frontend, backend (if any), nginx
  2. 02

    When to use (always in Studio)

    Apply this skill whenever you start, fix, or demo a web frontend (or FE+API) in Holix Studio:

    User asks to run the app, open the UI, “подними фронт”, “запусти preview”, “открой в браузере”Project has Vite / Next / Nuxt / CRA / static SPA ± APIYou are about to say the app is ready
  3. 03

    Non‑negotiable rules

    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…

    Listen on 0.0.0.0 (never only 127.0.0.1) for any process that Studio Preview must reachAlways form real preview links in chat after the app listens:Call MCP openpreviewurl(port=…) (and for FE+BE, for every public port users need).
  4. 04

    Preferred architecture (FE + BE)

    Single public port → one openpreviewurl → one link in chat.

    Single public port → one openpreviewurl → one link in chat.Write under the project (e.g. docker-compose.yml or deploy/docker-compose.studio.yml):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.
  5. 05

    docker-compose.yml (template — adapt ports/paths)

    Write under the project (e.g. docker-compose.yml or deploy/docker-compose.studio.yml):

    Write under the project (e.g. docker-compose.yml or deploy/docker-compose.studio.yml):

Permission review

Static risk signals and limitations

Network access

medium · line 86

The documentation includes network, browsing, or remote request actions.

proxy_pass http://frontend:3000;

Network access

medium · line 98

The documentation includes network, browsing, or remote request actions.

proxy_pass http://backend:8000/; # trailing slash strips /api prefix if BE has no /api

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score86/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars12SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
javded-itres/Holix
Skill path
core/skills/bundled/holix-studio-frontend-backend/SKILL.md
Commit
2b0735f8a5e86be092e4918f1ff2e305bcea693a
License
MIT
Collected
2026-08-04
Default branch
main
View the original SKILL.md

When to use (always in Studio)

Apply this skill whenever you start, fix, or demo a web frontend (or FE+API) in Holix Studio:

  • 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

This skill is platform / required: do not ignore it for Studio web work.

Non‑negotiable rules

  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 open_preview_url(port=…) (and for FE+BE, for every public port users need).
    • Paste into the chat reply: frame_url / public origin from the tool result (Markdown link).
    • Never tell the user to open localhost / bare host:port as the main URL.
  3. Prefer docker-compose + nginx for “run the app” demos:
    • One published port on the host (nginx).
    • Frontend and backend only on the compose network (expose, not host-publish unless needed).
    • Nginx routes UI + API on the same origin (/ → FE, /api/ → BE) so the browser does not need a separate API host when possible.
  4. Do not use Desktop / noVNC for web apps — only Studio → Browser via open_preview_url.
  5. Do not claim “preview is ready” without a successful tool result that includes the public URL.

Preferred architecture (FE + BE)

Browser → Studio preview (public HTTPS) → host:PORT → nginx container
                                              ├─ /        → frontend:3000
                                              └─ /api/    → backend:8000

Single public port → one open_preview_urlone link in chat.

docker-compose.yml (template — adapt ports/paths)

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

nginx.studio.conf (template)

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;
    }
}

Frontend API base when nginx fronts both

StackPrefer
ViteVITE_API_URL=/api (or empty + relative /api/...)
NextNEXT_PUBLIC_API_URL=/api
CRAREACT_APP_API_URL=/api
Axios/fetchrelative /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.

Mandatory agent workflow

A. Default: compose + nginx (propose this first)

  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 on nginx
  3. Start stack from workspace:

    • Studio Docker tools / docker compose up -d --build in the project dir
    • Or background process if user forbids Docker — still 0.0.0.0 + preview
  4. Wait until nginx port accepts HTTP (health / log / check_background_process / docker ps).

  5. open_preview_url(port=NGINX_HOST_PORT) (e.g. 8080).

  6. 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
    
  7. 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.

B. Dev servers without Docker (fallback)

Only if Docker is unavailable or user forbids it:

  1. Start processes with host 0.0.0.0:
    • Vite: server: { host: '0.0.0.0', port, strictPort: true, allowedHosts: true }
    • Nuxt: devServer: { host: '0.0.0.0', port }
    • uvicorn: --host 0.0.0.0 --port …
  2. Prefer a small local nginx (compose one-service nginx + upstream host network) still if possible.
  3. open_preview_url for each user-facing port; put all links in chat.
  4. If FE and BE are separate public ports (no shared nginx origin):
    • open_preview_url for FE and BE
    • Set FE env to backend public origin from resolve_preview_origin_tool / preview_origins
    • CORS on BE must allow frontend public origin

C. Split ports (no nginx) — API base

Same as before, but secondary to nginx:

  1. resolve_preview_origin_tool(port=BACKEND) or preview_origins
  2. FE env = backend origin (H2 or path proxy) — never http://localhost:PORT for the browser
  3. Restart FE after env change; re-open previews; link both URLs in chat

Vite / Nuxt HMR (secondary)

HMR WebSocket may fail behind Studio preview. SPA can still work without hot reload.

  • Keep listen port consistent with open_preview_url
  • Prefer allowedHosts: true, host 0.0.0.0
  • If HMR spam: hmr: false or clientPort: 443 for wss edge — see stack docs
  • Do not confuse HMR errors with broken REST API

Do NOT

  • Start web servers only on 127.0.0.1 when Studio preview is required
  • Advertise localhost as the user URL
  • Invent H2 hostnames — only MCP open_preview_url / preview_origins
  • Open web apps via Desktop/noVNC
  • Install random host nginx/yadisk/rclone for “preview” when Studio Browser + compose is available
  • Say “я открыл preview” without a tool result containing the URL
  • Skip proposing docker-compose + nginx for FE+BE run tasks

Checklist before “done”

  • Services listen on 0.0.0.0 (or via nginx published port)
  • docker-compose + nginx proposed (and used when possible) for FE+BE
  • Nginx routes / → FE and /api/ (or project prefix) → BE
  • FE uses same-origin /api or backend public origin (not laptop localhost)
  • open_preview_url called for the public port(s)
  • Chat message includes clickable preview link(s) from tool output
  • User told: Studio Browser / the link — not localhost

Related tools (Studio)

  • MCP holix_studio: open_preview_url, list_preview_targets, preview_origins, resolve_preview_origin_tool
  • Docker panel / compose tools for workspace stacks
  • start_background_process / terminal only as fallback when compose is impossible

Telegram + Studio (same Holix profile)

Processes started from Telegram for a user profile must appear in Studio for that same profile (Processes panel + Browser targets):

  • Holix persists a shared index: HOLIX_HOME/profiles/<profile>/data/background_processes.json
  • Always use start_background_process (not detached raw nohup outside Holix)
  • Bind 0.0.0.0 and call open_preview_url so Studio Browser can attach
  • Workspace cwd must stay under the profile workspace so Studio can list the app

Slash

/holix-studio-frontend-backend — re-apply this workflow (ports, compose+nginx, preview links).

Alternatives

Compare before choosing

Computed 9510,044

ConardLi/garden-skills

web-design-engineer

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.

Computed 9428

MoizIbnYousaf/marketing-cli

cmo-remotion

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

Computed 9382

aAAaqwq/AGI-Super-Team

ui-ux-pro-max

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

Computed 9137,425

github/awesome-copilot

adobe-illustrator-scripting

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.