This handles stage 3 of a bug workflow: taking a confirmed root cause and fix plan, implementing the minimal code changes, verifying the fix works, and writing a fix-note.md to close the loop. It enforces strict scope discipline by only touching files declared in the analysis phase and blocking "drive-by refactoring" that would muddy the PR. The skill runs verification checklists for reproduction steps, expected behavior, and regression surfaces, then switches to log-based debugging if the fix doesn't work instead of letting you guess repeatedly. It's opinionated about keeping bug fixes surgical and traceable, which feels restrictive at first but keeps git blame clean and code review focused.
npx -y skills add liuzhengdongfortest/codestable --skill cs-issue-fix --agent claude-codeInstalls into .claude/skills of the current project.
开始任何判断或动作前,先读取 .codestable/attention.md;缺失则视为骨架不完整,提示先补齐或运行 cs-onboard,不要回退到外部 AI 入口文件。
根因和方案已经确定(标准路径在 analysis、快速通道在 report 阶段口头确认过),你的活是按方案改代码、验证效果、写下修复记录。
fix 阶段最容易出问题的不是改代码本身,而是改的过程中冒出的"顺手"冲动——顺手优化、顺手重构、顺手加抽象。每项单独看说得通,但合在一个 PR 里让别人分不清"这次到底为了修 bug 改了什么"。
共享路径与命名约定看
.codestable/reference/shared-conventions.md第 0 节和cs-issue的"文件放哪儿"。
doc_type=issue-analysis 且 status=confirmed,第 5 节用户选定了哪个方案.codestable/attention.md + 沉淀目录搜索:
python .codestable/tools/search-yaml.py --dir .codestable/compound --filter doc_type=trick --filter status=active --query "{关键词}"——确认修复方式不违背已有库用法 / 模式--filter doc_type=explore——确认修复点和已有证据不冲突进入这个入口时 AI 在 report 阶段已读过代码并对根因有把握。
{文件}:{行号} 的 {具体代码} 存在 {问题描述}",让用户确认根因判断准确.codestable/attention.mdcompound/(trick + explore),避免误把已知边界条件当新问题修复范围来自 analysis 第 5 节"推荐方案"的"影响面"。超出范围的文件——哪怕顺眼——不动。
发现范围外值得改的记一条"顺手发现"不改代码:
> 顺手发现:{文件:行号} {问题简述}。不在本次修复范围,可后续另开 issue。
为什么这么严:顺手改的代码不在分析里,验收对不上,git blame 分不清哪些改动是为这个 bug。
修复只针对根因,不引入新抽象、新接口、新模式。如果发现"要把这个改好得先重构 X"——停下来跟用户确认是否在这个 issue 里做重构,还是拆成独立工作。
为什么:bug 修复天然窄场景,引入新抽象意味着只有这一个使用点支撑——典型过早抽象。
修 bug 看似动作小但 AI 写修复代码一样会漂——大文件再塞特殊处理、大类再加方法、为绕开边界加 if 分支。反射检查见 shared-conventions.md 第 7 节。
issue-fix 比 feature-implement 更谨慎:触发反射信号但结论是"该拆"时默认不在本次 PR 做——按"改动最小化"记成顺手发现。唯一例外是"不拆就没法干净修这个 bug",那停下来跟用户确认"修这个 bug 的前置是 {重构动作},合进来还是拆出去单独做"。
修复汇报模板见同目录 reference.md,不允许含糊汇报。汇报后停下等用户回复。
修复改完后逐项核对:
.codestable/attention.md 的硬要求执行,不能只 typecheck走完验证清单仍问题复现或行为与期望不符——别在原有猜测上反复试错,切换到日志调试模式重新收集运行时证据。
为什么切换:反复试错本质是猜测在原假设下还有什么可能性,但如果原假设就错了再猜也是绕圈。日志强制看实际运行时数据,往往一眼看出原假设哪里偏了。
日志调试步骤、用户取日志提示词、循环限制见同目录 reference.md。
验证通过后在 issue 目录建 {slug}-fix-note.md(位置见 cs-issue 的"文件放哪儿"),记录完整闭环。标准路径模板和快速通道模板都在同目录 reference.md。
{slug}-fix-note.md 已建并填写完整按 shared-conventions.md 第 4 节"scoped-commit"规则执行。本阶段:
{slug}-fix-note.md + 本次一并更新的 report / analysis{slug}-fix-note.md 已落盘",紧接着问是否需要 commit告诉用户:"issue 修复完成,工作流闭环。report + analysis + fix-note 已存档。"
按 shared-conventions.md 第 3 节"issue-fix"收尾推荐顺序各问一句(用户"不用"立即跳过):
cs-learn)"cs-decide)"cs-note)"建议:把 issue 目录文件和代码改动放同一次提交方便追溯;"顺手发现"另开 cs-issue-report 处理别塞这个 PR。
修复中发现问题实际是功能缺失(不是 bug)→ 建议另开 cs-feat,别在 issue 工作流里偷偷做新功能。
{slug}-fix-note.md 没建就宣告完成git commitcursor/plugins
github/awesome-copilot
alirezarezvani/claude-skills
microsoft/win-dev-skills