Files
shanxia2.0/代码助手.md
T

10 KiB
Raw Blame History

代码助手(zkxw)— 五步工作流 × Superpowers × OpenSpec

在 Cursor / Agent 对话中 @代码助手.md(建议同时 @AGENTS.md),必要时再 @ 本次 openspec/changes/<变更名>/ 下的 proposal.md、tasks.md 等,使助手按本文节奏执行。

指令优先级:你在对话中的明确要求 > AGENTS.md / .cursorrules > 本文件 > Superpowers 技能 > 默认行为。技能与项目 SHALL 冲突时,以项目文档与 OpenSpec spec 为准。若你写明「跳过某步 / 不建 OpenSpec」,仅对当句及你明确指明的范围生效。


当本文件已在上下文中时:会话契约(拉近「自动流程」)

下列约定在本文件已被读取(例如用户 @代码助手.md)且用户请求涉及实现、开发、新增、改造、修复、做功能时,助手 MUST 遵守;除非用户在同一条消息里明确覆盖(例如「只改拼写、不要 OpenSpec」「允许直接改代码」)。

对「帮我实现 XXX」类请求的默认认定

  • 默认按 完整五步 + OpenSpec 变更(若无则先创建) 处理;不把「实现」理解为「立刻堆代码」。
  • 首轮不得批量修改业务代码、新建多文件路由/API,除非用户已声明「极小改动」且满足下文「压缩流程」条件。

首轮回复 MUST 依次交代(建议用小标题列出,便于你扫读)

  1. 当前阶段:写明处于五步中第几步(通常从第一步或第二步开始)。
  2. 目标复述:一句话重述要做的 XXX。
  3. 待确认问题:逐条列出仍不清晰处;没有则写「无,可继续」。
  4. OpenSpec:若已有变更,写出目录 openspec/changes/<kebab-name>/;若无,建议 kebab-case 变更名 并说明将执行 openspec new change 或按 .cursor/skills/openspec-propose/SKILL.md 补齐制品。
  5. 下一步:唯一、可执行的具体动作(例如先问清验收,或跑 openspec status / openspec instructions apply)。

硬性门禁(助手 MUST NOT)

在未满足条件前 禁止
需求边界、验收方式仍含混且用户未确认 大篇幅编写 tasks.md、直接改 API/库表/核心业务
本次走 OpenSpec,但尚未读完 openspec instructions apply --change "<名>" --json 返回的 全部 contextFiles 开始本次变更的主要实现编码(除为跑通 CLI 的微小编排外)
当前 tasks.md 条目未约定本条的可验证方式(见第四步:测试或等价检查) 为该条编写「为通过验收服务」的生产代码
未运行 AGENTS.md 中与本次改动相关的验证命令 下「已完成」「没问题」「全部搞定」等完成断言

每一批改动提交前:自检三问(心中执行,复杂时写入回复)

  1. 上一小步的 lint / test / build(以 AGENTS.md 为准)是否已通过?
  2. 是否只推进 tasks.md 中一项或一小块?
  3. 行为是否与 spec.md 的 #### Scenario(若有)一致?

压缩流程(仅当用户明确声明时)

用户写清「单文件小改、不动接口与权限 / 仅文案或格式」等,可 不新建 OpenSpec 变更,但仍须:说明影响面 + 运行相关验证命令 + 不满足上表最后一行门禁。


总览:五步与 OpenSpec、Superpowers 的对应关系

步骤 你要达到的状态 OpenSpec(制品 / 动作) Superpowers(建议 @ 的技能)
一 需求清晰,不清楚就问清 proposal.md 定边界;必要时新建变更 openspec new change "<kebab-name>" .agents/skills/brainstorming/SKILL.md
二 懂框架、规范、参考案例 读 openspec/config.yaml 的 context;apply 前读 openspec instructions apply --change "<名>" --json 返回的 全部 contextFiles(含 proposal、specs/**/spec.md、design、tasks) .agents/skills/using-superpowers/SKILL.md(何时加载其他技能)
三 分步实现思路 design.md + tasks.md 拆条;依赖用 openspec status --change "<名>" --json 看顺序 .agents/skills/writing-plans/SKILL.md
四 测试驱动开发 每条 task 落地时:先测后码;行为写在 spec 的 Scenario 里,测试与之对齐 .agents/skills/test-driven-development/SKILL.md
五 开发—验证循环直到完成 按 tasks.md 逐项勾选;每步跑约定验证;全完后 openspec-archive-change / 归档流程 .agents/skills/verification-before-completion/SKILL.md

OpenSpec 技能入口(本仓库):.cursor/skills/openspec-propose/SKILL.md(立项与生成制品)、.cursor/skills/openspec-apply-change/SKILL.md(按 tasks 实现)、.cursor/skills/openspec-explore/SKILL.md、.cursor/skills/openspec-archive-change/SKILL.md;命令说明见 .cursor/commands/opsx-*.md。


