Community写作与编辑github.com

SBTopZZZ-LG/documentation-workspace-skill

一个与代理无关的技能,用于引导一个版本化的、基于文件系统的文档工作区,并生成每个工作区的 AGENTS.md 文件,从而指导后续代理的行为。

documentation-workspace-skill 是什么?

该技能旨在帮助AI代理在空目录中引导一个完整的文档工作区。它生成版本化的、基于文件系统的、完全自包含的知识库,用户拥有所有权,无供应商锁定。工作区包含一个核心的 AGENTS.md 文件,代理在进入工作区时会读取此文件,并遵循其中的规则,从而减少不必要的令牌消耗。该技能仅在生产新知识库时使用,如果目标目录已存在 AGENTS.md 或用户仅仅是在已有工作区内添加文档,则不应运行此技能。技能通过一个引导脚本创建目录结构、模板文件、辅助脚本和配置设置,并初始化 Git 和 npm(如果可用)。它适用于任何允许 AI 代理运行脚本的平台(如 Claude Code、Cursor、Codex 等),并提供清晰的步骤和用户确认机制,确保安全、准确的引导。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add SBTopZZZ-LG/documentation-workspace-skill

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

此文件面向技能消费者,而非贡献者。请参阅 AGENTS.md 获取开发上下文——本技能的构建、迭代和测试方式。

文档工作区引导

本技能教导 AI 代理如何从一个空(或近乎空)目录开始引导一个文档工作区。结果是一个版本化的、基于文件系统的、完全自包含的知识库——由用户拥有、免费、无供应商锁定,并且结构清晰,使得在其中工作的代理无需考虑组织、格式或工具。

核心概念

引导后的工作区包含其自己的 AGENTS.md——一个针对特定主题的“冻结迷你技能”,代理在进入时会读取它。AGENTS.md 是通过本技能附带的模板创建的。一旦工作区存在,代理将遵循 AGENTS.md,而不是本技能。这就是全部要点:一次性预先确定规则,然后永远不再花费令牌重新推导它们。

何时使用本技能

仅在以下情况下使用本技能:

  • 用户明确想要创建/设置/初始化/搭建一个文档工作区、文档文件夹或知识库。
  • 目标目录是空的或近乎空的(或者用户在存在文件的情况下明确选择了加入)。
  • 目标目录尚未包含 AGENTS.md(这表示它已经引导完毕)。

如果目标位置已存在 AGENTS.md:不要运行本技能。读取现有的 AGENTS.md 并遵循它。用户已经在一个已引导的工作区中。

何时不使用本技能

  • 用户想要添加文档、编辑文档、链接文档或在现有工作区内重新组织——工作区自己的 AGENTS.md 负责处理此事。
  • 用户想要推送到 GitHub、在浏览器中呈现工作区或设置托管——不同的关注点,不同的技能。
  • 用户正在询问关于文档、写作或笔记的通用问题——无需任何技能。

技能产出

调用本技能时,它会创建一个包含以下内容的工作区:

文件 / 目录用途
AGENTS.md工作区特定的“冻结迷你技能”。95% 规则,5% 主题摘要。代理进入时读取。
README.md工作区级别的概览。更丰富的介绍、自动生成的索引、指向 AGENTS.md 的指针。
index.yaml根目录的文档排序。默认为空。
.gitignore合理的默认值:备份、操作系统垃圾文件、编辑器文件、Node。
package.json开发依赖:prettier、markdownlint-cli、js-yaml。用于工具的 npm 脚本。
.prettierrcPrettier 配置:120 字符行宽、proseWrap preserve。
.markdownlint.jsonmarkdownlint 配置,禁用挑剔规则。
scripts/辅助脚本:format.js、validate.js、hash.js、reindex.js。
assets/空的共享资源目录。在工作区根目录创建。

如果 git 可用,则在工作区中初始化一个 Git 仓库。如果 Node 和 npm 可用,则安装开发依赖。

引导工作流

按顺序执行以下步骤。在每一步,如果指示需要,都必须与用户确认。 切勿假设。

步骤 1 — 确认目标位置

询问用户:"我将把文档工作区引导到 <cwd> 中。这是正确的吗?(是 / 否 / 指定路径)"

  • 如果回复为“是”:将 cwd 作为目标继续。
  • 如果回复为“否”:询问正确路径,确认,然后继续。
  • 如果用户说“在这个文件夹中”或类似的话:假设是 cwd,但仍需确认。

步骤 2 — 确认目标目录为空(或获得许可)

列出目标目录的内容(排除诸如 .git 之类的隐藏文件)。

如果为空:继续步骤 3。

如果非空:

  1. 向用户展示其中的内容。
  2. 解释:"此目录非空。默认情况下,本技能拒绝引导到非空目录。我可以 (a) 中止,(b) 你确认你希望我继续,我会保持现有文件不变,或者 (c) 你指定一个子目录来创建工作区。"
  3. 等待明确确认。如果用户没有给出严格肯定的确认,则中止。
  4. 如果用户说“继续”或“是,请继续”——将其记录为许可并继续。

