agentleFS
kingxiaozhekingxiaozhe/cm-workflow/skills/cm-ai/SKILL.md

cm-ai

Skill97 starsChanged 23 days agoMITView on GitHub

用户明确说“规格已确认,开始实现”或要求按已审批 CM specs 开发时使用。新任务默认由 JS workflow 驱动 N1-N8,完成开发、独立审查、QA 与文档同步;模糊点子、未审规格和单独一句“继续”不能触发编码批准。

The file

Files
SKILL.md

cm-ai — 自动开发

执行前读取 ../../runtime/project-context.md、../../runtime/orchestration.md、 ../../runtime/task-gates.md、../../runtime/review.md 与 ../../runtime/model-efficiency.md、../../runtime/logging.md。Codex 入口为 $cm-ai;Claude Code 跨平台入口为 /cm-ai,macOS/Linux 另有历史别名 /cm:ai。

用户明确要求外部专家,或为本次开发任务开启 AUTO 时,按 ../../runtime/external-expert.md 执行 ../external-expert/SKILL.md 的任务路由。 编码、命令、测试执行、页面 QA、Git 与 N4 永远 LOCAL;AUTO 只能把可分离的复杂 研究、测试设计或方案批判路由到 CONSULT/VERIFY。外部建议由本地应用、测试与裁决, 其 .external/ 证据不得满足 N4/N5。

用户本轮输入 — specs 文件夹路径 + 代码项目路径。

$cm-ai specs在~/projects/my-app-specs,代码在~/code/my-app
$cm-ai ~/projects/specs 前端~/code/fe 后端~/code/api

流程图

执行路由(新任务默认 JS)

先按下列顺序选择执行方式;用户无需额外说“使用 JS workflow”。路由选择不替代规格审批或实际调用授权。

  1. 恢复已有运行:先读取原运行记录。已有 JS host/batch 沿原身份与配置恢复;已配置 QA 因命令配置错误卡住时,按 references/js-host-qa-recovery.md 的“QA 配置修订”显式授权,不重开已完成任务。 已确认的旧兼容任务沿原流程续接,不因升级迁移状态。记录缺失、冲突或无法确定归属时只读核对,不能猜测或另开运行绕过历史。
  2. 新任务:默认只读取 references/js-host.md(正常路径)。先明确 control policy v2 的开发、bootstrap、QA 与 QA 修复模式,再由共享 JS 入口驱动阶段;当前会话只执行其工具请求。 启动条件命中外部模型配置、bootstrap 规范任务、多代码根或同仓 specs 受保护执行/文本提案模式时,启动前先读 references/js-host-modes.md 对应一节(见 js-host.md“启动前”第 6 项)。 运行停在阻断、unknown、待审失败或需异常恢复时,才按 js-host.md“文档分工与停机路由”表读取 js-host-recovery.md 或 js-host-qa-recovery.md 的对应一节。 v2 使用 --control-config,不传任何 --allow-*;普通 advance 无需逐步授权 token。异常恢复携带此前 status.controlTarget 的固定副本作为 expectedControl,驾驶员不得自动刷新。具体配置、协议分界与受控补正见 ../../docs/cm-control-policy-v2.md。 cm-ai 单/批任务的 r2 blocked 仍无 runner-owned correction 完成入口;原兼容任务门禁的人工补正继续绑定原因与来源声明,新版独立 taskgate 受控补正仅支持无 JS ownership 的兼容任务,两者都不用来绕过旧 journal/owner。 不含 control policy 的旧运行与旧 PLAN 沿原协议,不迁移 journal、指纹或历史批准;只有用户明确选择旧兼容流程且确认不是已有 JS 运行时,才进入下文兼容执行步骤。
  3. JS 准入失败或不支持:报告具体宿主、Node 版本、目录、配置或业务能力缺口并停止依赖该能力的执行; 不静默回退兼容流程,不改 runId、runtime 或手工完成路径规避阻断。原生 Windows 尚不支持,Linux 支持声明不等于实机验收。

JS 路由中的状态、日志、handoff、Review 凭证与任务勾选由原 JS owner 和唯一完成门禁负责; 不得执行下文兼容步骤中的同类手工写入。策略文件只声明本次已授权范围内的执行能力;reviewer、independent 与 decision_source 仅是来源声明,门禁核对其格式、任务材料和执行记录的一致性,不验证人员或实际人工交互。fresh 独立 Review 与唯一完成门禁仍必需,push、发布、部署与资金动作仍须各自授权。

