gptme/gptme-contrib/html-artifact-qa
- community
Checking that the SKILL.md file is still in the repository.
Use when a user asks a complex, multi-part, or deeply technical question that benefits from interactive HTML output: visualizations, collapsible sections, live code, diagrams. Do NOT use for simple factual questions, short code completions, or conversational replies.
Install
npx vskill@latest install gptme/gptme-contrib/html-artifact-qaSKILL.md
HTML Artifact Q&A Skill
Respond to complex technical questions with rich, interactive HTML artifacts rendered natively in gptme's webui.
When to use
Fire this skill when the question has two or more of these complexity signals:
- Multi-part: asks "how/why/what" about a system with multiple components
- Visual benefit: the answer is clearer with a diagram, table, or chart
- Technical depth: involves algorithms, protocols, distributed systems, data
structures, or debugging multi-layer stacks
- Long question: >3 sentences or multiple nested sub-questions
Simple lookups, one-liner code completions, and conversational replies do NOT warrant an HTML artifact — prefer plain text for those.
Rendering path
gptme renders html codeblocks as first-class artifacts via artifacts_api.py (RENDERABLE_KINDS includes "html"). No extra tool calls needed: output an HTML codeblock and the webui surfaces it as an iframe-previewed artifact.
Layout guidelines
- TL;DR first: a 1-2 sentence plain-language summary before the details.
- `<details>` sections: each major concept gets its own collapsible.
- Comparisons → tables: use
<table>for side-by-side comparisons or option
lists.
- Code examples → `<pre><code>`: use plain
<pre><code>blocks; no external
syntax highlighter. CSS color: inherit and a contrasting background are enough for readability without an external library.
- Diagrams → inline SVG: small ASCII-to-SVG or hand-crafted SVG for flow/
state diagrams. No external chart library needed for simple diagrams.
- Self-contained: no external dependencies. The artifact must render
offline-first — no CDN script tags, no remote fetch.
Output safety: escape user-derived text
The question topic and any quoted user content are user-controlled strings. HTML-escape them before embedding — a question like explain <img src=x onerror=alert(1)> must render as text, not execute. Use one of these two mechanisms, both shown in the template:
- Write user-derived text into the markup only as the routine's OUTPUT —
run the RAW text through this routine exactly once, then embed what it returns: s.replace(/[&<>"']/g, c => ({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c])) Entities in text nodes render as the original characters, so the display is correct and no script is involved. Example: raw input <img src=x> → embed <img src=x>.
- No user text in JavaScript, ever: no user-derived content inside
<script> blocks, JS string literals, or event-handler attributes — </script> in the input would break out of the script element. Do not "un-escape" escaped markup by reading it back with textContent — entities would show literally.
Exactly one routine pass per piece of raw text — never zero, never two. Every < & sequence you write into the artifact must be the result of escaping one piece of RAW user text. A concrete example of correct OUTPUT: raw input <img src=x> → embed <img src=x>. Running already-escaped text through the routine again double-escapes it (< → &lt;) and renders entities visibly; writing raw < from user input directly into markup is XSS.
Treat the artifact as untrusted input rendered in an iframe on the user's machine: never interpolate raw user text into <title>, <h1>, attribute values, or inline <script>.
After the artifact
Follow the HTML codeblock with a one-paragraph plain-text summary for users who skim or use the terminal interface. Do not repeat the full content — just name the sections and where the key insight lives.
Related
- gptme artifact infrastructure:
gptme/server/artifacts_api.py ArtifactDescriptor(kindiframe/live_app):gptme/message.py- Skill origin:
tasks/html-artifact-qa-skill.md(idea #5780)
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/html-artifact-qa/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/gptme/gptme-contrib/html-artifact-qa)