plan-html
Skill0 starsChanged 39 days agoMITView on GitHub
Render a markdown plan file as a self-contained, shareable HTML page. Use it whenever the user says /plan-html, "render the plan", "make this plan viewable", "HTML version of the plan", or wants to send a plan to someone who won't read markdown, share a plan with a stakeholder, or hand off a roadmap. Composes with any plan — brainstorm output, SDLC plans, refactor docs, threat models. Output is throwaway: the .md remains canonical.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- DoryZi/plan-htmltheir own version, first seen Jun 15, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- DoryZi/plan-html★ 3same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository14 other files it gives its agents.
- AGENTS.mdAGENTS.md
- brainstormSkill
- brainstorm-teamSkill
- code-tourSkill
- dead-code-reviewSkill
- docstring-syncSkill
- flowsimSkill
- gotchaSkill
- repo-healthSkill
- repo-onboardingSkill
- sdlcSkill
- sdlc-statusSkill
- taskSkill
- test-checkSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 3 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 33
If the path doesn't exist or isn't markdown, stop and report.
- Distinctive: line 45
Read the plan file. Extract:
- Very specific: line 110
Read templates/plan.html.template (sibling of this SKILL.md).
- Very specific: line 130
Write to <plan-file-stem>.html next to the source.
- Distinctive: line 143
Don't actually run the open command — just print it.
- Very specific: line 166
If a future change forks the template, update the cross-references in this SKILL.md too — no template duplication.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
/plan-html — markdown plan to a single-file shareable HTML
Scope note
The TOC starts paying for itself at 3+ top-level sections; for a 1–2 section plan it is noise, and the skill omits it automatically. This never auto-fires — you invoke it, and the markdown stays the source of truth.
Argument
<plan-file> — path to a markdown file. Required. Relative paths
resolve against the current working directory. Common locations:
plans/<slug>.mdplans/tasks/task-N-<slug>.mddocs/plans/<slug>.md(a skill repo's plan location)docs/<name>.md- Any markdown file in the repo
If the path doesn't exist or isn't markdown, stop and report.
Output
Writes to <plan-file>.html (same dir, same stem). E.g.
plans/refactor-zero-flag.md → plans/refactor-zero-flag.html.
Single self-contained file, ~5–15 KB depending on plan size. Embedded
<style>, zero external assets, zero JavaScript. Opens in any browser.
Stage 1 — Parse the plan
Read the plan file. Extract:
- Title:
# Headingon line 1 (or the first#heading). If none, use the file's stem with_and-replaced by spaces, title-cased. - Frontmatter (optional, between two
---lines at top): YAML fields. Most useful:status,owner,parent_plan,updated,created. All optional. - Sections:
##headings as top-level sections,###as subsections. Preserve order. - Roadmap section: a
## Roadmapor## Phasesheading, if present, gets pinned at the top in the roadmap block. Otherwise, auto-derive (see Stage 2).
Stage 2 — Build the generated blocks
Read references/blocks.md (next to this SKILL.md) now. It carries all three, with the exact
markup for each:
- 2a — table of contents from the plan's headings, with anchor ids that match the body.
- 2b — roadmap from the plan's Implementation Steps, one row per step.
- 2c — inline SVG visuals, data-driven from the plan's own content. Hand-author compact,
valid SVG (
viewBox="0 0 660 400",width:100%); never link an external image — the page must stand alone.
Skip any block the plan gives no material for, and say which you skipped rather than emitting an empty shell.
Stage 3 — Convert markdown body to HTML
Walk the plan body (everything after the title and frontmatter, excluding the roadmap section since it's already rendered above). Translate inline, no library — the substitutions are simple and deterministic:
| Markdown | HTML |
## Section | <h2 id="section-slug">Section</h2> |
### Sub | <h3 id="sub-slug">Sub</h3> |
#### Sub-sub | <h4>Sub-sub</h4> |
**bold** | <strong>bold</strong> |
*italic* | <em>italic</em> |
`code` | <code>code</code> |
```lang ... ``` | <pre><code>...</code></pre> (escape <>&) |
- item / * item | <ul><li> |
1. item | <ol><li> |
- [x] item | <li><input type="checkbox" checked disabled> item</li> |
- [ ] item | <li><input type="checkbox" disabled> item</li> |
> quote | <blockquote> |
[text](url) | <a href="url">text</a> |
--- on its own line | <hr> |
| Markdown tables | <table><thead><tr><th> etc. |
No auto-collapse. Render every ## section as a plain
<section><h2 id="slug">Title</h2>...</section> with all of its
content visible. The TOC at the top is the navigation aid; the doc
itself is scannable top-to-bottom (reader-mode default, not
explorer-mode). If a future plan genuinely needs a foldable subsection,
the author can drop raw <details> HTML into the markdown — markdown
allows it and the browser renders it natively.
Always escape <, >, & inside code blocks and inline code.
Pass them through outside code (markdown allows raw HTML).
Stage 4 — Substitute into the template
Read templates/plan.html.template (sibling of this SKILL.md). Fill
placeholders:
| Placeholder | Value |
{{TITLE}} | Parsed title (HTML-escaped) |
{{STATUS_BADGE}} | <span class="badge badge-<status>">status</span> if frontmatter status: present, else empty |
{{META_LINE}} | Joined non-status frontmatter fields: by {owner} · updated {updated}. Empty if no frontmatter. |
{{TOC_BLOCK}} | Stage 2a output, or empty string (1–2 section docs) |
{{ROADMAP_BLOCK}} | Stage 2b output, or empty string |
{{CONTENT_HTML}} | Stage 3 output |
{{SOURCE_PATH}} | Original plan path (relative to repo root) |
{{RENDER_DATE}} | ISO date (YYYY-MM-DD) of the render |
Status badge variants supported by template CSS: active,
in-progress, completed, done, blocked, draft, pending.
Unknown values fall through with no styling (just default gray).
Stage 5 — Write and report
Write to <plan-file-stem>.html next to the source. Print:
Wrote <output-path> (<size> KB)
Open: <platform-appropriate open command>Open commands by platform:
- macOS:
open <path> - Linux:
xdg-open <path> - Windows / WSL:
wslview <path>(orstart <path>on native Windows)
Don't actually run the open command — just print it. The user opens when ready.
Gotchas
- Don't fetch external assets. No
<script src="...">, no<link rel="stylesheet" href="...">, no CDNs. The output must work offline and as an email/Slack attachment. - Don't add JavaScript. Anchor links +
<details>cover everything the skill needs. If you find yourself wanting JS, the answer is "the markdown is the truth, the HTML is a sidecar — keep it static." - Don't try to parse complex markdown. This isn't a full CommonMark renderer. Stick to the table in Stage 3. If a plan uses something exotic (footnotes, definition lists, image embeds with sizing), pass it through as best-effort and note "rendered as-is" in the footer.
- Don't write
.htmlwhen the source is in a non-plans/location without checking —docs/plans/counts as aplans/location here (it's where a skill repo's own/brainstorm//brainstorm-team//sdlcplans live, auto-detected the same way/sdlcdetects a skill repo), so a plan there gets its.htmlsibling with no note. If the user passesdocs/CONVENTIONS.md(a non-plan doc), the output goes todocs/CONVENTIONS.html. Mention this in the final report so they aren't surprised. - The template lives at
skills/plan-html/templates/plan.html.template. If a future change forks the template, update the cross-references in this SKILL.md too — no template duplication.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

