ci-triage
Diagnose a failing GitHub Actions run — find the first real error in the logs, tell a flake apart from a genuine failure, and identify the commit that broke…
Build and publish a self-contained HTML page to Superset, then answer the comments readers pin to it. Use when the user asks to make or publish a page, turn a report, dashboard, chart, doc, or analysis into a shareable link, update or re-version a page already published, or work
$ npx -y skills add superset-sh/superset --skill page --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/pageContext preview
The summary Claude sees to decide when to auto-load this skill.
Build and publish a self-contained HTML page to Superset, then answer the comments readers pin to it. Use when the user asks to make or publish a page, turn a report, dashboard, chart, doc, or analysis into a shareable link, update or re-version a page already published, or work
name: page description: Build and publish a self-contained HTML page to Superset, then answer the comments readers pin to it. Use when the user asks to make or publish a page, turn a report, dashboard, chart, doc, or analysis into a shareable link, update or re-version a page already published, or work through comments left on one, including "make me a page for this", "publish this as a page", "share it as a link", "add a version", "address the comments on that page". argument-hint: what the page should show, or a page id/slug to update allowed-tools: Bash(superset:*)
A page is an **`.html` document** published to a URL people in the org can open. Publish a single file and it must be self-contained; publish a directory and its `index.html` is the document, with the images, stylesheets, and media it references by relative path published alongside it. Every publish mints a version, so a page has history. Readers can pin a comment to any element on it, and those comments come back to an agent to fix. That is what makes a page a working surface rather than an export.
Pages are served from their own origin under a strict content policy. Most of the work in this skill is respecting that policy; a page that ignores it looks fine locally and breaks silently once published.
Publish a page when the work has a **reader** and wants a **link**: a report someone will skim, a dashboard for a standup, a comparison table, a diagram, a walkthrough of what you changed.
Other skills produce exactly that and stop at the terminal. A standup digest, a summary of a parallel run across several workspaces, a feature scorecard, the screenshots from a browser or desktop verification: each has a reader who is not in the session, and each is better as a link than as scrollback. Recurring ones gain the most, since republishing versions one page rather than littering the org with a new one every day. That only holds when the workspace and the path both stay the same, which is the identity of a page: a job that runs somewhere new each time needs `--page <id>` instead.
Don't publish when the artifact belongs in the repo (source, docs, config: put those in files and commit them), or when it genuinely needs a server, a database, or a login. A page has none of those.
If you're unsure, ask. Publishing is cheap and reversible, but a page the user didn't want is noise in their org's list.
Every page gets its own origin, `https://<pageId>.frame.supersetusercontent.com`, and is framed with `sandbox="allow-scripts allow-same-origin allow-forms allow-popups"`. So the page is a real origin of its own, and a locked-down one. The policy is `default-src 'none'` with a short allowlist, and it is enforced identically in the desktop pane and the web viewer:
all blocked, and so is `fetch("data:...")`: a page cannot read its own inlined data URIs back out. Write pages that need no network at all: bake the data into the document as a literal, or decode base64 in JavaScript (`atob`, then `Uint8Array.from`).
so `eval()` and `new Function()` both raise an `EvalError`. This rules out inlining any library that builds functions at runtime, which includes several chart and templating libraries and a number of date and expression helpers. Check for it before you reach for a dependency: the page renders nothing and gives no visible reason why.
`<script src="https://…">` is always blocked. `<link rel="stylesheet" href="https://…">` is blocked too, except from `fonts.googleapis.com`, so a Google Fonts `<link>` tag works as-is. A directory publish's own files load fine (relative `src`/`href`), and any remote font *file* is allowed, so an inline `@font-face { src: url(https://…) }` also works for fonts from elsewhere.
but prefer `data:` URIs for anything the page cannot do without: a reader with the network off sees nothing, and a remote image makes every reader's browser call that host directly, which hands a third party the IP address of everyone who opens the page.
`sessionStorage`, `indexedDB` and cookies persist across reloads and across versions of the same page. Use it for a chosen tab or filter, never for anything the page cannot rebuild from its own content.
`window.parent.document` and `window.top.location` throw. Superset injects one script into the page for comment anchoring; nothing else listens to `postMessage`, so don't build a handshake on it.
controls, but submitting it goes nowhere. Handle inputs in script.
Scripts and popups *do* work. Inline JS runs normally, so charts, filters, sorting, tabs, and interactive controls are all fine, as long as everything they need is already in the file.
1. **`.html` only.** Any other extension is rejected at the CLI. 2. **One file, or one directory.** `superset pages publish ./report/` publishes a directory: `index.html` is the page, and every other file ships at its relative path, so `<video src="demo.mp4">`, `<link href="site.css">` and `<script src="app.js">` all work. Asset paths may not start with `versions/`, `files/`, `_superset/` or `~`, or be named `thumbnail.jpg`. Assets go up to 1 GiB each; on republish, unchanged assets are not re-uploaded. Prefer H.264 MP4 or WebM for video: iPhone `.mov` recordings may not play in every browser. Remote CDN links and external styleshee
Superset is an agentic IDE to orchestrate 100+ coding agents in parallel. Run any agent with your own subscription.
Diagnose a failing GitHub Actions run — find the first real error in the logs, tell a flake apart from a genuine failure, and identify the commit that broke…
Triage a GitHub issue into something actionable — reproduce the claim, find duplicates, judge severity, and apply labels, milestone, and assignee. Use when the…
Find and merge duplicate Linear issues — group reports of the same underlying bug, pick the survivor, and move the evidence across. Use when the backlog has…
Turn a rough report into a Linear issue someone can pick up — reproduce the claim, check for duplicates, and fill in team, priority, and labels. Use when the…
Draft a Linear project status update from what actually moved — progress, risks, and the one decision that needs making. Use when someone asks for a project…
Personalized audit that teaches the advanced Superset features the user isn't using yet (automations, parallel agents, tasks, multi-host, terminal remote…