Files
gh-masseater-claude-code-pl…/commands/list-specs.md
2025-11-30 08:39:29 +08:00

224 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
description: すべてのspecの一覧とステータスを表示し、specs/status.mdに保存
---
# spec一覧とステータスの表示・保存
`specs/` ディレクトリ配下のすべてのタスクを走査し、各タスクの進捗状況を集計して `specs/status.md` に保存します。
## 実行手順
### 1. specs/ディレクトリの確認
- `specs/` ディレクトリの存在を確認
- 存在しない場合は、空のステータスファイルを作成して終了
### 2. タスク情報の収集
各タスクディレクトリ(`specs/*/`)について、以下の情報を収集:
**⚠️ 重要**: `specs/_archived/` 配下のタスクは完全に無視します(アーカイブ済みタスクはノイズ)
#### 2.1 基本情報の取得
- タスク名(ディレクトリ名)
- 最終更新日時ディレクトリ内のすべてのファイルの最新mtime
#### 2.2 仕様書の存在確認
- `overview.md` の存在
- `specification.md` の存在
- `technical-details.md` の存在
#### 2.3 Phase情報の取得
**overview.mdから**:
- プロジェクト概要(「## プロジェクト概要」セクションの「目的と背景」または最初の数行を簡潔に取得)
- Phase数
- 各Phaseの名前
- 各Phaseの状態未着手/進行中/完了)
**tasks/ディレクトリから**:
- Phase計画書`phase{N}-*.md`)の存在確認
#### 2.4 Phase進捗の集計
各Phase計画書`specs/{taskname}/tasks/phase{N}-*.md`)から:
**タスク進捗**:
```markdown
## タスク一覧
| # | タスク名 | 状態 | TDD | 説明 |
|---|---------|------|-----|------|
| 1 | ... | ✅完了 | Green | ... |
| 2 | ... | 🔄進行中 | Red | ... |
| 3 | ... | ⬜未着手 | - | ... |
```
- 各タスクの状態を集計
- ✅完了: 完了カウント +1
- 🔄進行中: 進行中カウント +1
- ⬜未着手: 未着手カウント +1
#### 2.5 タスク全体のステータス判定
以下のロジックでタスクのステータスを判定:
```
if 仕様書が存在しない:
ステータス = "未着手"
else if すべてのPhaseが完了状態:
ステータス = "完了"
else if いずれかのPhaseが進行中または完了:
ステータス = "進行中"
else:
ステータス = "未着手"
```
#### 2.6 次に実行すべきコマンドの判定
`/sdd:next-step` コマンドと同様のロジックで判定:
- 仕様書が存在しない → `/sdd:create-specs`
- 仕様書に「**不明**」がある → `/sdd:clarify-spec {taskname}`
- Phase計画書がない → `/sdd:break-down-phase {taskname}`
- Phase未着手 → `/sdd:implement-phase {taskname}`
- Phase進行中 → `/sdd:implement-phase {taskname} {phase}.{next_task}`
- Phase完了、未検証 → `/sdd:verify-phase {taskname} {phase}`
- Phase検証済み、次Phaseあり → `/sdd:implement-phase {taskname} {next_phase}.1`
- すべて完了 → `/sdd:archive-spec`
### 3. ステータスファイルの生成
#### 3.1 データのソート
1. ステータスでグループ化(未着手 → 進行中 → 完了)
2. 各グループ内で更新日時順(新しい順)にソート
#### 3.2 Markdown生成
以下のような形式でstatus.mdを生成します。
**フォーマット:**
```markdown
# SDD Spec Status
最終更新: {現在日時}
## 次に実施すべきこと
{進行中タスクがある場合: 進行中タスクの次のコマンド}
{進行中タスクがない場合: 最初の未着手タスクの次のコマンド}
{全て完了の場合: アーカイブを促すメッセージ}
## タスク一覧
### 🔄 進行中
| タスク名 | Phase進捗 | 最終更新 | 次のコマンド |
|---------|----------|---------|-------------|
| {taskname} | Phase {N} ({completed}/{total}) | YYYY-MM-DD | `/sdd:implement-phase {taskname} {phase}.{task}` |
### ⬜ 未着手
| タスク名 | 最終更新 | 次のコマンド |
|---------|---------|-------------|
| {taskname} | YYYY-MM-DD | `/sdd:create-specs` |
### ✅ 完了
| タスク名 | 最終更新 | 次のコマンド |
|---------|---------|-------------|
| {taskname} | YYYY-MM-DD | `/sdd:archive-spec` |
```
**作成例:**
```markdown
# SDD Spec Status
最終更新: 2025-10-31 14:30:00
## 次に実施すべきこと
`/sdd:implement-phase user-authentication 1.4`
## タスク一覧
### 🔄 進行中
| タスク名 | Phase進捗 | 最終更新 | 次のコマンド |
|---------|----------|---------|-------------|
| user-authentication | Phase 1 (3/5) | 2025-10-30 | `/sdd:implement-phase user-authentication 1.4` |
| payment-integration | Phase 2 (2/7) | 2025-10-29 | `/sdd:implement-phase payment-integration 2.3` |
### ⬜ 未着手
| タスク名 | 最終更新 | 次のコマンド |
|---------|---------|-------------|
| admin-dashboard | 2025-10-28 | `/sdd:create-specs` |
### ✅ 完了
| タスク名 | 最終更新 | 次のコマンド |
|---------|---------|-------------|
| database-setup | 2025-10-27 | `/sdd:archive-spec` |
```
### 4. ファイルの保存
- `specs/status.md` に保存
- `specs/` ディレクトリが存在しない場合は作成
### 5. 完了メッセージの表示
```
✅ Specステータスを更新しました
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📍 保存先: specs/status.md
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
## エラーハンドリング
### specs/ディレクトリが存在しない場合
```markdown
⚠️ specs/ディレクトリが見つかりません。
specs/ディレクトリを作成して、空のステータスファイルを生成します。
```
→ 空のステータスファイルを作成
```markdown
# SDD Spec Status
最終更新: {現在日時}
## タスク一覧
タスクがまだ作成されていません。
新しいタスクを作成するには:
\```
/sdd:create-specs
\```
```
### タスクディレクトリが空の場合
- ステータス: "未着手"
- 次のコマンド: `/sdd:create-specs`
### overview.mdが破損している場合
- エラーを記録しつつ、他のファイルから可能な限り情報を取得
- 次のコマンド: `/sdd:clarify-spec {taskname}` (修復を促す)
## 注意事項
- **⚠️ 重要**: このコマンドは読み取り専用です。既存のspecファイルは変更しません
- ステータスファイルは完全に再生成されます(手動編集は上書きされます)
- Phase進捗は各Phase計画書から自動計算されます
- 「次のコマンド」は推測であり、必ずしも最適とは限りません
- ファイルのmtimeを基に最終更新日時を判定するため、ファイルコピー時は正確でない場合があります