impulse-artifact

Builds interactive HTML reports, diagrams, and plans that you can share and view in any browser.

Installation
Run `npx skills add "https://github.com/lowcoware/impulse" --skill "impulse-artifact"` to install this skill, then follow its SKILL.md instructions for my next request.

Paste this into Claude Code, Cursor, or any agent that can run commands.

SKILL.mdShow the author's original SKILL.md
---
name: impulse-artifact
description: "Generate a self-contained, single-file HTML artifact — a report, plan, comparison, prototype, or full-screen interactive diagram — calibrated against a curated example gallery. Mandatory dark mode. Not a Vue/Nuxt app: a one-off shareable document. Triggers: \"/impulse-artifact\", \"make an HTML report\", \"visualize this architecture\", \"html diagram\", \"turn this into a plan page\", \"self-contained html\", \"one-file html artifact\", \"сделай html отчёт\", \"визуализируй архитектуру\", \"html диаграмма\", \"сделай план в html\", \"визуальный артефакт\", \"покажи схему архитектуры\", \"инфографика\", \"infographic\", \"one-pager\", \"интерактивный отчёт\", \"сделай красивую страницу с результатами\", \"оформи как презентацию\". From plannotator/effective-html (MIT) + Anthropic's html-effectiveness example gallery (Apache-2.0)."
---

# impulse-artifact

The artifact-generation counterpart to `impulse-md-generator`: that skill
formats structured Markdown for Obsidian; this one renders a single
self-contained HTML file for anything meant to be opened as a document —
a report, plan, comparison, prototype, or diagram — not a production Vue
app. If the deliverable needs routing, state management, or a build step,
it's impulse-frontend's job, not this skill's.

The single rule everything else here serves: calibrate against
`references/self-reference.html` first, ship the result as one
self-contained file, dark mode always on.

## Workflow

1. **Pick a genre** — general / plan / diagram. `references/genres.md`.
2. **Calibrate the visual system against `references/self-reference.html`
   first** — it is the canonical baseline for every artifact this skill
   ships: Apple restraint + lowcoware DNA (warm near-black canvas, one red
   accent, thin borders, bold display headline with italic accent word,
   glow-blob card detail; dark is the canonical mode). Start from its
   tokens and hierarchy. Treat the gallery (`references/gallery.md`, 21
   files in `examples/`) as secondary: use it for structure, density, and
   tone of the chosen genre, and keep colors and type from
   self-reference.html. `references/palette.md` documents the
   Anthropic-corpus tokens the gallery converges on — a fallback for
   component patterns (dot/pill/delta) where self-reference.html is
   silent, always subordinate to it.
3. **Content already decided elsewhere?** A calling skill (impulse-pm,
   impulse-review, impulse-debt, impulse-goal) usually supplies WHAT the artifact
   says — this skill only decides HOW it renders. `references/handoff.md`.
4. **Dark mode, always** — CSS variables, toggle, `localStorage`,
   apply-before-paint script. Non-negotiable on every artifact, every
   genre. `references/dark-mode.md`. This deliberately overrides
   `impulse-frontend`'s theme-is-a-per-project-decision rule — for
   standalone single-file documents only, never for product UI.
5. **Diagram genre only** — pan/zoom technique, dismissible overlays,
   motivated interactivity. `references/pan-zoom.md`.
