AI工厂文档生成器Skill ai-factory.docs

这个技能用于自动生成和维护项目文档,创建简洁的README作为着陆页,并提供按主题分割的详细文档目录。适用于当用户说“创建文档”、“编写文档”、“更新文档”、“生成README”或“文档项目”时。关键词:文档生成、自动化、AI辅助、项目管理、SEO优化。

DevOps 0 次安装 0 次浏览 更新于 3/18/2026

名称: ai-factory.docs 描述: 生成和维护项目文档。创建一个简洁的README作为着陆页,并带有按主题分割的详细文档目录。当用户说“创建文档”、“编写文档”、“更新文档”、“生成README”或“文档项目”时使用。 参数提示: “[–web]” 允许工具: 读取 写入 编辑 全局查找 搜索 Bash(mkdir, npx, python) 询问用户问题 问题 网页获取 网页搜索 禁用模型调用: true 元数据: 作者: AI Factory 版本: “1.0” 类别: 文档

文档 - 项目文档生成器

生成、维护和改进项目文档,遵循着陆页README + 详细文档/结构。

核心原则

  1. README是着陆页,不是手册。 ~80-120行。第一印象、安装、快速示例、链接到详情。
  2. 详情放入docs/ 每个文件自包含 — 一个主题,一页。用户应该能够阅读单个文档文件并获得该主题的完整图片。
  3. 无重复。 如果信息在docs/中,README链接到它 — 不重复它。例外:安装命令可以出现在两者中(用户期望在README中)。
  4. 导航。 每个docs/文件都有一个标题行,带有prev/next链接,遵循文档表格顺序:[← 上一页](prev.md) · [返回README](../README.md) · [下一页 →](next.md)。第一页没有prev链接;最后一页没有next链接。每页以“另请参阅”部分结束,链接到2-3个相关页面。
  5. 交叉链接使用相对路径。 从README:docs/workflow.md。docs之间:workflow.md(相同目录)。
  6. 可扫描。 使用表格、项目列表和代码块。避免长段落。用户扫描,不阅读。

工作流程

步骤 0: 加载项目上下文

读取.ai-factory/DESCRIPTION.md 如果存在以理解:

  • 技术栈(语言、框架、数据库)
  • 项目目的和架构
  • 关键功能和约定

探索代码库:

  • 读取package.jsoncomposer.jsonrequirements.txtgo.modCargo.toml等。
  • 扫描src/结构以理解架构
  • 查找现有文档、注释、API端点、CLI命令
  • 检查现有README.md和docs/目录

扫描项目根目录中分散的markdown文件:

使用Glob查找项目根目录中所有*.md文件(排除node_modules/.ai-factory/、代理目录):

CHANGELOG.md, CONTRIBUTING.md, ARCHITECTURE.md, DEPLOYMENT.md,
SECURITY.md, API.md, SETUP.md, DEVELOPMENT.md, TESTING.md, 等。

记录每个文件、其大小和内容简要摘要。此列表用于步骤1.1。

步骤 0.1: 解析标志

--web  → 生成文档的HTML版本

步骤 1: 确定当前状态

检查现有文档:

状态 A: 无 README.md                → 完整生成(README + docs/)
状态 B: README.md 存在,无 docs/  → 分析README,建议分割到docs/
状态 C: README.md + docs/ 存在     → 取决于标志(见下文)

状态 C 带有 --web 标志 — 询问用户:

文档已存在(README.md + docs/)。

您想做什么?
- [ ] 仅生成HTML — 从当前文档构建站点
- [ ] 先审核和改进 — 检查问题,然后生成HTML
- [ ] 仅审核 — 检查问题而不生成HTML
  • “仅生成HTML” → 跳过步骤1.1、步骤2、步骤4 — 直接到步骤3(HTML生成),然后完成
  • “先审核和改进” → 运行步骤1.1 → 步骤2(状态 C) → 步骤3 → 步骤4 → 步骤4.1
  • “仅审核” → 运行步骤1.1 → 步骤2(状态 C) → 步骤4 → 步骤4.1(跳过步骤3)

状态 C 无 --web 标志 → 正常运行步骤2(状态 C)。

