Plan Preview
u-ichi/reviewable-html-workbench
Plan Mode の <proposedplan を出す直前に、計画の段階・依存関係・検証観点を一時HTMLで視覚確認したい時に使う agent-internal skill。Use this agent-internal skill to create a temporary HTML preview for a plan just before presenting…
Creates a visual engineering implementation plan as a single self-contained HTML page saved to specs/<name.html — the plan authored directly in styled HTML, with one AI-generated diagram image per…
$ npx skills add disler/pi-agent-observability --skill htmlvspec -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install disler/pi-agent-observability htmlvspec --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/disler/pi-agent-observability.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/htmlvspec .claude/skills/htmlvspec && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "htmlvspec" agent skill from https://github.com/disler/pi-agent-observability/tree/main/.claude/skills/htmlvspec into .claude/skills/htmlvspec/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "htmlvspec", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/disler/pi-agent-observability/tree/main/.claude/skills/htmlvspecType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add disler/pi-agent-observability --skill htmlvspec -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install disler/pi-agent-observability htmlvspec --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/disler/pi-agent-observability.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/htmlvspec .agents/skills/htmlvspec && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "htmlvspec" agent skill from https://github.com/disler/pi-agent-observability/tree/main/.claude/skills/htmlvspec into .agents/skills/htmlvspec/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "htmlvspec", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add disler/pi-agent-observability --skill htmlvspec -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install disler/pi-agent-observability htmlvspec --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/disler/pi-agent-observability.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/htmlvspec .cursor/skills/htmlvspec && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "htmlvspec" agent skill from https://github.com/disler/pi-agent-observability/tree/main/.claude/skills/htmlvspec into .cursor/skills/htmlvspec/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "htmlvspec", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/disler/pi-agent-observability.git --path .claude/skills/htmlvspec--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add disler/pi-agent-observability --skill htmlvspec -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install disler/pi-agent-observability htmlvspec --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/disler/pi-agent-observability.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/htmlvspec .gemini/skills/htmlvspec && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "htmlvspec" agent skill from https://github.com/disler/pi-agent-observability/tree/main/.claude/skills/htmlvspec into .gemini/skills/htmlvspec/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "htmlvspec", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install disler/pi-agent-observability htmlvspecInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add disler/pi-agent-observability --skill htmlvspec -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/disler/pi-agent-observability.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/htmlvspec .github/skills/htmlvspec && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "htmlvspec" agent skill from https://github.com/disler/pi-agent-observability/tree/main/.claude/skills/htmlvspec into .github/skills/htmlvspec/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "htmlvspec", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add disler/pi-agent-observability --skill htmlvspec -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install disler/pi-agent-observability htmlvspec --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/disler/pi-agent-observability.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/htmlvspec .opencode/skills/htmlvspec && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "htmlvspec" agent skill from https://github.com/disler/pi-agent-observability/tree/main/.claude/skills/htmlvspec into .opencode/skills/htmlvspec/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "htmlvspec", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
htmlvspecCreates a visual engineering implementation plan as a single self-contained HTML page saved to specs/<name.html — the plan authored directly in styled HTML, with one AI-generated diagram image per…
Htmlvspec is an agent skill from disler/pi-agent-observability. Creates a visual engineering implementation plan as a single self-contained HTML page saved to specs/<name.html — the plan authored directly in styled HTML, with one AI-generated diagram image per section (hero + per major H2) generated in parallel and embedded inline, plus a freeform HTML zone for custom HTML/CSS/SVG/JS that aids comprehension. Images are always generated. Use when the user says "htmlvspec", wants a visual/illustrated HTML implementation plan, a browser-openable spec with per-section diagrams…
Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/generate_image.py`).
It sits in Agent Workflows, covering Planning, HTML artifacts and Diagrams. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit cbb8cc3. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
uvFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
OPENAI_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Htmlvspec loads about 4.7k tokens when it runs. Until then it costs about 143 tokens; SKILL.md has 1,701 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
NAI_API_KEY" ] || grep -q OPENAI_API_KEY .env 2>/dev/null ) && echo "OPENAI_API_KEY found" || echo "OPENAI_API_KEY missiENAI_API_KEY` from the environment or a `.env` in the current working directory. If missing, stop and ask the user to seAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from disler/pi-agent-observability at commit cbb8cc3, republished under its MIT licence (© disler). 1,701 words, ~4,680 tokens.
.claude/skills/htmlvspec/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Produce a visual engineering implementation plan as one self-contained HTML page —
specs/<plan-name>.html — that you can open directly in a browser. The plan is authored
directly in HTML using the template below, with one AI-generated diagram image per
section (hero + per major H2) generated in parallel and embedded inline, and a dedicated
Freeform zone that lets you author any HTML you want (interactive toggles, animated SVG
flows, comparison matrices, decision trees, etc.) to make the plan clearer and richer than
prose could.
Phases, in order:
USER_PROMPT: $1
ALL_ARGUMENTS: $ARGUMENTS
PLAN_OUTPUT_DIRECTORY: specs/
PLAN_SLUG: kebab-case name derived from the plan topic (e.g. in-memory-ttl-lru-cache)
HTML_OUTPUT: specs/htmlvspec-<PLAN_SLUG>.html — the filename MUST always begin with the htmlvspec- prefix
IMAGE_DIR: specs/htmlvspec-<PLAN_SLUG>/ — sibling directory matching the HTML filename (same htmlvspec- prefix)
IMAGE_GENERATOR: ~/.claude/skills/htmlvspec/scripts/generate_image.py
IMAGE_SIZE: 2048x1152 (wide 16:9 by default)
IMAGE_QUALITY: high
HERO_IMAGE_NAME: 00-hero.png
MAX_TEXT_LABELS_PER_IMAGE: 10
MAX_TOTAL_IMAGES: 10
USER_PROMPT is provided, stop and ask the user to provide it.specs/htmlvspec-<PLAN_SLUG>.html.<style>, any JS inline in <script>, no external network/CDN dependencies unless genuinely required (and if so, note it in Notes).<ul>/<ol> for lists, <table> for comparisons, <pre><code> for code/commands.<figure>/<img> slots for the hero and every section that benefits from a diagram.generate_image.py call takes many seconds (often 20–60s). Running N images sequentially costs N × that latency; running them in parallel costs ~1× that latency. There is no reason to wait for one image to finish before starting the next — the calls are independent. Fire them all at once as background bash jobs in a single shell (uv run "$GEN" ... & per image, then a single wait), or as multiple Bash tool calls in the same turn. Never generate them one after another. Sequential generation is the single biggest thing that makes this skill slow and is treated as a defect.<figure><img src="htmlvspec-<PLAN_SLUG>/NN-section.png" alt="..."><figcaption>…</figcaption></figure> using a relative path (the .html file and its image folder travel together, both carrying the htmlvspec- prefix).The HTML Plan Template includes a Freeform zone (<section class="freeform">). Here — and
anywhere else a visual would help more than prose — you have full creative latitude to author
any HTML you want. Freeform is additive on top of the generated images; it uses inline
HTML/SVG, not generated images. Lean into freeform — even with per-section images, the
fine-grained implementation detail lives here.
<details>/<summary> for expandable deep-dives, alternative-considered-and-rejected, and FAQ-style "why not X".<table> for comparison matrices (option A vs B vs C), API contracts (field · type · required · description), decision matrices (criterion × option), and before/after columns.<dl>/<dt>/<dd> for definitions, glossaries, and field-by-field schema docs.<pre><code> blocks (with a language hint) for code snippets, shell sessions, JSON/YAML payloads, SQL, and diffs. Use <samp> for expected output and <kbd> for keystrokes/commands.<aside> (styled as a callout) for warnings, "gotchas", and side notes that would interrupt the main flow.<mark> to highlight the critical word/line a reader must not miss.<ol> for ordered, branching procedures; nested <ul> for grouped checklists.<figure> wrapping inline SVG with a <figcaption> so the diagram has a citable label.<figure> already shows the architecture, the freeform SVG/table should drill deeper (e.g. the image shows services and arrows; freeform shows the wire format on each arrow).--bg, --cyan, --amber, --red, --line, etc.) so freeform content matches the rest of the page and the generated images. SVG strokes/fills should use the same palette as both.specs/ if missing. Write specs/htmlvspec-<PLAN_SLUG>.html from the HTML Plan Template, filling every applicable section with detailed content. Leave the section <figure> slots pointing at htmlvspec-<PLAN_SLUG>/NN-*.png — those files are generated in the next phase.Prerequisite key check:
( [ -n "$OPENAI_API_KEY" ] || grep -q OPENAI_API_KEY .env 2>/dev/null ) && echo "OPENAI_API_KEY found" || echo "OPENAI_API_KEY missing"The generator reads OPENAI_API_KEY from the environment or a .env in the current working directory. If missing, stop and ask the user to set it.
Write the shared style brief once. Draft a per-image prompt for the hero + each section image (style is global, composition is local; ≤10 labels each).
Fire every image at once — in parallel. Each call takes many seconds; running them sequentially wastes minutes for no reason. There are two acceptable parallel patterns; pick one and execute it in a single tool call/turn.
Pattern A — one Bash call, every image as a background job, then wait:
GEN=~/.claude/skills/htmlvspec/scripts/generate_image.py
DIR=specs/htmlvspec-<PLAN_SLUG> # matches the htmlvspec- prefix of the .html file
uv run "$GEN" "<brief + hero composition>" "$DIR/00-hero.png" &
uv run "$GEN" "<brief + section-1 composition>" "$DIR/01-solution-approach.png" &
uv run "$GEN" "<brief + section-2 composition>" "$DIR/02-architecture.png" &
uv run "$GEN" "<brief + section-3 composition>" "$DIR/03-data-model.png" --size 1024x1024 &
wait
echo "all images done"The trailing & puts each job in the background so they all start immediately; wait blocks until they're all done. The generator creates parent dirs itself, so every job can start simultaneously.
Pattern B — N parallel Bash tool calls in a single message. If you can issue multiple tool calls in one turn, dispatch each generate_image.py as its own Bash call in the same message. The tool harness runs them concurrently — same effect as Pattern A.
Anti-pattern (do not do this): issuing one Bash call, waiting for it to return, then issuing the next. That is sequential and forbidden here. If you find yourself about to do that, stop and switch to Pattern A or B.
wide (2048x1152) is the default; pass --size 1024x1024/1152x2048 only when a section needs square/tall.
After wait, verify each PNG exists and is non-empty. Regenerate any failed section image (a single background job is fine). If the hero failed, stop and report.
<img> src paths are relative and match the generated filenames. Validate the HTML is well-formed (see Validation).Author the page from this skeleton. Keep the <head>/<style> block intact (it defines the
shared theme); fill the {{…}} slots; drop the conditional sections that don't apply. Every
<figure> block stays — each section gets its diagram.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Plan: {{TASK_NAME}}</title>
<style>
:root{
--bg:#0A0E1A; --panel:#111726; --ink:#F5F5F0; --muted:#9AA4B2;
--cyan:#22D3EE; --amber:#F59E0B; --red:#EF4444; --line:#1E2A3C;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
font:16px/1.65 -apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}
.wrap{max-width:980px;margin:0 auto;padding:48px 24px 96px}
header.hero{text-align:center;margin-bottom:36px}
header.hero h1{font-size:2.2rem;margin:0 0 10px;letter-spacing:-.02em}
.meta{color:var(--muted);font-size:.9rem}
.badge{display:inline-block;background:var(--cyan);color:#001018;border-radius:999px;
padding:2px 11px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
section{background:var(--panel);border:1px solid var(--line);border-radius:14px;
padding:24px 28px;margin:20px 0}
section>h2{margin:0 0 14px;color:var(--cyan);font-size:1.3rem;
border-bottom:1px solid var(--line);padding-bottom:10px}
figure{margin:18px 0 0}
figure img{width:100%;display:block;border:1px solid var(--line);border-radius:10px}
figcaption{color:var(--muted);font-size:.8rem;margin-top:6px;text-align:center}
ul,ol{padding-left:22px}
li{margin:4px 0}
table{width:100%;border-collapse:collapse;margin:12px 0}
th,td{border:1px solid var(--line);padding:8px 12px;text-align:left;vertical-align:top}
th{background:#0d1422;color:var(--cyan)}
pre{background:#0d1422;border:1px solid var(--line);border-radius:8px;padding:14px;overflow:auto}
code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em}
:not(pre)>code{background:#0d1422;border:1px solid var(--line);border-radius:6px;
padding:2px 6px;color:var(--amber)}
.freeform{border-style:dashed;border-color:var(--cyan)}
.freeform>h2::after{content:" · author anything that helps";color:var(--muted);
font-size:.7rem;font-weight:400;text-transform:none}
a{color:var(--cyan)}
</style>
</head>
<body>
<div class="wrap">
<header class="hero">
<h1>Plan: {{TASK_NAME}}</h1>
<p class="meta"><span class="badge">{{TASK_TYPE}}</span> · {{COMPLEXITY}}</p>
<figure>
<img src="htmlvspec-{{PLAN_SLUG}}/00-hero.png" alt="Visual overview — {{TASK_NAME}}">
<figcaption>System overview</figcaption>
</figure>
</header>
<section>
<h2>Task Description</h2>
{{TASK_DESCRIPTION_HTML}}
</section>
<section>
<h2>Objective</h2>
{{OBJECTIVE_HTML}}
</section>
<!-- include if task_type is feature OR complexity is medium/complex -->
<section>
<h2>Problem Statement</h2>
{{PROBLEM_STATEMENT_HTML}}
</section>
<section>
<h2>Solution Approach</h2>
<figure><img src="htmlvspec-{{PLAN_SLUG}}/01-solution-approach.png" alt="Solution approach"></figure>
{{SOLUTION_APPROACH_HTML}}
</section>
<!-- /conditional -->
<section>
<h2>Relevant Files</h2>
{{RELEVANT_FILES_HTML}} <!-- include an h3 'New Files' list if needed -->
</section>
<!-- include if complexity is medium/complex -->
<section>
<h2>Implementation Phases</h2>
<figure><img src="htmlvspec-{{PLAN_SLUG}}/02-phases.png" alt="Implementation phases"></figure>
{{PHASES_HTML}} <!-- Phase 1: Foundation / Phase 2: Core / Phase 3: Integration & Polish -->
</section>
<!-- /conditional -->
<section>
<h2>Step by Step Tasks</h2>
{{STEPS_HTML}} <!-- ordered list; foundational first; last step validates the work -->
</section>
<!-- include if task_type is feature OR complexity is medium/complex -->
<section>
<h2>Testing Strategy</h2>
{{TESTING_HTML}}
</section>
<!-- /conditional -->
<section>
<h2>Acceptance Criteria</h2>
{{ACCEPTANCE_HTML}} <!-- specific, measurable -->
</section>
<section>
<h2>Validation Commands</h2>
<pre><code>{{VALIDATION_COMMANDS}}</code></pre>
</section>
<!-- FREEFORM ZONE: author ANY self-contained, on-theme HTML/CSS/SVG/JS that aids the plan -->
<section class="freeform">
<h2>Freeform</h2>
{{FREEFORM_HTML}}
</section>
<section>
<h2>Notes</h2>
{{NOTES_HTML}} <!-- dependencies (uv add ...), external assets used by freeform, caveats -->
</section>
</div>
</body>
</html>✅ Visual HTML Implementation Plan Created
File: specs/htmlvspec-<PLAN_SLUG>.html (open in a browser)
Topic: <brief description of what the plan covers>
Images: <count succeeded> / <count attempted> in specs/htmlvspec-<PLAN_SLUG>/
Freeform: <one line on what custom HTML you added, if any>
Key Components:
- <main component 1>
- <main component 2>
- <main component 3>
Open with: open specs/htmlvspec-<PLAN_SLUG>.html# file exists and is non-trivial HTML
test -s specs/htmlvspec-<PLAN_SLUG>.html && head -1 specs/htmlvspec-<PLAN_SLUG>.html | grep -qi '<!DOCTYPE html>' && echo "HTML ok"
# every <img src> file exists; paths relative; no prompt used more than 10 labels© disler, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (scripts) in .claude/skills/htmlvspec of disler/pi-agent-observability.
Open the folder on GitHubat commit cbb8cc3
Htmlvspec next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Htmlvspec this skilldisler/pi-agent-observability | 145 | — | ~4.7k | Automated safety check: Notes | MIT | |
| Plan Previewu-ichi/reviewable-html-workbench | 298 | 1 repos | ~1.8k | Automated safety check: Pass | MIT | |
| Visualizedisplay-dev/visualize | 131 | — | ~7.4k | Automated safety check: Pass | MIT | |
| Plannotator Visual Explainerbacknotprop/plannotator | 9.2k | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| PRP Visual Companion PageWirasm/prp | 2.3k | — | ~1k | Automated safety check: Pass | MIT | |
| PRP Companion PageWirasm/prp | 2.3k | — | ~990 | Automated safety check: Pass | MIT |
u-ichi/reviewable-html-workbench
Plan Mode の <proposedplan を出す直前に、計画の段階・依存関係・検証観点を一時HTMLで視覚確認したい時に使う agent-internal skill。Use this agent-internal skill to create a temporary HTML preview for a plan just before presenting…
display-dev/visualize
Generate beautiful, on-brand HTML artifacts — reports, diagrams, diff reviews, slide decks, plans, recaps, dashboards.
backnotprop/plannotator
Builds self-contained HTML explainers for plans, pull requests and technical concepts in Plannotator's theme, then opens them in its annotation view.
Wirasm/prp
Writes a self-contained HTML companion beside a PRP plan or review that shows the diagram, steps, risks, verdict and findings, each item with a stable id.
Wirasm/prp
Writes a self-contained HTML page beside a PRP plan or review that shows the diagram, steps, risks or findings, with a stable id on every item.
u-ichi/reviewable-html-workbench
HTMLを最終成果物として生成・検証・プレビューしたい時に使う共通レンダラー。Use this shared renderer when the user wants content turned into a final, validated, previewable HTML artifact.
disler/pi-agent-observability
Creates a text-only engineering implementation plan as a single self-contained HTML page saved to specs/<name.html — the plan authored directly in styled HTML plus a freeform HTML zone where the…
disler/pi-agent-observability
Creates a concise engineering implementation plan based on user requirements and saves it to specs directory
Categories
Creates a visual engineering implementation plan as a single self-contained HTML page saved to specs/<name.html — the plan authored directly in styled HTML, with one AI-generated diagram image per…. Htmlvspec is an agent skill from disler/pi-agent-observability.html — the plan authored directly in styled HTML, with one AI-generated diagram image per section (hero + per major H2) generated in parallel and embedded inline, plus a freeform HTML zone for custom HTML/CSS/SVG/JS that aids comprehension.
Htmlvspec fits situations like: the user says htmlvspec; wants a visual/illustrated HTML implementation plan; A browser-openable spec with per-section diagrams; any HTML plan where images are required.
Run `npx skills add disler/pi-agent-observability --skill htmlvspec -a claude-code`. Or copy the skill folder (.claude/skills/htmlvspec in disler/pi-agent-observability) into .claude/skills/htmlvspec in your project. Claude Code loads it when a task matches its description.
Run `npx skills add disler/pi-agent-observability --skill htmlvspec -a codex`. Or copy the skill folder (.claude/skills/htmlvspec in disler/pi-agent-observability) into .agents/skills/htmlvspec in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add disler/pi-agent-observability --skill htmlvspec -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/htmlvspec, .gemini/skills/htmlvspec, .github/skills/htmlvspec and .opencode/skills/htmlvspec in your project.
Going by SKILL.md and its folder, Htmlvspec needs Python for the scripts in its folder, the command-line tools its instructions call (uv) and credentials named OPENAI_API_KEY. Our summary lists: Python 3; A credential in OPENAI_API_KEY.
SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Htmlvspec is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Htmlvspec: Plan Preview (u-ichi/reviewable-html-workbench, 298 stars), Visualize (display-dev/visualize, 131 stars), Plannotator Visual Explainer (backnotprop/plannotator, 9.2k stars) and PRP Visual Companion Page (Wirasm/prp, 2.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
disler (a GitHub user) maintains it in disler/pi-agent-observability, which has 145 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on May 31, 2026.
Source: disler/pi-agent-observability on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.