Community程式設計與開發github.com

mattpocock/to-tickets

將計畫、規格或當前對話轉換為一組垂直切片(tracer-bullet)票證,每張票證宣告其阻塞邊界,並發布到已配置的追蹤器上。

to-tickets 是什麼?

此技能「to-tickets」旨在協助 AI 代理將高階計畫、規格或對話內容,分解成一組可執行的「垂直切片」票證。每張票證代表一個完整的端到端功能,並明確標示其依賴的阻塞票證,確保任務能夠有序進行。它支援兩種發布模式:本地檔案(每個票證一個 Markdown 檔案)或真實的議題追蹤器(如 GitHub 或 Linear),並會根據設定自動建立原生阻塞連結或附加文字。此流程包含上下文收集、可選的程式碼庫探索、票證草稿、使用者審查確認,最後才是發布。特別的是,它還能夠處理「大範圍重構」,透過「擴展-收縮」模式來管理跨多個程式碼區域的變更,確保持續整合(CI)保持綠色。最終,所有發布的票證都保持「可被代理抓取」的狀態,並標記為「ready-for-agent」。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mattpocock/skills/tree/main/skills/engineering/to-tickets

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

在你喜歡的 AI 中提問

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

說明文件

To Tickets

將計畫、規格或對話內容,分解為一組票證:垂直切片的追蹤子彈(tracer-bullet),每張票證宣告阻塞它的其他票證。

應已提供問題追蹤器與分類標籤詞彙。如果沒有,請告訴使用者執行 /setup-matt-pocock-skills。

流程

1. 收集上下文

從當前對話上下文中已有的內容開始工作。如果使用者傳遞一個參考(規格路徑、問題編號或 URL)作為引數,請擷取它並讀取其完整內容和留言。

2. 探索程式碼庫(選擇性)

如果您尚未探索程式碼庫,請先了解程式碼的當前狀態。票證標題和描述應使用專案的領域詞彙,並尊重您所觸及區域的 ADR。

尋找能讓實作更容易的前置重構(prefactor)機會。「讓變更變得容易,然後做出容易的變更。」

3. 草擬垂直切片

將工作分解為追蹤子彈票證。

  • 每個切片切割一條狹窄但完整的貫穿每個層級(schema、API、UI、測試)的路徑:是垂直的,而非單一層級的水平切片。
  • 完成的切片本身是可展示或可驗證的。
  • 每個切片的大小應適合單一全新的上下文視窗。
  • 任何前置重構應優先完成。

為每張票證賦予其阻塞邊界:必須先完成才能開始此票證的其他票證。沒有阻塞的票證可以立即開始。

大範圍重構是垂直切片的例外。 一個大範圍重構是指一項機械性變更(例如重新命名資料行、重新輸入共享符號),其波及範圍橫跨整個程式碼庫,因此單次編輯會同時破壞數千個呼叫站點,且沒有任何垂直切片能順利通過。不要強行將其放入追蹤子彈中;應將其安排為擴展–收縮序列。首先擴展:在舊形式旁添加新形式,以免破壞任何內容。然後根據波及範圍(按套件、按目錄)分批遷移呼叫站點,每個批次都是一張票證,且阻塞於擴展票證,因為舊形式仍然存在,所以批次之間能保持 CI 綠色。最後收縮:當沒有呼叫者存在時,刪除舊形式,這張票證阻塞於每個遷移批次。即使批次本身無法單獨保持綠色,也應保留此序列,但允許它們共享一個整合分支,並由該分支阻塞最終的整合與驗證票證;只有在此處才承諾綠色。

4. 詢問使用者

將建議的分解以編號清單呈現。對於每張票證,請顯示:

  • 標題:簡短的描述性名稱
  • 被以下票證阻塞:必須先完成的其它票證(如果有的話)
  • 交付內容:此票證所實現的端到端行為

詢問使用者:

  • 粒度是否合適?(太粗 / 太細)
  • 阻塞邊界是否正確:每張票證是否僅依賴於真正會阻擋它的票證?
  • 是否有任何票證應該合併或進一步拆分?

反覆直到使用者批准此分解。

5. 將票證發布到已配置的追蹤器

