/install html-collab
html-collab Skill
Use this skill when creating documents meant for iterative LLM–human review, or when reading/revising annotated html-collab files.
Commands
/html-collab or /html-collab on
Explicitly enable html-collab format for subsequent document generation. Equivalent to the default behavior — use when the user wants to be explicit.
/html-collab off
Switch to plain HTML mode for subsequent output. Use when the user wants a clean, presentation-ready document — no collab-data, no data-cid, no engine script, no sidebar. Typical use case: a finished document ready for an audience, not for further annotation.
Plain HTML output should be well-structured, self-contained, and styled — a document a reader can open directly in a browser with no toolbars or review UI.
GENERATE — Create a new html-collab document
When: User asks you to write, draft, or generate a document (and html-collab mode is on).
Steps:
- Start with the content of
skill/assets/template.htmlas your base structure (also available athttps://raw.githubusercontent.com/ljn-hust/html-collab/main/skill/assets/template.html). If you do not have local access, fetch it from the URL above. - Fill
\x3Carticle id="collab-content">with semantic HTML:- Use
\x3Ch1>for the document title,\x3Ch2>for sections,\x3Cp>for paragraphs,\x3Cul>/\x3Cli>for lists.
- Use
- Assign a
data-cidattribute to every block element. Rules:- Format:
\x3Ctype>-\x3Czero-padded-3-digits>— e.g.p-001,h-001,sec-001,li-001 - Types:
p→\x3Cp>,h→\x3Ch1>–\x3Ch6>,sec→\x3Csection>,li→\x3Cli>,bq→\x3Cblockquote>,pre→\x3Cpre>,tbl→\x3Ctable> - Sequential per type across the whole document (not per section)
- Every block must have one; never skip or duplicate
- Format:
- Populate
collab-datameta:title: the document titleoriginalCreatedandlastRevised: both set to the current ISO timestampmodel: your model identifiermaxImageBytes: 51200 (default = 50 KB; do not change unless user specifies)imageStorage: "base64"comments: []edits: []
- Document-level UI belongs inside the article, not in the framework.
#collab-header(the top bar with the Save button) and#collab-sidebar(the comment panel) belong exclusively to the html-collab engine.- If the document needs custom UI controls (e.g. a language toggle, a table of contents, a theme switch), place them inside
\x3Carticle id="collab-content">— as a block at the top of the article or a floating element relative to#collab-main. - Putting custom controls in the framework header confuses human reviewers into thinking they're engine features.
- Output the complete
.htmlfile.
READ — Extract context from an annotated file
When: User provides a .html file that has been annotated by a human.
Reading efficiently:
- Skip everything between
\x3C!-- collab:llm-skip:start -->and\x3C!-- collab:llm-skip:end -->— this is engine CSS/JS you do not need to parse. - If
meta.summaryis present in collab-data, read it first for a compact structural index before parsing the full article.
Steps:
- Parse
\x3Carticle id="collab-content">— this is the document text. - Parse the JSON inside
\x3Cscript type="application/json" id="collab-data">. - Build and present this context block in the conversation before doing anything else:
[DOCUMENT CONTENT]
\x3Cpaste the inner HTML of \x3Carticle id="collab-content"> here>
[HUMAN FEEDBACK]
Comments:
· [\x3Ctarget>] "\x3Cquote>" → "\x3Ccomment text>" [screenshot, \x3Csize>, base64]
Edits:
· [\x3Ctarget>] "\x3Coriginal>" → "\x3Crevised>"
Always output this block even if there are no comments or edits — it confirms to the user what you read. This conversation record is permanent: REVISE will clear comments and edits from the file, but the feedback is preserved here in the chat history.
-
Image handling — per environment:
- Bash tool available (e.g. Claude Code): For each image where
sizeBytes > meta.maxImageBytes, compress it with a script and write the compressed base64 back todata, updatesizeBytes, add"compressedBy": "\x3Cmodel-id>". Example using Python/Pillow:python3 - \x3C\x3C'PYEOF' import base64, io, sys from PIL import Image data = base64.b64decode("""PASTE_BASE64_HERE""") img = Image.open(io.BytesIO(data)) out = io.BytesIO() img.save(out, 'JPEG', quality=55, optimize=True) print(base64.b64encode(out.getvalue()).decode()) PYEOF - Multimodal, no Bash: Receive the image as a visual input for understanding. In output, set
datatonulland add"compressedBy": null, "description": "\x3Cone-sentence summary of the screenshot>". - Text-only model: Replace each image with
[screenshot, \x3Csize>KB, base64-omitted]in the context block. Do not include the raw base64 string.
- Bash tool available (e.g. Claude Code): For each image where
-
Where the same
data-cidappears in both Comments and Edits: the comment's quote reflects the original (pre-edit) text. In REVISE, apply the edit first, then interpret the comment against the updated text.
REVISE — Produce a new version incorporating human feedback
When: After READ, the user asks you to revise the document.
Steps:
- For each entry in
edits: replace the text of the correspondingdata-cidblock withrevisedverbatim. - For each entry in
comments: revise the content of the targeted block to address the feedback. For blocks with both an edit and a comment, apply the edit first, then address the comment. - Add new blocks as needed: assign fresh CIDs continuing from the highest existing number for each type (e.g. if
p-007exists, next paragraph isp-008). - Remove blocks as needed: retire their CIDs permanently — never reuse them.
- Output the revised
.htmlfile:- Updated
\x3Carticle>content - All original
data-cidvalues preserved (do not reassign existing IDs) collab-datareset:comments: [],edits: []meta.lastRevisedupdated to current timestampmeta.modelupdated to your model identifiermeta.originalCreatedunchangedmeta.versionHashset to""— the engine recomputes this on next browser savemeta.summaryset to""— the engine recomputes this on next browser save- File output by environment:
- Bash/file access available (e.g. Claude Code): Write directly over the original file. The conversation history preserves the feedback record; no extra file needed.
- Chat environment (no file access): Suggest a filename using the document title and today's date — e.g.
market-analysis-20260606.html. This lets users build a natural version sequence in their folder without manual renaming.
- Updated
Reference
- Template:
skill/assets/template.html(remote:https://raw.githubusercontent.com/ljn-hust/html-collab/main/skill/assets/template.html) - Example:
examples/example.html - Live demo:
index.html(or https://ljn-hust.github.io/html-collab/)
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install html-collab - 安装完成后,直接呼叫该 Skill 的名称或使用
/html-collab触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
html-collab 是什么?
Use this skill for any HTML document that will go through LLM–human review cycles. Trigger when: the user asks to write, draft, or generate a document for re... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 31 次。
如何安装 html-collab?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install html-collab」即可一键安装,无需额外配置。
html-collab 是免费的吗?
是的,html-collab 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
html-collab 支持哪些平台?
html-collab 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 html-collab?
由 ljn-hust(@ljn-hust)开发并维护,当前版本 v0.1.0。