Agent skill

Md Document

by borghei in 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.

MITAuto-check passedDocuments & Office

Install Md Document

skills CLI
$ npx skills add borghei/Claude-Skills --skill md-document -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install borghei/Claude-Skills md-document --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/borghei/Claude-Skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/markdown-html/md-document .claude/skills/md-document && rm -rf skills-src

Use ~/.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/

Facts

Skill name
md-document
GitHub stars
881
Token cost
~3k tokens
SKILL.md length
1,459 words
Files
11 (incl. scripts, references, assets)
Skills in repo
349
Repo updated
First seen
Licence
MIT

At a glance

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.

  • Works in 3 steps: Audit labels and references first — the… → Convert. The bundled theme is inlined… → Check the gate. A non-zero exit means…
  • Publishing a report
  • SKILL.md covers When to use this skill, Inputs the skill expects, Clarify First and Workflows, plus 3 more sections
  • Runs Python scripts from its folder; calls python3

What it does

Md Document is an agent skill from 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. Use when publishing a report, whitepaper, or memo.

Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including scripts, reference files and assets (for example `assets/document_outline_template.md`, `assets/sample_document.md` and `assets/sample_print_profile.json`).

It sits in Documents & Office, covering Report writing and Markdown. The repository describes itself as: 385 AI skills, 77 expert agents, and 900 stdlib Python tools for every team: engineering, PM, marketing, C-level, compliance, business ops, research, and a LinkedIn toolkit… The licence is MIT.

When your agent uses it

  • Publishing a report
  • Tasks that involve Report writing
  • Tasks that involve Markdown

Example prompts

  • “/md-document”

Requirements

  • Python 3

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Audit labels and references first — the converter's gate reports broken
  2. Convert. The bundled theme is inlined automatically; pass --css to override.
  3. Check the gate. A non-zero exit means the rendered document contains visible

What it can do on your machine

Read from SKILL.md and the folder at commit 4a698e8. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships 4 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Md Document loads about 3k tokens when it runs, and up to ~8.4k if it reads all its reference files. Until then it costs about 60 tokens; SKILL.md has 1,459 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~60
When it runs · the whole SKILL.md, loaded when a task matches
~3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.4k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from borghei/Claude-Skills at commit 4a698e8, republished under its MIT licence (© borghei). 1,459 words, ~2,956 tokens.

Download SKILL.mdSave it as .claude/skills/md-document/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.
name
md-document
description
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. Use when publishing a report, whitepaper, or memo.
license
MIT + Commons Clause
metadata.version
1.0.0
metadata.author
borghei
metadata.category
markdown-html
metadata.domain
document-publishing
metadata.updated
2026-07-21
metadata.tags
markdown, html, publishing, pdf, cross-references, typography

Markdown Document Publishing

Turn an authored markdown file into a single HTML document you can email, host, or print — semantic structure, an automatic table of contents, figures and tables numbered and referenceable by number, footnotes, and a print stylesheet that survives contact with a PDF exporter. One file out, no runtime dependencies, no external assets.

When to use this skill

  • Publishing a report or whitepaper that must arrive as one file, not a folder
  • Producing a PDF from markdown without a LaTeX or Pandoc toolchain
  • Numbering figures and tables so prose can reference them instead of saying "below"
  • Converting untrusted or contributed markdown where injection safety matters
  • Standardizing a document series so every issue looks like the same publication
  • Catching broken cross-references before a document reaches readers

Inputs the skill expects

  • A markdown source file, optionally with YAML frontmatter
  • Figure images as relative paths (or data URIs, for true single-file output)
  • The intended output: screen, print, or both
  • Document length and whether a table of contents is warranted
  • Page geometry, if printing: size, margins, single- or double-sided
  • A stylesheet, if not using the bundled theme

Clarify First

Before converting, confirm these inputs. If any is unknown or vague, ASK — do not assume:

  • Screen, print, or both — why it changes the output: print needs a page profile, forced light colors, and break control; skipping it produces a document that looks right on screen and breaks on paper
  • Whether images must be embedded — why it changes the output: relative image paths mean the HTML file is not actually self-contained, which defeats the point if it will be emailed
  • Document length and TOC expectation — why it changes the output: a TOC on a two-page memo is noise; depth 3 on a long report produces a TOC longer than some sections
  • Whether the markdown is trusted — why it changes the output: it does not change escaping (always on), but it determines whether a review gate should run first

Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.

