iWiki MD 发布器
帮助用户把内容整理成适合 iWiki 的精美页面。默认产出报告风 / 门户风的可视化 MD 页面;除非用户明确要求纯 Markdown,否则不要先退化成朴素草稿。文案尽量贴近源内容,除非用户明确要求润色或补充说明,否则不要额外加入教学式解释。最终使用 iwiki-cli 发布或更新页面。
CLI 调用约定
- 本 skill 中凡是出现
iwiki-cli ... 的地方,真实执行时都优先使用 scripts/run_iwiki_cli.sh 包装器;它会先通过登录 shell 调起 iwiki-cli,必要时再自动尝试一次 ~/.zshrc 兼容兜底,避免每次手写 source ~/.zshrc &&。 - 如果无法使用包装器,就退回
zsh -lc 'iwiki-cli ...' 这种登录 shell 方式。 - 只有当当前机器把
PATH 或 IWIKI_TOKEN 错误地只写进了 ~/.zshrc 时,才把 source ~/.zshrc 视为临时排障手段;这不算真正修好环境。
硬性要求
- 先要求用户申请或复制 PAT,并把 token 发给 Agent。
- 在拿到 token 之前,不要执行
iwiki-cli metadata、get、search、create、update 或 space。 - 如果
iwiki-cli 只能靠一次性的 export PATH=... 才能运行,或者 IWIKI_TOKEN 在新开的登录 shell 中消失,就视为环境尚未准备好。 - 要求把
PATH 与 IWIKI_TOKEN 持久化到登录 shell 真正会加载的位置,而不是只放在当前会话里。 - 只要上面任意前置条件不满足,就先阅读 references/setup.md。
工作流
- 先满足所有硬性要求。如果用户还没提供 token、
iwiki-cli 在新的登录 shell 中还不可用,或者 IWIKI_TOKEN 还没有被持久化,就停止内容处理,先完成 references/setup.md。 - 阅读源 HTML,识别用户可见的章节、标题、正文、链接和命令片段。
- 用
iwiki-cli metadata 检查目标 iWiki 页面。 - 如果是在更新已有页面,先用
iwiki-cli get 把云端正文拉下来,并以它作为工作草稿;如果本地已经有改到一半的版本,先做备份。 - 如果目标页是
DOC,但用户希望获得门户风 HTML 渲染效果,不要继续硬改老页面,改为在同一父节点下新建 MD 页面。 - 默认产出报告风 / 门户风的可视化 MD 页面,包含 hero、摘要卡片和模块化章节;除非用户明确要求纯草稿,或兼容性问题迫使降级,否则不要先生成纯结构化 Markdown。
- 读取一个或多个参考 MD 页面,使用
iwiki-cli get 学它们的实现风格,而不是照抄它们的文案。 - 在写文件前,先阅读 references/template-variants.md,根据内容类型选择最合适的模板变体。
- 再选定代码展示模式:
- 原生复制模式:使用 fenced code block,并把代码块放在 HTML 卡片外。
- 一体化视觉模式:使用内联 HTML 代码面板,不承诺原生复制行为。
- 默认把内容改写成“兼容性优先”的门户式 MD 文件:
- 用简单的内联 HTML 做布局、hero、摘要卡片和章节卡片。
- 除非用户明确要求改写,否则文案尽量贴近源 HTML / MD。
- 为了可读性与展示效果可以重组结构,但不要凭空加入解读、培训说明、导读文案或“本页说明”一类的新增内容。
- 如果 iWiki 把行内
code 拆到单独一行,就改成显式设置等宽字体的 span。 - 给主要模块留出明确的竖向间距,方便后续局部微调。
- 允许在模板约束内做有限变体,例如调整 hero 渐变、强调色、CTA 数量、卡片数量、章节顺序、附加下载/命令/数据摘要模块,但不能破坏模板骨架、兼容性标签约束和安全样式边界。
- 只有在用户明确要求,或富文本门户布局渲染不稳定时,才退回朴素 Markdown。
- 如果 CLI 验证因为运行时兼容性失败,不要阻塞内容工作:
- 仍然先产出最终的 iWiki 兼容 MD 文件。
- 明确说明这是环境阻塞,不是内容转换失败。
- 先引导 Agent 完成当前环境所需的运行时升级。
- 升级后,在新环境里重新完成
iwiki-cli 安装与验证,再从该环境发布。 - 只有在升级路线不可行时,才建议换到其他兼容环境。
- 手工粘贴只作为最后兜底方案。
- 发布时使用
iwiki-cli update -f ,或先创建页面再发布;发布后再用 metadata、get 和渲染结果抽查做校验。
兼容性规则
- 优先使用
div、span、a、strong 这类内联 HTML。 - 样式优先保持保守:
color、padding、margin、border、border-radius、background、font-size、line-height。 - 卡片布局优先用简单的
display:flex + flex-wrap:wrap。 - 当整页深色容器渲染不稳定时,优先使用白底或浅色卡片布局。
- 只有在用户明确需要原生复制,且能接受代码块脱离 HTML 卡片时,才使用 fenced code block。
- 当行内代码被强制换行时,用设置等宽字体的
span 代替裸 code 标签。 - 当视觉一体化比原生复制更重要时,用普通
div 容器加转义文本来实现 HTML 代码面板。 - 章节锚点保持简单,例如
id="install"、href="#install"。
除非参考页已经证明可用,否则默认避免:
、、、、- 自定义 JavaScript 复制按钮
svg、path、use 或依赖嵌套矢量结构的图标系统- 在 iWiki 已经覆盖
pre 样式的前提下,继续用 pre 做自定义代码面板底座 - 一旦 iWiki 开始把它们当文本输出,就避免使用
header、nav、main、section、article、footer 这类语义化布局标签 - 强行把原生 fenced code block 视觉嵌进 HTML 卡片
- 在自定义代码面板里放过深的嵌套 HTML 结构,导致标记泄漏成文本
- 依赖整页控制能力的高级 CSS,例如 sticky header、backdrop filter、CSS grid、复杂绝对定位
阅读 references/compatibility.md 获取兼容性检查清单与命令手册。
阅读 references/template-variants.md 获取模板变体选择规则、允许变化范围,以及各模板的适用场景。
当用户还没发送 PAT、iwiki-cli 在登录 shell 中还不可用,或 IWIKI_TOKEN 还未本地持久化时,阅读 references/setup.md。
当渲染结果出现视觉问题,或用户在发布后反馈回归问题时,阅读 references/troubleshooting.md。
编写 MD 文件
- 从源 HTML 中用户实际可见的文案出发,而不是从 DOM 结构出发。
- 如果是更新任务,要从当前云端正文开始,而不是从老旧的本地草稿开始。
- 默认结果应该像“报告页 / 门户页”,而不是普通笔记。
- 优先在以下模板族里做选择,而不是每次从零拼页面:
- 通用经典模板:assets/portal-template.md
- 产品 / CLI 门户模板:assets/portal-template-product.md
- 功能介绍模板:assets/portal-template-feature.md
- 帮助手册模板:assets/portal-template-help.md
- 资讯 / 周报摘要模板:assets/portal-template-digest.md
- 除非用户明确要求极简文档,否则从 hero、高信息密度摘要卡片和模块化内容章节起步。
- 优先保留源文案,而不是重写成新的辅助说明。
- 除非这些段落原本就存在,或用户明确要求增强写作,否则不要新增说明段、页脚、总结或过渡文案。
- 如果某个视觉模块需要文字,优先复用源内容里的标题、列表、状态、链接,而不是自己编新句子。
- 把交互式 tab、自定义复制按钮和脚本行为折叠成静态章节。
- 让每个章节保持自包含,方便局部渲染问题排查。
- 对代码较多的页面,每个章节都要明确选择一种模式:
- 介绍卡片 + fenced code block,用于原生复制。
- 介绍卡片 + 深色 HTML 代码面板,用于一体化视觉。
- 如果使用自定义 HTML 代码面板:
- 用一个外层
div 承担等宽字体样式。 - 转义
#、$、"、> 等特殊字符。 - 用
和简单的 span 行,而不是多层嵌套的 div 树。 - 如果渲染坏掉,先简化结构,再动文案:
- 先去掉高级标签。
- 再把视觉卡片中的原生代码块移出来。
- 再把
pre 改成普通 div 代码面板。 - 再拍平嵌套容器和
span。 - 再切换成更浅色的卡片布局或更少列数。
- 最后才退回纯 Markdown。
- 允许做有限变化,但不要突破模板的稳定边界:
- 可以改 hero 渐变、强调色、眼眉文案、CTA 数量、卡片文案、卡片数量、章节顺序、是否带下载/命令/摘要模块。
- 不要改掉安全标签集合、核心间距节奏、卡片最小宽度、代码展示模式约束,或把模板混成不可维护的自由拼装页。
把 assets/portal-template.md 作为“兼容性优先”的门户页起始模板。
发布与校验
- 对已有页面做大改之前,同时保存本地备份和云端快照。
- 更新已有 MD 页面时,使用
iwiki-cli update -f 。 - 原页面类型不兼容时,在父节点下新建 MD 页面。
- 如果新的登录 shell 仍然要求手动补 PATH 或重新输入 token,就不要把 setup 视为完成。
- 发布后至少校验三件事:
iwiki-cli metadata 显示了预期的 content_type,并且版本号或更新时间变新。iwiki-cli get 的开头已经是新内容。- 渲染页在视觉上与所选参考风格足够接近。
- 如果用户后来反馈视觉 bug,先重新拉一次云端正文再打补丁,避免用过期本地草稿覆盖云端的新修复。
- 如果发布被
glibc 等环境兼容性问题阻塞,不要重复重试同一个二进制;先引导 Agent 升级运行时,再考虑换兼容机器,最后才是手工粘贴兜底。
输出要求
- 报告最终页面 URL 或 page ID。
- 说明是原地更新,还是重建了新的 MD 页面。
- 说明用于发布的本地 MD 文件路径。
- 说明环境本来就可用,还是本次执行中先补齐了持久化 PATH 与本地 token。
- 如果涉及代码片段,说明选择的是哪种代码展示模式。
- 如果 CLI 执行被阻塞,明确说明原因,并告诉用户 Agent 应先完成运行时升级,再继续 setup 和发布;其他主机或手工粘贴只作为备选。
- 清楚指出仍然存在的 iWiki 兼容性限制。