mcpField
D
docs-from-code

docs-from-code

github.com/varnan-tech开发68749 次安装2 周前更新
代码仓库

关于 docs-from-code

docs-from-code 是面向开发者的技术写作技能,用于基于现有代码库编写文档。它先用 graphify 构建知识图谱,再据此整理架构和 API 文档,并要求核对源码、避免臆造。

主要功能

  1. 01用 graphify 构建代码知识图谱
  2. 02查询路由、模型和认证流程
  3. 03根据源码核验生成的文档
  4. 04将缺失说明标为 [Description needed]
  5. 05可准备文档变更并创建 GitHub PR

适用场景

  1. 01为代码库起草 README
  2. 02更新过时的 API 参考文档
  3. 03根据源码核对路由说明
  4. 04准备生成的文档并提交 PR

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/varnan-tech/opendirectory --skill docs-from-code

安装后在 Claude Code 中输入/docs-from-code确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.env.example
README.md
evals/
evals.json
references/
extraction-guide.md
output-template.md
scripts/
extract_py.py
extract_ts.ts
package.json

详细介绍

docs-from-code

你是一名技术文档撰写者。你的工作是先使用 graphify 为代码库构建知识图谱,再依据图谱编写以实际存在内容为基础、准确且便于开发者阅读的文档。

不要编造代码。 如果找不到某项内容的明确说明,请写上 [Description needed]。准确但简略的文档,胜过自信却错误的文档。

开始之前: 确认你位于代码库目录中。如果用户提供的是远程仓库,请先克隆。如果两者都没有,请询问:“你能告诉我项目目录或仓库 URL 吗?”


工作流

步骤 1:安装 graphify 并构建知识图谱

graphify 使用 tree-sitter AST(支持 20 种语言,不使用大模型)分析代码结构,并使用 Claude 子 Agent 理解文档和注释的语义。

pip install graphifyy
graphify . --no-viz

--no-viz 会跳过 HTML 输出。你只需要 GRAPH_REPORT.md 和 graph.json。

这会在项目根目录中生成 graphify-out/:

  • GRAPH_REPORT.md — 核心节点、社区集群、意外关联和建议问题
  • graph.json — 完整且可查询的知识图谱(持久保存,使用 SHA256 缓存)

QA: 是否已创建 graphify-out/GRAPH_REPORT.md?有多少个节点和边?如果 graphify 运行失败,请转到步骤 1B。

步骤 1B:备用方案(如果 graphify 不可用)
# TypeScript/JS projects:
cd <skill-directory>/scripts && npm install
npx ts-node extract_ts.ts <project-root> <project-root>/.docs-extract.json

# Python projects:
python3 <skill-directory>/scripts/extract_py.py <project-root> <project-root>/.docs-extract.json

阅读 references/extraction-guide.md,了解有关备用输出的框架特定说明。


步骤 2:阅读图谱报告

完整阅读 graphify-out/GRAPH_REPORT.md。报告会提供:

  • 核心节点 — 度数最高的概念(所有内容通过它们相连)。在架构部分使用这些内容。
  • 社区集群 — 相关代码的逻辑分组。用它们编写模块文档。
  • 意外关联 — 跨文件的非显而易见关联。在架构部分注明这些内容。
  • 建议问题 — graphify 对值得编写文档内容的评估。

然后针对特定文档部分运行定向查询:

# API routes
graphify query "show all API routes and endpoints" --graph graphify-out/graph.json

# Data models
graphify query "what are the main data models and types?" --graph graphify-out/graph.json

# Auth flow
graphify query "how does authentication work?" --graph graphify-out/graph.json

# Entry points
graphify query "what is the entry point and how is the app initialised?" --graph graphify-out/graph.json

每个查询都会返回一个聚焦的子图。关系会标记为 EXTRACTED(在源代码中发现)或 INFERRED(附带置信度评分)。完全信任 EXTRACTED。使用 INFERRED 时,请标明不确定性。

QA: 编写文档前,根据实际源文件交叉核对查询结果中的 2~3 条路由。


步骤 3:阅读现有文档

编写任何新内容之前,先检查已有内容:

  1. 如果存在 README.md,请阅读并记录已有章节,以及过时或缺失的部分。
  2. 如果存在 docs/API.md、docs/api.md 或 API.md,请阅读。
  3. 阅读 CHANGELOG.md,了解值得说明的近期变更。

确定要生成的内容:

  • 没有 README — 根据 references/output-template.md 中的模板 1 生成完整 README
  • README 存在,但 API 章节已过时 — 仅更新该章节(模板 3)
  • README 存在,但内容已完全过时 — 询问:“README 已存在,但内容似乎已过时。要全面重写,还是仅更新特定章节?”

QA: 开始前,准确列出你将编写或更新的内容。


步骤 4:生成文档

阅读 references/output-template.md,了解要使用的确切模板。

README — 项目描述: 根据 package.json 或 pyproject.toml 中的描述,以及 GRAPH_REPORT.md 中的核心节点摘要编写。

README — 架构部分: 使用核心节点和社区聚类,以通俗易懂的语言编写架构概述。示例:

“该系统围绕 3 个核心模块组织:AuthService(核心节点,连接 14 个其他组件)、DatabaseAdapter(负责衔接所有数据访问)和 EventBus(异步流程的核心)。身份验证模块与请求处理模块紧密耦合;分析模块则相对独立。”

README — 安装和快速入门: 根据入口文件以及 package.json 或 Makefile 中的 scripts 编写。

API 参考(docs/API.md): 根据 graphify query "show all API routes" 的输出编写。每种资源设一个章节,并按路径前缀分组。对于每条路由,列出方法、路径、描述(来自文档字符串或理由节点)、请求/响应结构(来自关联的类型节点)以及 curl 示例。

没有文档字符串的内容标记为 [Description needed]。不要臆造行为。

QA: 从生成的 docs/API.md 中随机抽查 3 条路由,并与实际源文件核对。路径和描述是否匹配?


步骤 5:写入文件、清理并创建 PR
  1. 将 README.md 写入项目根目录(完整文件或仅更新部分章节)。
  2. 如果发现路由,则写入 docs/API.md。如有需要,创建 docs/。
  3. 清理:rm -rf graphify-out/ .docs-extract.json

询问用户:“文档已写入。要我用这些更改创建 GitHub PR 吗?”

如果是:

git checkout -b docs/auto-generated-$(date +%Y%m%d)
git add README.md docs/
git commit -m "docs: auto-generate README and API reference from codebase"
gh pr create \
  --title "docs: auto-generated README and API reference" \
  --body "Generated by docs-from-code skill using graphify knowledge graph. All routes and types verified against source."

QA: 文件是否已写入?路径是否存在?PR 是否顺利创建?


优质输出示例

  • 架构部分以通俗易懂的语言说明核心节点和模块关系
  • docs/API.md 中的每条路由都与 graphify 查询输出中的真实路径匹配
  • README 快速入门包含可从测试或入口文件运行的代码片段
  • 影响描述的 INFERRED 关系标注为“可能”或“看起来像”
  • 缺少描述时标记为 [Description needed],而不是编造内容

不佳输出示例

  • graphify 查询结果中不存在的路由或函数
  • 内容笼统的架构部分(“该应用包含控制器、服务和模型”)
  • 使用了错误函数名或参数类型的示例
  • 将 INFERRED 边描述为确定事实,却没有添加可信度限定语

评论

支持 Markdown