Community程式設計與開發github.com

sigma-create-ticket

建立或編輯 SPEC、EPIC 或 TICKET 類型的 GitHub Issue。此技能是 `/sigma-to-spec` 與 `/sigma-to-tickets` 的閘道,負責執行所有 `gh issue create` 與 `gh issue edit` 操作。

sigma-create-ticket 是什麼?

`/sigma-create-ticket` 是一個核心技能,用於在 GitHub 上建立和編輯 SPEC、EPIC 和 TICKET 類型的 Issue。它作為 `/sigma-to-spec` 與 `/sigma-to-tickets` 這兩個上游技能的閘道,接收它們生成的 Issue 主體,並負責執行所有寫入操作(`gh issue create` 或 `gh issue edit`)。開發者在建立 Issue 前,必須先閱讀 `CONVENTIONS.md` 以了解標題、標籤和主體的格式規範。此技能支援批次建立多個 Issue,並會要求使用者明確確認後才執行;若 Issue 主體已由上游技能確認過,則不會再次詢問。它會確保必要的五個標籤(spec、type:epic、type:ticket、agent:hitl、agent:afk)存在,並在建立後修正 Ticket 中的 Branch 行(格式為 `agent/<N>-<slug>`),使模式標籤與 Mode 行一致。此技能僅負責 Issue 的建立與編輯,不實作、不審查、不合併程式碼。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/sigma-michael/sigma-build-factory/tree/HEAD/sigma-create-ticket

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

/sigma-create-ticket

概覽

