262 lines
6.0 KiB
Markdown
262 lines
6.0 KiB
Markdown
---
|
||
description: タスク一覧と進捗を表示する
|
||
---
|
||
|
||
# タスク一覧の表示
|
||
|
||
現在の機能開発のタスク一覧と進捗状況を表示します。
|
||
|
||
## タスクファイルの確認
|
||
|
||
`.tasks.json` ファイルを読み込み、以下の情報を表示してください:
|
||
|
||
### 1. 機能情報
|
||
|
||
```
|
||
## 機能: [機能名]
|
||
作成日時: [作成日時]
|
||
最終更新: [最終更新日時]
|
||
```
|
||
|
||
### 2. 進捗サマリー
|
||
|
||
```
|
||
### 進捗サマリー
|
||
- 全タスク数: X件
|
||
- 完了: Y件 (Z%)
|
||
- 作業中: A件
|
||
- 未着手: B件
|
||
- ブロック中: C件
|
||
|
||
推定残り時間: D時間
|
||
```
|
||
|
||
### 3. タスク詳細
|
||
|
||
ステータス別にタスクを表示します:
|
||
|
||
```
|
||
### ワークフロータスク
|
||
✅ 1. 要件整理 (/new-feature)
|
||
完了日時: 2025-10-12 10:30
|
||
|
||
✅ 2. ドキュメント作成 (/create-docs)
|
||
完了日時: 2025-10-12 11:00
|
||
|
||
⏳ 3. テスト作成 (/create-tests)
|
||
状態: 作業中
|
||
|
||
⬜ 4. 実装 (/implement)
|
||
状態: 未着手
|
||
|
||
### 実装サブタスク
|
||
|
||
⬜ 5. ユーザーモデルの作成
|
||
状態: 未着手
|
||
推定: 2時間
|
||
親タスク: #4 (実装)
|
||
|
||
⬜ 6. 認証APIエンドポイントの実装
|
||
状態: 未着手
|
||
推定: 3時間
|
||
依存: #5
|
||
親タスク: #4 (実装)
|
||
|
||
🚫 7. データベースマイグレーション
|
||
状態: ブロック中
|
||
理由: データベーススキーマの確認待ち
|
||
```
|
||
|
||
### 4. アイコンの凡例
|
||
|
||
- ✅ 完了
|
||
- ⏳ 作業中
|
||
- ⬜ 未着手
|
||
- 🚫 ブロック中
|
||
|
||
## タスクが存在しない場合
|
||
|
||
`.tasks.json` ファイルが存在しない、または空の場合:
|
||
|
||
```
|
||
タスクが作成されていません。
|
||
|
||
以下のコマンドでワークフローを開始してください:
|
||
- `/new-feature [機能の説明]` - 新機能開発を開始
|
||
- `/create-tasks [機能名]` - サブタスクを作成
|
||
```
|
||
|
||
## 次のステップの提案
|
||
|
||
タスク状況を分析し、具体的な次のアクションを提案してください:
|
||
|
||
### 1. 作業中のタスクがある場合
|
||
|
||
```
|
||
### 📌 次のアクション
|
||
|
||
タスク「[タスク名]」が作業中です。
|
||
|
||
続行するには:
|
||
/resume
|
||
または
|
||
[対応するコマンド] (例: /create-docs)
|
||
```
|
||
|
||
### 2. 未着手のワークフロータスクがある場合
|
||
|
||
次に実行すべきワークフロータスク(最も小さいIDのpendingタスク)を提案:
|
||
|
||
```
|
||
### 📌 次のアクション
|
||
|
||
次のステップ: [タスク名]
|
||
|
||
このタスクを開始するには:
|
||
/resume
|
||
または
|
||
[対応するコマンド] (例: /create-tests)
|
||
```
|
||
|
||
### 3. ブロックされたタスクがある場合
|
||
|
||
ブロックの理由と解決方法を提案:
|
||
|
||
```
|
||
### ⚠️ ブロック中のタスク
|
||
|
||
タスク「[タスク名]」がブロックされています。
|
||
理由: [ブロック理由]
|
||
|
||
解決方法:
|
||
1. [解決ステップ1]
|
||
2. [解決ステップ2]
|
||
|
||
ブロックを解除するには:
|
||
/update-task [タスクID] pending
|
||
```
|
||
|
||
### 4. サブタスクが残っている場合
|
||
|
||
実装サブタスクの状態を確認し、次のタスクを提案:
|
||
|
||
```
|
||
### 📌 次のアクション
|
||
|
||
実装サブタスクが残っています:
|
||
- [サブタスク名1] (状態: pending)
|
||
- [サブタスク名2] (状態: pending, 依存: #X)
|
||
|
||
実装を続行するには:
|
||
/implement
|
||
|
||
または特定のサブタスクを開始:
|
||
/update-task [タスクID] in_progress
|
||
```
|
||
|
||
### 5. すべて完了している場合
|
||
|
||
```
|
||
### 🎉 完了
|
||
|
||
すべてのタスクが完了しました!
|
||
|
||
次のステップ:
|
||
1. コードレビューを依頼
|
||
2. ドキュメントを最終確認
|
||
3. プルリクエストを作成 (該当する場合)
|
||
4. 本番環境へのデプロイを検討
|
||
|
||
新しい機能を開始するには:
|
||
/new-feature [機能の説明]
|
||
|
||
完了した作業の履歴を確認:
|
||
履歴は .tasks-history.json に保存されています
|
||
```
|
||
|
||
### 6. 依存関係で待機中の場合
|
||
|
||
依存タスクが未完了のサブタスクがある場合:
|
||
|
||
```
|
||
### 📌 次のアクション
|
||
|
||
以下のタスクは依存関係により待機中です:
|
||
- タスク #[ID]: [タスク名]
|
||
待機理由: タスク #[依存ID] ([依存タスク名]) が未完了
|
||
|
||
まず以下のタスクを完了してください:
|
||
- タスク #[依存ID]: [依存タスク名]
|
||
|
||
実行可能なタスク:
|
||
- [実行可能なタスク1]
|
||
- [実行可能なタスク2]
|
||
```
|
||
|
||
## アクション提案のロジック
|
||
|
||
```javascript
|
||
function suggestNextAction(tasks) {
|
||
// 1. ワークフローの作業中タスク
|
||
const inProgressWorkflow = tasks.find(t =>
|
||
t.type === 'workflow' && t.status === 'in_progress'
|
||
);
|
||
if (inProgressWorkflow) {
|
||
return {
|
||
action: 'resume',
|
||
task: inProgressWorkflow,
|
||
command: inProgressWorkflow.command
|
||
};
|
||
}
|
||
|
||
// 2. ワークフローの未着手タスク
|
||
const pendingWorkflow = tasks
|
||
.filter(t => t.type === 'workflow' && t.status === 'pending')
|
||
.sort((a, b) => a.id - b.id)[0];
|
||
if (pendingWorkflow) {
|
||
return {
|
||
action: 'start-next',
|
||
task: pendingWorkflow,
|
||
command: pendingWorkflow.command
|
||
};
|
||
}
|
||
|
||
// 3. ブロックされたタスク
|
||
const blockedTasks = tasks.filter(t => t.status === 'blocked');
|
||
if (blockedTasks.length > 0) {
|
||
return {
|
||
action: 'resolve-block',
|
||
tasks: blockedTasks
|
||
};
|
||
}
|
||
|
||
// 4. サブタスクが残っている
|
||
const pendingSubtasks = tasks.filter(t =>
|
||
t.type === 'subtask' && t.status !== 'completed'
|
||
);
|
||
if (pendingSubtasks.length > 0) {
|
||
// 依存関係をチェックして実行可能なタスクを探す
|
||
const executableTasks = pendingSubtasks.filter(task => {
|
||
if (!task.dependencies || task.dependencies.length === 0) {
|
||
return true;
|
||
}
|
||
return task.dependencies.every(depId => {
|
||
const depTask = tasks.find(t => t.id === depId);
|
||
return depTask && depTask.status === 'completed';
|
||
});
|
||
});
|
||
|
||
return {
|
||
action: 'continue-implementation',
|
||
executableTasks,
|
||
blockedTasks: pendingSubtasks.filter(t => !executableTasks.includes(t))
|
||
};
|
||
}
|
||
|
||
// 5. すべて完了
|
||
return {
|
||
action: 'completed'
|
||
};
|
||
}
|
||
```
|