mcpField
T
to-tickets

to-tickets

github.com/pandoscope開発11.7k 回インストール5 週間前に更新
リポジトリ

to-tickets について

計画、仕様、会話を、依存関係を明示した自己完結型チケットに分解するスキルです。再現可能な作業項目を必要とするチームやコーディングエージェント向けで、垂直スライスとブロッカーを使って実装と公開を導きます。

主な機能

  1. 01トレーサーバレット型の垂直スライス作成
  2. 02チケット間のブロッカー記録
  3. 03判断の自己完結性を徹底
  4. 04拡張・縮小方式で大規模リファクタに対応
  5. 05チケットのレビューと公開を支援

活用シーン

  1. 01仕様を実装可能なチケットに分解
  2. 02実際の依存関係に沿った作業順序の設定
  3. 03CIを保ちながら大規模リファクタを計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pandoscope/skills --skill to-tickets

インストール後、Claude Code で/to-ticketsを入力して読み込まれたか確認します。

詳細

チケット化

計画、仕様、会話の内容をチケットに分解します。各チケットはトレーサーバレット型の垂直スライスとし、先行をブロックするチケットを宣言します。利用するリポジトリのトラッカー規約(AGENTS.md)に従って公開します。

再現性の不変条件

イシュー一式を依存関係の順に再生すると、機能追加もバグ修正も含め、誰が、または何が実装するかにかかわらず、ほぼ同じアプリケーションをビルドできなければなりません。

イシューストリーム = ビルド可能な仕様です。以下のルールはすべてこれを実現するためのものです。

自己完結性

成果を左右するすべての判断は、イシュー自体、またはイシューが参照する永続的なドキュメント(ADR(writing-adrs)、用語集の用語(docs/glossary/))に記載します。会話の文脈、暗黙知、実装者の裁量に頼ってはいけません。

判定基準: 独立した2人の実装者が、意味のある違いがあるものを作れてしまう場合、チケットの仕様が不十分です。判断をチケットに追加するか、ADR/用語集の用語として記録して参照します。

新しい語彙

ドメインの概念を導入するチケットでは、## Introduces の下に、その概念を宣言します。1行につき1つのスラッグを記載し、用語ファイルがすでに存在するものとしてリンクします(docs/glossary/<slug>.md、「存在するものとしてリンク」する規約)。実装時にファイルを作成します。それまでは --lint が壊れた相互参照を報告します。これは不具合ではなく、まさにこの仕組みによる強制です。このリストは、チケットが追加する語彙の永続的な記録になります。

バグ修正 = 仕様の訂正

指示の修正(「ファイル Z の Y を X に変更する」)をしてはいけません。仕様の流れに対する訂正を記述します。

  • イシュー N は X を示唆していたが、実装は Y になった。正しいのは X。 — または
  • イシュー N は Y を指定していたが、Y は誤り。現在は X′ が正しい。

こうして再生すれば、バグとパッチではなく、最初から X がビルドされます。バグ修正によって仕様レベルの判断が明らかになった場合は、ADRを作成し、イシューから参照します。

完了時の整合

チケットは、実際にビルドされたものを反映するまで完了ではありません。クローズする前に、差異、作業中に追加されたスコープ、判断をイシュー(またはそのADR/用語集の参照先)に反映します。そうしないと、再生時に最終状態ではなく初稿がビルドされます。documenting-decisions のタスク後の手順でこれを行います。

精査のゲート

チケットは後続作業の基盤です。コンテキストに精査セッション(docs/glossary/grilling-session.md)がない場合は中断し、ユーザーに「精査セッションが見つかりません。本当にスキップしますか?」と確認します。明示的な確認があった場合にのみ続行し、親イシュー/PRにスキップしたことを記録します。

プロセス

1. コンテキストを収集する

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

2. コードベースを調査する(任意)

現在のコードの状態を把握します。タイトルや説明には用語集の語彙を使い(uvx disambiguate <term>)、変更対象の領域に関するADRに従います。

事前リファクタリングの機会を探します。「変更を容易にしてから、容易な変更を行う。」