/sigma-create-ticket 負責建立和編輯 SPEC、EPIC 和 TICKET 類型的 Issue。它是 /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 在此對話中傳遞了一個 Issue 主體。
  • 列出或檢視: /sigma-to-spec 會要求 list-specs。/sigma-to-tickets 會要求 view。執行讀取操作並回傳結果。不要建立 Issue。
  • 不要使用: 當工作仍處於解決方案訪談階段(/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。

使用者在同一對話中的回覆才算數。以下情況的回覆算作「yes」,並且不會再次提問:

  • /sigma-to-spec 在使用者對摘要表示同意之後
  • /sigma-to-tickets 在使用者對顆粒度與阻礙項表示同意之後

任何其他包含 2 個以上 Issue 的批次,都需要在此明確獲得同意。

Issue 規範

  • SPEC: 標題 SPEC: <name>,標籤 spec,無上層 Issue。主體包含:此功能是什麼、不是什麼、驗收條件 ID、scripts/ 下的腳本路徑、不在此範圍的內容。沒有待解決問題。
  • EPIC: 標題 EPIC: <name>,標籤 type:epic。上層 Issue 為其 SPEC。
  • TICKET: 標題 TICKET: <name>,標籤 type:ticket 加上 agent:hitl 或 agent:afk。上層 Issue 為 EPIC,或當 /sigma-to-tickets 指定時可為 SPEC。從 Review 拆出的 Ticket 沒有 SPEC 作為上層 Issue,除非交接內容中指定了 EPIC。主體段落:Context、Acceptance、Out of scope、Branch agent/{N}-{slug}、Mode hitl 或 afk。

此技能確保的標籤:spec、type:epic、type:ticket、agent:hitl、agent:afk。Mode 標籤需與 Mode 行保持一致。

步驟

步驟 1 - 解析工作儲存庫

執行 gh repo view --json nameWithOwner。當成功輸出 owner/name 時完成。若失敗,請告知使用者應在工作儲存庫中執行,或先執行 gh auth login,然後停止。

若儲存庫名稱以 sigma-build-factory 結尾,請停止。Issues 應歸屬於工作儲存庫。

步驟 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 回傳給呼叫者。不要確保標籤存在,也不要提問。

當呼叫者取得列表或 Issue,或寫入路徑繼續到步驟 3 時,此步驟完成。

步驟 3 - 同意閘道

從輸入中三個「yes」情況傳遞過來的交接內容,可以直接建立 Issue。

直接批次(2 個以上 Issue)而在本對話中沒有獲得同意:顯示每個 Issue 的標題、類型、上層 Issue 和 Mode。提問一次:「要建立這些 Issue 嗎?」等待回覆。沉默不會建立 Issue。

單一 Issue:當標題、類型或功能分支上層 Issue 遺失時,提問一次。當這些欄位都存在時,直接建立。

更新操作而在本對話中沒有獲得同意:顯示 Issue 編號與標題,提問一次,然後編輯。不要建立第二個 Issue。

當已記錄同意,或一個完整的單一 Issue 已準備好建立時,此步驟完成。

步驟 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 - 比對現有 Issue

列出 Issue 並比對確切的標題 SPEC: <name>、EPIC: <name> 或 TICKET: <name>。

gh issue list --repo "$REPO" --state all --limit 200 --json number,title,state,url

一個已確認的更新會編輯該編號的 Issue。它不會建立新 Issue。如果新標題已經存在於另一個 Issue 上,則停止該項目並回報兩個編號。

一個建立操作找到一個完全相同的標題時,回報 exists 並重複使用該編號。它不會建立第二個 Issue,也不會編輯主體。找到兩個完全相同的標題則停止該項目。

當每個項目都已確定為建立、更新、重複使用或衝突時,此步驟完成。

步驟 6 - 建立或編輯

將主體寫入暫存檔。不要寫入工作儲存庫中。

當短名稱缺少前綴時,請設定標題前綴。不要重複前綴。

依序建立:EPIC 先於其 Ticket,阻擋項先於被阻擋項。當交接內容指定上層 Issue 時,加入 --parent。當阻擋項的編號已存在時,加入 --blocked-by。當旗標無值時,省略該旗標。

gh issue create --repo "$REPO" --title "<title>" --label "<labels>" --body-file "$f"

從 URL 中解析 N。如果某個 Ticket 主體的 Branch 行遺失或仍包含 {N},則編輯該行使其變為 agent/<N>-<slug>。slug 是前綴後的名稱,轉為小寫,空白替換為連字號。

gh issue edit <N> --repo "$REPO" --body-file "$f"

對於已確認的更新,gh issue edit 會取代標題和主體,並修正標籤。移除另一個模式標籤,僅保留與模式相符的一個。編輯時不變更上層 Issue。

SPEC 僅取得 spec 標籤。EPIC 僅取得 type:epic 標籤。TICKET 取得 type:ticket 和一個模式標籤。

記錄 gh 失敗並繼續處理其他獨立的項目。不要為失敗的 EPIC 建立子 Issue。不要關閉上層 Issue。

當 gh issue view <N> --json title,labels,body 顯示標題、標籤,並且對於 Ticket 顯示 Branch agent/<N>-<slug> 且 Mode 與標籤相符時,此步驟完成。

步驟 7 - 回傳

為每個項目回傳編號、標題和 URL,包括 exists 和失敗的情況。

當呼叫者是另一個技能時,在此停止。該技能會指定下一個指令。當使用者呼叫了 /sigma-create-ticket,則指定下一個指令但不要執行它。SPEC 進入 /sigma-to-tickets <N>。Ticket 進入 /sigma-implement <N>。對於 EPIC,請說明 /sigma-implement 不接受 EPIC。

嚴格規則

規則原因 / 違規範例
此技能是唯一執行 gh issue create 或 gh issue edit 的技能。其他技能的列表與檢視也在此執行。第二個寫入路徑會使標題、標籤和上層 Issue 偏離。
先確保五個標籤存在,再建立或編輯。缺少標籤會導致批次中的下一個 Issue 失敗。
已確認的更新會編輯該 Issue。確切標題相符時不建立重複項目。第二個 SPEC: 或 TICKET: 會分割一個功能。
直接批次需等待明確同意。已在同一對話中由 /sigma-to-spec 或 /sigma-to-tickets 確認的主體不會再次提問。再次提問會延遲交接。沉默時建立批次會產生使用者未看過的 Issue。
建立後,編輯 Ticket 使 Branch 行變為 agent/<N>-<slug>。模式標籤需與 Mode 行相符。遺留的 {N},或 afk 搭配 agent:hitl,會將建置工具導向錯誤的分支或模式。
在建立時設定上層 Issue(當交接內容指定時)。來自 SPEC 的 Ticket 之上層 Issue 為 EPIC 或該 SPEC。來自 Review 的 Ticket 省略上層 Issue,除非交接內容指定了 EPIC。自行發明 SPEC 作為上層 Issue,會複製 Review Ticket 不需實作的驗收條件。
不要實作、審查或合併。此技能僅建立 Issue 並停止。

驗證項目

  • gh repo view 回傳了工作儲存庫,且儲存庫名稱不以 sigma-build-factory 結尾。
  • 在建立或編輯前已閱讀 CONVENTIONS.md。
  • list-specs 與 view 回傳了 JSON 且未建立 Issue。
  • 在建立或編輯前,五個標籤已存在。
  • 直接批次已獲得明確同意。上游在本對話中的同意未再次提問。
  • 已確認的更新編輯了指定的 Issue。沒有第二個 Issue 共享相同的確切標題。
  • 新 Ticket 的 Branch 行為 agent/<N>-<slug>,且模式標籤與 Mode 行相符。
  • 來自 SPEC 的 EPIC 之上層 Issue 為該 SPEC。來自 SPEC 的 Ticket 之上層 Issue 為 EPIC 或該 SPEC。來自 Review 的 Ticket 沒有 SPEC 作為上層 Issue,除非交接內容指定了 EPIC。
  • 回傳內容為編號、標題和 URL。此技能未實作、審查或合併。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能