發布已批准的票證。如何發布取決於 /setup-matt-pocock-skills 所配置的追蹤器;無論哪種方式,票證本身相同,僅阻塞邊界的型態會改變:

  • 本地檔案 → 在 .scratch/<功能代稱>/issues/<NN>-<代稱>.md 下,每個票證一個檔案,按依賴順序(阻塞者優先)從 01 開始編號。每個檔案的「Blocked by」列出其所依賴的編號/標題。使用以下每張票證的檔案範本:每個票證一個檔案,絕不單獨合併成一個檔案。
  • 真實的議題追蹤器(GitHub、Linear 等) → 按依賴順序(阻塞者優先)為每個票證發布一個議題,以便每個票證的阻塞邊界可以引用真實的識別碼。如果平台提供原生阻塞/子議題關係則使用之;否則,將每個票證的「Blocked by」設為阻塞它的議題。除非另有指示,否則應用 ready-for-agent 分類標籤;這些票證的設計使其可被代理抓取。

處理前沿:所有阻塞票證都已完成的那張票證。對於純線性鏈,這意味著從上到下。

請勿關閉或修改任何父議題。

: <票證標題>

要建置的內容: 此票證實現的端到端行為,從使用者角度出發,而非逐層實作清單。

被以下票證阻塞: 阻止此票證的票證編號/標題,或「無(可立即開始)」。

狀態: ready-for-agent

  • 接受條件 1
  • 接受條件 2

父議題

追蹤器上父議題的參考(如果來源是現有議題,則包含此部分;否則省略)。

要建置的內容

此票證實現的端到端行為,從使用者角度出發,而非逐層實作。

接受條件

  • 條件 1
  • 條件 2

被以下票證阻塞

  • 每個阻塞票證的參考,或「無(可立即開始)」。

無論使用哪種形式,請避免指定檔案路徑或程式碼片段:它們很快就會過時。例外情況:如果原型產生的程式碼片段比散文更能精確表達決策(例如狀態機、reducer、schema、型別形狀),則將其內嵌並簡短註明它來自原型。只保留決策相關的部分,不需要可運作的示範,只需重要的位元。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

mattpocock/ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

mattpocock/caveman

Ultra-compressed communication mode. Cuts token usage ~75% by dropping filler, articles, and pleasantries while keeping full technical accuracy. Use when user says "caveman mode", "talk like caveman", "use caveman", "less tokens", "be brief", or invokes /caveman.

mattpocock/claude-handoff

Hand the current conversation off to a fresh background agent that picks up the work immediately.

mattpocock/codebase-design

Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.

mattpocock/design-an-interface

Generate multiple radically different interface designs for a module using parallel sub-agents. Use when user wants to design an API, explore interface options, compare module shapes, or mentions "design it twice".

mattpocock/diagnose

Disciplined diagnosis loop for hard bugs and performance regressions. Reproduce → minimise → hypothesise → instrument → fix → regression-test. Use when user says "diagnose this" / "debug this", reports a bug, says something is broken/throwing/failing, or describes a performance regression.

mattpocock/diagnosing-bugs

Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.

mattpocock/domain-modeling

Build and sharpen a project's domain model. Use when the user wants to pin down domain terminology or a ubiquitous language, record an architectural decision, or when another skill needs to maintain the domain model.

mattpocock/edit-article

Edit and improve articles by restructuring sections, improving clarity, and tightening prose. Use when user wants to edit, revise, or improve an article draft.

mattpocock/git-guardrails-claude-code

Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute. Use when user wants to prevent destructive git operations, add git safety hooks, or block git push/reset in Claude Code.

mattpocock/grilling

Grill the user relentlessly about a plan or design. Use when the user wants to stress-test a plan before building, or uses any 'grill' trigger phrases.

mattpocock/grill-me

Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".

mattpocock/grill-with-docs

Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise. Use when user wants to stress-test a plan against their project's language and documented decisions.

mattpocock/handoff

Compact the current conversation into a handoff document for another agent to pick up.

mattpocock/implement

Implement a piece of work based on a PRD or set of issues.

mattpocock/implement-spec

Implement a specification in code.

mattpocock/improve-codebase-architecture

Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.

mattpocock/loop-me

Grill me about specs for the workflows I want to build, within this workspace.

mattpocock/migrate-to-shoehorn

Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace `as` in tests, or needs partial test data.

mattpocock/obsidian-vault

Search, create, and manage notes in the Obsidian vault with wikilinks and index notes. Use when user wants to find, create, or organize notes in Obsidian.

相關技能