Skip to main content

code-self-test

审查当前本地分支相对基线的完整工作树(committed、staged、unstaged 与未忽略 untracked),通过静态检查、定向测试和失败路径自测优先发现代码 BUG,并为每个 BUG 提供怎么解决的说明;未发现 BUG 时提出可优化内容以及怎么优化,目标是提升项目性能和用户体验。适用于 /code-self-test、@code-self-test、当前分支自测、找 bug、代码自测、性能优化、体验优化。不要替代 /code-review 的 Critical-only 合入审查。

الانتقال إلى التثبيت

معلومات المصدر

المستودع
StarksJohn/CursorUserDir
آخر نشاط في المصدر
٩ سبتمبر ٢٠٢٦ في ٠٨:٣٣
لغة SKILL.md المكتشفة
الصينية
النجوم
٠
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
2 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
code-self-test
description
审查当前本地分支相对基线的完整工作树(committed、staged、unstaged 与未忽略 untracked),通过静态检查、定向测试和失败路径自测优先发现代码 BUG,并为每个 BUG 提供怎么解决的说明;未发现 BUG 时提出可优化内容以及怎么优化,目标是提升项目性能和用户体验。适用于 /code-self-test、@code-self-test、当前分支自测、找 bug、代码自测、性能优化、体验优化。不要替代 /code-review 的 Critical-only 合入审查。
# Code Self Test ## Purpose 审查代码。默认检查当前分支的代码(含未提交改动),通过 skill 进行自测并可以发现代码 BUG,还可以发现代码里可优化内容。 优先发现 BUG,再发现可优化的内容: - 如果发现 BUG,必须提供怎么解决这个 BUG 的说明。 - 如果没有发现 BUG,则需要提出可优化的内容以及怎么优化。 最终目标是提升使用这个 skill 的项目的性能和用户体验。除非用户明确要求落地修复,否则只读、不改业务代码。 ## When to Use - 用户输入 `/code-self-test`、`@code-self-test`。 - 用户要求对当前分支做自测、找 bug、代码自测、性能优化或体验优化。 - 需要先证明有没有 BUG,再决定优化项时。 不要在用户只要 Critical 合入审查,或明确使用 `/code-review` 时激活本 skill。不要加载 `code-review` 来完成本任务。 ## Inputs / Context 1. 确认 Git 根、当前分支、remote,以及用户是否指定了 PR/commit/range;未指定时审查当前 checkout 相对基线的完整本地快照。 2. 读取唯一项目规则后再审查。已登记项目不得寻找已删除的仓库根 `AGENTS.md`: | 仓库身份或常见目录名 | 唯一项目规则 | | --- | --- | | `csx-web-react` | `$HOME/.codex/skills/csx-web-react/AGENTS.md` | | `csx-web` | `$HOME/.codex/skills/csx-web/AGENTS.md` | | `MyStartupProject1` | `$HOME/.codex/skills/MyStartupProject1/AGENTS.md` | | `circleapp` / `CircleAppNew` | `$HOME/.codex/skills/CircleAppNew/AGENTS.md` | | `amber-medical-app-rn` | `$HOME/.codex/skills/amber-medical-app-rn/AGENTS.md` | | `csx-mobile` / `csx-mobile-upgrade` | `$HOME/.codex/skills/csx-mobile-upgrade/AGENTS.md` | | `heals-app-rn` | `$HOME/.codex/skills/heals-app-rn/AGENTS.md` | | `newtownapp` | `$HOME/.codex/skills/newtownapp/AGENTS.md` | | `react-native-advanced-flatlist` | `$HOME/.codex/skills/react-native-advanced-flatlist/AGENTS.md` | - Windows 将 `$HOME/.codex/skills` 解析为 `%USERPROFILE%\.codex\skills`。 - 用仓库根目录名、manifest 和 remote URL 交叉确认身份;不因相似命名套用另一个项目规则。 - 未登记仓库读取实际存在的仓库 `AGENTS.md`。规则缺失或身份不唯一时报告精确阻塞,不猜测创建。 - 当前源码与 manifest 高于过期说明。发现规则漂移时按当前源码审查并说明风险;不要执行 `init-project`。 3. 命中具体技术栈后读取 [reference.md](reference.md) 对应章节,不要通读无关清单。 4. React Native 且必须用真机/模拟器证明用户可见 BUG 时,再读取 `react-native-ui-verification`;纯逻辑自测不必加载。 ## Workflow 按顺序执行,不得跳过自测直接给结论。 ### 1. 建立当前分支范围 只读检查:`git rev-parse --show-toplevel`、`git status --short`、`git branch --show-current`、`git remote -v`。 默认范围是当前本地分支相对基线的完整工作树: 1. 基线优先用当前分支 PR 的 base;没有 PR 时用 `origin/main` 或 `origin/master` 与 `HEAD` 的 merge-base;都不可用时用最新 commit 的真实父提交。 2. 分别记录 committed 端点 diff、`git diff HEAD --` 的 staged/unstaged,以及 `git ls-files --others --exclude-standard` 的 untracked。 3. 同一文件既有 committed 又有未提交修改时,审查磁盘上的最终文件,不得退回 `git show HEAD:path`。 4. 范围内有 merge commit 时,不能只看端点净 diff;检查合入后删除或覆盖是否造成运行失败。 用户明确指定 PR/commit/range 时,审查该精确 diff;只有用户同时要求本地改动时才叠加工作树。 不得为了审查执行 `checkout`、`reset`、`clean`、`stash`,不得安装依赖或修改 lockfile。 ### 2. 建立影响图 从精确范围列出: - 变更符号:函数、组件、Hook、props、DTO、导出、路由、状态、schema、配置。 - 用户路径:打开、提交、返回、刷新、登录、权限、空态、错误态、弱网。 - 性能/体验面:列表、图片、键盘、启动、导航、重复请求、主线程工作、加载反馈。 在最终工作树中搜索直接调用者,不只阅读 changed files。基线已有且当前范围未扩大的问题不报。 ### 3. 执行 skill 自测(强制) 未执行本协议前,不得宣称无 BUG。自测本身就是找 BUG 的手段,不是写完报告后的附录。 **L1 静态自测** - 只运行项目 manifest 和唯一 `AGENTS.md` 已声明的最小类型检查、lint 或静态命令;不发明平行命令。 - 范围内每个新增或修改的 `.ts` / `.tsx` 必须纳入类型覆盖。Gradle、Metro、Babel、ESLint、Jest 成功都不能替代 TypeScript 编译检查。 - 全仓基线噪音很大时,把完整诊断与范围内文件求交;禁止只看退出码或只抽查熟悉文件。 - 无法覆盖某个 changed TypeScript 文件时,在自测记录标记「类型覆盖阻塞」,不得据此写「无 BUG」的完整结论。 **L2 定向测试自测** - 找到覆盖变更符号的现有测试,用项目已有命令运行最小相关集合。 - 测试失败时用相同命令对比基线与当前快照;只把当前范围新引入或扩大的失败记为 BUG。 - 没有现成测试时,不擅自新增测试文件;改为构造可复现输入,并在自测记录写明「无定向测试、已做路径自测」。 **L3 失败路径自测** 对每个变更函数/组件走一遍可到达路径,至少覆盖:空值、空列表、加载中、请求失败、超时、重复点击、异步返回时已卸载、权限拒绝、另一端 `Platform.OS`。有具体失败结果的记为 BUG;仅「可能」且走不通的删除。 **L4 运行时自测** 只有 BUG 或用户路径依赖真实页面、设备或后端,且环境可用时才扩展。不把「未运行」写成「通过」。Web UI 在已配置可用的浏览器工具下做最小路径验证;React Native 区分 Android 与 iOS,缺一端就标未验证。 ### 4. 判定与输出优先级 1. 先关闭 BUG 列表。通过证据门禁的全部输出,每条都必须带怎么解决这个 BUG 的说明。 2. 再找可优化内容。只保留能提升性能或用户体验、且能说明怎么优化的项。 3. 有 BUG 时:BUG 段必出;高价值优化可随后列出,不得用优化段替代修 BUG。 4. 没有发现 BUG 时:必须提出可优化的内容以及怎么优化;摘要写明「未发现当前范围引入的 BUG」。 5. 不得为了填满报告编造 BUG,也不得把命名/格式偏好当成优化。范围内确实没有可验证的性能或体验收益时,写已检查维度和「无落地优化」,并给出下一步测量方法,不要用风格建议充数。 ## BUG 证据门禁 报告 BUG 前必须全部满足: 1. 根因位于当前精确范围的新增、修改或删除。 2. 当前范围新引入或明确扩大,不是基线旧问题。 3. 有具体触发路径、期望结果和实际结果;自测记录能指向命令输出、失败路径上的 `文件:行号`,或已执行的运行时证据。 4. 影响正确性、安全性、数据、隐私、关键可用性、跨平台行为、资源泄漏,或用户无法完成主路径。 5. 怎么解决覆盖根因和所有需同步位置,而不是只写「检查一下」。 未通过任一条件就删除该条。 ## 优化证据门禁 只在 BUG 狩猎完成后处理。报告优化前必须全部满足: 1. 能指出当前性能成本或体验摩擦(多余渲染、卡顿、重复请求、阻塞主线程、键盘遮挡、错误态缺失、列表/图片内存、启动或导航变慢等)。 2. 优化后用户可感知,或有明确测量方式。 3. 给出怎么优化:改哪里、最小做法、如何验证收益、主要风险。 4. 不是风格、命名、抽象偏好,也不是与性能/体验无关的重构。 ## Output Contract 默认只读。不提交、不推送、不在 PR 平台发评论。密钥、Cookie、Authorization、签名材料和完整敏感响应不得出现在输出。 Chat 会把同一个 `-` 列表项里的续行折成一段。每条 finding 必须用 `###` 独立标题;下列标签必须独占一行,且标签前必须有一个空行: - `位置:` - `自测证据:` - `问题:` - `怎么解决:`(BUG 必填) - `怎么优化:`(优化必填) - `修复后自测:` 或 `优化后验证:` - `平台差异(React Native 适用):` 禁止把整条 finding 写进一个 bullet。 ````markdown # Code Self Test: [当前分支或指定范围] ## 摘要 - 范围:[local branch snapshot 或 PR/commit] - 端点:[base] -> [HEAD 或 working tree] - Changed files:[总数;committed/staged/unstaged/untracked 分层计数] - 结论:BUG [n];优化 [n] - 优先级结果:[发现 BUG,已给出怎么解决 / 未发现 BUG,已给出可优化内容以及怎么优化] ## 自测记录 - L1 静态:[命令、覆盖文件、新失败/无新失败] - L2 定向测试:[命令、结果,或无现成测试] - L3 失败路径:[走过的路径;命中或未命中] - L4 运行时:[已执行/未执行及原因] - 阻塞:[类型覆盖阻塞/测试环境不可用/无] ## BUG ### [BUG] [标题] 位置: - [path:line](committed/staged/unstaged/untracked) 自测证据: [命令输出摘要,或失败路径上的具体表达式] 问题: [触发条件、实际结果、对用户或数据的影响] 怎么解决: ```tsx // Minimal fix covering the root cause ``` 同步修改: - [path:line 或「无」] 修复后自测: 前置条件:[...] 1. [...] 2. [...] 预期:修复前 [...];修复后 [...] 平台差异(React Native 适用): - Android:[已验证 / 未验证] - iOS:[已验证 / 未验证] ## 优化 ### [优化] [标题] 位置: - [path:line] 当前成本: [卡顿、多余请求、缺失反馈等,以及它如何影响性能或体验] 怎么优化: ```tsx // Minimal optimization ``` 优化后验证: [如何证明变快或更好用;不要只写「感觉好一些」] 风险: [行为变化或过早优化风险] ```` 没有 BUG 时,`## BUG` 写「无」,并明确「未发现当前范围引入的 BUG」。此时 `## 优化` 不得省略。没有可落地优化时,`## 优化` 写已检查的性能/体验维度和「无落地优化」。 ## Boundaries - 不替代 `/code-review`;本 skill 允许优化项,且必须做自测。 - 不修改业务代码、不提交、不推送,除非用户明确要求落地修复。 - 不把基线旧问题、风格偏好、无关文件写成当前分支 BUG。 - 不把 lint/类型/测试「未运行」写成通过。 - 不安装依赖、不改 lockfile、不为审查切换分支或丢弃用户改动。 - React Native finding 必须区分 Android 与 iOS。 - 详细技术栈检查见 [reference.md](reference.md)。 ## 输出前复核 - 是否已对当前分支完整快照做 L1–L3,L4 未跑是否已记录原因。 - 有 BUG 的每条是否都有怎么解决,且修复说明覆盖根因。 - 没有 BUG 时是否已提出可优化内容以及怎么优化,或诚实写无落地优化。 - 优化是否都指向性能或用户体验,而不是风格。 - 是否泄露密钥或完整敏感响应。 - 每条 finding 是否用 `###` 标题,标签是否都从新行开始。
عرض على GitHub