第一步:必须清楚「要干啥」— 不清晰就反馈、对齐后再写代码

  • 产出:口头/文档无歧义;对应 OpenSpec 里 proposal.md(做什么、不做什么、Capabilities 与后续 specs/<能力>/spec.md 一一对应)。
  • 权威交叉:docs/中科兴皖需求V0.3.md;Web / 小程序 UI 分别以 docs/web-admin-ui-spec-fresh-mint.md、docs/miniprogram-ui-spec-sanqiang.md 为准。
  • Superpowers:需求或方案未定型时,先 @.agents/skills/brainstorming/SKILL.md,再进入写 proposal / 拆 spec。
  • 禁止:在需求含混时直接大改 tasks.md 或批量改业务代码。

第二步:掌握项目框架、规范与参考案例

  • 工程与 monorepo:以 AGENTS.md 为准(后端 backend/、管理端 web-admin/、小程序 miniprogram/ 等)。
  • SHALL 级规范:.cursor/rules/openspec-zkxw-standards.mdc;活跃变更下 openspec/changes/*/specs/*/spec.md;若已归档则 openspec/specs/ 为基线,与 changes/ 并存时 以 openspec/specs/ 为准。
  • 进入实现前:执行 openspec instructions apply --change "<变更名>" --json,阅读返回的 全部 contextFiles,不得跳过。
  • Web 管理端界面模板(新页面对照,勿另起一套):web-admin/src/views/system/unit|order|product|category|user/index.vue 等(路由与菜单见 AGENTS.md / .cursorrules)。
  • 树路径等业务约定:web-admin/src/utils/tree-path.ts;弹窗与列表细节:.cursor/rules/web-admin-crud-dialog.mdc。

第三步:整理实现思路 — 坚持分步实施

  • 产出:design.md(如何做)+ tasks.md(可执行、可勾选、粒度适合单 PR 或单会话块)。
  • 顺序:用 openspec status --change "<变更名>" --json 看制品依赖与 applyRequires,缺什么先补什么,再进入大量编码。
  • Superpowers:多步骤任务在写 tasks.md 前可 @.agents/skills/writing-plans/SKILL.md,保证「一步一事」、依赖清晰。
  • 原则:实现只推进 tasks.md 当前项;避免无关重构与范围蔓延。

第四步:测试驱动开发(TDD)

  • Superpowers:实现或修 Bug 写生产代码前 @.agents/skills/test-driven-development/SKILL.md,遵循 Red → Green → Refactor;先看到有意义的失败再写最少通过代码。
  • 与 OpenSpec 对齐:spec.md 中 #### Scenario 描述可验收行为;自动化测试(或本项目约定的可重复检查)应能指向这些场景。若某层(如纯 UI)难以单测,在 tasks.md 或对话中显式约定可替代的验证方式(例如 E2E、手工 checklist),并与用户确认——不得默认定「不写测」。

第五步:开发与验证循环,直到目标完成

  • 开发:严格按 tasks.md 逐项完成;需要并行子任务时可参考 @.agents/skills/dispatching-parallel-agents/SKILL.md 或 @.agents/skills/subagent-driven-development/SKILL.md(与当前环境是否支持子代理一致)。
  • 验证:每步完成后跑项目约定命令(见 AGENTS.md,如 web-admin 的 pnpm lint、pnpm build:typecheck,后端 pytest 等)。声称完成前 @.agents/skills/verification-before-completion/SKILL.md,有命令输出再下结论。
  • 收尾:变更完成后走 OpenSpec 归档(@.cursor/skills/openspec-archive-change/SKILL.md 或仓库文档中的 archive 流程),使基线与 openspec/specs/ 同步。

对话里可复制的「开任务」示例

精简(你已习惯流程时):

@代码助手.md @AGENTS.md
OpenSpec 变更:<kebab-change-name>。请按五步:先对齐 proposal/spec 中未决点;再读 apply 的 contextFiles;按 tasks 分步执行;每步 TDD;每步验证;最后对照 spec 与需求文档自检。

严格(更接近自动流程,只 @ 代码助手时推荐附带):

@代码助手.md @AGENTS.md
帮我实现:XXX(验收:……;端:web-admin / 后端 / 小程序;是否新建 OpenSpec 变更:是/否;若否请说明原因)。
你必须遵守根目录 代码助手.md 中的会话契约:首轮只对齐阶段与缺口,不得直接大改代码;有变更名则 openspec instructions apply --change "<名>" --json 并读完所有 contextFiles 后再实现;每 task 先 TDD 或等价验收约定;每步跑 AGENTS.md 中的验证命令后再断言完成。

说明:Cursor 不会在后台替你执行命令;「自动」指模型必须按上文契约与五步组织行为。你仍可用 /opsx-propose、/opsx-apply 等命令(见 .cursor/commands/opsx-*.md)减少口述步骤。


维护说明

  • 变更 OpenSpec 目录结构或 CLI 子命令时,同步更新本文「OpenSpec」小节与 openspec/config.yaml 中的 context 摘要。
  • Superpowers 技能路径以仓库 .agents/skills/ 为准;若本机安装位置不同,在对话中用实际可 @ 的路径替换即可。
  • 边界:本文提高模型遵守流程的概率,不是 IDE 插件或 CI 强制门禁;若要更强约束,可把「会话契约」摘要写入 .cursor/rules/*.mdc(alwaysApply) 或使用 .cursor/commands/ 固定组合 @ 与口令。