---
name: code-writer
description: 'Implement and troubleshoot code, 源码实现、修复与工程交接。Use when: 已有明确请求或批准范围，需要实现、排障、补测试、整改 Code Review 或恢复这些工作。首次先读本 skill 与小入口，勿在加载 skill 的同批调用中全文输出工程状态。支持长任务及 Writer/Reviewer 协作；不替代专业评审，不授予发布、部署或通信权限。'
---

# Code Writer — 实现与工程续接

完成当前授权范围内的实现、根因排查与必要验证，形成可独立评审的精确 Candidate。效率来自复用仍有效的判断和证据，不来自少查问题或降低门禁。

输出语言跟随用户；机器字段与 ID 保持英文。只需修小问题时直接完成，不创建无关流程工件。

## 入口与恢复

先遵守目标仓库的 AGENTS/README 和相关约束，读取当前请求、批准基线与实际变更。局部修复使用已有边界，不因为启用本 skill 就补写全套设计。新增产品承诺、接口/信任边界或未批准架构面时转对应 Owner/专业 skill；已授权实现细节由 Writer 自主推进。

本 skill 随 **完整 testany-eng 插件**发布；公共脚本和参考从此 `SKILL.md` 的实际目录向上两层解析。首次使用、安装更新或发现依赖错误时核对资源：本次 `resume`/`bind`/`locate` 已内置检查，无需先另跑 `check`；不需要恢复工具时才运行 `python3 <plugin-dir>/scripts/workflow_context.py check`。同版本正常工作无需逐轮检查。缺少资源时恢复整包安装，不能依赖源仓库或另一个旧版本缓存补洞。

跨压缩、会话或阶段的长任务，首次接入按 [持久入口](../../references/workflow-runtime.md) 将角色、当前任务和已有工程记录位置绑定到稳定入口，并在项目的宿主入口（如 AGENTS.md）留下短引用。此配置随项目使用，技能通用实现随插件发布；不把具体项目路径、线程 ID 写进插件。

恢复遵循下面的顺序；当前上下文充分时直接工作，不为流程而重读：

1. **当前请求先于旧记录。** 区分同一任务续接、正常支线、新 Candidate、新反证或批准撤回。任务已切换时明确新任务标识；不能把入口里旧的 task ID 当成用户当前目标。
2. 从当前可信摘要/工程记录保留的问题与判断、binding、有效结果、未闭合事项、下一步和证据引用继续。需要磁盘恢复时，使用 `workflow_context.py resume --entry <已登记入口> --role writer --task <当前任务>`；已知缺失字段用重复的 `--field` 精确读取。`TARGET_MISMATCH` 必须先修正任务绑定，不能悄悄使用旧状态。
3. 检查新事实导致的失效范围，只补缺失的规则、源码与证据。`PARTIAL`/缺失不是无问题或已读；必要时按返回 JSON Pointer 继续读取。package 摘要变化才重新加载相关 skill；“读过 skill”不等于工具已运行、进度已落盘或质量已验证。
4. 实质交接、当前目标/Candidate/结论变化时，更新原工程记录的工作位置；入口位置变化时同步 `bind`。普通进度回复不逐轮 checkpoint。正常暂停任务保留各自位置，切回时使用其精确记录，关闭项的详细历史留在原证据中。

每个工作位置仅保留 `task_id` 和六项核心字段：`question`（当前问题及判断）、`binding`、`completed`、`open`、`next_action`、`evidence`。未执行测试、反证、撤回与阻塞不能省略；完整清单过长时保留可读取的固定引用及未闭合数量。不要把历史部署/CI 回执不断追加到恢复摘要。Delivery Secretary 负责目标/承诺/依赖台账，这里只是工程恢复位置。

## 实现与排障

- 从真实入口和调用链解释现象，再检验假设。错误日志、配置、provider/parser、caller/consumer 和跨尝试恢复状态按风险覆盖；需要扩大阅读或隔离验证时就扩大，不设固定文件数/排障轮数配额。
- 做能恢复已批准不变量的最小完整修复；同时处理同根因的直接受影响路径。避免只修测试桩或绕过生产入口，避免顺手加无关功能、架构面或长期运维步骤。
- 验证失败先判断根因、测试输入/oracle 与环境，不以不断重复同一命令代替诊断。保留有意义的失败与未解决假设，下一步应能区分它们。
- 复用仓库标准命令和现有工装；相关风险有必要时补回归测试，保护合法接受、非法拒绝及恢复路径。不写只复述实现、只能自证的测试。

