关于 md-document
md-document 可将规范、计划、RFC 和报告等较长的 Markdown 文档转换为单个 HTML 文件。它面向需要把现有文字整理成可导航文档的团队,提供目录和交互阅读功能;使用前须完成设计系统配置,输入至少 100 行。
主要功能
- 01Markdown 转 HTML
- 02固定目录导航
- 03搜索与滚动位置指示
- 04代码复制按钮
- 05使用 Prism.js 高亮代码
- 06按设计风格渲染
适用场景
- 01将 Markdown 规范发布为 HTML
- 02制作带导航的报告或计划
- 03渲染含表格和提示框的 RFC
- 04准备适合浏览器阅读的长文档
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ alirezarezvani/ claude-skills --skill md-document安装后在 Claude Code 中输入/md-document确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/md_document_template.htmlreferences/information_density_patterns.mdsingle_file_html_discipline.mdtoc_and_nav_ux.mdscripts/html_renderer.pyinteractivity_injector.pymarkdown_parser.py详细介绍
md-document — 长篇 Markdown 转 HTML
通用转换器——适用于 Shihipar 所述 90% 的常见场景(规范、计划、RFC、报告、说明文档)。三个标准库工具串联运行:
markdown_parser.py → html_renderer.py → interactivity_injector.py
(md → JSON AST) (AST + tokens → HTML) (HTML + JS behavior)
输出为一个 .html 文件,包含固定目录、搜索筛选器、滚动定位、代码复制按钮,以及用户的 12 个衍生品牌令牌。外部资源仅限 Google Fonts CSS 和 Prism.js CDN。
何时调用
| 症状 | 操作 |
|---|---|
markdown-html-orchestrator 将输入路由为 DOCUMENT | 调用此技能 |
用户直接运行 /cs-md-document <path>.md | 调用此技能 |
| 用户说“将此规范/报告/RFC/计划转换为 HTML” | 调用此技能 |
输入是代码审查(包含 ```diff 代码块) | 改为路由到 md-review |
输入是幻灯片(具有明显的 --- 分隔线) | 改为路由到 md-slides |
| 输入少于 100 行 | 拒绝(Shihipar 的阈值——此时 Markdown 仍是更好的选择) |
| 尚未接入设计系统 | 拒绝,并提示 /cs-design-system |
流程
# 1. Parse markdown → JSON AST
python3 markdown-html/skills/md-document/scripts/markdown_parser.py \
--input <path>.md --output sections.json
# 2. Render AST + design-system config → single-file HTML
python3 markdown-html/skills/md-document/scripts/html_renderer.py \
--sections sections.json --output document.html
# 3. Inject lightweight JS (search, copycode, smoothscroll, scrollspy)
python3 markdown-html/skills/md-document/scripts/interactivity_injector.py \
--file document.html \
--features search,copycode,smoothscroll,scrollspy
或者使用一体化方式(示例渲染):
python3 markdown-html/skills/md-document/scripts/html_renderer.py --sample \
| python3 markdown-html/skills/md-document/scripts/interactivity_injector.py \
--file /dev/stdin --output document.html
渲染内容
足以处理 Agent 生成内容的 CommonMark 子集:
- 标题 H1-H6(每个 H2 及以上标题都会获得锚点 ID 并加入目录)
- 带行内 粗体 / 斜体 /
代码/ 链接 /的段落
- 围栏代码块(
```python),按需使用 Prism.js 高亮 - 支持逐列对齐的 GFM 表格
- GFM 提示框(
> [!NOTE]、> [!TIP]、> [!IMPORTANT]、> [!WARNING]、> [!CAUTION]) - 引用块、有序列表和无序列表(单层)、水平分隔线
不支持:嵌套列表、行内 HTML、脚注、定义列表、任务列表复选框(作为纯文本渲染)、引用式链接。
硬性规则
- 拒绝少于 100 行的输入。 低于此阈值时应优先使用 Markdown(Shihipar)。
- 未接入设计系统时拒绝处理。
config_loader.setup_completed()必须返回True。否则提示/cs-design-system。 - 输出为单个文件。 所有 CSS 和 JS 均内联。外部资源仅限
fonts.googleapis.com和cdn.jsdelivr.net(Prism)。其他任何外部资源都属于回归。 - 自定义设置必须改变行为。
design_style=editorial会生成宽 720px、行高 1.75 的布局;playful会为提示框添加圆角和阴影;technical会采用紧凑布局,代码字号为 0.875rem。均已通过冒烟测试。 - 令牌符合 WCAG。 继承设计系统的 WCAG AA 调色板——正文文本对比度 ≥ 4.5:1,链接颜色经过迭代调整,达到 4.5:1。
- 注入操作幂等。 重复注入交互功能不会产生变化(通过标记检查)。使用不同的 design_style 重新渲染也能正常工作。
追问问题库(Matt Pocock 式审问原则)
- 这份文档的用途是什么——浏览、决策还是深入阅读? 建议:明确说明;内容密度应与用途相符。参考:Shihipar;Tufte 的 Envisioning Information。
- 采用固定侧边栏目录,还是可折叠的顶部目录? 建议:超过 800 个词或有 4 个以上 H2 标题时采用固定侧边栏;较短、优先面向移动设备的文档采用可折叠顶部目录。参考:NN/g 的 TOC Best Practices(2023)。
- 启用全部四项交互功能,还是只启用其中一部分? 建议:全部启用——每项的开销都不超过约 1 KB。参考:Wattenberger 的 Why React isn't great for actually building websites。
- 代码主题采用浅色、深色还是自动? 建议:自动(遵循操作系统的
prefers-color-scheme)。参考:WCAG 2.2 §1.4.3。 - 文档是否有明确的 H1 标题? 建议:有——H1 会成为页面的
<title>,且不会加入目录。
与以下工具的区别
md-review——该转换器会渲染差异代码块和带严重程度标签的边栏注释。此转换器渲染正文、表格、代码和提示框。md-slides——该转换器按---分隔线拆分幻灯片。此转换器渲染一份连续文档。marketing/landing/——该工具从头生成落地页(不输入 Markdown)。此工具转换现有 Markdown。
输出产物
{default_output_dir}/doc-{slug}.html(路径由编排器的 output_path_resolver.py 解析;默认情况下,文件名冲突时会添加 -2、-3 等后缀)。
参考资料
- Shihipar — Claude Code HTML 输出(Medium,2026 年)
- Tufte — Envisioning Information(1990 年),第 2 章“微观/宏观阅读”
- NN/g — 目录最佳实践(2023 年)
- WCAG 2.2 — §1.4.3 对比度,§2.4.5 多种方式
- Wattenberger — 为什么 React 并不适合实际构建网站
- 完整引文见
references/
评论
支持 Markdown