N1–N8 业务概览与兼容执行步骤

下列流程图说明共同业务顺序;JS 的执行操作以 references/js-host.md 及其路由到的恢复/条件文档为准。 仅已选定兼容流程时,按下文及 references/ 节点执行手工步骤;N3 开工前先运行 capture-baseline,N4/N5 核对实际清单与 changed_files 相等;入口更新不代表已安装副本或全阶段实机验收。

START
  │
  ▼
[N1: 初始化] ── 解析输入、扫描 features、加载上下文
  │
  ▼
┌─► [N2: 进入 Feature] ── 读取 specs、分析依赖、输出执行计划
│     │
│     ▼
│   ┌─► [N3: 执行 Task] ── 开发 → 末任务文档同步 → Learning/handoff 定稿
│   │     │
│   │     ▼
│   │   [N4: Review] ── 独立审查
│   │     │
│   │     ▼
│   │   [N5: 标记完成] ── tasks.md 标 [x]、写 LESSONS.md
│   │     │
│   │     ▼
│   │   [N6: QA 评估] ── 固定检查点与登记路径决定是否触发 cm-qa-engineer
│   │     │
│   │     ▼
│   │   [N7: 上下文管理] ── 从磁盘重读 specs 与项目约束
│   │     │
│   │     ▼
│   │   还有未完成 task? ──YES──┘
│   │     │
│   │    NO
│   │     │
│   │     ▼
│   └── Feature 完成 → 重建下一 Feature 的上下文
│         │
│         ▼
│       还有下一个 Feature? ──YES──┘
│         │
│        NO
│         │
│         ▼
      [N8: 完成] ── 只读文档/收尾核对 → 原完成门禁 → 输出总结
        │
        ▼
       END

全局规则

暂停(仅灾难级): 不可逆破坏(删数据、动线上、不可回滚迁移)、资金/密钥/合规风险、交付形态级架构错向、环境阻塞到无法继续。 不暂停(多方案自主决策): 执行中出现多个可选方案时——技术选型、实现路径、库/工具选择、审查意见分歧——自己分析利弊选最优解直接执行,不询问。代价是留痕义务:把「选了什么 / 为什么 / 放弃了什么」写进任务汇报,方向性取舍追记 LESSONS.md——人可以事后翻案,但流程不为选择题停车。业务逻辑歧义按需求文档最合理解释执行并显式记录所做假设,仅当触及灾难级清单才暂停。 节点间不停车: 除上述灾难级与各节点显式卡点(入口闸/降级知情/形态确认/涉合规走查)外,任何节点完成后直接进入下一节点——不得以"我将要…是否继续?"、"完成了 X,需要我继续吗?"这类问句收尾等待。阶段性汇报写在输出里照常可见,但回合不能停在等确认上(实跑反馈:执行器习惯性在节点末尾问一句,用户被迫每阶段点头,自动化名存实亡)。 度量: 每次暂停问人,恢复后在当前任务的 METRICS.md 记录里人工介入计 1 次并注明原因(见 N5)。 状态落盘(供状态条/看板实时点亮节点): 每进入一个节点(N1–N8),覆盖写入 {SPECS_DIR}/.cm-status.json 单行 JSON: {"node":"N4","feature":"1.xxx","task":"T-005","detail":"一句话当前动作","state":"running","at":"HH:MM:SS"} ——detail 必须写大白话,标准是"路过的非工程师扫一眼能懂":写"正在开发数据接口"不写"cm-backend-engineer 执行 T-004";写"第2轮代码审查"不写"对抗式子agent复审";写"确认一下:原型里有3个按钮点了没反应,要做吗?"不写"原型死区待确认"。节点号/任务号由状态条自动放在行尾角标,detail 里不要再写。 ——暂停等人时 state 改为 paused_for_human(detail 写等什么),全部完成时 N8 写 run_done。N1 时可将 specs 绝对路径同步到当前运行时的状态镜像(Claude 兼容运行时为 ~/.claude/cm-current-specs,Codex/OMX 为对应 session 状态),但 {SPECS_DIR}/.cm-status.json 始终是跨运行时真相。每节点至少写入一次;长步骤可在同一节点更新真实检查点,不得跳过。 运行日志(事后复盘与工作流优化的原始证据): 按 runtime/logging.md 调用统一写入器;它先追加 {SPECS_DIR}/运行日志.jsonl,再把 同一 event_id 镜像到 ~/.cm-workflow/logs/。at 一律 ISO 8601 带时区偏移, detail 用一句大白话;不直接拼 JSON,避免跨会话格式漂移。 必记事件(event 取值固定):run_start、node_enter、task_start / task_done、review、degrade、pause / resume、decision、warning、 error、progress、resource、qa、test_run、external_expert、 spec_lifecycle、delivery、run_done。写日志与状态落盘同节奏,不得跳过;详细 测试/审查/外部回答只写专项凭证,不灌主日志。长步骤和临时资源严格按 runtime/logging.md 配对,禁止用后台心跳制造虚假活跃。