步骤 1.1: 检查分散的Markdown文件

如果在项目根目录中找到分散的.md文件(从步骤0),建议将它们整合到docs/目录。

应移动到docs/的常见文件:

根文件 目标在 docs/ 合并或移动?
CONTRIBUTING.md docs/contributing.md 移动
ARCHITECTURE.md docs/architecture.md 移动
DEPLOYMENT.md docs/deployment.md 移动
SETUP.md docs/getting-started.md 合并(追加到现有)
DEVELOPMENT.md docs/getting-started.mddocs/contributing.md 合并
API.md docs/api.md 移动
TESTING.md docs/testing.md 移动
SECURITY.md docs/security.md 移动

留在根目录的文件(标准约定):

  • README.md — 总是保留
  • CHANGELOG.md — 标准根级文件,保持原样
  • LICENSE / LICENSE.md — 标准根级文件,保持原样
  • CODE_OF_CONDUCT.md — 标准根级文件,保持原样

如果找到分散文件,询问用户:

在项目根目录中找到 [N] 个markdown文件:

  CONTRIBUTING.md (45行) — 贡献指南
  ARCHITECTURE.md (120行) — 系统架构概述
  DEPLOYMENT.md (80行) — 部署说明
  SETUP.md (30行) — 设置指南(与getting-started重叠)

建议操作:
  → 移动 CONTRIBUTING.md → docs/contributing.md
  → 移动 ARCHITECTURE.md → docs/architecture.md
  → 移动 DEPLOYMENT.md → docs/deployment.md
  → 合并 SETUP.md 到 docs/getting-started.md

您想:
- [ ] 应用所有建议
- [ ] 让我选择哪些
- [ ] 跳过 — 保持文件原样

当移动/合并时:

  1. docs/中创建目标文件,带有prev/next导航标题(遵循文档表格顺序)和“另请参阅”页脚
  2. 如果合并到现有文档 — 在新部分标题下追加内容,避免重复已存在的信息
  3. 暂时不要删除原始文件 — 在审核步骤确认一切就位前保留它们
  4. 将新docs/页面添加到README的文档表格中
  5. 更新其他文件中指向旧根级文件的任何链接
  6. 记录哪些文件被移动/合并 — 此列表用于步骤4.1

重要: 从不强制移动文件。总是先显示计划并获取用户批准。

步骤 2 (状态 A): 从零开始生成

当无 README.md 存在时,生成完整文档集。

2.1: 分析项目以获取文档主题

探索代码库并识别文档主题:

始终包括:
- getting-started.md    (安装、设置、快速开始)

如果相关则包括:
- architecture.md       (如果项目有清晰架构:服务、模块、层)
- api.md                (如果项目暴露API端点)
- configuration.md      (如果项目有配置文件、环境变量、功能标志)
- deployment.md         (如果Dockerfile、CI/CD、部署脚本存在)
- contributing.md       (如果开源或团队项目)
- security.md           (如果身份验证、权限或安全模式存在)
- testing.md            (如果测试套件存在)
- cli.md                (如果项目有CLI命令)

询问用户:

我分析了您的项目并建议这些文档页面:

1. getting-started.md — 安装、设置、快速开始
2. architecture.md — 项目结构和模式
3. api.md — API端点参考
4. configuration.md — 环境变量和配置

您想:
- [ ] 生成所有这些
- [ ] 让我选择哪些
- [ ] 添加更多主题

2.2: 生成 README.md

结构(目标~80-120行):

# 项目名称

> 一行标语描述项目。

2-3句简要描述项目做什么以及为什么存在。

## 快速开始

