Communityコーディング&開発github.com

mattpocock/to-tickets

計画、仕様、または現在の会話を、ブロッキングエッジを宣言した一連のトレーサーブレットチケットに分割し、設定されたトラッカーに公開します(エッジはローカルに1チケット1ファイルのテキスト、または実際のトラッカー上のネイティブなブロッキングリンクとして)。

to-tickets とは?

このスキルは、大規模な計画や仕様を、依存関係(ブロッキングエッジ)が明確に定義された小さな「トレーサーブレット」チケットに分解するエージェントスキルです。各チケットはUI、API、スキーマ、テストを含むエンドツーエンドの垂直スライスであり、単独でデモ可能な単位となるように設計されています。ユーザーはまずチケットの分割案を確認し、粒度やブロッキング関係を調整した後、スキルが設定されたトラッカー(ローカルファイル、GitHub、Linearなど)に自動でチケットを公開します。このスキルはClaude Code、Cline、Roo CodeなどのAIエージェントと連携して動作し、/setup-matt-pocock-skills コマンドで事前設定が必要です。また、広範囲に影響するリファクタリング(ワイドリファクタ)にはexpand–contractパターンを推奨し、個別のチケットとして安全に順序付ける方法も提供します。

対応~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に質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

To Tickets

計画、仕様、または会話を一連のチケットに分割します。各チケットはトレーサーブレットと呼ばれる垂直スライスであり、それぞれが自分をブロックするチケットを宣言します。

イシュートラッカーとトリアージラベルの語彙は事前に提供されている必要があります。提供されていない場合は、ユーザーに /setup-matt-pocock-skills を実行するよう伝えてください。

プロセス

1. コンテキストの収集

会話コンテキストにすでにあるものを基に作業します。ユーザーが引数として参照(仕様パス、イシュー番号、またはURL)を渡した場合は、それを取得し、本文とコメント全体を読み取ります。

2. コードベースの探索(オプション)

コードベースをまだ探索していない場合は、コードの現在の状態を理解するために探索してください。チケットのタイトルと説明には、プロジェクトのドメイン用語集の語彙を使用し、対象領域のADRを尊重してください。

実装を容易にするためにコードをプリファクタリングする機会を探してください。「変更を容易にしてから、容易な変更を行え。」

3. 垂直スライスのドラフト

作業をトレーサーブレットチケットに分割します。

  • 各スライスは、すべてのレイヤー(スキーマ、API、UI、テスト)を貫く狭いが完全なパスを切り取ります。つまり、1つのレイヤーの水平スライスではなく、垂直スライスです。
  • 完成したスライスは、単独でデモまたは検証可能です。
  • 各スライスは、1つの新しいコンテキストウィンドウに収まるサイズにします。
  • プリファクタリングは最初に行う必要があります。

各チケットにブロッキングエッジ(開始前に完了しなければならない他のチケット)を指定します。ブロッカーがないチケットはすぐに開始できます。

ワイドリファクタは垂直スライスの例外です。 ワイドリファクタとは、コードベース全体に影響範囲(ブラストラディウス)が広がる1つの機械的な変更(列の名前変更、共有シンボルの再型指定など)であり、単一の編集により数千の呼び出しサイトが同時に壊れるため、どの垂直スライスもグリーンにできません。これをトレーサーブレットに無理に押し込めないでください。代わりにexpand–contractとして順序付けます。最初にexpand:何も壊さないように、古い形式の隣に新しい形式を追加します。次に、呼び出しサイトを影響範囲ごと(パッケージごと、ディレクトリごと)にバッチで移行し、各バッチはexpandによってブロックされた独自のチケットとし、古い形式がまだ存在するためCIはバッチごとにグリーンを維持します。最後にcontract:呼び出し元がいなくなったら、すべての移行バッチによってブロックされたチケットで古い形式を削除します。バッチでさえ単独でグリーンを維持できない場合でも、順序は維持しますが、それらが共通の統合ブランチを共有し、最終的なintegrate-and-verifyチケットをブロックするようにします。グリーンはそのチケットでのみ約束されます。

4. ユーザーへの確認

提案された分割を番号付きリストとして提示します。各チケットについて、以下を表示します。

  • タイトル: 短いわかりやすい名前
  • ブロック元: 最初に完了しなければならない他のチケット(ある場合)
  • 提供するもの: このチケットが機能させるエンドツーエンドの動作

ユーザーに質問します。

  • 粒度は適切ですか?(粗すぎる / 細かすぎる)
  • ブロッキングエッジは正しいですか?各チケットは本当にそれをゲートするチケットにのみ依存していますか?
  • マージまたはさらに分割すべきチケットはありますか?

ユーザーが分割を承認するまで繰り返します。

5. 設定されたトラッカーにチケットを公開する

承認されたチケットを公開します。方法は /setup-matt-pocock-skills が設定したトラッカーに依存します。チケット自体は同じですが、ブロッキングエッジの形状のみが変わります。

  • ローカルファイル → .scratch/<feature-slug>/issues/<NN>-<slug>.md にチケットごとに1ファイル書き込みます。依存関係順(ブロッカーが先)に 01 から番号を付けます。各ファイルの「Blocked by」には、依存する番号/タイトルをリストします。以下のチケットごとのファイルテンプレートを使用します。1チケット1ファイルであり、決して1つの結合ファイルにはしません。
  • 実際のイシュートラッカー(GitHub、Linearなど) → 依存関係順(ブロッカーが先)にチケットごとに1イシューを公開し、各チケットのブロッキングエッジが実際の識別子を参照できるようにします。プラットフォームにネイティブなブロッキング/サブイシュー関係がある場合はそれを使用し、ない場合は各チケットの「Blocked by」をブロッキングイシューに設定します。別途指示がない限り、ready-for-agent トリアージラベルを適用します。これらのチケットは構造上、エージェントが取得可能です。

フロンティア(ブロッカーがすべて完了したチケット)から作業します。純粋に線形なチェーンの場合、上から下へと進みます。

親イシューをクローズしたり変更したりしないでください。

: <チケットタイトル>

構築するもの: このチケットが機能させるエンドツーエンドの動作を、ユーザーの視点から記述します。レイヤーごとの実装リストではありません。

ブロック元: このチケットをゲートするチケットの番号/タイトル、または「なし(すぐに開始可能)」。

ステータス: ready-for-agent

  • 受け入れ基準 1
  • 受け入れ基準 2

親

トラッカー上の親イシューへの参照(ソースが既存のイシューの場合。それ以外の場合はこのセクションを省略)。

構築するもの

このチケットが機能させるエンドツーエンドの動作を、ユーザーの視点から記述します。レイヤーごとの実装ではありません。

受け入れ基準

  • 基準 1
  • 基準 2

ブロック元

  • 各ブロッキングチケットへの参照、または「なし(すぐに開始可能)」。

どちらの形式でも、特定のファイルパスやコードスニペットは避けてください。それらはすぐに古くなります。例外として、プロトタイプが散文よりも正確に決定をエンコードするスニペット(ステートマシン、リデューサー、スキーマ、型形状)を生成した場合は、それをインライン化し、プロトタイプ由来であることを簡単に注記します。決定に富んだ部分のみにトリミングし、動作するデモではなく、重要なビットだけにします。

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.

関連スキル