3. 垂直スライスを作成する

作業をトレーサーバレット型のチケットに分解します。

  • 各スライスは、すべてのレイヤー(スキーマ、API、UI、テスト)を通る、範囲が狭くても完全な経路とします。1つのレイヤーだけを水平に切り分けるのではなく、垂直に切り分けます
  • 完了したスライスは、それ単独でデモまたは検証できます
  • 新しいコンテキストウィンドウ1つで完了できる規模にします
  • 事前リファクタリングを先に行います

すべての草案に判定基準を適用します。草案作成時の判断(インターフェース、命名、順序のトレードオフ)は、チケット本文、ADR、または用語集の用語に記載します。documenting-decisions に従って明示します。

大規模リファクタリング:垂直スライスの例外です。 1つの機械的な変更(カラム名の変更、共有シンボルの型変更)でも、影響範囲がコードベース全体に及び、単一の編集で何千もの呼び出し箇所が壊れ、どのスライスもグリーンで完了しない場合があります。その場合は、拡張-縮小の順で進めます。拡張:新旧の形式を併存させ、何も壊さないようにします。移行:影響範囲に応じて、パッケージ/ディレクトリ単位のバッチに分けて呼び出し箇所を移行します。各バッチを独立したチケットとし、拡張チケットにブロックさせます。CIをグリーンに保ち、旧形式も残します。縮小:呼び出し箇所がなくなったら旧形式を削除します。すべてのバッチを完了条件とします。バッチ単独ではグリーンを保てない場合は、この順序を維持して統合ブランチを共有し、すべてのバッチを最後の統合・検証チケットにブロックさせます。グリーンを保証するのは、そのチケットだけです。

4. クイズを実施する

番号付きリストです。チケットごとに、次を確認します。

  • タイトル:短い名前
  • ブロック元:ある場合は、ゲートとなるチケット
  • 提供するもの:エンドツーエンドで動作するようにする機能

次の点を確認します。

  • 粒度は適切ですか?(大きすぎますか、小さすぎますか?)
  • ブロック関係は正しいですか?本当にゲートとなるものだけですか?
  • 統合または分割するチケットはありますか?
  • リトマス試験に合格しないチケットはありますか?つまり、意思決定がまだ会話の中だけにとどまっていませんか?

承認されるまで繰り返します。

5. 公開する

チケットごとに1件のイシューを作成し、依存関係の順序(ブロッカーを先に)で公開します → エッジは実際のイシュー番号を参照します。トラッカーにネイティブのブロック関係がある場合はそれを使用し、ない場合は「Blocked by」セクションを使います。特に指示がなければ、ready-for-agent ラベルを付けます。チケットは、最初からエージェントが取得できるように構成されています。

フロンティアに取り組みます。すべてのブロッカーが完了しているチケットが対象です。直線的な連鎖の場合は、上から順に進めます。

親イシューは閉じたり変更したりしないでください。

イシューテンプレート:

## Parent

Reference to parent issue (omit if source wasn't an issue).

## What to build

End-to-end behaviour, user's perspective — not layer-by-layer implementation.

## Decisions

Every outcome-shaping decision, stated or referenced (ADR/glossary). Bugfix: spec-correction statement. Omit only if genuinely none.

## Acceptance criteria

- [ ] Criterion 1
- [ ] Criterion 2

## Introduces

- [slug](docs/glossary/slug.md) — one-line meaning. Omit if no new term.

## Blocked by

- Reference per blocking ticket, or "None — can start immediately".

チケットの文章:利用可能な場合は writing-prose スキルで作成・確認し、ticket を表面に出します。正確さと分かりやすさを損なわないでください。

ファイルパスやコードスニペットは記載しません。すぐに古くなるためです。例外:文章よりも正確に意思決定を表すプロトタイプのスニペット(状態機械、リデューサー、スキーマ、型の形状)がある場合は、インラインで記載し、プロトタイプの由来を明記して、意思決定に重要な部分に絞ります。

フロンティアのチケットを1件ずつ進め、チケットごとにコンテキストをクリアします。

コメント