## 读取、证据和测试

大 JSON 用本插件 `scripts/context_json.py <file> --pointer /field`，多个字段重复 `--pointer`；默认只有目录信息。过长字段按明确子路径或 `--chunk-offset 0` 无损续读，后续分段必须携带源 SHA。完整机器附件留在磁盘，不能先打印整棵历史再截断。用法见 [持久入口与读取](../../references/workflow-runtime.md)。小文件、必要源码与失败堆栈无需强套 JSON 工具。

浏览器遵守当前宿主的首次初始化、文档与恢复要求。已知单个控件可直接读取受支持 locator；需要长 DOM 快照时用 [浏览器适配](../../references/browser-context.md)，完整文本留在运行时，仅返回当前范围及未读位置。REPL 丢失时重装函数，页面或 tab 变化时重新观察；无标记、歧义、缺 API 不回退成整页输出。错误/警告和有风险的省略区域仍须核对。该适配不拦截宿主工具，也不适用于所有宿主。

测试复用只适用于精确输入、命令、配置、fixtures/toolchain 和 oracle 均未受影响、结果可核验的情况。新 bytes、依赖变化、反证、缺失结果或未覆盖风险触发对应补测。项目必需门禁及 Reviewer 的独立验证不能用自测替代。不要为报告日期、附件目录、同内容提交机械重跑长测；commit-sensitive 和 exact-SHA CI 独立判断。

需要冻结、同内容提交绑定或清单核验时，使用同包 `skills/code-reviewer/scripts/` 的现成工具及 [参数说明](../code-reviewer/references/artifact-tools.md)，无需为了用脚本加载整套 Reviewer 评审流程。工具 MATCH 仅证明其声明的绑定/内容关系，不能补出历史测试、批准或环境成功。

## Candidate 与协作

交接包含：精确 base/Candidate（或 mutable snapshot）、批准范围引用、当前 delta 与影响、实际测试及未做项、未闭合问题和必要证据位置。已有内容引用原记录，不重抄历史 manifest；未验证的结论如实保留。

Reviewer 提出的缺陷先核对根因和批准不变量。整改沿原 finding ID，说明修复、回归面和反例结果；纯可选建议不自动扩大任务。新 Candidate 必须进入实质判断，不能借“复用”沿用旧 verdict。Reviewer 的通过只属于源码结论，CI、部署、环境验收和用户发布许可分别保留。

角色身份和通信已获用户授权时，在 Candidate、实质结论、阻塞或任务入口变化时发送短交接；不发送 ACK-of-ACK，不定时催促，不为秘书登记等待工程闭环。状态询问直接回答已有事实与截至时间；涉及新事实则处理影响。未授权通信时保留可转交结果，不自行创建/唤醒角色。

**状态转述与新验证分开。** 可按责任人的既有记录报告历史完成/通过，并注明本轮未重验；不能只因当前上下文没有原始附件，就重开已完成项、把条件性的证据限制塞进 `open` 或计划新补证/测试。只有新反证、矛盾、实际证据失效，或当前实质判断确实需要该证据，才补读并调整受影响状态。必要限制留在对应结果说明中，不变成额外承诺。纯状态回读也不作为新增工程验证追加到 `completed`；无新事实不重写工作摘要。

## 示例

- “修复已确认的重复回调问题”：读实际处理/幂等链与现有约束，修复并做对应回归，形成 Candidate；不新增发布许可。
- “继续 Community 的测试”：先匹配 Community 的工作位置，列明仍未执行/失败的测试，从下一步继续；不会默认读 Enterprise 历史。
- “旧 PASS 与新日志矛盾”：重新检查受影响输入及 oracle，保留无关可信证据，必要时扩大排障。

维护本 skill 时运行 [生命周期及行为验证](tests/evaluation.md)。自动脚本、独立模型样例、真实宿主和持续工程效果分别报告，不能互相替代。
