sync-ref-doc
将 .ref/ 目录下的源参考文档同步到 docs/ 目录,处理编码转换、callout 格式转换、Ref 引用展开,并保留已有 frontmatter。适用于 .ref/ 文件有更新需要应用到发布文档时。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
将 .ref/ 目录下的源参考文档同步到 docs/ 目录,处理编码转换、callout 格式转换、Ref 引用展开,并保留已有 frontmatter。适用于 .ref/ 文件有更新需要应用到发布文档时。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
从 GitHub Discussions Q&A 分类中收集已解答的问题,并将其整理后添加到对应 FAQ 子页面(docs/faq/*.md)。适用于定期将社区讨论中的高质量问答沉淀为 Wiki FAQ 条目。
根据 GitHub Issue 内容,向 FAQ 子页面(docs/faq/*.md)添加常见问题解答。适用于 Issue 被分配给 AI 助手且判断属于常见问题类型时。
为 docs/ 目录下的 Markdown 文件中出现的 VI 名称(如 `Xxx.vi`)添加 Jekyll 超链接,链接到 docs/reference/ 对应 API 章节。适用于新建文档或新增 VI 名称后的补全工作。
根据 GitHub Release 自动生成发布博客。适用于发布公告、版本回顾、变更总结、可直接发布的 Markdown 初稿。支持按指定 tag 校验、与上个版本对比、汇总区间内 release/PR/commit。
基于 SOC 职业分类
| name | sync-ref-doc |
| description | 将 .ref/ 目录下的源参考文档同步到 docs/ 目录,处理编码转换、callout 格式转换、Ref 引用展开,并保留已有 frontmatter。适用于 .ref/ 文件有更新需要应用到发布文档时。 |
| argument-hint | .ref/ 源文件名,如 "VI Description(zh-cn) - 02. Core Functions.md" |
| user-invocable | true |
同步参考文档:<.ref源文件名>
示例:
同步参考文档:VI Description(zh-cn) - 02. Core Functions.md
.ref/ 源文件中的最新内容同步到对应的 docs/ 目标文件。> [!NOTE] 等)转换为 Just the Docs callout 格式:docs/reference/ 中必须使用 {: .note .callout-hover } / {: .warning .callout-hover } 等带 .callout-hover 的格式,其它 docs/ 目录使用普通 {: .note } / {: .warning } 等格式。> - Ref: <标题> 引用行,替换为实际内容。.ref/ 下各仓库子目录由 .github/workflows/sync-from-repos.yml 工作流定时从源仓库同步,目录结构可能随上游调整而变化,不要硬编码具体路径。源文件与目标文件的对应关系按以下规则推导(使用 glob 在 .ref/ 下查找即可,不要假设固定的中间目录层级)。
.ref/<repo>/**/VI Description(zh-cn)/<source-name>.md 或 .ref/<repo>/**/Examples/<source-name>.md。需要时直接用 find .ref -path '*/_internal' -prune -o -name '<filename>' -print 或 glob .ref/**/<filename> 查找。_internal/ 子目录,凡是路径匹配 .ref/**/_internal/** 的内容都属于内部资料,不同步到 docs/。docs/reference/ 文件统一存放 API 参考;所有 docs/examples/ 文件统一存放示例。按文件名前缀分组,规则如下(<NN> 为两位数字章节号,<slug> 为去掉空格、转小写、特殊字符替换为 - 后的标题):
| 源文件名形态 | 目标文件位置 | 目标文件名规则 |
|---|---|---|
VI Description(zh-cn) - <NN>. <Title>.md(如 VI Description(zh-cn) - 02. Core Functions.md) | docs/reference/ | api-<NN>-<slug>.md(slug 由 <Title> 取小写、移除空格/标点后用 - 连接,如 core-functions、module-operation-api、debugdoctools) |
VI Description(zh-cn) - Addon <Name>.md(如 VI Description(zh-cn) - Addon Massdata.md) | docs/reference/ | api-addon-<slug>.md(slug 由 <Name> 小写化得到,如 api-string、ini-variable、massdata) |
<Name>(zh-cn).md(位于任意 Examples/ 下)(如 CSM Basic Example(zh-cn).md) | docs/examples/ | example-<slug>.md(slug 由 <Name> 小写化、空格转 -) |
反向查找:拿到一个 docs/reference/api-XX-yyy.md 时,反推源文件名为 VI Description(zh-cn) - XX. <Title>.md(<Title> 由 yyy 还原),用 find .ref -name 'VI Description(zh-cn) - XX*.md' -not -path '*/_internal/*' 在 .ref/ 中定位。
.ref/Communicable-State-Machine/** 下的版本作为权威源;Addon 文件优先取自对应的 Addon 仓库目录(即包含 Addon 关键字的同步目录)。ls docs/reference/api-*.md docs/examples/example-*.md 查看;新增文件按上述命名规则创建。11 在源端是 Obselete VIs,不同步到 docs/。定位文件:根据上述"路径规则",按文件名形态推导目标路径,并使用 find .ref -name '<filename>' -not -path '*/_internal/*' 在 .ref/ 下定位源文件。如果命中多个,按"例外/约定"挑选权威版本;如果源文件位于任意 _internal/ 子目录,则立即停止,不进行同步。
读取源文件(注意编码处理):
.ref/ 文件(尤其是 VI Description(zh-cn) - 12. Debug,Doc,Tools.md)使用 GBK 编码。gbk → gb2312 → gb18030 → utf-8 → latin-1。对比内容:将源文件与目标文件现有内容对比,识别缺失或过时的内容。
移除 NOTE/WARNING 块:从源文件内容中移除所有 > [!NOTE] / > [!WARNING] 块(这些块来自 VI Description(zh-cn).md,由其他文件引用,不直接复制)。
展开 Ref 引用:将所有 > - Ref: <标题> 行替换为对应标题的 NOTE/WARNING 块实际内容。
> - Ref: 行必须被完全展开,不能保留在最终的 docs/ 文件中。.ref/**/VI Description(zh-cn).md(CSM 框架的总目录文件,包含全部 NOTE/WARNING 块)和当前正在同步的源文件中查找标题匹配的 NOTE/WARNING 块。用 find .ref -name 'VI Description(zh-cn).md' -not -path '*/_internal/*' 定位。CSM 模块间通信类型、CSM模块间通信类型、模块间通信类型、模块间通信类型参数)。全局超时时间设置 → CSM同步消息全局超时。CSM - Set Module Attribute.vi),这些是跨文档引用,应移除而非展开。转换 Callout 格式:将 GitHub 格式转换为 Just the Docs 格式:
GitHub 格式(.ref/ 中使用) | Just the Docs 格式(docs/reference/ 中使用) |
|---|---|
> [!NOTE] | {: .note .callout-hover } |
> [!WARNING] | {: .warning .callout-hover } |
> [!TIP] | {: .tip .callout-hover } |
> [!IMPORTANT] | {: .important .callout-hover } |
> [!CAUTION] | {: .caution .callout-hover } |
重要:连续多个 callout 块时,每个 IAL({: .note .callout-hover })前面必须有一个空行,否则 kramdown 会将 IAL 应用到前一个 blockquote 上,导致样式错误。
正确写法示例:
{: .note .callout-hover }
> <b>标题1</b>
>
> 内容1
{: .note .callout-hover }
> <b>标题2</b>
>
> 内容2
注意:.callout-hover 类仅用于 docs/reference/ 目录下的 API 参考文档。docs/ 其他目录的文件使用普通格式({: .note }、{: .warning } 等)。
保留 frontmatter:保持目标 docs/ 文件中已有的 YAML frontmatter(title、layout、parent、nav_order 等)不变,不要覆盖。
更新文件并提交:将处理后的内容写入目标文件并提交。
完成更新后,运行以下命令验证所有引用都已展开:
grep -r "> - Ref:" docs/reference/
如果有输出,说明还有未展开的引用,需要继续处理。
> [!NOTE] / > [!WARNING] 块已从源内容中移除。> - Ref: 引用行已完全展开(不保留原始引用行)。docs/reference/ 下使用 .callout-hover 类。grep -r "> - Ref:" docs/reference/ 无输出(无残留引用)。