SuperAPI AI 工具集

code-self-describe

编程与开发

查看项目

更新于 10-15 08:13

技能介绍

用途

code-self-describe 用于为代码库生成和维护自描述结构,帮助 AI 和开发者导航代码。它利用 Claude Code 的层级加载机制(搜索到文件时自动加载所在目录的 CLAUDE.md),通过三层自描述结构实现渐进式上下文理解。

主要能力

三层描述体系

层级 载体 内容
项目级 根 CLAUDE.md 模块列表、全局约束
模块级 目录 CLAUDE.md 地位、逻辑、约束、业务域清单
文件级 源码头部注释 INPUT、OUTPUT、POS

自分形架构

项目根 CLAUDE.md 提供全局视图,各模块目录下的 CLAUDE.md 提供模块视图,源文件头部注释提供文件级信息。AI 搜索到深层文件时,已自动加载前几层 CLAUDE.md,从而清晰了解整个模块。

与 keel 追溯的边界

自描述留在代码里,keel 追溯不留在代码里。判据是:代码丢了这条信息,还能不能被正确解读和维护。自描述回答“这个模块做什么、依赖谁”,对没有 keel 上下文的维护者有用;keel 追溯回答“这段代码为哪条需求写的”,对没有 keel 上下文的维护者是噪音。不得新增 @requirement / @satisfies / @verifies / @testcase 标注,存量留着不清理。

使用方式

运行模式

  • /code-self-describe → 智能检测模式
  • /code-self-describe --init → 初始化:为项目生成完整自描述结构
  • /code-self-describe --init src/modules/auth → 初始化指定模块
  • /code-self-describe --update → 更新:根据代码变更更新描述
  • /code-self-describe --update src/user.ts → 更新指定文件及其所在模块
  • /code-self-describe --audit → 审计:检查描述新鲜度和准确性

模式对比

模式 扫描范围 生成 CLAUDE.md 更新头部注释 用户确认
init 全项目/指定模块 新建 新增 逐模块
update 变更文件 (git diff) 更新现有 更新变更 低风险自动
audit 全项目 仅报告 仅报告 无

智能检测流程

检测项目是否已有模块级 CLAUDE.md:无则自动进入 init 模式;有则检测是否有代码变更,有未同步变更建议 update 模式,无变更建议 audit 模式。

Init 模式工作流程

  1. 扫描项目结构:识别语言/框架、目录结构模式、业务模块边界
  2. 增强项目根 CLAUDE.md:已存在则追加模块描述章节,不存在则生成基础 CLAUDE.md
  3. 逐模块生成 CLAUDE.md:分析导入/导出关系,识别模块角色,生成描述,用户确认每个模块
  4. 逐文件生成头部注释:分析 import/依赖关系生成 INPUT,分析 export/公开接口生成 OUTPUT,根据目录位置和模块角色生成 POS,插入文件头部注释
  5. 生成描述清单报告

模块级 CLAUDE.md 模板

# <模块名>

## 地位
<在系统中的角色和位置,1-2 句话>

## 逻辑
<模块做什么,核心功能描述,3-5 句话>

## 约束
- <使用规则>
- <依赖限制>

## 业务域清单
| 文件/子模块 | 职责 |
|-------------|------|
| `xxx.ts` | <职责描述> |

源文件头部注释格式

// INPUT: UserRepository (数据访问), ValidatorService (校验)
// OUTPUT: createUser(), getUser(), updateUser() (用户 CRUD 操作)
// POS: 用户模块核心服务层,处理用户业务逻辑

注释必须放在文件最开始(在 import 语句之前),因为 AI 加载文件从头部开始。

Update 模式工作流程

  1. 检测变更范围:git diff --name-only 或用户指定文件/目录,识别受影响的模块
  2. 分析变更影响:文件级 INPUT/OUTPUT 是否变化,模块级职责是否变化,跨模块依赖是否变化
  3. 更新源文件头部注释:更新变更文件的 INPUT/OUTPUT/POS,保留手动添加的额外注释
  4. 更新模块 CLAUDE.md:更新业务域清单、逻辑描述、约束
  5. 向上传播更新:子模块变更更新父模块 CLAUDE.md,直到项目根 CLAUDE.md

更新传播规则:仅在公共接口变化时向上传播(内部重构不触发);标记区分自动/手动内容(<!-- auto-generated --> 标记自动生成部分);不修改手动编写的描述。

Audit 模式

审计内容:扫描所有 CLAUDE.md 和源文件头部注释,对比实际代码状态,生成审计报告,包括缺失描述的模块/文件、过期描述、不准确描述、描述覆盖率统计。审计模式不修改任何文件。

适用场景

  • 用户需要为项目添加 AI 友好的代码描述
  • 用户需要在代码变更后更新描述
  • 用户需要检查描述覆盖率和准确性
  • 关键词:“自描述”、“模块描述”、“生成 CLAUDE.md”、“self-describe”

限制

shell 拓扑下默认跳过

本 skill 的产物(模块级 CLAUDE.md + 源文件头注释)写在代码目录内。shell 拓扑的动机就是不让私有产物进代码仓,二者直接冲突。判据取自握手 workspace_context.capabilities.code_metadata_write_policy:explicit_opt_in → 默认跳过,仅 --force-code-docs 执行;unrestricted → 照常。不读 mode 自行分支——文件头注释写进源码文件本身,按写入策略枚举会被错误放行,故单列一项能力。默认跳过,输出 ℹ️ 说明原因,不报错。仅 --force-code-docs 显式启用。启用前 AskUserQuestion 确认「这些文件会进入 <各 code_root>,若该仓将公开请确认可接受」。代码根取自握手 workspace_context.code_roots。

生成约束

  • CLAUDE.md 文件名必须使用大写(Claude Code 约定)
  • 不覆盖已有的项目根 CLAUDE.md(追加或合并)
  • 模块级 CLAUDE.md 必须基于实际代码分析生成
  • 头部注释必须基于实际 import/export 分析
  • 不为空目录或配置目录生成 CLAUDE.md

更新约束

  • 只更新实际发生变化的文件
  • 不修改手动编写的描述内容(通过标记区分)
  • 向上传播仅在公共接口变化时触发
  • 更新前必须读取现有描述

审计约束

  • 审计模式不修改任何文件
  • 必须生成覆盖率统计
  • 必须标注过期描述的具体原因

范围约束

  • 忽略隐藏目录(.git, .vscode, .idea 等)
  • 忽略构建产物(dist/, build/, pycache/ 等)
  • 忽略依赖目录(node_modules/, vendor/, Pods/ 等)
  • 忽略测试目录的 CLAUDE.md 生成(测试文件仍生成头部注释)

Skill 协作

阶段 协作 Skill 说明
开发完成后 /dev-workflow 被调用:完成检查步骤中触发 --update
重构后 /refactor 被调用:重构完成后更新描述
项目上下文 /onboard 互补:CLAUDE.md 提供模块级上下文
代码追溯 /sync 互补:不同维度的代码标注
文件操作 /git-safety 配合:模块移动/重命名时同步更新 CLAUDE.md

参考资料

  • claude-md-template.md - 模块级 CLAUDE.md 模板
  • header-comment-examples.md - 多语言头部注释示例
  • update-rules.md - 层级更新传播规则