\`\`\`bash
# 安装步骤(1-3个命令)
\`\`\`

## 关键功能

- **功能 1** — 简要描述
- **功能 2** — 简要描述
- **功能 3** — 简要描述

## 示例

\`\`\`
# 显示真实使用示例 — 这是用户决定“我想要这个”的地方
\`\`\`

---

## 文档

| 指南 | 描述 |
|-------|-------------|
| [快速开始](docs/getting-started.md) | 安装、设置、第一步 |
| [架构](docs/architecture.md) | 项目结构和模式 |
| [API参考](docs/api.md) | 端点、请求/响应格式 |
| [配置](docs/configuration.md) | 环境变量、配置文件 |

## 许可证

MIT(或项目中的任何内容)

README的关键规则:

  • 顶部徽标/徽章行(如果项目有)
  • 标语作为块引用
  • 快速开始带有真实安装命令(从包管理器检测)
  • 关键功能作为项目列表(3-6项,可扫描)
  • 真实使用示例显示“哇因素”
  • 文档表格链接到docs/
  • 底部许可证
  • 无长描述、无完整API参考、无配置详情

2.3: 生成 docs/ 文件

对于每个批准的主题,创建文档文件:

[← 上一主题](previous-topic.md) · [返回README](../README.md) · [下一主题 →](next-topic.md)

# 主题标题

内容按子主题组织,带有标题、代码示例和表格。
保持每个部分自包含。

## 另请参阅

- [相关主题 1](related-topic.md) — 简要描述
- [相关主题 2](other-topic.md) — 简要描述

导航链接顺序 遵循README.md中的文档表格(从上到下)。第一文档页省略“← 上一”链接;最后一页省略“下一 →”链接。示例4页:

getting-started.md:  [返回README](../README.md) · [架构 →](architecture.md)
architecture.md:     [← 快速开始](getting-started.md) · [返回README](../README.md) · [API参考 →](api.md)
api.md:              [← 架构](architecture.md) · [返回README](../README.md) · [配置 →](configuration.md)
configuration.md:    [← API参考](api.md) · [返回README](../README.md)

每个主题的内容指南:

getting-started.md

  • 先决条件(运行时版本、所需工具)
  • 逐步安装
  • 首次运行 / 快速开始
  • 验证工作(预期输出)
  • 下一步链接

architecture.md

  • 高级概述(如果有用则用图表)
  • 目录结构带解释
  • 关键模式(命名、导入、错误处理)
  • 数据流

api.md

  • 基本URL / 配置
  • 身份验证
  • 按资源分组的端点
  • 请求/响应示例
  • 错误代码

configuration.md

  • 所有环境变量带描述和默认值
  • 配置文件及其目的
  • 功能标志

deployment.md

  • 构建步骤
  • 环境设置
  • CI/CD流水线描述
  • 监控 / 健康检查

步骤 2 (状态 B): 将现有README分割到docs/

当README.md存在但长(150+行)且无docs/目录时。

2.1: 分析README结构

读取README.md并识别:

  • 哪些部分应保留(着陆页内容)
  • 哪些部分应移动到docs/(详细内容)

保留在README:

  • 标题、标语、徽章
  • “为什么?” / 关键功能项目列表
  • 快速安装(1-3个命令)
  • 简要示例
  • 文档链接表格
  • 外部链接、许可证

移动到docs/:

  • 详细设置说明 → getting-started.md
  • 架构 / 项目结构 → architecture.md
  • 完整API参考 → api.md
  • 配置详情 → configuration.md
  • 贡献指南 → contributing.md
  • 任何覆盖单个主题且长~30行的部分

2.2: 向用户提议更改

您的README.md是 [N] 行。我建议分割它:

README.md (~100行) — 保留为着陆页:
  ✓ 标题 + 标语
  ✓ 关键功能
  ✓ 快速安装
  ✓ 示例
  ✓ 文档链接表格

移动到 docs/:
  → “安装”部分 → docs/getting-started.md
  → “配置”部分 → docs/configuration.md
  → “API参考”部分 → docs/api.md
  → “架构”部分 → docs/architecture.md

继续?

2.3: 执行分割

  1. 创建 docs/ 目录
  2. 创建每个文档文件,内容来自README + prev/next导航标题(遵循文档表格顺序)+ “另请参阅”页脚
  3. 重写README作为着陆页,带有文档链接表格
  4. 验证无内容丢失 — 旧README的每个部分必须存在于某处

步骤 2 (状态 C): 改进现有文档

当README.md和docs/都存在时。

2.1: 审核当前文档

检查:

  • README长度 — 是否仍是着陆页(<150行)?
  • 缺失主题 — 是否有项目方面未文档化?
  • 过时内容 — 文档是否引用不再存在的文件/API?
  • 导航 — 所有文档是否有prev/next标题链接和“另请参阅”?
  • 坏链接 — 验证所有内部链接指向现有文件/锚点
  • 一致性 — 所有文档中相同的格式样式
  • 标准合规性 — 现有文档是否符合当前技能标准?(见2.1.1)

2.1.1: 标准合规性检查

文档可能由旧版本的此技能生成。比较现有文档与当前核心原则和模板。常见差距检测:

缺失标准 如何检测 自动修复
无prev/next导航 标题只有[← 返回README]·链接到兄弟页面 添加prev/next链接遵循文档表格顺序
无“另请参阅”部分 文件以无## 另请参阅结束 添加部分带2-3个相关页面链接
旧“返回README”格式 链接路径或文本不匹配当前模式 更新到当前格式
README中缺失文档表格 README无表格链接到docs/页面 添加表格
README太长 README超过150行尽管docs/存在 提议移动多余内容到docs/

当找到差距时,将它们包含在审核报告中与内容问题一起(步骤2.2)。将其视为常规改进 — 显示计划并在应用前获取用户批准。

不要问“这是由旧版本生成的吗?” — 只是静默检测缺失并修复。用户不需要知道技能版本;他们只看到文档变好。

2.2: 提议改进

文档审核结果:

✅ README是简洁的(105行)
⚠️  docs/页面缺失prev/next导航 — 将添加
⚠️  docs/api.md缺失 — 项目有12个API端点
⚠️  docs/configuration.md引用旧环境变量DB_HOST(现在DATABASE_URL)
❌ docs/getting-started.md链接到docs/setup.md,后者不存在

提议修复:
1. 添加prev/next导航到所有docs/页面
2. 创建docs/api.md带端点参考
3. 更新docs/configuration.md中的DATABASE_URL
4. 修复docs/getting-started.md中的坏链接

应用修复?

步骤 3: 生成HTML版本 (–web 标志)

当传递 --web 标志时,从markdown文档生成静态HTML站点。

3.1: 创建 docs-html/ 目录

mkdir -p docs-html

3.2: 生成HTML文件

对于每个markdown文件(README.md + docs/*.md),生成HTML版本:

HTML模板:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>{page_title} — {project_name}</title>
  <style>
    :root {
      --bg: #ffffff;
      --text: #1a1a2e;
      --text-secondary: #555;
      --accent: #0066cc;
      --border: #e2e8f0;
      --code-bg: #f6f8fa;
      --nav-bg: #f8fafc;
    }
    @media (prefers-color-scheme: dark) {
      :root {
        --bg: #0d1117;
        --text: #e6edf3;
        --text-secondary: #8b949e;
        --accent: #58a6ff;
        --border: #30363d;
        --code-bg: #161b22;
        --nav-bg: #161b22;
      }
    }
    * { margin: 0; padding: 0; box-sizing: border-box; }
    body {
      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
      line-height: 1.6;
      color: var(--text);
      background: var(--bg);
      max-width: 900px;
      margin: 0 auto;
      padding: 2rem 1.5rem;
    }
    nav {
      background: var(--nav-bg);
      border: 1px solid var(--border);
      border-radius: 8px;
      padding: 1rem 1.5rem;
      margin-bottom: 2rem;
    }
    nav a {
      color: var(--accent);
      text-decoration: none;
      margin-right: 1.5rem;
    }
    nav a:hover { text-decoration: underline; }
    nav a.active { font-weight: 600; }
    h1 { font-size: 2rem; margin: 1.5rem 0 1rem; border-bottom: 2px solid var(--border); padding-bottom: 0.5rem; }
    h2 { font-size: 1.5rem; margin: 2rem 0 0.75rem; }
    h3 { font-size: 1.2rem; margin: 1.5rem 0 0.5rem; }
    p { margin: 0.75rem 0; }
    a { color: var(--accent); }
    code {
      background: var(--code-bg);
      padding: 0.15em 0.4em;
      border-radius: 4px;
      font-size: 0.9em;
    }
    pre {
      background: var(--code-bg);
      border: 1px solid var(--border);
      border-radius: 8px;
      padding: 1rem;
      overflow-x: auto;
      margin: 1rem 0;
    }
    pre code { background: none; padding: 0; }
    table {
      width: 100%;
      border-collapse: collapse;
      margin: 1rem 0;
    }
    th, td {
      border: 1px solid var(--border);
      padding: 0.5rem 0.75rem;
      text-align: left;
    }
    th { background: var(--code-bg); font-weight: 600; }
    ul, ol { padding-left: 1.5rem; margin: 0.75rem 0; }
    li { margin: 0.25rem 0; }
    blockquote {
      border-left: 4px solid var(--accent);
      padding-left: 1rem;
      color: var(--text-secondary);
      margin: 1rem 0;
    }
    hr { border: none; border-top: 1px solid var(--border); margin: 2rem 0; }
    img { max-width: 100%; border-radius: 8px; }
  </style>
</head>
<body>
  <nav>
    {nav_links}
  </nav>
  <main>
    {content}
  </main>
</body>
</html>

3.3: 转换markdown到HTML

对于每个文档文件:

  1. 解析markdown内容(标题、代码块、表格、链接、列表、块引用、图像)
  2. 转换为HTML元素
  3. 修复链接: 更改.md引用为.html(例如,docs/getting-started.mdgetting-started.html
  4. 生成导航栏,链接到所有页面
  5. 写入 docs-html/ 目录

文件映射:

README.md          → docs-html/index.html
docs/getting-started.md → docs-html/getting-started.html
docs/api.md        → docs-html/api.html
docs/configuration.md → docs-html/configuration.html

3.4: 输出结果

✅ HTML文档生成在 docs-html/

  docs-html/
  ├── index.html            (来自 README.md)
  ├── getting-started.html  (来自 docs/getting-started.md)
  ├── api.html              (来自 docs/api.md)
  └── configuration.html    (来自 docs/configuration.md)

在浏览器中打开:
  open docs-html/index.html

步骤 4: 文档审核

任何内容更改后强制进行(生成、分割、改进、文件整合)。不要跳过此步骤。

仅当选择“仅生成HTML”时跳过此步骤 — 无内容修改,无需审核。

读取每个生成/修改的文件并针对以下两个检查表评估它。在向用户呈现结果前修复任何找到的问题。

技术检查表

验证结构、链接和完整性:

  • [ ] README.md 少于150行
  • [ ] README有:标题、标语、快速开始、示例、文档表格、许可证
  • [ ] 每个docs/文件有prev/next导航标题遵循文档表格顺序
  • [ ] 第一文档页无“← 上一”链接;最后一页无“下一 →”链接
  • [ ] 每个docs/文件底部有“另请参阅”部分带2-3个相关链接
  • [ ] 分割/重组期间无内容丢失
  • [ ] 所有内部链接工作(无坏引用、无死锚点)
  • [ ] 代码示例使用项目的实际命令/语法
  • [ ] 安装说明真实且工作(从包管理器文件验证)
  • [ ] README和docs/之间无重复内容
  • [ ] 无分散根级.md文件应放docs/

可读性检查表 — “新用户视角”

读取每页,仿佛您是从未见过此项目的开发人员。对于每页,验证:

前10秒(首屏):

  • [ ] 我能在阅读README的10秒内理解此项目做什么吗?
  • [ ] 标语清晰具体 — 不模糊营销(“下一代解决方案”)?
  • [ ] 有真实的安装命令我可以立即复制粘贴吗?

“展示,不讲述”:

  • [ ] README有具体使用示例(不仅仅是“安装并运行”)?
  • [ ] 代码块显示真实命令与真实输出,不是抽象占位符?
  • [ ] 示例可复制粘贴 — 无<placeholder>用户必须替换?

可扫描性:

  • [ ] 我能在5秒内通过扫描标题找到任何特定主题吗?
  • [ ] 段落短(最大3-4行)?长段落被跳过
  • [ ] 使用列表而不是逗号分隔的内联枚举?
  • [ ] 使用表格处理结构化数据而不是嵌套项目列表?

行话和假设:

  • [ ] 文档页在首次使用时解释缩写(或链接到解释)?
  • [ ] 无关于内部知识的假设?(“如RFC中描述” — 哪个RFC?)
  • [ ] 初级开发人员能在不问同事的情况下理解每页吗?

导航和流程:

  • [ ] 阅读README后,清楚下一步去哪里吗?
  • [ ] 完成任何docs/页后,prev/next链接和“另请参阅”逻辑上引导我前进吗?
  • [ ] README中的文档表格按新用户会遵循的路径排序吗?(快速开始 → 工作流程 → 详情)

动机:

  • [ ] README在“如何工作”前回答“为什么我应该关心?”吗?
  • [ ] 有“哇时刻” — 让我想尝试的功能或示例吗?
  • [ ] 文档结构感觉邀请,不压倒吗?(最大6-8文档页)

呈现审核

运行两个检查表后,呈现摘要:

📋 文档审核

技术:
  ✅ 所有链接已验证(14个内部链接,0个坏)
  ✅ README是108行
  ✅ 所有页面有导航
  ⚠️  docs/api.md有占位符示例 — 需要真实端点

可读性:
  ✅ README在10秒内解释目的
  ✅ 所有代码示例可复制粘贴
  ⚠️  docs/architecture.md有12行段落 — 应分割
  ⚠️  “CQRS”在docs/architecture.md中使用未解释

应用修复:
  → 分割docs/architecture.md中的长段落为3个较短段落
  → 添加“(命令查询责任隔离)”在首次提及CQRS后
  → 替换docs/api.md中的占位符为真实端点示例

所有检查通过 ✅

步骤 4.1: 清理移动文件

仅如果在步骤1.1期间文件从根移动到docs/。

审核确认所有内容正确放置在docs/后,提供删除原始根级文件:

以下根文件已纳入 docs/:

  CONTRIBUTING.md → 现在在 docs/contributing.md
  ARCHITECTURE.md → 现在在 docs/architecture.md
  DEPLOYMENT.md → 现在在 docs/deployment.md
  SETUP.md → 合并到 docs/getting-started.md

这些原始文件不再需要。删除它们?
- [ ] 是,删除所有原始文件
- [ ] 让我选择哪些删除
- [ ] 否,保留它们(我稍后清理)

当删除时:

  1. 再次验证目标docs/文件包含原始的所有内容
  2. 删除根文件
  3. 运行 git status 显示删除了什么 — 用户可以用 git checkout 恢复如果需要

不要自动删除。 总是询问。用户可能想暂时保留原始文件以供参考或差异比较。

步骤 5: 更新 AGENTS.md

任何文档更改后,更新AGENTS.md中的文档部分(如果文件存在)。

读取AGENTS.md并找到## 文档部分。更新它以反映所有文档文件的当前状态:

## 文档
| 文档 | 路径 | 描述 |
|----------|------|-------------|
| README | README.md | 项目着陆页 |
| 快速开始 | docs/getting-started.md | 安装、设置、第一步 |
| 架构 | docs/architecture.md | 项目结构和模式 |
| API参考 | docs/api.md | 端点、请求/响应格式 |
| 配置 | docs/configuration.md | 环境变量、配置文件 |

规则:

  • 首先列出README.md,然后所有docs/文件按README文档表格顺序
  • 如果在步骤1.1期间文件从根移动/合并,反映新位置
  • 如果创建了新文档页,添加它们
  • 如果文档页被移除,移除它们
  • 保持描述简洁(少于10词)
  • 如果AGENTS.md不存在,静默跳过此步骤

上下文清理

代码库扫描和文档生成后上下文重。所有文档已保存 — 建议释放空间:

询问用户问题:继续前释放上下文?

选项:
1. /clear — 完全重置(推荐)
2. /compact — 压缩历史
3. 继续原样

重要规则

  1. 总是先询问再更改现有文档 — 先显示计划
  2. 从不删除内容 而不移动到别处
  3. 检测真实项目信息 — 不发明功能,读取package.json/配置文件
  4. 使用项目的语言 — 如果项目README是俄语,用俄语写文档
  5. 保留现有徽章/徽标 — 不在重组期间移除它们
  6. 添加到 .gitignore 如果生成HTML:添加 docs-html/ 到 .gitignore