본문으로 건너뛰기
cccskills
무료GitHub에 공개

outpost-host

Host an app on this HQ Outpost/EC2 VM behind nginx and return its public URL. Refuses to run elsewhere. For artifacts use /deploy.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

indigoai-us/hq-core스타 90(GitHub 90 + cccskills 0)

실행 점수 미검증

설치 방법 보기

포함된 파일(5)

  • SKILL.md5.3 KB
  • agents/openai.yaml140 B
  • guard.sh3.6 KB
  • host-app.sh10.7 KB
  • test-guard.sh3.0 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

/outpost-host — serve an app from the Outpost VM

Stand up a web server on the cloud VM this session is running on and serve whatever the user wants — a static site or a running full-stack app — behind nginx, then hand back the public URL.

This comes from the idea: let people host apps on the VM the Outpost is running on, and ship an Outpost-specific command that finds a free host and deploys to it. This skill is that command, scoped to the current box.

Hard constraint: Outposts / EC2 only

This skill installs system packages, edits /etc/nginx, opens ports, and exposes an app to the internet. That is only safe on a disposable, already-public cloud VM — an HQ Outpost or a plain EC2 instance. It must never do this on an operator's laptop or any non-cloud host.

Step 1, always, before anything else: run the environment guard.

if [[ -n "${CLAUDE_PLUGIN_ROOT:-}" ]]; then
  bash "$CLAUDE_PLUGIN_ROOT/skills/outpost-host/host-app.sh" check
else
  bash "$CLAUDE_PROJECT_DIR/.claude/skills/outpost-host/host-app.sh" check
fi
  • Exit 0 → you are on an Outpost/EC2 box; continue.
  • Exit 1 → stop. Print the guard's message to the user verbatim (it explains this skill only runs on an Outpost/EC2 and points them to /deploy and /hq-share). Do not install anything, do not retry, do not work around it.

The guard detects the environment offline (HQ Outpost outpost-* systemd units; EC2 DMI markers sys_vendor=Amazon EC2 / board_asset_tag=i-…; Xen hypervisor uuid) and falls back to IMDSv2. It does not depend on the network being up.

What you can serve

Ask the user which mode fits (use AskUserQuestion if unclear):

  1. Static — a directory of files (built site, plain HTML/CSS/JS, exported app). nginx serves it directly.
  2. Proxy — an app already running (or that you will start) on a local port (Next.js, an API, a Flask/Express server). nginx reverse-proxies to it, including WebSocket upgrade headers.

For a full-stack app, the usual flow is: start the app bound to 127.0.0.1:<appPort> (e.g. via its own npm start/process manager), then use proxy mode pointed at that port. Keep the app process alive yourself (e.g. a systemd unit or nohup/pm2); nginx only fronts it.

Process

1. Gate

Run host-app.sh check. On failure, relay the message and stop (see above).

2. Gather inputs

  • name — a short slug for the app ([a-z0-9-]), used for the nginx site filename and list/remove.
  • mode — static or proxy.
  • For static: the root directory to serve.
  • For proxy: the running app's host:port (usually 127.0.0.1:<port>).
  • Optional explicit public --port; otherwise a free port is chosen automatically.

3. Find a free host slot

host-app.sh free-port           # first free port in 8080-8099

The deploy step does this automatically when --port is omitted. Use port 80 only if the user explicitly wants the bare http://<host> URL and nothing else is on 80.

4. Deploy

This installs nginx if missing, writes /etc/nginx/conf.d/outpost-<name>.conf, validates with nginx -t (auto-reverting on failure), and reloads nginx.

# static site
host-app.sh deploy --name myapp --mode static --root /path/to/site

# reverse-proxy to a running app on port 3000
host-app.sh deploy --name myapp --mode proxy --upstream 127.0.0.1:3000

On success it prints URL=…. Surface that URL to the user in one plain line.

5. Open the firewall (tell the user)

nginx now listens on the chosen port, but the instance's security group must allow inbound TCP on that port for the URL to be reachable from outside. The skill cannot change AWS security groups safely on its own — tell the user which port to open (or use port 80 if their SG already allows it).

6. Manage / clean up

host-app.sh list                # what this skill is currently serving
host-app.sh remove --name myapp # tear down one app's nginx site and reload

Safety notes (full prose — this exposes things publicly)

  • Exposing an app publicly is an outward-facing action. Before deploying, confirm with the user that the app is meant to be public and contains nothing sensitive. An app on the Outpost can reach the box's local services and credentials, so only proxy apps you trust.
  • The skill writes only to /etc/nginx/conf.d/outpost-*.conf and never edits the operator's other nginx config. remove deletes only the file it created.
  • nginx config is always validated with nginx -t before reload; a bad config is reverted rather than left in place.
  • Keep the upstream app process supervised yourself — nginx fronts it but does not start or restart it.

Files

  • guard.sh — environment gate (Outpost/EC2 detection; injectable inputs for testing).
  • host-app.sh — install nginx, find a free port, deploy/list/remove sites, resolve the public URL.
  • test-guard.sh — verifies the guard passes on an outpost-like env and refuses on a non-outpost env.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

accept

무료

Accept HQ membership invites from a magic link or raw token.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

indigoai-us/hq-core902026년 10월 26일 업데이트

adr

무료

Capture qualifying architecture decisions as ADRs in the right HQ or repo location.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

indigoai-us/hq-core902026년 10월 26일 업데이트

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

indigoai-us/hq-core902026년 10월 26일 업데이트

architect

무료

Find shallow modules and propose deepening refactors, ranked with file refs; never edits code. Use when code is hard to change or planning a refactor.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

indigoai-us/hq-core902026년 10월 26일 업데이트

Generate dark ASCII banner graphics for HQ and social launch assets.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

indigoai-us/hq-core902026년 10월 26일 업데이트

Compare approaches to best-in-class prior art, merge existing work, verify cruft removal, and recommend the most durable design before PRD work.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

indigoai-us/hq-core902026년 10월 26일 업데이트

indigoai-us의 스킬 모두 보기

이 스킬의 문제 신고