impact-check
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSkill: impact-check
Skill: impact-check
WHAT
是什么
Purpose và context
目的与上下文
- Purpose: Before modifying any symbol (function, class, variable, config key), map all dependents so no callers blindsided.
- Trigger (when to use):
- Before editing shared utility, base class, or widely-imported module
- Before renaming or deleting anything
- As first step of or
safe-changepropose
- Non-goals: không sửa code (output only); không tạo trang wiki cho symbol chưa document (chỉ ghi gap).
- 目的: 在修改任何符号(函数、类、变量、配置键)之前,梳理所有依赖方,避免遗漏任何调用方。
- 触发条件(何时使用):
- 编辑共享工具、基类或被广泛导入的模块之前
- 重命名或删除任何内容之前
- 作为 或
safe-change的第一步propose
- 非目标: 不修改代码(仅输出);不为尚未文档化的符号创建 Wiki 页面(只记录缺口)。
Mental model
心智模型
symbol → mọi reference (import · call · đọc output) → Direct / Indirect → test refs tách riêng → báo cáo + wiki gap符号 → 所有引用(导入 · 调用 · 读取输出)→ Direct / Indirect → 单独列出测试引用 → 报告 + Wiki 缺口Input và output contract
输入与输出约定
| Field | Required? | Ý nghĩa | |
|---|---|---|---|
| In | symbol(s) cần đổi | có | function, class, variable, config key |
| Out | danh sách reference | có | file path, line number, cách dùng, nhãn Direct/Indirect; zero ngoài file thì nói rõ |
| Out | test refs | có nếu có | liệt kê riêng |
| Out | wiki gap | nếu có | symbol chưa có trong |
| Out | draft output report | có (trừ khi 0 artefact) | |
| 字段 | 是否必填? | 含义 | |
|---|---|---|---|
| 输入 | 需要修改的符号 | 是 | 函数、类、变量、配置键 |
| 输出 | 引用列表 | 是 | 文件路径、行号、使用方式、Direct/Indirect 标签;如果文件外引用数为 0,则明确说明 |
| 输出 | 测试引用 | 存在时必填 | 单独列出 |
| 输出 | Wiki 缺口 | 存在时必填 | |
| 输出 | 输出报告草稿 | 是(除非产出物为 0) | |
Rules và capabilities
规则与能力
- RULE-01 (MUST): Do not modify anything during this skill — output only.
- RULE-02 (MUST): If codebase large, search by symbol name AND file pattern (e.g. all files).
*.ts - RULE-03 (MUST): Do not assume symbol unused because no direct callers — check indirect dependents too.
- Capabilities: đọc/tìm toàn codebase (text search hoặc code graph); ghi draft report + index/log wiki.
- RULE-01 (MUST):在此 skill 执行期间不得修改任何内容——仅输出结果。
- RULE-02 (MUST):如果代码库规模较大,必须同时按符号名称和文件模式进行搜索(例如所有 文件)。
*.ts - RULE-03 (MUST):不要因为没有直接调用方就认定符号未被使用——还必须检查间接依赖方。
- 能力:读取或搜索整个代码库(文本搜索或代码图谱);编写草稿报告并更新 Wiki 索引和日志。
Failure boundaries
失败边界
- Symbol mơ hồ (nhiều định nghĩa cùng tên) → clarify symbol chính xác.
- Zero reference ngoài file → succeeded, nói rõ "0 reference ngoài file".
- Không tìm được hết (codebase quá lớn, search lỗi) → partial, ghi phạm vi đã quét.
- 符号含义不明确(存在多个同名定义)→ clarify 需要修改的确切符号。
- 文件外引用数为 0 → succeeded,明确说明“文件外 0 个引用”。
- 无法找全(代码库过大、搜索失败)→ partial,记录已扫描的范围。
HOW
如何执行
Main workflow
主工作流
| Step | Type | Inputs | Action | Outputs/exit | Failure/next |
|---|---|---|---|---|---|
| W01 | judgment | yêu cầu sửa | Xác định đúng symbol | symbol list | mơ hồ → clarify |
| W02 | deterministic | symbol | Tìm mọi import/call/reference toàn codebase | hits | lớn → tên + file pattern |
| W03 | deterministic | hits | Ghi file path, line, cách dùng | bảng ref | — |
| W04 | judgment | bảng ref | Phân loại Direct / Indirect | ref đã gắn nhãn | — |
| W05 | deterministic | ref | Báo cáo đủ, tách test refs, zero thì nói rõ | báo cáo | — |
| W06 | deterministic | | Ghi gap nếu symbol chưa document (không tạo entry) | gap note | — |
| W07 | effect | kết quả | Output Report draft | draft + index + log | 0 artefact → skip |
Chi tiết từng bước (nguồn chân lý cho W01–W07):
- Identify exact symbol(s) to change.
- Search entire codebase for all imports, calls, references to each symbol.
- For each reference: note file path, line number, how it uses symbol.
- Classify each reference:
- Direct — calls or imports symbol itself
- Indirect — depends on behaviour symbol produces (e.g. reads its output)
- Report full list. If zero references found outside file, state explicitly.
- Flag any reference in test file separately — those must update or give false confidence.
- If symbol not yet documented in , note as gap — do not create entry now. Wiki entries only written after code committed (see
wiki/).verify-before-commit
| 步骤 | 类型 | 输入 | 操作 | 输出/退出 | 失败/下一步 |
|---|---|---|---|---|---|
| W01 | 判断 | 修改请求 | 确定准确的符号 | 符号列表 | 含义不明确 → clarify |
| W02 | 确定性 | 符号 | 在整个代码库中查找所有导入、调用和引用 | 命中项 | 规模较大 → 名称 + 文件模式 |
| W03 | 确定性 | 命中项 | 记录文件路径、行号和使用方式 | 引用表 | — |
| W04 | 判断 | 引用表 | 将引用分类为 Direct / Indirect | 已标记的引用 | — |
| W05 | 确定性 | 引用 | 生成完整报告,单独列出测试引用;数量为零时明确说明 | 报告 | — |
| W06 | 确定性 | | 如果符号尚未文档化,则记录缺口(不创建条目) | 缺口说明 | — |
| W07 | 效果 | 结果 | 生成输出报告草稿 | 草稿 + 索引 + 日志 | 0 个产出物 → 跳过 |
各步骤的详细信息(W01–W07 的唯一事实来源):
- 确定要修改的确切符号。
- 在整个代码库中搜索每个符号的所有导入、调用和引用。
- 对于每处引用:记录文件路径、行号及其使用符号的方式。
- 将每处引用分类:
- Direct — 调用或导入符号本身
- Indirect — 依赖该符号所产生的行为(例如读取其输出)
- 报告完整列表。如果在文件外未找到任何引用,请明确说明。
- 将测试文件中的任何引用单独标记——这些测试必须更新,否则会造成虚假的信心。
- 如果 中尚未文档化该符号,则将其记为缺口——此时不要创建条目。仅在代码提交后编写 Wiki 条目(参见
wiki/)。verify-before-commit
Branches
分支
| ID | Kind | Guard | Hành vi | Skip / failure | Rejoin |
|---|---|---|---|---|---|
| B01 | conditional_required | codebase lớn | search theo tên symbol VÀ file pattern (RULE-02) | — | W03 |
| B02 | conditional_required | có reference trong test file | liệt kê riêng, cảnh báo phải cập nhật | không có → skip | W06 |
| ID | 类型 | 条件 | 行为 | 跳过/失败 | 汇合点 |
|---|---|---|---|---|---|
| B01 | conditional_required | 代码库规模较大 | 同时按符号名称和文件模式进行搜索(RULE-02) | — | W03 |
| B02 | conditional_required | 存在测试文件引用 | 单独列出,并警告必须更新 | 不存在 → 跳过 | W06 |
Validation và stopping
验证与停止条件
Dừng khi mọi hit đã có path + line + nhãn Direct/Indirect. Không kết luận "unused" chỉ vì thiếu direct caller (RULE-03). Không file code nào bị sửa.
当所有命中项均具有路径 + 行号 + Direct/Indirect 标签时停止。不能仅因缺少直接调用方就得出“未使用”的结论(RULE-03)。不得修改任何代码文件。
Examples
示例
- Positive: đổi chữ ký trong
formatDate(d)→ 12 Direct (import) + 2 Indirect (đọc chuỗi output để parse) + 3 test refs liệt kê riêng → báo cáo + draftsrc/utils/date.ts.DDMMYY-impact-format-date.md - Boundary/failure: config key không có caller trực tiếp nhưng được đọc qua
retry_limitđộng → xếp Indirect, KHÔNG báo "unused"; nếu quét không hết thì báo partial kèm phạm vi.config[key]
- 正向示例: 修改 中
src/utils/date.ts的签名 → 12 个 Direct(导入)+ 2 个 Indirect(读取输出字符串进行解析)+ 3 个单独列出的测试引用 → 报告 + 草稿formatDate(d)。DDMMYY-impact-format-date.md - 边界/失败: 配置键 没有直接调用方,但会通过
retry_limit动态读取 → 归类为 Indirect,不要报告为“未使用”;如果未能完整扫描,则报告为 partial,并附上扫描范围。config[key]
Delivery — Output Report
交付——输出报告
After all main skill tasks complete, write a propose draft to the wiki.
完成所有主要 skill 任务后,向 Wiki 写入一份 propose 草稿。
Steps
步骤
1. Build the filename:
- Format:
DDMMYY-<ten>.md - = today (e.g.,
DDMMYYfor 2 June 2026)020626 - = 2–4 kebab-case words summarising what was done (e.g.,
<ten>,landing-page-coteccons,brand-kit-fintech)ingest-auth-spec
2. Write :
llmwiki/wiki/sources/draft/DDMMYY-<ten>.md---
type: draft
title: "DDMMYY-<ten>"
status: proposed
tags: [<skill-name>, output-report]
timestamp: YYYY-MM-DD
---1. 构建文件名:
- 格式:
DDMMYY-<ten>.md - = 今天(例如,
DDMMYY表示 2026 年 6 月 2 日)020626 - = 2–4 个 kebab-case 单词,概括已完成的工作(例如
<ten>、landing-page-coteccons、brand-kit-fintech)ingest-auth-spec
2. 写入 :
llmwiki/wiki/sources/draft/DDMMYY-<ten>.md---
type: draft
title: "DDMMYY-<ten>"
status: proposed
tags: [<skill-name>, output-report]
timestamp: YYYY-MM-DD
---DDMMYY-<ten>
DDMMYY-<ten>
Type: draft
Status: proposed
Tags: <skill-name>, output-report
Proposed: YYYY-MM-DD
Type: draft
Status: proposed
Tags: <skill-name>, output-report
Proposed: YYYY-MM-DD
What
What
<One sentence — what this skill invocation produced or decided>
<One sentence — what this skill invocation produced or decided>
Output
Output
<Key artefacts, files created/modified, or decisions made>
<Key artefacts, files created/modified, or decisions made>
Files
Files
| File | Action |
|---|---|
| created / modified |
| File | Action |
|---|---|
| created / modified |
Notes
Notes
- Invoked via: skill
/<skill-name>
- Invoked via: skill
/<skill-name>
Origin
Origin
- Draft:
wiki/sources/draft/DDMMYY-<ten>.md - Commit: (filled by verify-before-commit)
- Date promoted: (filled by verify-before-commit)
**3. Update wiki index & log:**
- `llmwiki/wiki/index.md` — append one row: `| [DDMMYY-<ten>](sources/draft/DDMMYY-<ten>.md) | draft | YYYY-MM-DD |`
- `llmwiki/wiki/log.md` — append: `## YYYY-MM-DD — <skill-name> — <ten>`
> Skip only when the skill produces zero artefacts and zero decisions (e.g., a pure display mode like `/caveman-stats`).- Draft:
wiki/sources/draft/DDMMYY-<ten>.md - Commit: (filled by verify-before-commit)
- Date promoted: (filled by verify-before-commit)
**3. 更新 Wiki 索引与日志:**
- `llmwiki/wiki/index.md` — 追加一行:`| [DDMMYY-<ten>](sources/draft/DDMMYY-<ten>.md) | draft | YYYY-MM-DD |`
- `llmwiki/wiki/log.md` — 追加:`## YYYY-MM-DD — <skill-name> — <ten>`
> 仅当该 skill 未产生任何产出物和决策时才跳过(例如,像 `/caveman-stats` 这样的纯展示模式)。