ワークフロー&基本ツール · mattpocock/skills

to-tickets

計画、仕様書、または現在の会話をトレーサーブレット(垂直スライス)チケット群に分解し、各チケットのブロッキング関係(依存辺)を宣言した上で、設定されたトラッカーに出力します(ローカルでは1チケット1ファイル形式のテキスト、実際のトラッカーではネイティブのブロッキングリンクとして記録)。

L4 高権限 · 段階的認可と監査V1 コミット固定外部書き込みネットワーク通信ファイル書き込みDual-pass Audit
Author mattpocockGitHub mattpocock/skills ↗Stars 262519License MIT(仓库根 LICENSE;GitHub API spdx=MIT,Copyright (c) 2026 Matt Pocock)Commit 3cca18b368
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

完全プロンプトオーケストレーション:スキル全体がモデルへの分解規律と2つの出力テンプレートのみで構成され、スクリプト、テンプレートファイル、ランタイムコードは一切含みません。成果物はドキュメントファイルではなく「ブロッキング関係を持つ一連のチケット」です。

skills/engineering/to-tickets/SKILL.md
Break a plan, spec, or conversation into a set of **tickets**: tracer-bullet vertical slices, each declaring the tickets that **block** it.
実際のディレクトリ構成でも SKILL.md と agents/openai.yaml のみを確認。2つのテンプレート(ローカル / トラッカー)はMarkdown形式で本文内にインライン記述されています。

名称の変遷:キューのスラッグ `to-issues` はピン留めされたHEADで削除済みです。v1.1にて to-plan と to-issues が to-tickets に統合され、to-issues 自体は消滅しました(機能は新スキルへ吸収)。

CHANGELOG.md
**`to-plan` and `to-issues` are merged into one `to-tickets` skill, and `to-issues` is deleted.**
同CHANGELOGには、PR #469(a0329ba)で to-issues に追加された wide-refactor(expand–contract)機能が、現在は to-tickets 本文にそのまま存在していることが記されており、「旧 to-issues の機能が統合された」証左となっています。本JSONはHEADの実名である to-tickets として記録しています。

コア機構はトレーサーブレットによる垂直スライスとブロッキング関係:各チケットは全レイヤー(スキーマ/API/UI/テスト)を貫通して単体で動作デモが可能であり、1つの新しいコンテキストウィンドウに収まるサイズに制限され、「何にブロックされているか」を明示します。ブロッカーのないチケットが即座に着手可能なフロンティアとなります。

skills/engineering/to-tickets/SKILL.md
- Each slice cuts a narrow but COMPLETE path through every layer (schema, API, UI, tests): vertical, NOT a horizontal slice of one layer
同セクションでは「完了時にデモ可能」「単一ウィンドウの容量」「prefactor(事前のリファクタリング)先行」という3規則も補足されています。ワークフローのステップ3で各チケットへの依存辺付与("Give each ticket its **blocking edges**")、ステップ5でフロンティアによる推進("Work the **frontier**: any ticket whose blockers are all done.")が規定されています。

大規模リファクタリング(Wide Refactoring)は垂直スライスの明示的な例外とし、expand–contract方式でスケジュール:新規パターン追加 → 影響範囲ごとの分割移行 → 旧パターン削除の順序で進行。分割移行でもテスト通過が困難な場合は、共通の統合ブランチを使用し、全バッチが最終統合チケットをブロックすることを許容します。

skills/engineering/to-tickets/SKILL.md
**Wide refactors are the exception to vertical slicing.** A **wide refactor** is one mechanical change (rename a column, retype a shared symbol) whose **blast radius** fans across the whole codebase, so a single edit breaks thousands of call sites at once and no vertical slice can land green. Don't force it into a tracer bullet; sequence it as **expand–contract**.
これは「1カラムのリネームで数千箇所の呼び出し元が壊れる」といった作業に対するリポジトリ独自の解決策です。ドキュメントでも丸々1セクションを割いて解説され、「テスト通過を保証するのは統合チケットのみ」と明記されています。

公開前の必須ユーザーQuiz:分解結果を番号付き(タイトル / ブロッカー / 提供機能)で一覧化し、粒度、ブロッキング関係の正しさ、統合・分割の要否を1項目ずつ確認し、ユーザーの承認を得るまでトラッカーへ書き込みません。