如果目标位置已存在 AGENTS.md:停止。工作区已引导完毕。告知用户并提供读取现有 AGENTS.md 的选项。

如果目标位置已经初始化了 git:跳过后续的 git init 步骤,但继续其余流程。

步骤 3 — 收集主题摘要

询问用户:"此文档工作区是关于什么的?用 1-2 小段描述主题。这将成为 AGENTS.md 中的主题摘要和 README.md 中的介绍。"

主题摘要规则:

  • 1 段(首选),最多 2 段
  • 纯文本,无格式,无列表
  • 清晰说明工作区记录的内容

如果用户给出单个句子:没问题,直接使用。 如果用户给出较长的描述:将其浓缩(征得用户同意)或最多使用 2 段。 如果用户说“你决定”或“我还不确定”:提示至少提供一个句子——主题摘要是 AGENTS.md 中唯一与主题相关的部分,工作区需要某种锚点。

步骤 4 — 运行引导脚本

一旦你获得:

  • 目标路径
  • 目录合适的确认
  • 主题摘要

...运行引导脚本:


node /assets/skill-scripts/bootstrap.js --target --topic ""

该脚本将:

  1. 检查 Node.js 是否可用(如果不可用,则跳过依赖于 Node 的工件并发出警告)
  2. 检查 git 是否可用(如果不可用,则跳过 git init)
  3. 创建目录结构
  4. 从 <skill-dir>/assets/templates/ 实例化所有模板,替换 {{TOPIC_SUMMARY}} 和 {{CREATED}}
  5. 将工作区附带的脚本(format.js、validate.js、hash.js、reindex.js)复制到 <target>/scripts/
  6. 运行 npm install(如果 Node + npm 可用)
  7. 运行 git init(如果 git 可用)
  8. 打印创建内容的摘要

如果脚本失败(例如权限问题、缺少工具),则退回到使用 <skill-dir>/assets/templates/ 中的模板手动创建文件。手动将每个模板复制到目标位置,替换占位符,并通过从 <skill-dir>/assets/workspace-scripts/ 复制来创建脚本目录。

步骤 5 — 告知用户创建的内容

脚本完成后,总结:

  • 创建了哪些文件和目录
  • 是否运行了 git init(或者跳过并给出提醒)
  • 是否运行了 npm install(或者跳过并给出提醒)
  • AGENTS.md 现在是此工作区的治理文档
  • 工作区已准备就绪

然后询问:"您想开始编写文档,还是先检查一下结构?"

模板

所有模板文件位于 <skill-dir>/assets/templates/。引导脚本会复制并替换它们。

模板产出
AGENTS.md.templateAGENTS.md
README.md.templateREADME.md
index.yaml.templateindex.yaml
_gitignore_.template.gitignore(下划线包裹变为点前缀)
package.json.templatepackage.json
_prettierrc_.template.prettierrc
_markdownlint.json_.template.markdownlint.json

使用的占位符:

  • {{TOPIC_SUMMARY}} — 替换为用户的主题描述
  • {{CREATED}} — 替换为今天的日期(YYYY-MM-DD)

引导脚本会自动处理下划线包裹的约定(名为 _foo_.template 的文件在输出中变为 .foo)。

工作区附带的脚本

引导完成后,工作区在 scripts/ 中包含以下辅助脚本:

脚本用途
scripts/format.js对所有 .md/.html/.json/.yaml 文件运行 Prettier
scripts/validate.js对所有 .md 文件运行 markdownlint
scripts/hash.js计算文件的 SHA-256 哈希,可选地写入 assets/ 并更新清单
scripts/reindex.js重新生成 README.md 中的自动索引部分

所有均可通过 npm 调用:

  • npm run format
  • npm run validate
  • npm run hash
  • npm run reindex

参考资料

有关特定主题的深层上下文,请参阅 references/ 目录:

  • references/asset-management.md — 如何添加、链接和迁移资源(内容寻址存储、清单、每个文档 vs 共享)
  • references/document-promotion.md — 如何将单文件文档提升为文件夹(当其获得子文档时)

这些仅在相关时加载到上下文中。主要的 AGENTS.md 涵盖常见情况;参考资料用于较少见的情况。

对代理的提醒(在引导过程中)

  • 主题摘要是用户提供的唯一与主题相关的内容。所有其他内容都是模板化的。不要询问文件名、链接风格、前置元数据字段、提交消息风格或任何其他规则——这些都已嵌入模板中。
  • 如果用户提出了模板不支持的要求,请提出来。不要悄悄地发明新的约定。正确的做法是 (a) 记录供未来模板修订使用,或 (b) 在获得明确确认后将其作为例外实现。
  • 引导完成后,本技能就结束了。下次用户想要在工作区中执行任何操作时,代理将读取 AGENTS.md 并遵循它。除非用户明确要求引导另一个工作区或重新引导现有工作区,否则本技能不再运行。

相关技能