6. **Ship as one file.** Pure browser-native code — no build step, no
   external dependencies — the whole point is "open this file and it
   works."
   - Exception: `export-toolbar.md`'s pinned+SRI CDN scripts, and only
     when the user actually wants export-outside-the-chat.
   - Everything else, charting libraries included: hand-build the SVG
     per this skill's own techniques instead of reaching for
     D3/Chart.js/etc.
   - A ` ```mermaid ` fence (or `<pre class="mermaid">` in HTML) is not a
     CDN dependency — Artifacts renders it natively, no script tag
     involved — but reserve it for a simple static structural diagram;
     the diagram genre's pan/zoom, clickable nodes, and animated request
     paths (`pan-zoom.md`, `animated-connectors.md`) need hand-built SVG,
     which mermaid's output can't give you.

## What this is not

Not a template-fill exercise — the gallery teaches calibration (how much
prose, how dense, what tone), not fields to substitute. A diagram request
that comes back prose-heavy, or a report that comes back as a bare wall of
text, means the wrong genre was picked in step 1.

## References

| File | Covers | Load when |
|---|---|---|
| references/genres.md | the three genres and their rules | every task, first read — pick the genre |
| references/gallery.md | index of all 21 vendored examples, genre-tagged | secondary reference — structure/density/tone of the chosen genre, never the visual system |
| references/palette.md | Anthropic-corpus token set (colors, type scale, radius, dot/pill/delta component patterns), dark variant | fallback for component patterns where self-reference.html is silent |
| references/dark-mode.md | the four mandatory dark-mode pieces + reference implementation | every artifact |
| references/pan-zoom.md | SVG pan/zoom technique: 1:1 pan, cursor-anchored zoom, click-after-drag suppression | diagram genre |
| references/animated-connectors.md | flowing dashed connectors, traveling request dots, z-order, SMIL reduced-motion handling | diagram genre, a request/data-flow sequence needs animating |
| references/export-toolbar.md | copy/PNG/PDF export pattern (html2canvas + jsPDF, pinned + SRI), collapsed toolbar UI | user wants the artifact shareable outside the chat (diagram, dashboard, prototype) |
| references/handoff.md | where an artifact request comes from (impulse-pm/review/debt/goal), the content-vs-format contract | the request originates from another impulse skill's output |
| references/self-reference.html | the canonical visual baseline — Apple restraint + lowcoware DNA (impulse-frontend/references/design-systems), general+plan+diagram genre techniques in one file | every task, before writing markup — the visual system every artifact inherits; also regenerate and diff when the rules above change |

## Boundaries

- Content policy (should this document exist, what cadence, what it says)
  stays with the calling skill — impulse-project-management for specs/retros/
  status reports, impulse-review for findings. This skill formats; it never
  decides.
- Ongoing notes that live in an Obsidian vault → `impulse-md-generator`, not
  this skill. This skill is for a standalone shareable file.
- A production Vue/Nuxt surface (routing, state, a real app) →
  `impulse-frontend`. This skill is for a one-off document.
- Visual quality bar (banned defaults, one accent, no fake-precise numbers)
  is `impulse-frontend/references/ai-tells.md` — a smaller surface than a full
  app, but the same discipline; see `dark-mode.md`'s note on this.
- Voice on generated prose → `impulse-humanizer`, same automatic-trigger
  pattern impulse-md-generator uses.
- **CSP is a real deployment constraint this skill can't design around.**
  A single-file artifact leans entirely on inline `<script>`/`<style>` —
  the exact pattern a real Content-Security-Policy exists to restrict, since
  inline JS is one of the most common XSS vectors. If the artifact ever
  gets served through infrastructure enforcing a strict CSP (an internal
  wiki, a doc portal, anywhere adding a `script-src`/`default-src`
  directive), inline scripts silently stop executing unless that
  infrastructure adds a matching nonce/hash — which a static single file
  can't provide for itself, and a hash breaks the moment the script's
  whitespace changes on the next edit. This skill has no lever to pull
  here; if the artifact needs to survive a strict-CSP host, that's a
  hosting-side decision (nonce injection, or serving as a sandboxed
  `iframe`) outside this skill's scope — flag it, don't silently assume
  the artifact will just run wherever it's opened.
- "stop impulse" / "normal mode": revert to default behavior.

## Before you finish

- Did you calibrate against `references/self-reference.html` first, keeping
  its colors and type rather than the vendored gallery's?
- Does the artifact ship as one self-contained file, with dark mode wired
  through CSS variables, a toggle, `localStorage`, and an
  apply-before-paint script?
- If it's the diagram genre, does it use hand-built SVG (pan/zoom,
  clickable nodes) rather than a charting library or a plain mermaid
  fence for anything interactive?
- Did content decisions (should this document exist, what it says) stay
  with the calling skill, with this skill only owning HOW it renders?
- If the artifact might be served behind a strict CSP, did you flag that
  instead of assuming it will just run?

## Lineage

Genre split (general/plan/diagram) and the dark-mode + pan-zoom techniques
are plannotator/effective-html (MIT). The 21-file example gallery under
`examples/` is Anthropic's own "unreasonable effectiveness of HTML" sample
set (Apache-2.0), vendored directly — plus one interactive architecture
exemplar from plannotator/effective-html (MIT). `handoff.md` and the
ai-tells/humanizer integration are original to the impulse suite.

Ships with 31 supporting files:

  • examples/01-exploration-code-approaches.html
  • examples/02-exploration-visual-designs.html
  • examples/03-code-review-pr.html
  • examples/04-code-understanding.html
  • examples/05-design-system.html
  • examples/06-component-variants.html
  • examples/07-prototype-animation.html
  • examples/08-prototype-interaction.html
  • examples/09-slide-deck.html
  • examples/10-svg-illustrations.html
  • examples/11-status-report.html
  • examples/12-incident-report.html
  • examples/13-flowchart-diagram.html
  • examples/14-research-feature-explainer.html
  • examples/15-research-concept-explainer.html
  • examples/16-implementation-plan.html
  • examples/17-pr-writeup.html
  • examples/18-editor-triage-board.html
  • examples/19-editor-feature-flags.html
  • examples/20-editor-prompt-tuner.html
  • … and 11 more

Mirrored from the author's public source. Install counts from the open skills registry.

The systems behind these skills get built for partners every week.

Partner with us