skills/engineering/to-tickets/SKILL.md
Are the blocking edges correct: does each ticket only depend on tickets that genuinely gate it?
この工程は水平スライス(レイヤー別分割)による失敗の防止に直結しています。ドキュメントでは「スキーマで1枚、APIで1枚といったレイヤー別の分割」を高頻度な失敗パターンとして挙げ、Quiz段階で「このチケット完了時に何がデモできるか」を詰問するよう推奨しています。

トラッカー切り替えに応じた出力形態と依存関係表現:ローカルモードでは1チケット1ファイルとし、依存順(ブロッカー優先)で番号付けを行い、単一ファイルへの統合は禁止。実トラッカーモードでは依存順にIssueを作成し、プラットフォーム固有のブロッキング/サブタスク関係を優先しつつ ready-for-agent ラベルを付与します。

skills/engineering/to-tickets/SKILL.md
- **Local files** → write one file per ticket under `.scratch/<feature-slug>/issues/<NN>-<slug>.md`, numbered from `01` in dependency order (blockers first). Each file's "Blocked by" lists the numbers/titles it depends on. Use the per-ticket file template below: one ticket per file, never a single combined file.
実トラッカーの分岐は63行目を参照。また「親Issueの完了や変更は禁止(Do NOT close or modify any parent issue.)」(67行目)という境界規律もあります。ローカルの1チケット1ファイル形式は、並行書き込み時の競合防止修正でもあります(ドキュメント:v1.1のルート直下 tickets.md はレースコンディションを引き起こすバグだったと記載)。

2コア機能

01計画/仕様書/会話 → チケット群への変換:3種類の入力すべてに対応し、事前の書面化された仕様書を必須としません
02垂直スライスの規律:全レイヤーを貫通する薄いスライス、単体デモ可能、単一ウィンドウで完結するサイズ
03ブロッキング関係(依存辺)の宣言:各チケットが前提となる他チケットを明示し、並行作業可能な依存グラフを構築
04大規模リファクタリングの expand–contract スケジューリング:expand → バッチ分割移行 → contract の順で進行し、必要に応じて統合ブランチを共有
05prefactor(事前リファクタリング)の先行配置:後続の変更を容易にするリファクタリングを特定し、最優先でスケジュール
06ユーザーQuizによる関門:粒度、ブロッキング関係、統合/分割の3問を確認し、承認後にのみ公開
072種類のテンプレート公開:ローカルの1チケット1ファイル(NNプレフィックスがチケット番号となり、/implement 03 が可能)または実トラッカーでのIssue作成(ready-for-agent ラベル付与)
08入力リファレンスの取得:引数として仕様書パス、Issue番号、URLが渡された場合に全文およびコメントを取得・読み込み
09陳腐化防止の規律と親チケット境界:チケット本文にファイルパスやコード片を書かず(プロトタイプの決定事項を除く)、親Issueには変更を加えない

3外部依存関係

KindDependency / Endpoint
cligh(GitHub CLI)——条件依赖,真 tracker 模式下的发布与原生依赖关系操作
cliglab(GitLab CLI)——条件依赖
networkGitHub Issues + 原生 issue dependencies API(经 gh 批量建票、加阻断边、打标签)
network用户以参数传入的任意 URL:skill 指示 fetch 该引用并读全文与评论(取数面由参数决定,未见主机白名单)
packageskills CLI / Claude Code 插件(分发渠道)

4推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
段階的・都度認可、サンドボックス推奨
管理者向け
承認フロー、ロールバック可能、全履歴監査
判定根拠(ファイルパスと抜粋)
  • 外部 API: 外部プラットフォームに対する投稿、リソース作成、または変更の書き込みを実行
  • 本地工作目录: ファイルの読み書きおよび成果物の出力: ローカルモード:`.scratch/<feature-slug>/issues/<NN>-<slug>.md` に依存順の番号付きで1チケット1ファイルを出力(単一ファイルへの統合は禁止)
監査ノート: 純粋なプロンプト型スキルであり、スクリプト実行、認証情報読み取り、ファイル内ネットワークエンドポイントは含まれません。イエロー判定の理由は、完了時のアクションとして外部状態を一括変更する点にあります(実トラッカーモードではチケット数分のIssue作成とラベル付与、ローカルモードではチケット数分のファイル書き込み)。また、ユーザー引数に基づいて指定先から取得するfetch機能(Issue/URLの全文およびコメント読み込み)を備えていますが、これは想定内の通常のデータ取得範囲です。呼び出し面は二重マニフェスト(disable-model-invocation: true + allow_implicit_invocation: false)によって制限されており、ユーザーによる明示的な実行のみが可能で、公開前にはQuizによる人的関門が存在します。認証情報の読み取りや固定されていないサードパーティ製パッケージの実行は行わないため、オレンジ判定には達しません。

