Ky Markdown Rebuilder
KyrieCheungYep/ky-markdown-rebuilder
Rebuild visual documents into reliable Markdown by combining text extraction with page or screenshot alignment.
Convert a stakeholder summary markdown file into a single self-contained HTML executive report — bottom line and decision asks up front, supporting detail later — styled with a Test Double-derived…
$ npx skills add testdouble/han --skill html-summary -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install testdouble/han html-summary --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/testdouble/han.git skills-src && mkdir -p .claude/skills && cp -r skills-src/han-reporting/skills/html-summary .claude/skills/html-summary && 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 "html-summary" agent skill from https://github.com/testdouble/han/tree/main/han-reporting/skills/html-summary into .claude/skills/html-summary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-summary", 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/testdouble/han/tree/main/han-reporting/skills/html-summaryType 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 testdouble/han --skill html-summary -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install testdouble/han html-summary --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/testdouble/han.git skills-src && mkdir -p .agents/skills && cp -r skills-src/han-reporting/skills/html-summary .agents/skills/html-summary && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "html-summary" agent skill from https://github.com/testdouble/han/tree/main/han-reporting/skills/html-summary into .agents/skills/html-summary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-summary", 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 testdouble/han --skill html-summary -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install testdouble/han html-summary --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/testdouble/han.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/han-reporting/skills/html-summary .cursor/skills/html-summary && 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 "html-summary" agent skill from https://github.com/testdouble/han/tree/main/han-reporting/skills/html-summary into .cursor/skills/html-summary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-summary", 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/testdouble/han.git --path han-reporting/skills/html-summary--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 testdouble/han --skill html-summary -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install testdouble/han html-summary --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/testdouble/han.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/han-reporting/skills/html-summary .gemini/skills/html-summary && 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 "html-summary" agent skill from https://github.com/testdouble/han/tree/main/han-reporting/skills/html-summary into .gemini/skills/html-summary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-summary", 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 testdouble/han html-summaryInstalls 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 testdouble/han --skill html-summary -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/testdouble/han.git skills-src && mkdir -p .github/skills && cp -r skills-src/han-reporting/skills/html-summary .github/skills/html-summary && 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 "html-summary" agent skill from https://github.com/testdouble/han/tree/main/han-reporting/skills/html-summary into .github/skills/html-summary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-summary", 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 testdouble/han --skill html-summary -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install testdouble/han html-summary --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/testdouble/han.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/han-reporting/skills/html-summary .opencode/skills/html-summary && 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 "html-summary" agent skill from https://github.com/testdouble/han/tree/main/han-reporting/skills/html-summary into .opencode/skills/html-summary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-summary", 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.
html-summaryConvert a stakeholder summary markdown file into a single self-contained HTML executive report — bottom line and decision asks up front, supporting detail later — styled with a Test Double-derived…
HTML Summary is an agent skill from testdouble/han. Convert a stakeholder summary markdown file into a single self-contained HTML executive report — bottom line and decision asks up front, supporting detail later — styled with a Test Double-derived palette and self-contained mermaid diagrams. Use when the user wants to turn a stakeholder summary, executive summary, or business summary into an HTML report, generate an HTML version of a summary doc, or produce a shareable HTML file from a summary markdown. Produces an HTML sibling file only; does not publish anything.
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including scripts, reference files and assets (for example `assets/mermaid.min.js`, `references/layout-principles.md` and `references/report-style.md`).
It sits in Documents & Office, covering Unit testing, Report writing and Summarization. The repository describes itself as: Han: AI skills and agents for "Solo" product engineers and small teams. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit abba73a. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteBash(bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh")From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (JavaScript and Shell), which the agent can run.
Shell commands in SKILL.md call:
bashFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
HTML Summary loads about 2.9k tokens when it runs, and up to ~15k if it reads all its reference files. Until then it costs about 133 tokens; SKILL.md has 1,477 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 found no risky patterns in SKILL.md.
Automated 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 testdouble/han at commit abba73a, republished under its MIT licence (© testdouble). 1,477 words, ~2,926 tokens.
.claude/skills/html-summary/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh" 2>/dev/null || echo "$HOME/.claude"cat .han/config.md 2>/dev/null || echo ""As your first action, use the Read tool on .han/config.md inside the personal config directory path above. A read
that returns no file is no personal configuration: continue silently. When that file or the project .han/config.md
probe supplies content, apply it per config-rule.md, which governs precedence
between the two files, relative-path resolution, and what to do with a file that reads but cannot be used.
Convert a stakeholder summary markdown file into a single self-contained HTML report tailored for executive readers — bottom line and decision asks up front, supporting detail later — styled with a Test Double-derived palette. The skill produces one HTML file next to the source markdown and stops there.
stakeholder-summary.md inside a planning folder. If the user does not name one,
ask. Do not guess..html extension. Example:
filters-and-saved-views/stakeholder-summary.md → filters-and-saved-views/stakeholder-summary.html. This is the
only artifact the skill produces.<link rel="stylesheet">, no <script src=...> pointing at a CDN,
no remote font loading, no remote images. Inlined JavaScript libraries (such as mermaid.js) are allowed and expected —
they keep the file self-contained.<style> block in <head>. The file must render correctly offline.references/layout-principles.md.references/report-style.md. Do not invent new accent colors.<h1> is the summary subject (the feature name).
The .subtitle beneath it is the literal string Han: Stakeholder Summary on every report. The header carries no
logo or brand mark.references/writing-conventions.md. Verify before finishing.han-communication:readability-guidance and apply it to the prose content this skill writes or transfers, holding the
named audience — the non-technical stakeholder. The report's visual layout stays governed by
references/layout-principles.md and references/report-style.md.If the source path is not in the conversation, ask for it. Resolve to an absolute path and confirm it exists. The output
HTML path is the source path with .md replaced by .html.
Read the entire markdown file. Identify which of these sections (or equivalents) are present, in any order:
Section titles in the source may not match these names exactly — map by content, not heading text.
Read all references before producing HTML:
Write the HTML file to the output path. Required structure, in order:
<h1> set to the summary subject (the feature name) with the most evocative noun phrase wrapped in
<span class="highlight">; .subtitle set to the literal string Han: Stakeholder Summary. No brand mark.**Confirm ...?**. If the source has no asks section,
omit this card entirely — do not invent decisions.walk list.today and after cards stacked one per row, each card spanning the page wrap's content
width. Do not place data-flow cards side-by-side in a .grid-2 wrapper. Each card contains a <pre class="mermaid">
block with the source's mermaid syntax preserved (branching, decision diamonds, labeled edges). Normalize style
directives to the report palette per references/report-style.md.out-of-scope list.Readability of the prose. Invoke han-communication:readability-guidance to surface the shared readability standard
into your context; the text in these sections follows that standard — do not duplicate its text, apply it. Lead with the
main point (bottom line up front, which the executive ordering already enforces), give each heading a descriptive name
rather than a generic label, keep one idea per paragraph with the first sentence carrying it, number sequential steps
and bullet non-sequential items, and reveal detail in layers. This governs the prose only; the visual layout stays
governed by the layout conventions above.
The template includes a mermaid bundle placeholder near the end of <body>:
<script id="mermaid-bundle">
<!-- MERMAID_BUNDLE_INLINE_HERE -->
</script>
<script>
mermaid.initialize({ ... });
</script>Leave the placeholder string <!-- MERMAID_BUNDLE_INLINE_HERE --> exactly as written. The inliner script in Step 6
replaces it with the vendored mermaid.min.js bundle. The mermaid initialization block (with the report palette theme
variables) is also part of the template — paste it verbatim.
Section omission rules:
Markup rules:
— not — for em-dashes in HTML body content (the template does this consistently).→ for arrows in flow diagrams.tldr, ask-block, ask, walk, flow, node, node.good,
node.bad, node.start, out-of-scope, chip, chip.good, chip.bad.<h1> in <span class="highlight"> for the green background.Open the file you just wrote and confirm:
<style> block exists in <head> and contains the :root palette variables from references/report-style.md.<link>, <script src=...>, or external url(...) references in <head> or <body>.<h1> is the summary subject and the .subtitle reads Han: Stakeholder Summary.references/writing-conventions.md).Then run the standardized readability self-check (the shared standard is in your context from
han-communication:readability-guidance) over the report's PROSE content only — never inside HTML tags, attributes,
class names, mermaid/diagram bodies, or code. The visual layout stays governed by the existing layout conventions. This
skill runs no rewrite pass, so this self-check is the fidelity guard on the prose; the fidelity criterion is not
optional. Confirm each criterion and fix any failure before finalizing:
Run the readability rule's standardized self-check, which is already in your context from the readability-guidance
invocation above. Correct every failure before Step 6. Its fidelity criterion is not optional: the standard governs how
the content is said, and drops a required fact only when the reader asked for less and losing it would not change what
they do next.
The vocabulary blocklist for this skill is the shared one plus its supplementary domain terms in writing-conventions.md.
If any check fails, fix it before Step 6.
Make the file self-contained by inlining the vendored mermaid bundle in place of the placeholder: run
${CLAUDE_SKILL_DIR}/scripts/inline-mermaid.sh <path-to-html-file> and capture its output.
The script is idempotent: it replaces the <!-- MERMAID_BUNDLE_INLINE_HERE --> placeholder with the contents of
assets/mermaid.min.js. If the report has no diagrams (no placeholder), it leaves the file untouched and exits cleanly.
If the script exits non-zero, surface the error to the user; do not retry blindly — read the error.
Tell the user:
If you had to derive the bottom line because the source had no explicit TL;DR, mention that so the user can review the framing.
© testdouble, 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 7 other files (scripts, references, assets) in han-reporting/skills/html-summary of testdouble/han.
Open the folder on GitHubat commit abba73a
HTML Summary 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 |
|---|---|---|---|---|---|---|
| HTML Summary this skilltestdouble/han | 279 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Ky Markdown RebuilderKyrieCheungYep/ky-markdown-rebuilder | 117 | — | ~5.7k | Automated safety check: Pass | None | |
| Markdown Report WritingNeuroAIHub/BrainPilot | 1.1k | — | ~2.6k | Automated safety check: Warn | AGPL-3.0 | |
| Markdown to PDF Convertergarrytan/gstack | 136k | — | ~5k | Automated safety check: Notes | MIT | |
| Md Documentborghei/Claude-Skills | 881 | — | ~3k | Automated safety check: Pass | MIT | |
| Bookforge Korean Ebook PDF Makergongnyang/bookforge | 314 | 1 repos | ~1.7k | Automated safety check: Pass | MIT |
KyrieCheungYep/ky-markdown-rebuilder
Rebuild visual documents into reliable Markdown by combining text extraction with page or screenshot alignment.
NeuroAIHub/BrainPilot
Guide AI agents to write beautifully formatted, well-illustrated Markdown reports with proper structure, diagrams, and compatibility across GitHub and Obsidian.
garrytan/gstack
Renders a markdown file into a finished PDF with margins, page numbers, a cover page, running headers, a clickable table of contents and an optional DRAFT watermark.
borghei/Claude-Skills
Convert authored markdown into a polished self-contained HTML document with a table of contents, numbered figures and tables, cross-references, footnotes, and print-ready CSS.
gongnyang/bookforge
Produces book-style Korean ebook PDFs from a topic or finished manuscript, with six design styles, real book parts and quality-check gates before output.
MegaSuperKitty/WeClaw
Drafts a report in Markdown with numbered inline citations and a references section, then renders it to a styled HTML file through a Jinja2 template on Windows.
testdouble/han
Update Han plugin documentation so every skill, agent, guidance doc, index, and cross-reference is current and accurate.
testdouble/han
Authoritative guidance for building Claude Code skills, agents, and plugins, plus init and update steps that install and refresh the plugin-building skills in the current repository.
testdouble/han
Cut a Han release: update CHANGELOG.md with the changes since the last release, bump and tag every plugin that changed as {plugin-name}--v{version} so a version-constrained dependency can resolve…
testdouble/han
Generate a PR description from the current branch's changes against a GitHub PR, using the gh CLI.
testdouble/han
Builds a feature implementation plan from an existing feature specification (or equivalent context) through a facilitated team conversation.
testdouble/han
Restructure existing code without changing its behavior, through a test-gated refactoring loop: a named target, a green suite over that target before any edit, a planned sequence of small named…
Convert a stakeholder summary markdown file into a single self-contained HTML executive report — bottom line and decision asks up front, supporting detail later — styled with a Test Double-derived…. HTML Summary is an agent skill from testdouble/han. Convert a stakeholder summary markdown file into a single self-contained HTML executive report — bottom line and decision asks up front, supporting detail later — styled with a Test Double-derived palette and self-contained mermaid diagrams.
HTML Summary fits situations like: the user wants to turn a stakeholder summary; executive summary; business summary into an HTML report; generate an HTML version of a summary doc.
Run `npx skills add testdouble/han --skill html-summary -a claude-code`. Or copy the skill folder (han-reporting/skills/html-summary in testdouble/han) into .claude/skills/html-summary in your project. Claude Code loads it when a task matches its description.
Run `npx skills add testdouble/han --skill html-summary -a codex`. Or copy the skill folder (han-reporting/skills/html-summary in testdouble/han) into .agents/skills/html-summary 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 testdouble/han --skill html-summary -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/html-summary, .gemini/skills/html-summary, .github/skills/html-summary and .opencode/skills/html-summary in your project.
Going by SKILL.md and its folder, HTML Summary needs JavaScript and a shell for the scripts in its folder and the command-line tools its instructions call (bash). Our summary lists: Node.js; A Bash shell. Its frontmatter pre-approves these tools: Read, Write, Bash(bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh").
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. 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.
HTML Summary is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 12k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with HTML Summary: Ky Markdown Rebuilder (KyrieCheungYep/ky-markdown-rebuilder, 117 stars), Markdown Report Writing (NeuroAIHub/BrainPilot, 1.1k stars), Markdown to PDF Converter (garrytan/gstack, 136k stars) and Md Document (borghei/Claude-Skills, 881 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
testdouble (a GitHub organization) maintains it in testdouble/han, which has 279 GitHub stars. The repository holds 54 skills in this directory. The repository was last updated on October 1, 2026.
Source: testdouble/han on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.