File contents Context Detective — 上下文侦探
在生成任何内容(需求、设计、计划、代码)之前,按 DNA → Trace → Align 三阶段收集上下文,产出经过验证的 Context Artifact。
用户请求只是冰山一角 (10%),代码库才是水下的 90%。忽略水下部分会导致:
重复造轮子 :重新实现已有的工具类
风格不一致 :项目用 fetch 却引入 axios
隐性回归 :破坏隐藏的依赖关系
适用场景
开始任何非平凡任务之前
创建新文件之前(先查重)
遇到不熟悉的领域术语时
编写需求、设计或计划之前
不适用
单行修改、拼写修正等平凡任务
当前对话中已执行过 Context Detective 且任务范围未变
用户明确指定了文件路径和修改内容的精确指令
深度控制
根据任务规模选择调查深度,避免分析瘫痪:
任务规模
调查深度
说明
小 (单文件修改、Bug 修复)
仅 Phase 1 + 快速 Phase 2
确认依赖和直接调用者即可
中 (新增功能模块)
完整三阶段
产出完整 Context Artifact
大 (架构重构、跨模块变更)
三阶段 + 多轮验证
需追踪完整爆炸半径
终止条件 :如果 Phase 2 搜索超过 3 轮仍无新收获,停止并在 Artifact 中记录"信息不足,需人工确认"。
语言速查表
先识别项目语言,再按对应列查找关键文件和惯例:
关注点
Java
Go
JS / TS
Python
依赖文件
pom.xml / build.gradle
go.mod
package.json
pyproject.toml / requirements.txt
配置文件
application.yml / .properties
.env / config.yaml
tsconfig.json / next.config.* / .env
settings.py / pyproject.toml / .env
入口/路由
@RestController / @RequestMapping
http.HandleFunc / gin.Engine
app.get() / pages/ / app/
@app.route / urlpatterns
数据层
Entity + Mapper (MyBatis) / JPA
struct + sqlx / GORM
Prisma / TypeORM / Mongoose
SQLAlchemy / Django ORM
测试框架
JUnit 5 / Mockito
testing / testify
Jest / Vitest / Mocha
pytest / unittest
架构惯例
Controller → Facade → Service → Mapper
Handler → Service → Repository
Route → Controller → Service → Model
View → Serializer → Service → Model
常见工具类目录
**/util/**, **/common/**
**/pkg/**, **/internal/util/**
**/utils/**, **/lib/**, **/helpers/**
**/utils/**, **/common/**, **/helpers/**
操作步骤
Phase 1: DNA 分析 — 识别项目骨架
读取,不要猜测。先用 Glob 在项目根目录查找依赖文件,确定语言和技术栈,再按语言速查表定位关键文件。
语言识别 — 用 Glob 查找根目录的依赖文件,确定项目语言
Glob("pom.xml") / Glob("go.mod") / Glob("package.json") / Glob("pyproject.toml")
注意:可能是多语言项目(如 Java 后端 + JS 前端),需逐一识别
依赖清单 — 用 Read 读取对应的依赖文件,确认安装了哪些库
配置文件 — 用 Read 读取配置文件(参考语言速查表),识别约束和惯例
目录结构 — 用 Glob 探索 2-3 层目录,识别架构模式
Java: Glob("src/main/java/**") | Go: Glob("cmd/**"), Glob("internal/**") | JS: Glob("src/**") | Python: Glob("app/**") 或 Glob("src/**")
确认:分层方式?业务逻辑位置?共享模块在哪?
Phase 2: 语义追踪 — 追踪关系和模式
超越关键词匹配,追踪依赖关系。
关键词扩展 — 对用户提到的概念,用 Grep 和 SemanticSearch 搜索同义词和关联术语
用户说"订单管理" → 搜索 Order, 订单, Purchase, Cart, 交易
用 Grep 做精确匹配,用 SemanticSearch 做语义发现
依赖链追踪 — 对找到的核心实体,用 Grep 追踪引用:
找 调用者 (参考语言速查表的"入口/路由"行)
找 被调用者 (参考语言速查表的"数据层"行,以及外部 API、工具类)
画出变更的爆炸半径 (哪些文件会受影响)
双胞胎功能 — 用 SemanticSearch 找一个已有的、模式相似的功能作为参照
要建"文档评论"?先看"任务评论"怎么做的
复制模式 (命名、分层、错误处理),而非代码
降级策略 :如果找不到模式相似的功能:
退而求其次:找同层级任意一个完整模块作为结构参照
或在 Artifact 中记录:"无可参照的已有功能,需从零设计模式"
Phase 3: 差距对齐 — 叠加需求到现实
集成点审计 — 用 Read 读取实际内容:
数据库:Schema / Migration / ORM 模型定义
路由:API 注册文件 / 路由表(参考语言速查表的"入口/路由"行)
配置:权限 / 中间件 / 菜单配置
复用验证 — 创建任何新东西之前先用工具确认:
用 Glob 搜索常见工具类目录(参考语言速查表的"常见工具类目录"行)
用 Grep 确认:"现有文件的命名惯例是什么?"
约束识别 — 记录硬约束:
认证模式、分页方式、错误处理惯例、日志模式
测试框架、代码风格(Linter / Formatter 配置)、部署方式
产出模板
完成三个阶段后,产出以下结构化 Artifact(所有事实均须通过工具读取确认,非假设):
# Context Artifact
> **Module**: [模块名]
> **Date**: YYYY-MM-DD
> **Status**: VERIFIED — 所有事实均通过工具读取确认
## 1. Project DNA
- **语言/版本**: [如 Java 17 / Go 1.22 / TypeScript 5.x / Python 3.12]
- **框架**: [如 Spring Boot 3.x / Gin / Next.js 14 / FastAPI]
- **构建工具**: [如 Maven / go build / pnpm / Poetry]
- **架构模式**: [如 Controller → Service → Repository]
- **数据库**: [如 PostgreSQL + Prisma / MySQL + MyBatis-Plus / MongoDB + Mongoose]
- **测试框架**: [如 JUnit 5 / go test + testify / Vitest / pytest]
- **关键库**: [列出核心依赖]
## 2. 相关现实
- **核心实体**: [实体名, 文件路径, 行号]
- **API 模式**: [端点结构方式]
- **类似功能**: [可作为参照的已有功能,含路径]
- **可复用组件**: [已存在的可复用 Service/组件/工具类/包]
## 3. 差距
- [ ] [需要创建的]
- [ ] [需要修改的]
- [ ] [需要扩展的]
## 4. 风险与约束(下游阶段必须遵守)
1. [硬约束,如:认证必须使用 xxx 方式]
2. [风格约束,如:错误处理必须遵循 xxx 模式]
3. [性能约束,如:接口响应时间 < 200ms]
## 5. 验证记录
| 工具 | 命令/参数 | 验证了什么 |
|------|-----------|-----------|
| Read | `[依赖文件]` | 确认框架版本 |
| Grep | `"[核心类/函数名]"` | 确认核心实体已存在 |
| Glob | `[目录模式]` | 确认文件结构 |
| SemanticSearch | "[语义查询]" | 发现相关实现 |
各语言验证记录示例 :
语言
工具
命令/参数
验证了什么
Java
Read
pom.xml
确认 Spring Boot 版本为 3.2.x
Java
Grep
"class OrderService"
确认 OrderService 已存在
Go
Read
go.mod
确认 gin v1.9 + sqlx 已引入
Go
Glob
internal/handler/**
发现 Handler 层目录结构
JS/TS
Read
package.json
确认使用 Next.js 14 + Prisma
JS/TS
Grep
"export.*function.*useAuth"
确认 Auth Hook 已存在
Python
Read
pyproject.toml
确认 FastAPI 0.110 + SQLAlchemy
Python
Glob
**/routers/*.py
发现 API 路由文件结构
QA 自检清单
产出 Artifact 后,切换到 Fact Checker 视角进行自检。任何一项不通过则必须补充调查。
DNA 检查
语义追踪检查
差距对齐检查
否决条件(出现以下任一情况需退回重做)
"建议使用 X 库,但依赖文件中并没有 X"
"假设 src/utils/api.ts 存在,但未验证"
"创建了新组件,但同名组件已存在"
"未读取 Schema/Migration 就提出了数据模型变更"
与其他技能的关系
本技能是语言无关的前置技能 ,产出的 Context Artifact 可直接输入到需求分析、设计和计划阶段。
当识别到项目语言后,联动对应的领域技能:
项目语言
联动技能
联动时机
Java
java-crud-module
创建新模块前收集上下文
Java
java-api-endpoint
新增 API 前了解现有模式
Java
java-architecture-guide
理解项目遵循的架构规范
所有语言
需求/设计/计划类技能
Context Artifact 作为输入
铁律
禁止
必须
猜测文件路径
用 Glob / Read 验证路径存在
假设某个库可用
用 Read 检查依赖文件确认
创建已存在的东西
用 Glob + Grep 先搜索再决定
跳过语义追踪
至少追踪一层调用链(调用者 + 被调用者)
无来源的断言
在验证记录中记录工具和参数
分析瘫痪(无限调查)
遵守深度控制,达到终止条件时停止
常见错误
错误做法
正确做法
"项目应该用了 Redis"
用 Read 读依赖文件确认(Java: pom.xml、Go: go.mod、JS: package.json、Python: pyproject.toml)
"创建 DateUtils"
先用 Glob 搜索工具类目录(参考语言速查表),再用 Grep("DateUtil") 确认不存在
"这个表有 user_id 字段"
用 Read 读 Migration / Schema 文件或 ORM 模型定义确认字段存在
只搜索 Order
扩展搜索 Order, 订单, Purchase, 交易
直接开始写代码
先用 SemanticSearch 找双胞胎功能,复制其模式
用 Java 的分层术语描述 Go 项目
根据语言速查表使用正确的术语(如 Go 用 Handler 而非 Controller)
调查 30 分钟还没结论
记录已知事实,标注"信息不足",推进到下一步
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1 --- 2 name: jianyun8023-my-skills-context-detective 3 description: Context Detective — 上下文侦探 4 --- 5 6 # Context Detective — 上下文侦探 7 8 在生成任何内容(需求、设计、计划、代码)之前,按 **DNA → Trace → Align** 三阶段收集上下文,产出经过验证的 Context Artifact。 9 10 > 用户请求只是冰山一角 (10%),代码库才是水下的 90%。忽略水下部分会导致: 11 > - **重复造轮子**:重新实现已有的工具类 12 > - **风格不一致**:项目用 `fetch` 却引入 `axios` 13 > - **隐性回归**:破坏隐藏的依赖关系 14 15 ## 适用场景 16 17 - 开始任何非平凡任务之前 18 - 创建新文件之前(先查重) 19 - 遇到不熟悉的领域术语时 20 - 编写需求、设计或计划之前 21 22 ## 不适用 23 24 - 单行修改、拼写修正等平凡任务 25 - 当前对话中已执行过 Context Detective 且任务范围未变 26 - 用户明确指定了文件路径和修改内容的精确指令 27 28 ## 深度控制 29 30 根据任务规模选择调查深度,避免分析瘫痪: 31 32 | 任务规模 | 调查深度 | 说明 | 33 |----------|----------|------| 34 | **小**(单文件修改、Bug 修复) | 仅 Phase 1 + 快速 Phase 2 | 确认依赖和直接调用者即可 | 35 | **中**(新增功能模块) | 完整三阶段 | 产出完整 Context Artifact | 36 | **大**(架构重构、跨模块变更) | 三阶段 + 多轮验证 | 需追踪完整爆炸半径 | 37 38 **终止条件**:如果 Phase 2 搜索超过 3 轮仍无新收获,停止并在 Artifact 中记录"信息不足,需人工确认"。 39 40 ## 语言速查表 41 42 先识别项目语言,再按对应列查找关键文件和惯例: 43 44 | 关注点 | Java | Go | JS / TS | Python | 45 |--------|------|----|---------|--------| 46 | **依赖文件** | `pom.xml` / `build.gradle` | `go.mod` | `package.json` | `pyproject.toml` / `requirements.txt` | 47 | **配置文件** | `application.yml` / `.properties` | `.env` / `config.yaml` | `tsconfig.json` / `next.config.*` / `.env` | `settings.py` / `pyproject.toml` / `.env` | 48 | **入口/路由** | `@RestController` / `@RequestMapping` | `http.HandleFunc` / `gin.Engine` | `app.get()` / `pages/` / `app/` | `@app.route` / `urlpatterns` | 49 | **数据层** | Entity + Mapper (MyBatis) / JPA | struct + sqlx / GORM | Prisma / TypeORM / Mongoose | SQLAlchemy / Django ORM | 50 | **测试框架** | JUnit 5 / Mockito | `testing` / testify | Jest / Vitest / Mocha | pytest / unittest | 51 | **架构惯例** | Controller → Facade → Service → Mapper | Handler → Service → Repository | Route → Controller → Service → Model | View → Serializer → Service → Model | 52 | **常见工具类目录** | `**/util/**`, `**/common/**` | `**/pkg/**`, `**/internal/util/**` | `**/utils/**`, `**/lib/**`, `**/helpers/**` | `**/utils/**`, `**/common/**`, `**/helpers/**` | 53 54 ## 操作步骤 55 56 ### Phase 1: DNA 分析 — 识别项目骨架 57 58 读取,不要猜测。先用 `Glob` 在项目根目录查找依赖文件,确定语言和技术栈,再按语言速查表定位关键文件。 59 60 1. **语言识别** — 用 `Glob` 查找根目录的依赖文件,确定项目语言 61 - `Glob("pom.xml")` / `Glob("go.mod")` / `Glob("package.json")` / `Glob("pyproject.toml")` 62 - 注意:可能是多语言项目(如 Java 后端 + JS 前端),需逐一识别 63 2. **依赖清单** — 用 `Read` 读取对应的依赖文件,确认安装了哪些库 64 - 确认:用了哪些框架?版本号是什么?有无锁定文件? 65 3. **配置文件** — 用 `Read` 读取配置文件(参考语言速查表),识别约束和惯例 66 - 确认:有哪些环境约束?路径别名?运行模式? 67 4. **目录结构** — 用 `Glob` 探索 2-3 层目录,识别架构模式 68 - Java: `Glob("src/main/java/**")` | Go: `Glob("cmd/**")`, `Glob("internal/**")` | JS: `Glob("src/**")` | Python: `Glob("app/**")` 或 `Glob("src/**")` 69 - 确认:分层方式?业务逻辑位置?共享模块在哪? 70 71 ### Phase 2: 语义追踪 — 追踪关系和模式 72 73 超越关键词匹配,追踪依赖关系。 74 75 1. **关键词扩展** — 对用户提到的概念,用 `Grep` 和 `SemanticSearch` 搜索同义词和关联术语 76 - 用户说"订单管理" → 搜索 `Order`, `订单`, `Purchase`, `Cart`, `交易` 77 - 用 `Grep` 做精确匹配,用 `SemanticSearch` 做语义发现 78 2. **依赖链追踪** — 对找到的核心实体,用 `Grep` 追踪引用: 79 - 找 **调用者**(参考语言速查表的"入口/路由"行) 80 - 找 **被调用者**(参考语言速查表的"数据层"行,以及外部 API、工具类) 81 - 画出变更的**爆炸半径**(哪些文件会受影响) 82 3. **双胞胎功能** — 用 `SemanticSearch` 找一个已有的、模式相似的功能作为参照 83 - 要建"文档评论"?先看"任务评论"怎么做的 84 - 复制**模式**(命名、分层、错误处理),而非代码 85 - **降级策略**:如果找不到模式相似的功能: 86 - 退而求其次:找同层级任意一个完整模块作为结构参照 87 - 或在 Artifact 中记录:"无可参照的已有功能,需从零设计模式" 88 89 ### Phase 3: 差距对齐 — 叠加需求到现实 90 91 1. **集成点审计** — 用 `Read` 读取实际内容: 92 - 数据库:Schema / Migration / ORM 模型定义 93 - 路由:API 注册文件 / 路由表(参考语言速查表的"入口/路由"行) 94 - 配置:权限 / 中间件 / 菜单配置 95 2. **复用验证** — 创建任何新东西之前先用工具确认: 96 - 用 `Glob` 搜索常见工具类目录(参考语言速查表的"常见工具类目录"行) 97 - 用 `Grep` 确认:"现有文件的命名惯例是什么?" 98 3. **约束识别** — 记录硬约束: 99 - 认证模式、分页方式、错误处理惯例、日志模式 100 - 测试框架、代码风格(Linter / Formatter 配置)、部署方式 101 102 ## 产出模板 103 104 完成三个阶段后,产出以下结构化 Artifact(所有事实均须通过工具读取确认,非假设): 105 106 ```markdown 107 # Context Artifact 108 > **Module**: [模块名] 109 > **Date**: YYYY-MM-DD 110 > **Status**: VERIFIED — 所有事实均通过工具读取确认 111 112 ## 1. Project DNA 113 - **语言/版本**: [如 Java 17 / Go 1.22 / TypeScript 5.x / Python 3.12] 114 - **框架**: [如 Spring Boot 3.x / Gin / Next.js 14 / FastAPI] 115 - **构建工具**: [如 Maven / go build / pnpm / Poetry] 116 - **架构模式**: [如 Controller → Service → Repository] 117 - **数据库**: [如 PostgreSQL + Prisma / MySQL + MyBatis-Plus / MongoDB + Mongoose] 118 - **测试框架**: [如 JUnit 5 / go test + testify / Vitest / pytest] 119 - **关键库**: [列出核心依赖] 120 121 ## 2. 相关现实 122 - **核心实体**: [实体名, 文件路径, 行号] 123 - **API 模式**: [端点结构方式] 124 - **类似功能**: [可作为参照的已有功能,含路径] 125 - **可复用组件**: [已存在的可复用 Service/组件/工具类/包] 126 127 ## 3. 差距 128 - [ ] [需要创建的] 129 - [ ] [需要修改的] 130 - [ ] [需要扩展的] 131 132 ## 4. 风险与约束(下游阶段必须遵守) 133 1. [硬约束,如:认证必须使用 xxx 方式] 134 2. [风格约束,如:错误处理必须遵循 xxx 模式] 135 3. [性能约束,如:接口响应时间 < 200ms] 136 137 ## 5. 验证记录 138 | 工具 | 命令/参数 | 验证了什么 | 139 |------|-----------|-----------| 140 | Read | `[依赖文件]` | 确认框架版本 | 141 | Grep | `"[核心类/函数名]"` | 确认核心实体已存在 | 142 | Glob | `[目录模式]` | 确认文件结构 | 143 | SemanticSearch | "[语义查询]" | 发现相关实现 | 144 ``` 145 146 **各语言验证记录示例**: 147 148 | 语言 | 工具 | 命令/参数 | 验证了什么 | 149 |------|------|-----------|-----------| 150 | Java | Read | `pom.xml` | 确认 Spring Boot 版本为 3.2.x | 151 | Java | Grep | `"class OrderService"` | 确认 OrderService 已存在 | 152 | Go | Read | `go.mod` | 确认 gin v1.9 + sqlx 已引入 | 153 | Go | Glob | `internal/handler/**` | 发现 Handler 层目录结构 | 154 | JS/TS | Read | `package.json` | 确认使用 Next.js 14 + Prisma | 155 | JS/TS | Grep | `"export.*function.*useAuth"` | 确认 Auth Hook 已存在 | 156 | Python | Read | `pyproject.toml` | 确认 FastAPI 0.110 + SQLAlchemy | 157 | Python | Glob | `**/routers/*.py` | 发现 API 路由文件结构 | 158 159 ## QA 自检清单 160 161 产出 Artifact 后,切换到 **Fact Checker** 视角进行自检。任何一项不通过则必须补充调查。 162 163 ### DNA 检查 164 - [ ] **框架感知**:是否确认了项目实际使用的框架?(而非假设) 165 - [ ] **依赖感知**:是否在建议引入新库之前检查了依赖文件? 166 - [ ] **风格对齐**:提议的方案是否与项目现有风格一致? 167 168 ### 语义追踪检查 169 - [ ] **关系映射**:是否找到了关联文件,而不仅是精确关键词匹配? 170 - [ ] **双胞胎功能**:是否找到了可作为模式参照的已有功能? 171 - [ ] **爆炸半径**:是否识别了变更可能影响的范围? 172 173 ### 差距对齐检查 174 - [ ] **路径验证**:所有文件路径均通过工具确认存在? 175 - [ ] **集成点验证**:是否读取了 Schema / 路由 / 配置的实际内容? 176 - [ ] **查重验证**:是否确认没有创建已存在的组件? 177 178 ### 否决条件(出现以下任一情况需退回重做) 179 - "建议使用 X 库,但依赖文件中并没有 X" 180 - "假设 `src/utils/api.ts` 存在,但未验证" 181 - "创建了新组件,但同名组件已存在" 182 - "未读取 Schema/Migration 就提出了数据模型变更" 183 184 ## 与其他技能的关系 185 186 本技能是**语言无关的前置技能**,产出的 Context Artifact 可直接输入到需求分析、设计和计划阶段。 187 188 当识别到项目语言后,联动对应的领域技能: 189 190 | 项目语言 | 联动技能 | 联动时机 | 191 |----------|----------|----------| 192 | Java | `java-crud-module` | 创建新模块前收集上下文 | 193 | Java | `java-api-endpoint` | 新增 API 前了解现有模式 | 194 | Java | `java-architecture-guide` | 理解项目遵循的架构规范 | 195 | 所有语言 | 需求/设计/计划类技能 | Context Artifact 作为输入 | 196 197 ## 铁律 198 199 | 禁止 | 必须 | 200 |------|------| 201 | 猜测文件路径 | 用 `Glob` / `Read` 验证路径存在 | 202 | 假设某个库可用 | 用 `Read` 检查依赖文件确认 | 203 | 创建已存在的东西 | 用 `Glob` + `Grep` 先搜索再决定 | 204 | 跳过语义追踪 | 至少追踪一层调用链(调用者 + 被调用者) | 205 | 无来源的断言 | 在验证记录中记录工具和参数 | 206 | 分析瘫痪(无限调查) | 遵守深度控制,达到终止条件时停止 | 207 208 ## 常见错误 209 210 | 错误做法 | 正确做法 | 211 |----------|----------| 212 | "项目应该用了 Redis" | 用 `Read` 读依赖文件确认(Java: `pom.xml`、Go: `go.mod`、JS: `package.json`、Python: `pyproject.toml`) | 213 | "创建 `DateUtils`" | 先用 `Glob` 搜索工具类目录(参考语言速查表),再用 `Grep("DateUtil")` 确认不存在 | 214 | "这个表有 `user_id` 字段" | 用 `Read` 读 Migration / Schema 文件或 ORM 模型定义确认字段存在 | 215 | 只搜索 `Order` | 扩展搜索 `Order`, `订单`, `Purchase`, `交易` | 216 | 直接开始写代码 | 先用 `SemanticSearch` 找双胞胎功能,复制其模式 | 217 | 用 Java 的分层术语描述 Go 项目 | 根据语言速查表使用正确的术语(如 Go 用 Handler 而非 Controller) | 218 | 调查 30 分钟还没结论 | 记录已知事实,标注"信息不足",推进到下一步 | 219 220 --- 221 > Converted and distributed by [TomeVault](https://tomevault.io/claim/jianyun8023) — claim your Tome and manage your conversions. 222 <!-- tomevault:4.0:skill_md:2026-04-14 -->
tomevault-io/skills-registry/tree/main/jianyun8023--my-skills--context-detective commit 17d8105b17
Frequently asked questions How do I install the Jianyun8023 My Skills Context Detective skill? Run npx skillmds@latest add tomevault-io/jianyun8023-my-skills-context-detective in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Jianyun8023 My Skills Context Detective skill do? Context Detective — 上下文侦探 It is listed under Coding & Dev Tools on SkillMD.
Is Jianyun8023 My Skills Context Detective safe to use? This skill has not completed SkillMD's automated safety review yet. Independent scanners report: SkillSpector: PASS, Skill Scanner: PASS. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Jianyun8023 My Skills Context Detective? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Jianyun8023 My Skills Context Detective free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Jianyun8023 My Skills Context Detective? tomevault-io (@tomevault-io) published this skill. Their other Agent Skills are listed on their SkillMD profile.