/sigma-create-ticket
概述
/sigma-create-ticket 用于创建和编辑 SPEC、EPIC 和 TICKET 类型的问题。它是 /sigma-to-spec 和 /sigma-to-tickets 的网关。/sigma-unslop 不会调用它。
此技能是唯一运行 gh issue create 或 gh issue edit 的技能。它不实现、不审查、不合并。
在创建或编辑前,请阅读 CONVENTIONS.md。该文件包含标题、标签和正文的详细规范。
何时使用
- 使用场景: 用户调用
/sigma-create-ticket,或/sigma-to-spec或/sigma-to-tickets在本次会话中传递了正文。 - 列出或查看:
/sigma-to-spec请求list-specs。/sigma-to-tickets请求view。执行读取并返回。不要创建。 - 不要使用: 工作仍处于方案访谈阶段(
/sigma-plan)、规范阶段(/sigma-to-spec)或拆分阶段(/sigma-to-tickets)。不实现、不审查、不合并。
输入
交接信息包含 caller、action(list-specs、view、create 或 update)、kind(spec、epic 或 ticket)、title、body,有时还有 number、parent 和 blocked-by。
用户的同意是在本次会话中的回复。以下回复视为同意,不会再次提问:
/sigma-to-spec用户在摘要后表示同意/sigma-to-tickets用户在粒度和阻塞项后表示同意
任何其他包含2个或更多问题的批次,都需要在此处获得同意。
问题约定
- SPEC: 标题
SPEC: <名称>,标签spec,无父级。正文:该功能的定义、非定义、验收标准ID、scripts/下的脚本通配符、超出范围。无未解决的问题。 - EPIC: 标题
EPIC: <名称>,标签type:epic。父级为 SPEC。 - TICKET: 标题
TICKET: <名称>,标签type:ticket加上agent:hitl或agent:afk。父级为 EPIC,或当/sigma-to-tickets指定时为 SPEC。从审查中分离出的工单没有 SPEC 父级,除非交接信息中指定了史诗。正文部分:上下文、验收标准、超出范围、分支agent/{N}-{slug}、模式hitl或afk。
此技能确保的标签:spec、type:epic、type:ticket、agent:hitl、agent:afk。模式标签与模式行一致。
步骤
步骤 1 - 确定工作仓库
运行 gh repo view --json nameWithOwner。当输出 owner/name 时完成。如果失败,告知用户在工作仓库中运行或运行 gh auth login,然后停止。
如果仓库名以 sigma-build-factory 结尾,则停止。问题应属于工作仓库。
步骤 2 - 读取或写入
在创建或编辑前,读取 CONVENTIONS.md。
list-specs 运行:
gh issue list --repo "$REPO" --label spec --state all --limit 50 \
--json number,title,state,url,body
view 运行 gh issue view <N> --repo "$REPO" --json number,title,labels,state,url,body。
将 JSON 返回给调用者。不确保标签,不提问。
当调用者获得列表或问题,或写入路径继续到步骤 3 时完成。
步骤 3 - 同意关口
来自输入中三个同意情况之一的交接信息已准备好提交。
直接批次(2个或更多问题),本次会话无同意:显示每个问题的标题、类型、父级和模式。提问一次:“提交这些问题?”等待。沉默不提交。
直接单个问题:当标题、类型或功能通道父级缺失时提问一次。当这些字段存在时,直接提交。
更新操作,本次会话无同意:显示问题编号和标题,提问一次,然后编辑。不要创建第二个问题。
当同意被记录,或单个完整创建请求准备提交时完成。
步骤 4 - 确保标签存在
在写入路径中,列出标签并创建任何缺失的约定标签:
gh label list --repo "$REPO" --limit 100 --json name
gh label create <name> --repo "$REPO" --description "<来自 CONVENTIONS.md>"
当 gh label list 显示 spec、type:epic、type:ticket、agent:hitl 和 agent:afk 时完成。
步骤 5 - 匹配现有问题
列出问题并比较精确标题 SPEC: <名称>、EPIC: <名称> 或 TICKET: <名称>。
gh issue list --repo "$REPO" --state all --limit 200 --json number,title,state,url
已确认的更新则编辑该编号。不创建。如果新标题已存在于另一个问题上,则停止该项目并报告两个编号。
如果创建时发现一个精确标题,则报告 exists 并重用编号。不创建第二个问题,不编辑正文。两个精确标题则停止该项目。
当每个项目状态为创建、更新、重用或冲突时完成。
步骤 6 - 创建或编辑
将正文写入临时文件。不要写入工作仓库。
当短名称缺少前缀时,补充标题前缀。不要重复前缀。
按顺序创建:史诗在其工单之前,阻塞项在其依赖项之前。当交接信息指定父级时,添加 --parent。当阻塞项编号已存在时,添加 --blocked-by。当标志没有值时省略。
gh issue create --repo "$REPO" --title "<标题>" --label "<标签>" --body-file "$f"
从 URL 中解析 N。如果工单正文中的 Branch 行缺失或仍包含 {N},则编辑该行,使其为 agent/<N>-<slug>。slug 是前缀后的名称,小写,空格替换为连字符。
gh issue edit <N> --repo "$REPO" --body-file "$f"
对于已确认的更新,gh issue edit 替换标题和正文并修正标签。移除另一个模式标签,仅保留匹配的那个。编辑时不改变父级。
SPEC 只获取标签 spec。EPIC 只获取 type:epic。TICKET 获取 type:ticket 和一个模式标签。
记录 gh 失败并继续独立项目。不要创建失败史诗的子问题。不要关闭父级。
当 gh issue view <N> --json title,labels,body 显示正确的标题、标签,以及工单的 Branch agent/<N>-<slug> 和模式与标签匹配时完成。
步骤 7 - 返回
返回每个项目的编号、标题和 URL,包括 exists 和失败。
当调用者是其他技能时,到此停止。该技能指定下一步命令。当用户调用了 /sigma-create-ticket,指定下一步命令但不执行它。SPEC 转交 /sigma-to-tickets <N>。工单转交 /sigma-implement <N>。对于史诗,说明 /sigma-implement 拒绝处理史诗。
硬性规则
| 规则 | 原因 / 违规表现 |
|---|---|
此技能是唯一运行 gh issue create 或 gh issue edit 的技能。其他技能的列出和查看也在此处运行。 | 第二条写入路径会导致标题、标签和父级不一致。 |
| 确保五个标签存在,然后创建或编辑。 | 缺失的标签会导致批次中下一个问题失败。 |
| 已确认的更新编辑该问题。精确标题匹配不创建重复。 | 第二个 SPEC: 或 TICKET: 会拆分一个功能。 |
直接批次等待同意。已在本次会话中由 /sigma-to-spec 或 /sigma-to-tickets 确认的正文不再提问。 | 再次提问会阻碍交接。在沉默中提交直接批次会创建用户未见过的问题。 |
创建后,编辑工单使 Branch 为 agent/<N>-<slug>。模式标签与模式行匹配。 | 残留的 {N},或 afk 与 agent:hitl 一起,会将构建者发送到错误的分支或模式。 |
| 创建时设置父级(当交接信息指定时)。来自规范的工单父级为 EPIC 或 SPEC。来自审查的工单省略父级,除非交接信息指定了史诗。 | 虚构 SPEC 父级会复制审查工单不需要实现的验收标准。 |
| 不实现、不审查、不合并。 | 此技能提交问题后停止。 |
验证
-
gh repo view返回了工作仓库,且仓库名不以sigma-build-factory结尾。 - 在创建或编辑前已读取 CONVENTIONS.md。
-
list-specs和view返回了 JSON 并未创建。 - 创建或编辑前五个标签已存在。
- 直接批次获得了明确同意。本次会话中的上游同意未再次提问。
- 已确认的更新编辑了指定问题。没有第二个问题具有相同精确标题。
- 新工单的 Branch 行为
agent/<N>-<slug>,且模式标签与模式行匹配。 - 来自规范的史诗父级为相应 SPEC。来自规范的工单父级为 EPIC 或 SPEC。来自审查的工单没有 SPEC 父级,除非交接信息指定了史诗。
- 返回了编号、标题和 URL。此技能未实现、审查或合并。