会话边界(省 token): 单任务运行以 run_done 收尾时,按 runtime/model-efficiency.md「Session boundary」的判断表给出结论;批次只在整批结束后给。驾驶员同时把已做、待做与下一条命令写进 {SPECS_DIR}/.reviews/session-handoff.md,结论多一行「交接摘要:…」;新会话建运行(mode:create)时驾驶员先打印它,只作参考,不续接旧运行、不带授权。换新会话时,新会话作为新运行的 --host-context;单任务运行中途换会话按 --original-host-context 规则接手。不得为换会话改写记录、跳过审查或重置授权。

角色路由投影: N1 用代码项目根读取有效配置;N3 每个实现任务解析 coder,N3 任务检查解析 tester,N4 解析 reviewer,并在 N6 QA 解析 tester。使用:

node {CM_WORKFLOW_ROOT}/scripts/cm-workflow-config.mjs \
  --project {CODE_PROJECT} --role coder --runtime {codex|claude} --print-role

把返回的 adapter、model、source、route_state 注入当前角色提示和任务摘要, 并按 runtime/workflow-routing.md 写 decision/phase: route。每次 N7 恢复或进入 新角色边界都从磁盘重读;配置缺失使用默认路由。declared-adapter 只表示项目请求了 当前运行时未观察到的适配器,必须写 warning/degrade,不能声称该模型已执行;它 也不能绕过本地编码、测试、Git 或 N4 独立审查。 managed-adapter 只通过 runtime/model-efficiency.md 的内置调用边界返回文本角色结果; 主执行者仍负责本地改码、命令与证据,适配器回答本身不得满足 N4。版本 1 因此拒绝 reviewer.adapter: openai-compatible,N4 只使用 runtime/review.md 列出的本地审查通道。

每个角色调用按 runtime/model-efficiency.md 重建当前任务的最小包:N3 coder 只接收 当前 task/AC/相关设计与文件,tester 只接收测试合同和必要失败证据,N4 reviewer 接收 task-only handoff/diff 与验证摘要。稳定规则前缀不混入动态 diff/日志;角色只返回 既有 handoff、测试或 findings-first 结构,不复述输入。上下文缩小不得删减 N4 包的 强制证据,也不得减少测试、审查轮次或人工门禁。

任务状态镜像: tasks.md 是唯一权威任务源。运行时支持任务面板时,可将未完成任务镜像到 Codex/OMX 计划或 Claude 任务清单;N3/N5 同步状态。断点恢复必须由磁盘重建镜像:[x] 跳过或标为 completed,[DROPPED] 不镜像,不得重复创建条目。

执行策略: 遵守 runtime/orchestration.md。单代码根默认先用 cm-ai-batch-plan.mjs 按已批准 tasks.md 生成批次:默认每个任务都在自己的 worktree 里开发、做完按任务顺序合回主目录;无依赖、- 范围: 不重叠的任务同组并行。功能最后一个任务、批次最后执行的任务和 - 设备: 需要 的任务留在主目录串行;功能有浏览器等交互式验收用例、主目录项目配置文件与当前提交里的不一致(未跟踪或本地改动被藏起来)、或任务可能在中途触发固定检查点 QA(命中工作流登记的关键路径或可能成为连续第 5 个未 QA 任务;生成时用 --workflow-config 传入关键路径)时不单独开 worktree(同组并行不受影响);任何任务没写范围或是脚手架功能时整个功能串行。单独进 worktree 的任务照常按固定检查点判定 QA,触发就在它的 worktree 里跑、通过才合回,失败时批次以 batch_solo_qa_failed 停下并给出合并分支、/cm-fix 修复、新批次继续的出口;只有 2 人及以上同组并行的任务 QA 延后到功能末任务统一跑。项目 parallel.worktree_all: false 只保留真正的并行组,parallel.enabled: false 不建任何 worktree。

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.