Workflows

Workflow 1 — Convert a document to self-contained HTML
  1. Audit labels and references first — the converter's gate reports broken references, but the auditor explains what to do about each one.
  2. Convert. The bundled theme is inlined automatically; pass --css to override.
  3. Check the gate. A non-zero exit means the rendered document contains visible [?fig:name] markers where numbers should be.
bash
python3 markdown-html/md-document/scripts/crossref_auditor.py \
  --input markdown-html/md-document/assets/sample_document.md --format text

python3 markdown-html/md-document/scripts/md_to_html.py \
  --input markdown-html/md-document/assets/sample_document.md \
  --out build/report.html --toc-depth 2 --format text
Workflow 2 — Produce a print-ready PDF
  1. Generate the print block from a page profile and append it to the theme, so the exported file carries its own print rules.
  2. Convert with the extended stylesheet.
  3. Open in a browser, print to PDF with margins set to Default — a browser margin setting overrides @page and will clip content.
bash
python3 markdown-html/md-document/scripts/print_profile.py \
  --input markdown-html/md-document/assets/sample_print_profile.json \
  --out build/print.css --format text

cat markdown-html/md-document/assets/document_theme.css build/print.css > build/full.css

python3 markdown-html/md-document/scripts/md_to_html.py \
  --input markdown-html/md-document/assets/sample_document.md \
  --css build/full.css --out build/report.html
Workflow 3 — Gate a document series in CI
  1. Run the auditor at warning severity so unlabelled figures block, not just broken references.
  2. Run the conversion gate; it fails on unresolved references and undefined footnotes — both render as visible defects.
  3. Emit JSON for both so a CI job can annotate the diff.
bash
python3 markdown-html/md-document/scripts/crossref_auditor.py \
  --input markdown-html/md-document/assets/sample_document.md --max-severity warning --format json

python3 markdown-html/md-document/scripts/md_to_html.py \
  --input markdown-html/md-document/assets/sample_document.md --out build/report.html --format json

Decision frameworks

