agentleFS
exerias21exerias21/brainstorm-toolkit/skills/plan-html/SKILL.md

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

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    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.

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
  1. Distinctive:

    If the path doesn't exist or isn't markdown, stop and report.

    line 33
  2. Distinctive:

    Read the plan file. Extract:

    line 45
  3. Very specific:

    Read templates/plan.html.template (sibling of this SKILL.md).

    line 110
  4. Very specific:

    Write to <plan-file-stem>.html next to the source.

    line 130
  5. Distinctive:

    Don't actually run the open command — just print it.

    line 143
  6. Very specific:

    If a future change forks the template, update the cross-references in this SKILL.md too — no template duplication.

    line 166

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

/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>.md
  • plans/tasks/task-N-<slug>.md
  • docs/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: # Heading on 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 ## Roadmap or ## Phases heading, 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:

MarkdownHTML
## 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:

PlaceholderValue
{{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> (or start <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 .html when the source is in a non-plans/ location without checking — docs/plans/ counts as a plans/ location here (it's where a skill repo's own /brainstorm//brainstorm-team//sdlc plans live, auto-detected the same way /sdlc detects a skill repo), so a plan there gets its .html sibling with no note. If the user passes docs/CONVENTIONS.md (a non-plan doc), the output goes to docs/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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.