# タスク分解・todo.txt保存スキル
ユーザーから受け取ったタスクを分析し、実行可能な粒度に細分化・関連タスクを洗い出してタスクリストを作成する。ユーザーの承認後、todo.txt形式でファイルに保存する。
## todo.txt フォーマット仕様
todo.txtは1行1タスクのプレーンテキスト形式。以下のルールに従う。
### 未完了タスクの書式
```
[優先度] [作成日] タスク説明 [+プロジェクト] [@コンテキスト] [key:value]
```
- **優先度** (任意): `(A)` ~ `(Z)` の大文字1文字。行頭に置く。後ろにスペース必須
- **作成日** (任意): `YYYY-MM-DD` 形式。優先度の直後(優先度がなければ行頭)に置く
- **プロジェクトタグ**: `+ProjectName` (スペースの後に`+`。空白を含まない)
- **コンテキストタグ**: `@ContextName` (スペースの後に`@`。空白を含まない)
- **メタデータ**: `key:value` 形式 (例: `due:2026-04-15`)
### 完了タスクの書式
```
x 完了日 [作成日] タスク説明 [+プロジェクト] [@コンテキスト]
```
- 行頭に小文字 `x` + スペース
- 完了日は `YYYY-MM-DD` 形式で `x` の直後に置く
### 例
```
(A) 2026-03-30 APIエンドポイントの設計 +Backend @design
(B) 2026-03-30 データベーススキーマの作成 +Backend @db
2026-03-30 READMEの更新 +Docs
x 2026-03-30 2026-03-29 環境構築 +Setup @dev
```
## ワークフロー
### フェーズ1: タスクの受け取りと理解
ユーザーからタスクを受け取る。以下を把握する:
- **タスクの目的**: 何を達成したいのか
- **スコープ**: どこまでやるのか
- **制約**: 期限、技術的制約、依存関係など
- **コンテキスト**: プロジェクト名、作業環境など
情報が不足している場合は簡潔に質問する。ただし、推測できる範囲は推測して進め、確認は最小限にする。
### フェーズ2: タスクの分解と関連タスク洗い出し
以下の観点でタスクを分解する:
1. **細分化**: 大きなタスクを実行可能な粒度(1~2時間で完了できる単位)に分解
2. **依存関係の整理**: タスク間の順序関係を把握し、優先度に反映
3. **関連タスクの発見**: 明示されていないが必要なタスクを洗い出す
- 準備作業(環境構築、調査、設計など)
- テスト・検証
- ドキュメント更新
- レビュー・フィードバック対応
4. **優先度の付与**: 依存関係と重要度に基づいて `(A)` ~ `(C)` の優先度を割り当て
- `(A)`: ブロッカーまたは最優先
- `(B)`: 重要だが(A)の後でよい
- `(C)`: あると良いが後回し可能
### フェーズ3: タスクリストの提示と承認
分解したタスクリストを見やすい形式でユーザーに提示する。
提示フォーマット:
```
## タスクリスト
### (A) 最優先
1. APIエンドポイントの設計 +Backend @design
2. データベーススキーマの作成 +Backend @db
### (B) 重要
3. CRUD操作の実装 +Backend @coding
4. バリデーション追加 +Backend @coding
### (C) 後回し可能
5. READMEの更新 +Docs
---
合計: 5タスク
プロジェクト: +Backend, +Docs
コンテキスト: @design, @db, @coding
```
提示後、ユーザーに以下を確認する:
> 「このタスクリストでよろしいですか?追加・削除・優先度の変更があればお知らせください。」
### フェーズ4: todo.txtへの保存
ユーザーの承認を得たら、todo.txt形式でファイルに保存する。
#### 保存ルール
1. **ファイルパス**: カレントディレクトリの `todo.txt`(ユーザーが別の場所を指定した場合はそちら)
2. **既存ファイルがある場合**: 既存の内容を読み込み、新しいタスクを**末尾に追記**する。既存タスクは変更しない
3. **既存ファイルがない場合**: 新規作成する
4. **作成日**: 全タスクに今日の日付を `YYYY-MM-DD` 形式で付与する
5. **文字コード**: UTF-8
#### 保存後の報告
保存が完了したら、以下を報告する:
```
todo.txt に N件のタスクを追加しました。
保存先: [ファイルパス]
```
## プロジェクトタグとコンテキストタグのガイドライン
ユーザーが明示しない場合、タスクの内容から適切なタグを推測して付与する。
### プロジェクトタグ (+) の例
- `+Backend`, `+Frontend`, `+API`, `+DB`, `+Infra`, `+Docs`, `+Test`, `+Design`
### コンテキストタグ (@) の例
- `@coding`, `@design`, `@review`, `@research`, `@meeting`, `@deploy`, `@debug`
### メタデータの例
- `due:YYYY-MM-DD` — 期限(自明でない場合は期限を設けない)
- `dep:タスク番号` — 依存先(必要に応じて)
## 注意事項
- タスクの粒度が大きすぎないか常に意識する。「実装する」ではなく「〇〇の△△を実装する」レベルまで具体化する
- ユーザーの承認なしにtodo.txtへ書き込まない
- 既存のtodo.txtの内容を勝手に変更・削除しない
- タグの命名はプロジェクト内で一貫性を保つ。既存のtodo.txtがある場合、そこで使われているタグに合わせる