stacktree-status-dashboard
Publish a live status or health page to stacktr.ee at a public, memorable URL and
refresh it in place as conditions change. This is the publish path for the
status-dashboard job, and the one case in this library where a public slug is
correct.
When to invoke
- The user wants a public status page, uptime/health dashboard, or "is the service
up" page that anyone can check with no login.
- It will be linked widely (a docs footer, a support page, a status link) and
refreshed as health changes.
- The user says "give it a public status URL", "put up a status page", or "a health
page anyone can check".
For a private run report shareable by link, use stacktree-agent-run-report. For a
private dated digest, use stacktree-daily-brief. For a client deliverable, use
stacktree-client-deliverable.
The page shape
Produce a self-contained HTML document in the Status dashboard shape: a .sheet
with a .topbar ("System status" plus a .status ok pill reading the overall state,
e.g. "All systems operational"), an <h1> of the headline state, a .lede, a
.meta row (updated-at, region), and a .kpis strip (uptime %, avg response, open
incidents). Then .section blocks: an .uptime bar strip (90 day cells, with
.warn/.down for off days), a Services list (.svc rows, each with a .spark
and a per-service .status ok|warn), and a Recent incidents note. Close with a
.foot that states the link is public and shareable and refreshes in place. The
overall pill and the updated-at must reflect real current state on each run.
Canonical reference: the status-dashboard template in apps/web/src/templates.ts.
Required env
STACKTREE_API_KEY=stk_live_... # generate at https://app.stacktr.ee/api-keys
Authed-only: a public slug and refresh-in-place both require an owned site. If no key
is set, ask for one (or see the root stacktree-publish skill for pay-to-provision).
Note that a public custom slug may be a Pro feature; if the slug is rejected, fall
back to the unlisted URL and point the user to the unlock at https://stacktr.ee/x402
or the dashboard.
The judgment this skill encodes
A public slug is right here, and only here. A status page exists to be found
and linked, so give it a clean address with --public-slug <slug> (e.g.
status for status.stacktr.ee, or the product's own name). This is the
deliberate exception to the library's private-by-default posture. Confirm the slug
with the user, since it is public and memorable.
Public means a hard PII and secrets bar. Because anyone can read it, a status
page must contain only what is safe for the world: service names, states, uptime,
response times, incident notes. Never put internal hostnames, customer data,
tokens, or stack traces on it. Keep --pii-check block, and if it trips, treat it
as a real leak on a public page, not a nuisance, and fix the content. Do not relax
the scan on a public page.
No password, no email gate. Gating defeats the job ("anyone can check"). If the
user actually wants a private health view for the team only, that is the
daily-brief or agent-run-report pattern with a gate, not this skill. Keep this one
open.
Refresh in place, never a new URL. The page's whole value is one stable
address that always shows current state. On the first run, publish with the slug
and record the id. On every later run, update the same site:
echo "$STATUS_HTML" | bash scripts/publish.sh --update <id-or-slug> --expires-never
or call update_site. For a live page this update typically runs on a tight loop
or scheduler (the template copy says "refreshed every minute"); persist the
id/slug so the loop always targets the same page, and recover it with
list_sites if lost rather than re-creating.
Never expire. A status page is permanent infrastructure. Publish and update
with --expires-never.
Steps
- First run: build the status page as a complete HTML document in the page shape
above, reflecting real current health. Publish with the public slug, no expiry:
echo "$STATUS_HTML" | bash scripts/publish.sh --public-slug status --expires-never
Equivalent MCP path: publish_html with the public slug set. Record the id and
the public url. If the slug is rejected as a paid feature, fall back to the
unlisted URL and tell the user how to unlock the slug.
- Hand the user the public URL to link from their site/footer.
- Every later run (usually scheduled, often per-minute): regenerate the page with
current state and the new updated-at, then update in place:
echo "$STATUS_HTML" | bash scripts/publish.sh --update <id-or-slug> --expires-never
or update_site. Keep the same site id.
- To run live, wire step 3 into the user's scheduler/agent loop at the cadence they
want.
What to tell the user
Give them the public URL, confirm it is open to anyone (no login) and stays at one
address as it refreshes, and state the refresh cadence if you set one up. Remind them
that because it is public, only world-safe data should go on it, and confirm the PII
scan stayed strict. If the public slug needed a Pro unlock, say so and offer to walk
them through it.
1---2name: stacktree-status-dashboard3description: Publish a live status or health page that anyone can check at a clean public URL, refreshed in place as conditions change. Use for a public status page, uptime/health dashboard, or "is it up" page meant to be linked from a footer or shared widely with no login. This is the one job where a public slug is the right call. Produces a page in the Status dashboard shape, gives it a public {slug}.stacktr.ee URL, and updates the same site on every refresh.4---56# stacktree-status-dashboard78Publish a live status or health page to **stacktr.ee** at a public, memorable URL and9refresh it in place as conditions change. This is the publish path for the10`status-dashboard` job, and the one case in this library where a public slug is11correct.1213## When to invoke1415- The user wants a public status page, uptime/health dashboard, or "is the service16 up" page that anyone can check with no login.17- It will be linked widely (a docs footer, a support page, a status link) and18 refreshed as health changes.19- The user says "give it a public status URL", "put up a status page", or "a health20 page anyone can check".2122For a private run report shareable by link, use `stacktree-agent-run-report`. For a23private dated digest, use `stacktree-daily-brief`. For a client deliverable, use24`stacktree-client-deliverable`.2526## The page shape2728Produce a self-contained HTML document in the Status dashboard shape: a `.sheet`29with a `.topbar` ("System status" plus a `.status ok` pill reading the overall state,30e.g. "All systems operational"), an `<h1>` of the headline state, a `.lede`, a31`.meta` row (updated-at, region), and a `.kpis` strip (uptime %, avg response, open32incidents). Then `.section` blocks: an `.uptime` bar strip (90 day cells, with33`.warn`/`.down` for off days), a Services list (`.svc` rows, each with a `.spark`34and a per-service `.status ok|warn`), and a Recent incidents note. Close with a35`.foot` that states the link is public and shareable and refreshes in place. The36overall pill and the updated-at must reflect real current state on each run.37Canonical reference: the `status-dashboard` template in `apps/web/src/templates.ts`.3839## Required env4041```42STACKTREE_API_KEY=stk_live_... # generate at https://app.stacktr.ee/api-keys43```4445Authed-only: a public slug and refresh-in-place both require an owned site. If no key46is set, ask for one (or see the root `stacktree-publish` skill for pay-to-provision).47Note that a public custom slug may be a Pro feature; if the slug is rejected, fall48back to the unlisted URL and point the user to the unlock at <https://stacktr.ee/x402>49or the dashboard.5051## The judgment this skill encodes52531. **A public slug is right here, and only here.** A status page exists to be found54 and linked, so give it a clean address with `--public-slug <slug>` (e.g.55 `status` for `status.stacktr.ee`, or the product's own name). This is the56 deliberate exception to the library's private-by-default posture. Confirm the slug57 with the user, since it is public and memorable.58592. **Public means a hard PII and secrets bar.** Because anyone can read it, a status60 page must contain only what is safe for the world: service names, states, uptime,61 response times, incident notes. Never put internal hostnames, customer data,62 tokens, or stack traces on it. Keep `--pii-check block`, and if it trips, treat it63 as a real leak on a public page, not a nuisance, and fix the content. Do not relax64 the scan on a public page.65663. **No password, no email gate.** Gating defeats the job ("anyone can check"). If the67 user actually wants a private health view for the team only, that is the68 daily-brief or agent-run-report pattern with a gate, not this skill. Keep this one69 open.70714. **Refresh in place, never a new URL.** The page's whole value is one stable72 address that always shows current state. On the first run, publish with the slug73 and record the `id`. On every later run, update the same site:74 ```bash75 echo "$STATUS_HTML" | bash scripts/publish.sh --update <id-or-slug> --expires-never76 ```77 or call `update_site`. For a live page this update typically runs on a tight loop78 or scheduler (the template copy says "refreshed every minute"); persist the79 `id`/slug so the loop always targets the same page, and recover it with80 `list_sites` if lost rather than re-creating.81825. **Never expire.** A status page is permanent infrastructure. Publish and update83 with `--expires-never`.8485## Steps86871. First run: build the status page as a complete HTML document in the page shape88 above, reflecting real current health. Publish with the public slug, no expiry:89 ```bash90 echo "$STATUS_HTML" | bash scripts/publish.sh --public-slug status --expires-never91 ```92 Equivalent MCP path: `publish_html` with the public slug set. Record the `id` and93 the public `url`. If the slug is rejected as a paid feature, fall back to the94 unlisted URL and tell the user how to unlock the slug.952. Hand the user the public URL to link from their site/footer.963. Every later run (usually scheduled, often per-minute): regenerate the page with97 current state and the new updated-at, then update in place:98 ```bash99 echo "$STATUS_HTML" | bash scripts/publish.sh --update <id-or-slug> --expires-never100 ```101 or `update_site`. Keep the same site id.1024. To run live, wire step 3 into the user's scheduler/agent loop at the cadence they103 want.104105## What to tell the user106107Give them the public URL, confirm it is open to anyone (no login) and stays at one108address as it refreshes, and state the refresh cadence if you set one up. Remind them109that because it is public, only world-safe data should go on it, and confirm the PII110scan stayed strict. If the public slug needed a Pro unlock, say so and offer to walk111them through it.