Files

4.7 KiB
Raw Permalink Blame History

name, description
name description
html-doc 生成人类可读的单文件 HTML 文档(参考手册、报告、字段说明、清单等),统一深色主题 与版式(侧边目录 + 表格 + callout + 徽标 + 代码块),并可选挂载标准化的「批注模块」—— 让读者逐字段/逐区块填备注、自动暂存、一键导出带备注的 HTML 副本回传,作者打开即见全部批注。 当用户要「做一份给人看的 HTML 文档/参考手册/说明页/报告」,或提到「统一 HTML 样式」、 「让别人写批注/注释」、「可批注文档」时使用。

html-doc

把「给人阅读的 HTML 文档」标准化:统一主题 + 统一版式 + 可选批注模块。产出单文件自包含 HTMLCSS/JS 全内联,一个 .html 直接发人)。

资产

文件 作用 生成时怎么用
assets/theme.css 通用深色主题tokens + 版式 + 表格/callout/徽标/目录/代码块) 内联进 <head><style>
assets/annotate.js 标准化批注模块(表格列 / 区块框、localStorage 暂存、导出嵌 JSON、复制 Markdown 需批注时内联进末尾 <script>
templates/skeleton.html 文档骨架(侧栏目录 + 正文 + 占位符) 复制后填内容

三者是唯一真相源;改主题/批注逻辑只改 assets再重新生成文档。

生成工作流

1. 明确文档类型与章节结构(参考手册 / 报告 / 清单…)
2. 复制 templates/skeleton.html替换占位符
   {{TITLE}} {{SUBTITLE}} {{DOC_ID}}(批注命名空间,用短横线英文,如 csv-data-reference
   {{TOC_LINKS}} {{CONTENT}} {{FOOTER}}
3. 把 assets/theme.css 全部内容内联到 <head> 的 <style> 里(单文件自包含)
4. 按「组件速查」填正文;每章一个 <section id="...">,与目录 <a href="#..."> 对应
5. 若需批注 → 见「批注模块」:给目标加 data 属性 + 内联 annotate.js
6. 用 Read/ReadLints 自查;中文内容务必用文件工具写(勿用 PowerShell 重定向,见 baserule

组件速查

章节标题:<h2 class="section">(自带顶部分隔线);子标题 <h3>

目录项:<a href="#id">主名<span class="cn">副名</span></a>;分隔 <div class="sep"></div>

表格:标准 <table><thead><tr><th>…</thead><tbody>…。类型列用 <td class="type">

徽标(语义色,放 <span class="badge X">accent / ok / warn / danger / muted

提示框:

<div class="callout warn"><div class="t">标题</div><p>正文</p></div>

变体:默认(蓝)/ warn / danger / ok

其他:.tag(等宽 pill.legend(图例行)、ul.tight(紧凑列表)、.muted(弱化文字)、<footer>

配色改动只动 theme.css:root design tokens。文档专属徽标追加在内联 theme 之后。

批注模块(可选)

目的:读者填备注 → 导出带备注的 HTML 发回 → 作者打开即见。纯前端、零依赖、幂等。

接入三步

  1. <body data-note-ns="文档唯一标识">(骨架已留 {{DOC_ID}};隔离不同文档的本地暂存)
  2. 标记批注目标(二选一或混用):
    • 表格模式:<table data-annotate="唯一名"> → 每行自动追加一列「备注」
    • 区块模式:任意元素加 data-note-id="唯一名" → 其后插入一个备注框
    • 防行序漂移:可给某 <tr>data-note-id="稳定key" 覆盖自动 key
  3. assets/annotate.js 全部内容内联进末尾 <script>

运行行为:页头下方出现工具栏(导出带备注副本 / 复制 Markdown / 清空 / 已填计数);输入自动存 localStorage导出时克隆文档、剔除注入 UI、仅把备注以 <script id="embedded-notes" type="application/json"> 嵌入 → 对方打开由脚本幂等重建并回填。

恢复优先级:嵌入 JSON > localStorage保证收到的回传文件一定显示对方批注

反模式

  • 别用外链 CSS/JS破坏「一个文件发人」——一律内联。
  • 别硬编码猜测批注目标(如靠表头文字)——用 data-annotate / data-note-id 显式 opt-in。
  • 别手改 embedded-notes JSON —— 由模块导出维护。
  • 中文文本别用 PowerShell Set-Content/echo > 落盘GBK 会损坏),用文件工具写。

自迭代日志

本节记录使用本 Skill 过程中发现的必要检查项。

已知必要检查

  1. 单文件自包含 — 生成后确认 theme.css(及批注时的 annotate.js)已真正内联,页面无 <link>/外链 <script src>,否则发给别人会样式/功能丢失。
  2. 批注命名空间唯一data-note-ns 必须每份文档不同,否则不同文档的 localStorage 暂存互相污染。