5二重目の独立検証

  • [discrepancy] 队列 slug `to-issues` 在 pin commit 是否作为目录存在 — 不存在。HEAD 树内无 skills/engineering/to-issues(也无 to-tickets 之外的 to-plan);CHANGELOG 明写 '`to-plan` and `to-issues` are merged into one `to-tickets` skill, and `to-issues` is deleted.'。本 JSON 以 HEAD 实名 to-tickets 记录,页面 slug 与文件名沿用任务书的 to-issues。
  • [ok] 『to-issues 的功能确已并入 to-tickets』是否属实(而非删掉即失去) — CHANGELOG PR #469 记 to-issues 曾获得 wide-refactor(expand–contract)与 Co-located reference blocks;现行 to-tickets/SKILL.md line 40 完整保留该段(expand/migrate/contract 与集成分支兜底),说明能力是迁移而非丢失。
  • [ok] 阻断边的落点是否真由 tracker 文档决定(而非 skill 硬编码路径) — to-tickets 正文只给形态要求('Use the platform's native blocking / sub-issue relationship where it has one')与本地路径约定;具体命令(gh api …/dependencies/blocked_by、gh issue edit --add-assignee 等)与 frontier 查询定义全在 setup-matt-pocock-skills/issue-tracker-github.md 内,两处措辞一致。
  • [ok] 『无网络外发』类声明是否成立 — skill 文件 token 扫描无 http/curl/fetch 关键字;网络行为全部经 tracker 文档定义的 gh/glab 间接发生,已按条件性记入 network_calls。
  • [discrepancy] 取参 fetch 是否有限制(主机白名单/大小/去指令化) — 定位不到任何限制:SKILL.md 只写 'fetch it and read its full body and comments',无主机白名单、无大小上限、无 untrusted/防注入条款;对超长 spec 的截断问题反倒在 docs 页被当作环境问题(建议同窗口不要 clear/compact)来描述,说明 skill 层面无防护。此点按「定位不到不硬写」只记事实,不升级档位。
  • [ok] installs / stars 口径 — installs=353800 来自 skills.sh 注册表的旧 slug 记录(queue-100.json 的 to-issues 条目),仓库内无此数值;stars=262519 为 2026-09-15 gh api 实测。口径不同,页面并列时需标注来源。

6結論

  • 依存グラフの第一級オブジェクト化:全チケットが依存辺を宣言し、ブロッカーなし=フロンティアとなるため、「どれが並行可能か」が口頭の擦り合わせではなく成果物に直接刻まれます
  • 判定可能なレベルまで具体化された垂直スライス基準(全層貫通 / 単体デモ可能 / 単一ウィンドウ容量 / prefactor先行)と、Quiz時の「何をデモできるか」という問いにより、典型的なレイヤー別分割の失敗を阻止
  • 大規模リファクタリングへの現実的な対処:トレーサーブレット化が困難な機械的変更の存在を認め、expand–contract と統合ブランチによるフェイルセーフを提供
  • 公開前の人的関門:粒度・依存辺・統合/分割の3問確認とユーザー承認により、誤った分解内容が一発でトラッカーに書き込まれるのを防止
  • ローカルと実トラッカーの共通二重テンプレート設計。ローカルの1チケット1ファイル化により、旧バージョンの単一ファイル競合や番号参照不可の問題を解消
  • 最適な用途: 設計判断が確定しており、複数のコンテキストウィンドウに跨るエンジニアリングタスクに最適です。仕様や議論を単体デモ可能かつ単一ウィンドウで完結するチケットに分解し、依存関係を可視化して複数のエージェントセッションを並行稼働させたい場合に向いています。また、大規模リファクタリングを expand–migrate–contract として適切にスケジュールしたいチームや、「二重テンプレート+人的Quiz関門」のスキル設計を参考にしたい開発者にも適しています。
    不向きな用途: 単一のコンテキストウィンドウで完結する小規模な変更(公式ドキュメントでは直接 /implement の使用を推奨)、方針決定が未完了の検討段階(grilling → to-spec を先行すべき)、チケットの自動アサイン・自動クローズ・自動進捗追跡を期待する用途、setup-matt-pocock-skills 未導入のリポジトリ、およびトラッカー側で完全なネイティブ機能による依存関係管理を求め、事後の gh コマンド等による手動補完を許容できない環境には適していません。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload to-tickets.tar.gz
    sha256: 0a4d30fcc2a2ce67…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 3cca18b368.