Table-of-contents depth
Document lengthTOC--toc-depth
Under 3 pagesnone — omit [TOC]n/a
3-10 pagesyes1 (## only)
10-30 pagesyes2 (default) [PROVEN]
Over 30 pagesyes2, plus per-section navigation

If the TOC exceeds one screen, reduce the depth. A contents list longer than the first section is a navigation failure, not thoroughness.

Reference style
SituationWriteNot
Pointing at a figure[@fig:access]"the chart below"
Pointing at a table[@tbl:policies]"see the table above"
Pointing at a section[@sec:context]"as discussed earlier"
A caveat that breaks the sentencea footnotea parenthetical
Evidence the argument depends onbody texta footnote

[PROVEN] Never use positional language in a document that may be paginated. "Below" breaks when the table lands on the next page, breaks silently when a section is reordered, and means nothing to a reader navigating by heading.

Alt text versus caption
Alt textCaption
AudienceNon-sighted readersEveryone
Length15-125 charactersOne or two sentences
SaysWhat the image depictsWhat to conclude, plus the number
Fails as"chart", "figure 3", """See above"

The auditor flags placeholder alt text (chart, image, screenshot, empty) at error severity and alt text under 15 or over 125 characters at warning.

Print geometry
DecisionDefaultChange when
Page sizeA4 [RECOMMENDED]Audience is exclusively North American → Letter
Side margins25-30mmNever below 20mm — the measure exceeds 90 characters
Body size11pt12pt for older audiences or dense reference material
Mirrored marginsoffThe document will be bound double-sided
break-inside: avoidfigures, tables, codeNever on an element taller than one page

At A4 with 20mm margins the text column is ~92 characters — well outside the 55-85 comfort band. Widening the margins is the fix; max-width: none on main is what causes the problem.

Anti-Patterns

The "see the table below" reference

Mistake: Writing positional prose — "the chart below", "as shown above" — instead of a numbered cross-reference. Why it happens: It reads naturally while drafting, when the author can see the whole document at once and the table genuinely is below. Instead: Write [@tbl:policies]. Pagination moves content, reordering breaks positional claims silently, and a reader navigating by heading has no "below". The auditor cannot detect a broken "below"; it fails the build on a broken [@tbl:policies].

Show full SKILL.md (554 more words)Show less
Allowing raw HTML through the converter

Mistake: Adding an escape hatch so authors can drop <div class="..."> or an embed into the markdown. Why it happens: A real formatting need appears that the subset does not cover, and passing HTML through is a one-line change. Instead: Extend the subset or the stylesheet. The escape-then-render ordering is the entire security model — the moment raw HTML passes through, every document becomes an injection vector, and the converter can no longer be pointed at contributed content. There is deliberately no --allow-html flag.

Reusing the caption as alt text

Mistake: Writing one string and letting it serve as both the figure caption and the alt attribute. Why it happens: The converter falls back to exactly this when no caption is given, which makes it look sanctioned. Instead: Write both. The caption tells a sighted reader what to conclude; the alt text describes what the figure shows to someone who cannot see it. "Figure 3. Costs fall 40% under Policy B" is a fine caption and useless alt text — it states the conclusion without describing the chart.

Print rules added after the fact

Mistake: Building the document for screen, then bolting on a print stylesheet when someone asks for a PDF. Why it happens: Print feels like a rendering detail rather than a design constraint, and the screen version already looks finished. Instead: Decide print-or-not before converting. Retrofitted print CSS produces the classic failures — stranded headings, tables split mid-row, dark theme reaching paper as invisible gray text, a 92-character measure. print_profile.py exists so the geometry is a reviewed input, not an afterthought.

Trusting the gate as a proof of quality

Mistake: Treating a passing conversion as evidence the document is ready to publish. Why it happens: The gate is automated and green, which reads as authoritative. Instead: The gate checks that references resolve and footnotes are defined. It cannot see a stranded heading, a figure separated from its caption, a table split across pages, or a PDF whose margins clipped the content. Proof every page of the actual output at 100% zoom before publishing.

Files

FilePurpose
scripts/md_to_html.pyCLI: convert markdown to a self-contained HTML document; gates on broken references
scripts/md_render.pyMarkdown subset parser, escaping-first inline renderer, label numbering — imported by md_to_html.py, not a CLI
scripts/crossref_auditor.pyAudit labels, references, alt text, and heading hierarchy; CI gate
scripts/print_profile.pyGenerate a print/PDF stylesheet from a JSON page profile
references/markdown-conventions.mdSupported syntax, labelling contract, escaping and URL-allowlist model
references/print-and-pdf-production.mdPaged media, break control, export mechanics, proofing checklist
assets/sample_document.mdWorking document exercising every construct; converts clean
assets/sample_print_profile.jsonA4 double-sided print profile with running heads
assets/document_theme.cssBundled theme inlined by default — this skill's own copy
assets/document_outline_template.mdStarting structure for a new report or memo

All scripts share one exit-code contract: 0 clean, 2 gate failed (findings at or above the threshold), 1 the tool itself errored. A CI job can therefore tell a real defect from a broken invocation.

Three CLI tools, one module. md_render.py is a library, not a fourth command — it holds the parser that md_to_html.py imports. A single-file converter came to 429 lines, well over the 300-line ceiling. Splitting CLI from parser is the remedy the tool-design standard prescribes for an oversized script, and same-directory imports keep the package self-contained: md-slides carries its own separate slide_render.py rather than importing this one.

© borghei, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 10 other files (scripts, references, assets) in markdown-html/md-document of borghei/Claude-Skills.

  • SKILL.md
  • assets/document_outline_template.md
  • assets/document_theme.css
  • assets/sample_document.md
  • assets/sample_print_profile.json
  • references/markdown-conventions.md
  • references/print-and-pdf-production.md
  • scripts/crossref_auditor.py
  • scripts/md_render.py
  • scripts/md_to_html.py
  • scripts/print_profile.py

Open the folder on GitHubat commit 4a698e8

Compare with similar skills

Md Document 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.

Md Document compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Md Document this skillborghei/Claude-Skills881—~3kAutomated safety check: PassMIT
Ky Markdown RebuilderKyrieCheungYep/ky-markdown-rebuilder117—~5.7kAutomated safety check: PassNone
HTML Summarytestdouble/han279—~2.9kAutomated safety check: PassMIT
Bookforge Korean Ebook PDF Makergongnyang/bookforge3141 repos~1.7kAutomated safety check: PassMIT
Markdown to HTML ReportMegaSuperKitty/WeClaw370—~456Automated safety check: PassMIT
Markdown to Word Convertercat-xierluo/SuitAgent206—~559Automated safety check: PassMIT

Similar skills

  • Ky Markdown Rebuilder

    KyrieCheungYep/ky-markdown-rebuilder

    Rebuild visual documents into reliable Markdown by combining text extraction with page or screenshot alignment.

    117 GitHub stars~5.7k tokensUpdated 2 mo ago
    Documents & OfficeAuto-check passed
  • HTML Summary

    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…

    279 GitHub stars~2.9k tokensUpdated 7 days ago
    Documents & OfficeAuto-check passed
  • 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.

    314 GitHub starsUsed in 1 repo~1.7k tokens
    Documents & OfficeAuto-check passed
  • Markdown to HTML Report

    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.

    370 GitHub stars~456 tokensUpdated 5 mo ago
    Documents & OfficeAuto-check passed
  • Markdown to Word Converter

    cat-xierluo/SuitAgent

    Converts Markdown files into Word documents formatted to Chinese typesetting conventions, with presets for academic, legal, report and book layouts.

    206 GitHub stars~559 tokensUpdated 1 mo ago
    Documents & OfficeAuto-check passed
  • 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.

    136k GitHub stars~5k tokensUpdated today
    Documents & OfficeAuto-check: notes

More from borghei/Claude-Skills

All 349 skills in this repo
  • Agents In The Team

    borghei/Claude-Skills

    Run delivery when AI coding and ops agents take tickets. An agent skill from borghei/Claude-Skills.

    881 GitHub stars~4.2k tokensUpdated yesterday
    Auto-check passed
  • AI Content Disclosure

    borghei/Claude-Skills

    Check AI-generated marketing content and reviews for required disclosures under the EU AI Act, FTC rules and platform AI-label policies.

    881 GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed
  • AI Prototyping

    borghei/Claude-Skills

    Idea to AI-generated prototype to customer validation to engineering handoff.

    881 GitHub stars~3.6k tokensUpdated yesterday
    Auto-check passed
  • Analytics Engineer

    borghei/Claude-Skills

    Analytics engineering across data modeling, dbt, transformation, and semantic layers.

    881 GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed
  • Ansoff Matrix

    borghei/Claude-Skills

    Ansoff Matrix — 4-quadrant framework for growth options: market penetration, market/product development, and diversification.

    881 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • Brainstorm Okrs

    borghei/Claude-Skills

    OKR brainstorming and validation using the Radical Focus framework — outcome objectives, measurable key results, counter-metrics.

    881 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed

Questions about Md Document

What does Md Document do?

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. Md Document is an agent skill from 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.

When should I use Md Document?

Md Document fits situations like: publishing a report; tasks that involve Report writing; tasks that involve Markdown.

How do I install Md Document in Claude Code?

Run `npx skills add borghei/Claude-Skills --skill md-document -a claude-code`. Or copy the skill folder (markdown-html/md-document in borghei/Claude-Skills) into .claude/skills/md-document in your project. Claude Code loads it when a task matches its description.

How do I install Md Document in Codex?

Run `npx skills add borghei/Claude-Skills --skill md-document -a codex`. Or copy the skill folder (markdown-html/md-document in borghei/Claude-Skills) into .agents/skills/md-document in your project. Codex loads it when a task matches its description.

Can I use Md Document in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add borghei/Claude-Skills --skill md-document -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/md-document, .gemini/skills/md-document, .github/skills/md-document and .opencode/skills/md-document in your project.

What does Md Document need to run?

Going by SKILL.md and its folder, Md Document needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.

Does Md Document access the network?

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.

Is Md Document safe to install?

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.

What licence does Md Document use?

Md Document is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Md Document use?

About 3k 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 5.4k tokens, read only when the agent opens those files.

What are the alternatives to Md Document?

Skills that share tags, products or a category with Md Document: Ky Markdown Rebuilder (KyrieCheungYep/ky-markdown-rebuilder, 117 stars), HTML Summary (testdouble/han, 279 stars), Bookforge Korean Ebook PDF Maker (gongnyang/bookforge, 314 stars) and Markdown to HTML Report (MegaSuperKitty/WeClaw, 370 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Md Document?

borghei (a GitHub user) maintains it in borghei/Claude-Skills, which has 881 GitHub stars. The repository holds 349 skills in this directory. The repository was last updated on October 7, 2026.

Source: borghei/Claude-Skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.