mcpField
U
unity-to-tasks

unity-to-tasks

github.com/icarealot開発062 回インストール3 日前に更新
リポジトリ

unity-to-tasks について

unity-to-tasksは、計画や仕様、会話を依存関係順のエンドツーエンドタスクに分割する計画スキルです。個別に検証できるスライスの設計、分割案の確認、承認後のタスクファイル作成を支援します。

主な機能

  1. 01エンドツーエンドの垂直スライス案
  2. 02タスク間のブロッカー指定
  3. 03拡張・縮小による大規模リファクタリング対応
  4. 04粒度と依存関係のユーザー確認
  5. 05テンプレートによる番号付きタスクファイル作成

活用シーン

  1. 01機能仕様の実装可能なタスクへの分割
  2. 02段階ごとに検証できるリファクタリング計画
  3. 03タスクファイル作成前の依存関係確認

インストール

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

$npx skills add https://github.com/icarealot/dotfiles --skill unity-to-tasks

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

詳細

タスクへの分解

計画、仕様、会話を、タスクのセットに分解します。各タスクはトレーサーバレット型の垂直スライスであり、その実行を妨げるタスクを明示します。

プロセス

1. コンテキストを集める

会話のコンテキストにすでにある情報をもとに作業します。ユーザーが引数として仕様のパスを渡した場合は、その内容とコメントをすべて取得して読みます。

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

まだコードベースを調べていない場合は、現在の状態を理解するために調査します。タスクのタイトルと説明では、プロジェクトのドメイン用語集の語彙を使い、対象領域の ADR に従います。

実装を容易にするため、コードを事前にリファクタリングできる箇所を探します。「まず変更を容易にし、それから容易な変更を行う」。

3. 垂直スライスの草案を作る

作業をトレーサーバレットタスクに分解します。

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

各タスクに、依存関係を設定します。依存先のタスクが完了するまで開始できないタスクを指定します。ブロッカーがないタスクは、すぐに開始できます。

大規模なリファクタリングは、垂直スライスの例外です。 大規模なリファクタリングとは、列の名前変更や共有シンボルの型変更など、コードベース全体に影響が広がり、一度の変更で何千もの呼び出し箇所が壊れ、垂直スライスでは CI を成功させたまま進められない機械的な変更です。無理にトレーサーバレットに分割せず、拡張–縮小の順序で進めます。まず拡張として、新しい形式を古い形式と並行して追加し、何も壊れない状態にします。次に、影響範囲に応じてパッケージやディレクトリごとのバッチに分け、呼び出し箇所を移行します。各バッチを個別のタスクとし、拡張タスクをブロッカーに指定します。古い形式が残っている間は、各バッチの完了後も CI が成功する状態を保ちます。最後に、すべての呼び出し箇所の移行を終えてから、すべての移行バッチをブロッカーとするタスクで古い形式を削除します。バッチ単独では CI を成功させられない場合も、同じ順序で進めますが、それらを共通の統合ブランチで作業し、すべてのバッチを最後の統合・検証タスクのブロッカーにします。その場合、成功を保証するのは最後の統合タスクだけです。

4. ユーザーに確認する

提案するタスク分解を番号付きリストで示します。各タスクには、次の項目を記載します。

  • タイトル:簡潔で説明的な名前
  • ブロッカー:先に完了する必要がある他のタスク
  • 成果:そのタスクによって実現するエンドツーエンドの動作

ユーザーに次の点を確認します。

  • タスクの粒度は適切ですか?(粗すぎる/細かすぎる)
  • 依存関係は適切ですか?それぞれのタスクは、本当に必要なタスクだけに依存していますか?
  • タスクを統合したり、さらに分割したりする必要はありますか?

ユーザーがタスク分解を承認するまで、調整を繰り返します。

5. タスクを作成する

各タスクについて、docs/<feature-slug>/tasks/<NN>-<slug>.md に1ファイルずつ作成します。依存関係の順序でブロッカーから番号を付け、01 から始めます。各ファイルの「ブロッカー」には、依存するタスクの番号とタイトルを記載します。以下のタスクごとのテンプレートを使い、タスクは必ず1ファイルに1つずつ作成します。複数のタスクを1つのファイルにまとめてはいけません。

タスクの実行可能範囲に取り組みます。つまり、すべてのブロッカーが完了しているタスクを進めます。依存関係が一直線のタスクでは、上から順に進めます。

:<タスクのタイトル>

実装する内容: レイヤーごとの実装項目ではなく、ユーザーの視点から、このタスクによって実現するエンドツーエンドの動作を記載します。

ブロッカー: このタスクの実行を妨げるタスクの番号とタイトル。なければ「なし(すぐに開始可能)」と記載します。

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

すぐに古くなるため、具体的なファイルパスやコードスニペットは避けます。例外として、プロトタイプで作成したスニペットが、文章よりも正確に設計上の決定(状態遷移、リデューサー、スキーマ、型の形状など)を表す場合は、インラインで含め、その決定がプロトタイプに基づくことを簡潔に記します。動作するデモではなく、決定に関わる重要な部分だけを残します。

コメント