- 模板引擎换成 Handlebars(noEscape,提示词是纯文本不能被转义),单花括号写法彻底退场
- brainstorm-continue / brainstorm-continue-prototype 两份并进 brainstorm.md,
用 {{#if issueNumber}} 分新建 / 续聊,续聊里用 {{#if prototypeFile}} 嵌原型段落,
设置面板对应的两个 textarea 一并删掉
- 模板上下文 = 工单 state JSON 全量字段 + issueNumber / userRequest / nonce /
planFile / prNumber / prRef,以后模板想用新字段不用改扩展代码
- 各会话入口共用一条 state 读取路径,读失败只记 warn 按空状态继续,不拦开会话
- 升级后首次启动把存量自定义提示词迁到双花括号并合并成一份,改写前把
settings.json 备份成 settings.json.bak-<时间戳>,迁移动作全写日志
- 装 handlebars 时给 vsce 传递依赖的老 semver 加 trustPolicyExclude 豁免,
否则 no-downgrade 策略卡住整个装包
Claude-Session: https://claude.ai/code/session_01Kgmb1LvrPmFX3NoUDB4zZC
4.7 KiB
{{#if issueNumber}} /ecc:grilling 讨论下 {{issueNumber}} 号工单
用 tea 命令找工单,用 ecc:grilling 技能讨论细节,用表单形式和我交互,每次只问一个问题(成组的问题也拆成一次一问)。
{{#if prototypeFile}} 工单已有原型插件 {{prototypeFile}},先读它了解已经定下来的界面和交互,在此基础上只对齐还不明确的地方,不要从零重画。
原型要改时只能交给本工单已经开着的原型会话:先 ListAgents 找到它,再 SendMessage 说清要改哪块、为什么改、改完怎么算对,然后等它回报。
- 原型会话终端名:issue-{{issueNumber}}-原型 {{#if prototypeSessionId}}
- 原型会话 id:{{prototypeSessionId}}(它 transcript 的文件名就是这个 id) {{/if}}
严禁用下面这些方式代替:Agent 工具派子代理 / fork 分身 / 后台代理,自己动插件代码,翻 git log 猜会话。ListAgents 里没有这个原型会话就停下告诉我去工单面板的「原型会话id」行点 ▶ 起一个,不要自作主张换别的做法。
{{/if}}
产物与顺序
- 需求讨论到共识后,用 Skill 工具调
ecc:spec写设计文档到.claude/specs/<stem>.md,让我确认。 - 设计文档我确认后,用 Skill 工具调
ecc:plan,参数是设计文档路径,产出.claude/plans/<stem>.md;计划出来后停下等我确认。 <stem>取工单标题的英文短横线名,设计文档与计划共用同一个 stem;文件名里不要带spec/plan字样,目录已经表达了。工单已有 marker 就沿用其中的 stem。
marker 维护(本会话有效)
设计文档 / 计划文件一律在当前主 worktree(main 分支)创建并提交(ecc:spec 默认不提交,这里要显式提交),每次只提交这两个文件(提交信息形如 📝 docs: #<工单号> 设计文档 / 📝 docs: #<工单号> 实施计划),不要为此新建或切换分支。创建后追加对应 marker:
opencli spx issue marker --issue <工单号> --type spec --value .claude/specs/<stem>.md
opencli spx issue marker --issue <工单号> --type plan --value .claude/plans/<stem>.md
严禁擅自继续
如果你创建/更新了设计文档或计划文件并 marker 已同步,立即停下汇报;不要进入实施流程。
特别地:
- 不要创建分支
- 不要切换分支,包括
git checkout/git switch - 除设计文档 / 计划文件外不要修改任何文件
- 不要创建 PR
- 不要调用 gitea 其他写操作(除上面的 marker 同步) {{else}} 接下来我要实现下面这样的功能: {{userRequest}}
你的任务:用 spx CLI 创建一个 Gitea 工单。spx 用法参考 using-spx-cli skill。
工单格式
先检查仓库的 .gitea/ISSUE_TEMPLATE/ 目录:
- 有模板(
.md或.yaml)→ 严格按模板填 body:标题前缀、章节标题、必填字段都写齐 - 没有模板 → 用普通 markdown 自由写
无论哪种情况,body 末尾必须包含这一行(且仅此一行;不要预先写其他 <!-- spx:* --> marker):
<!-- spx:nonce={{nonce}} -->
创建
把 body 写到 /tmp/issue-body.md,调 spx:
opencli spx issue create --title "<标题>" --body-file /tmp/issue-body.md
spx 返回工单号 + html_url。记下工单号,后续命令用。
后续设计文档 / 计划维护(本会话有效)
需求与计划走 ECC 工作流:/ecc:grilling 讨论需求,/ecc:spec 产出设计文档,/ecc:plan <设计文档路径> 产出实施计划。文件路径固定:
- 设计文档:
.claude/specs/<stem>.md - 计划:
.claude/plans/<stem>.md
<stem> 取工单标题的英文短横线名(如 app-entity),两个文件用同一个 stem,文件名里不要带 spec / plan 字样。两个文件一律在当前主 worktree(main 分支)创建并提交(ecc:spec 默认不提交,这里要显式提交),每次只提交这两个文件(提交信息形如 📝 docs: #<工单号> 设计文档 / 📝 docs: #<工单号> 实施计划);实施 worktree 从 main 当前提交切出,没提交的文件在那边看不到。
只有当你真正创建了设计文档或计划文件后才追加对应 marker:
opencli spx issue marker --issue <工单号> --type spec --value .claude/specs/<stem>.md
opencli spx issue marker --issue <工单号> --type plan --value .claude/plans/<stem>.md
spx 自动找到对应行替换或追加,保留所有其他 marker。不要自己手写 <!-- spx:* --> 行。
严禁擅自继续
成功创建工单后立即停下汇报:输出工单号 + html_url 即可。
特别地:
- 不要创建分支
- 不要切换分支
- 除设计文档 / 计划文件外不要改动或提交任何文件 {{/if}}