--- name: ack description: >- 初始化、检查并运行 ACK 三角色协作闭环。仅在用户显式调用 /ack 或 $ack,并要求 初始化 ACK、检查 docs/ack 配置、按 ACK 规划需求或指挥 Coordinator/Developer/Test 工作时使用。 --- # ACK 项目协作入口 本 Skill 是 ACK 的完整能力包:`references/` 保存通用规范,`templates/` 保存项目 状态模板,`scripts/` 保存校验工具。目标项目只在 `docs/ack/` 保存 `project.md` 和 `tasks.yaml`,不要复制或链接 Skill 内容。 开始时解析当前 `SKILL.md` 所在目录,记为 ``。所有通用规范、模板和 脚本都相对此目录访问,不依赖固定的全局安装路径。 ## 选择模式 - 用户要求初始化、接入或安装 ACK:执行“初始化”。 - 用户要求检查 ACK 是否可用、配置是否完整:执行“检查”。 - 用户要求用 ACK 做需求、修复问题或继续任务:执行“工作”。 始终先解析真实项目根目录。优先使用 `git rev-parse --show-toplevel`;不是 Git 项目时使用用户指定目录或当前目录。不要修改项目的 `AGENTS.md`、`CLAUDE.md` 或其它 Agent 指令文件。 ## 初始化 1. 确认 `skiff` 可执行,并检查 `/docs/ack` 是否存在。 2. 不存在时执行: ```bash skiff init ack --project ``` 该命令从本 Skill 的 `templates/` 生成项目状态,不会在项目中创建 Skill 软链接或资源副本。 3. 如果 `docs/ack` 已存在,不重复初始化、不覆盖文件;转入“检查”,报告缺失项并 只补用户授权且能安全确定的内容。 4. 读取项目的公开配置和文档,例如 README、语言清单、包管理清单、测试配置与 CI,确定项目名、技术栈、源码/规格/测试路径及真实可执行命令。 5. 完善 `docs/ack/project.md`: - 用实际项目值替换全部占位符。 - 无服务地址时把 Base URL 写为 `n/a`,不要虚构端口。 - 无法从项目证据确定的命令写为 `n/a`,并在结果中列为待配置项。 - 只写项目差异,不复制 `references/` 中的通用规范。 6. 完善 `docs/ack/tasks.yaml` 的项目信息。纯初始化且用户没有提供真实任务时, 删除模板示例任务并保留 `tasks: []`;不要虚构需求或缺陷。 7. 更新 `updatedAt`,并运行: ```bash python3 /scripts/validate_tasks.py docs/ack/tasks.yaml ``` 8. 检查 `project.md` 与 `tasks.yaml` 是否仍有 `<...>` 占位符。结构校验通过且 必填项目事实完整时才称“初始化完成”;否则称“部分完成”并列出缺失值。 9. 报告创建的路径、检测到的命令、校验结果和下一步。除非用户明确要求,不提交、 不推送。 ## 检查 1. 检查以下路径: - `docs/ack/project.md` - `docs/ack/tasks.yaml` 2. 读取 `/VERSION`,对比 `tasks.yaml` 的 `ackVersion`。旧项目只有 `ackVersion` 时仍可读取,但建议迁移为 `ackVersion`。 3. 查找未替换占位符,并核对项目路径、覆盖层路径、Developer 白盒命令、Test 黑盒命令和 Base URL。 4. 使用 `/scripts/validate_tasks.py` 校验任务板。只报告证据明确的 问题,不因可选字段缺失而宣称失败。 5. 检查不会自动修复或覆盖现有配置;用户明确要求修复后再修改。 ## 工作 1. 若 `docs/ack` 不存在,停止并建议先用 `/ack` 初始化;不要静默初始化。 2. 依次读取: - `docs/ack/project.md` - `docs/ack/tasks.yaml` - `/references/kickoff.md` - kickoff 指定且与当前任务相关的 references 文件 3. 当前会话担任 Coordinator,遵守项目覆盖层中的命令、路径权限、模型路由和 worker 复用规则。项目覆盖层优先于通用示例命令。 4. 新需求先写产品文档、任务拆分与可观测验收信号,更新 `tasks.yaml` 并校验, 然后交给用户确认;确认前不派发实现。 5. 用户已确认的任务按 ACK 闭环执行:Developer 实现与白盒验证,Test 独立黑盒 复测,Coordinator 读取证据终检并唯一写入 `tasks.yaml`。 6. 不把 `worker_done` 或 Test 自报成功直接当作完成。每项最多三轮,仍失败则记录 `leftover` 并继续其它任务。 ## 边界 - 不修改或追加任何项目 Agent 指令文件,包括 `AGENTS.md`。 - 不在项目中维护第二份 ACK 通用规范、模板或任务 schema。 - 不猜测项目命令、服务地址、worker handle 或模型名称。 - 不覆盖已有 `docs/ack` 文件,不擅自提交、推送、创建终端或新 worktree。 - 项目只保存 `docs/ack/project.md` 和 `docs/ack/tasks.yaml`;通用资源始终从当前 ACK Skill 目录读取。