/preview — HTML Preview

SkillWeb & browsing

Render vault notes as styled HTML and open in browser. Turn markdown docs, decisions, progress reports into readable previews. Use for "/preview docs/project-a/checkout-flow.md", "/preview progress all", "/preview decide auth-approach", or when user wants to see a doc before sharing.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the /preview — HTML Preview skill

What this skill tells your AI

The instructions your AI receives, as published by kv0906/pm-kit in .claude/skills/preview/SKILL.md and read by ahel’s review.

Render vault content as styled HTML for browser viewing. Markdown stays the source of truth; HTML is the presentation layer.

Context

Today's date: !date +%Y-%m-%d

Config: @_core/config.yaml Preview rules: @.claude/rules/preview-formats.md HTML shells: @_templates/html/ Processing logic: @_core/PROCESSING.md

Usage

/preview docs/project-a/checkout-flow.md
/preview decisions/project-a/2026-06-29-auth-approach.md
/preview progress all
/preview progress project-a --week
/preview decide auth-approach
/preview block api-rate-limit
/preview meet 2026-06-29-sync-sprint-review
/preview reports/2026-06-29-progress-all.md

Flags

FlagEffect
--with-linksInline first paragraph from linked notes
--no-openWrite HTML only, do not open browser
--shell memo|prd|status|executiveForce template shell
--linkWrite preview: path to source note frontmatter

Session Task Progress

TaskCreate: "Resolve preview source"
  activeForm: "Resolving preview source..."

TaskCreate: "Render HTML"
  activeForm: "Rendering HTML preview..."

TaskCreate: "Open and verify"
  activeForm: "Opening preview in browser..."

Processing Steps

1. Parse Input

Determine source mode:

Input patternAction
Path to .md fileRead that file directly
progress {project|all}Synthesize like /progress, use status shell
decide {slug}Glob decisions/*/*{slug}*.md, pick latest
block {slug}Glob blockers/*/*{slug}*.md
meet {slug}Glob meetings/*{slug}*.md
doc {project} {slug}Read docs/{project}/{slug}.md

If ambiguous, ask user to clarify path.

2. Gather Content

File mode: Read markdown + frontmatter.

Synthesis mode (progress): Follow /progress gather steps:

  • Scan dailies, blockers, docs, decisions for project/timeframe
  • Build structured sections: Shipped, In Progress, Blockers, Decisions
  • Count metrics for status shell

3. Select HTML Shell

Auto-detect from source:

SourceShell
docs/shell-prd.html
decisions/, meetings/, blockers/shell-memo.html
progress synthesisshell-status.html
reports/*executive*shell-executive.html
Othershell-memo.html (default)

Override with --shell flag.

4. Convert Markdown → HTML

  • Remove YAML frontmatter block
  • Map frontmatter to shell vars: project, status, date, title (from H1 or filename)
  • Convert body markdown to semantic HTML
  • Resolve [[wikilinks]] per preview-formats.md
  • Escape user content in HTML (no XSS — literal text only)

5. Write Output

  • Ensure reports/previews/ exists
  • Filename: {date}-{slug}.html (slug from source file or synthesis type)
  • Load shell template, replace all {{PLACEHOLDER}} tokens
  • Write complete self-contained HTML file

6. Open Browser

Unless --no-open:

# macOS
open "reports/previews/{filename}.html"

# Linux
xdg-open "reports/previews/{filename}.html" 2>/dev/null

# Windows
start "" "reports/previews/{filename}.html"

7. Optional: Link Back to Source

If --link and source is a single vault note:

  • Edit source frontmatter: preview: reports/previews/{filename}.html

8. Append Vault Log

Append to 01-index/_vault-log.md:

  • Action: preview
  • Files: output HTML path + source path
  • Details: shell used, synthesis or file mode

Output

Preview ready: reports/previews/2026-06-29-checkout-flow.html
Shell: prd
Source: docs/project-a/checkout-flow.md
Opened in browser.

Error Handling

SituationAction
Source file not foundSuggest similar paths via Glob
Empty vault (progress)Report "no data in timeframe" — do not write empty HTML
Browser open failsReport file path; user can open manually

Design Principles

  • Typography first — readable fonts, generous line-height, print-ready
  • No dependencies — pure HTML/CSS, no npm/pip required
  • Self-contained — single file, embedded styles, works offline
  • Source preserved — never modify markdown body unless --link requested

Signals

GitHub stars
133
Forks
33
Last commit
Jun 2026
Advanced
Catalog kind
skill
Gateway key
preview-kv0906
Source
github.com/kv0906/pm-kit