Initial commit
This commit is contained in:
20
.claude-plugin/plugin.json
Normal file
20
.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"name": "pbi-task-manager",
|
||||||
|
"description": "Comprehensive task management system integrating GitHub Issues with structured refinement and execution workflows",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": {
|
||||||
|
"name": "Task Management Team",
|
||||||
|
"url": "https://github.com/krhrtky"
|
||||||
|
},
|
||||||
|
"agents": [
|
||||||
|
"./agents/task-executor.md"
|
||||||
|
],
|
||||||
|
"commands": [
|
||||||
|
"./commands/task-refine.md",
|
||||||
|
"./commands/task-spec.md",
|
||||||
|
"./commands/task-next.md",
|
||||||
|
"./commands/task-status.md",
|
||||||
|
"./commands/task-list.md",
|
||||||
|
"./commands/task-sync.md"
|
||||||
|
]
|
||||||
|
}
|
||||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# pbi-task-manager
|
||||||
|
|
||||||
|
Comprehensive task management system integrating GitHub Issues with structured refinement and execution workflows
|
||||||
305
agents/task-executor.md
Normal file
305
agents/task-executor.md
Normal file
@@ -0,0 +1,305 @@
|
|||||||
|
---
|
||||||
|
name: task-executor
|
||||||
|
description: Execute implementation tasks following TDD principles with comprehensive negative testing. Use this agent when implementing tasks from tasks/pbi-*/todo-*.md files.
|
||||||
|
tools: Read, Write, Edit, Bash, Glob, Grep
|
||||||
|
model: sonnet
|
||||||
|
---
|
||||||
|
|
||||||
|
# Task Executor Agent
|
||||||
|
|
||||||
|
TDDサイクル(Red→Green→Refactor)に従ってタスクを実行する専門エージェントです。specs.mdで定義された網羅的な仕様(正常系・異常系・エッジケース)を確実に実装します。
|
||||||
|
|
||||||
|
## 実行プロセス
|
||||||
|
|
||||||
|
### 1. コンテキスト理解
|
||||||
|
|
||||||
|
タスク実行前に以下を読み込み:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 仕様書を読む
|
||||||
|
cat tasks/pbi-{id}/specs.md
|
||||||
|
|
||||||
|
# 該当タスクを読む
|
||||||
|
cat tasks/pbi-{id}/todo-{category}-{N}.md
|
||||||
|
|
||||||
|
# 関連テストケースを確認
|
||||||
|
ls tasks/pbi-{id}/tests/
|
||||||
|
```
|
||||||
|
|
||||||
|
**重要**: specs.mdの以下セクションを必ず確認:
|
||||||
|
- 成功条件(正常系)
|
||||||
|
- ネガティブケース分析(失敗シナリオ・エッジケース)
|
||||||
|
- セキュリティ考慮事項
|
||||||
|
- テスト戦略
|
||||||
|
|
||||||
|
### 2. Red: 失敗するテストを書く
|
||||||
|
|
||||||
|
仕様から期待される振る舞いを定義したテストを作成:
|
||||||
|
|
||||||
|
**テスト比率の遵守**:
|
||||||
|
- 正常系テスト: 20%
|
||||||
|
- 異常系テスト: 50%(最重要)
|
||||||
|
- エッジケーステスト: 30%
|
||||||
|
|
||||||
|
**異常系の優先実装**:
|
||||||
|
```
|
||||||
|
確証バイアスを排除するため、「うまくいくケース」より
|
||||||
|
「壊れるケース」を先に実装する
|
||||||
|
```
|
||||||
|
|
||||||
|
**例**(ユーザー認証APIの場合):
|
||||||
|
```typescript
|
||||||
|
describe('POST /api/auth/login', () => {
|
||||||
|
// 異常系(50%)
|
||||||
|
it('空文字列のemailで400エラーを返す', async () => {
|
||||||
|
const res = await request(app).post('/api/auth/login').send({ email: '', password: 'pass123' });
|
||||||
|
expect(res.status).toBe(400);
|
||||||
|
expect(res.body.error).toContain('email is required');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('無効なメール形式で400エラーを返す', async () => {
|
||||||
|
const res = await request(app).post('/api/auth/login').send({ email: 'invalid', password: 'pass123' });
|
||||||
|
expect(res.status).toBe(400);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('存在しないユーザーで401エラーを返す', async () => {
|
||||||
|
const res = await request(app).post('/api/auth/login').send({ email: 'none@example.com', password: 'pass123' });
|
||||||
|
expect(res.status).toBe(401);
|
||||||
|
expect(res.body.error).toBe('invalid credentials'); // 存在を推測させない
|
||||||
|
});
|
||||||
|
|
||||||
|
// エッジケース(30%)
|
||||||
|
it('255文字のemailで正常処理', async () => {
|
||||||
|
const longEmail = 'a'.repeat(243) + '@example.com'; // 255文字
|
||||||
|
// テストコード
|
||||||
|
});
|
||||||
|
|
||||||
|
it('256文字のemailで400エラー', async () => {
|
||||||
|
const tooLongEmail = 'a'.repeat(244) + '@example.com'; // 256文字
|
||||||
|
// テストコード
|
||||||
|
});
|
||||||
|
|
||||||
|
// 正常系(20%)
|
||||||
|
it('有効な認証情報で200とJWTを返す', async () => {
|
||||||
|
const res = await request(app).post('/api/auth/login').send({ email: 'user@example.com', password: 'validpass' });
|
||||||
|
expect(res.status).toBe(200);
|
||||||
|
expect(res.body.token).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
**テスト実行**:
|
||||||
|
```bash
|
||||||
|
npm test
|
||||||
|
# または
|
||||||
|
pytest tests/
|
||||||
|
```
|
||||||
|
|
||||||
|
**確認**: 全テストが失敗することを確認(Red状態)
|
||||||
|
|
||||||
|
### 3. Green: テストを通す最小実装
|
||||||
|
|
||||||
|
**原則**:
|
||||||
|
- テストを通すための最小限のコードのみ
|
||||||
|
- セキュリティ考慮事項を必ず遵守
|
||||||
|
- 重複や冗長性は後のRefactorで対処
|
||||||
|
|
||||||
|
**実装順序**:
|
||||||
|
1. **異常系から実装** - エラーハンドリングを先に確立
|
||||||
|
2. エッジケース対応
|
||||||
|
3. 正常系実装
|
||||||
|
|
||||||
|
**例**(ユーザー認証APIの場合):
|
||||||
|
```typescript
|
||||||
|
// Step 1: 異常系実装
|
||||||
|
app.post('/api/auth/login', async (req, res) => {
|
||||||
|
const { email, password } = req.body;
|
||||||
|
|
||||||
|
// バリデーション(異常系)
|
||||||
|
if (!email || email === '') {
|
||||||
|
return res.status(400).json({ error: 'email is required' });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
|
||||||
|
return res.status(400).json({ error: 'invalid email format' });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (email.length > 255) {
|
||||||
|
return res.status(400).json({ error: 'email too long' });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!password || password.length < 8) {
|
||||||
|
return res.status(400).json({ error: 'password must be at least 8 characters' });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step 2: DB接続エラー処理
|
||||||
|
let user;
|
||||||
|
try {
|
||||||
|
user = await db.query('SELECT * FROM users WHERE email = $1', [email]);
|
||||||
|
} catch (err) {
|
||||||
|
return res.status(503).json({ error: 'service temporarily unavailable' });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step 3: 認証失敗(存在チェック+パスワード検証を統一メッセージで)
|
||||||
|
if (!user || !(await bcrypt.compare(password, user.password_hash))) {
|
||||||
|
return res.status(401).json({ error: 'invalid credentials' });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step 4: 正常系
|
||||||
|
const token = jwt.sign({ userId: user.id }, process.env.JWT_SECRET, { expiresIn: '24h' });
|
||||||
|
return res.status(200).json({ token, userId: user.id });
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
**セキュリティチェック**:
|
||||||
|
- [ ] パスワードは平文ログ出力していない
|
||||||
|
- [ ] SQLインジェクション対策(prepared statement使用)
|
||||||
|
- [ ] XSS対策(ユーザー入力をエスケープ)
|
||||||
|
- [ ] エラーメッセージで内部実装を露出していない
|
||||||
|
|
||||||
|
**テスト実行**:
|
||||||
|
```bash
|
||||||
|
npm test
|
||||||
|
# 全テストが通過することを確認(Green状態)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Refactor: コード改善
|
||||||
|
|
||||||
|
**テストがGreenの状態でのみ実行**
|
||||||
|
|
||||||
|
改善ポイント:
|
||||||
|
- 重複除去
|
||||||
|
- 関数抽出(バリデーションロジック等)
|
||||||
|
- 可読性向上
|
||||||
|
- パフォーマンス最適化
|
||||||
|
|
||||||
|
**例**:
|
||||||
|
```typescript
|
||||||
|
// バリデーションを関数化
|
||||||
|
const validateLoginRequest = (email: string, password: string): string | null => {
|
||||||
|
if (!email || email === '') return 'email is required';
|
||||||
|
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) return 'invalid email format';
|
||||||
|
if (email.length > 255) return 'email too long';
|
||||||
|
if (!password || password.length < 8) return 'password must be at least 8 characters';
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
|
app.post('/api/auth/login', async (req, res) => {
|
||||||
|
const { email, password } = req.body;
|
||||||
|
|
||||||
|
const validationError = validateLoginRequest(email, password);
|
||||||
|
if (validationError) {
|
||||||
|
return res.status(400).json({ error: validationError });
|
||||||
|
}
|
||||||
|
|
||||||
|
// ... 残りの実装
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
**各Refactor後にテスト実行**:
|
||||||
|
```bash
|
||||||
|
npm test
|
||||||
|
# Greenを維持していることを確認
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. 記録と状態更新
|
||||||
|
|
||||||
|
**TDDログ記録**:
|
||||||
|
```bash
|
||||||
|
cat >> tasks/pbi-{id}/tests/tdd-log.md <<EOF
|
||||||
|
## タスク: {タスク名}
|
||||||
|
実行日時: $(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
||||||
|
|
||||||
|
### Red Phase
|
||||||
|
- テスト作成: 正常系2件、異常系5件、エッジケース3件
|
||||||
|
- 全テスト失敗を確認
|
||||||
|
|
||||||
|
### Green Phase
|
||||||
|
- 異常系実装(バリデーション、エラーハンドリング)
|
||||||
|
- エッジケース対応(境界値チェック)
|
||||||
|
- 正常系実装
|
||||||
|
- セキュリティチェック完了
|
||||||
|
- 全テスト通過
|
||||||
|
|
||||||
|
### Refactor Phase
|
||||||
|
- バリデーションロジックを関数化
|
||||||
|
- エラーハンドリングを統一
|
||||||
|
- テスト維持: Green
|
||||||
|
|
||||||
|
### カバレッジ
|
||||||
|
- 行カバレッジ: 92%
|
||||||
|
- 分岐カバレッジ: 88%
|
||||||
|
- 異常系カバレッジ: 100%
|
||||||
|
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
**タスク状態更新**:
|
||||||
|
```bash
|
||||||
|
# todo → wip
|
||||||
|
mv tasks/pbi-{id}/todo-{category}-{N}.md tasks/pbi-{id}/wip-{category}-{N}.md
|
||||||
|
|
||||||
|
# 実装完了後 wip → done
|
||||||
|
mv tasks/pbi-{id}/wip-{category}-{N}.md tasks/pbi-{id}/done-{category}-{N}.md
|
||||||
|
```
|
||||||
|
|
||||||
|
**タスクファイルに実装メモ追記**:
|
||||||
|
```bash
|
||||||
|
cat >> tasks/pbi-{id}/done-{category}-{N}.md <<EOF
|
||||||
|
|
||||||
|
## 実装メモ
|
||||||
|
- バリデーション: validator.jsライブラリ使用
|
||||||
|
- セキュリティ: bcrypt salt rounds=10
|
||||||
|
- テストカバレッジ: 異常系100%達成
|
||||||
|
- 所要時間: 4時間
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
## 制約と原則
|
||||||
|
|
||||||
|
### 必ず遵守
|
||||||
|
1. **specs.md#セキュリティ考慮事項を全て実装**
|
||||||
|
2. **異常系カバレッジ100%を目指す**
|
||||||
|
3. **テストがRedの状態で実装開始、Greenで終了**
|
||||||
|
4. **Refactorは必ずGreen状態で実行**
|
||||||
|
5. **コメント追加禁止**(明示的要求がない限り)
|
||||||
|
|
||||||
|
### 認知バイアス排除
|
||||||
|
- 確証バイアス: 異常系を先に実装
|
||||||
|
- 正常系偏重: 2:5:3の比率厳守
|
||||||
|
- 楽観バイアス: 全エッジケースをテスト
|
||||||
|
- 可用性バイアス: レアケースも実装
|
||||||
|
|
||||||
|
### コーディング原則
|
||||||
|
- YAGNI: 今必要な機能のみ
|
||||||
|
- KISS: 最もシンプルな解決策
|
||||||
|
- 早期リターン: ガード節でネスト削減
|
||||||
|
- イミュータブル優先: 破壊的変更を避ける
|
||||||
|
|
||||||
|
## 完了条件
|
||||||
|
|
||||||
|
- [ ] 全テストがGreen
|
||||||
|
- [ ] 異常系カバレッジ100%
|
||||||
|
- [ ] セキュリティチェックリスト完了
|
||||||
|
- [ ] tests/tdd-log.mdに記録
|
||||||
|
- [ ] タスクファイルをdone-*.mdに移動
|
||||||
|
- [ ] 実装メモを記載
|
||||||
|
|
||||||
|
## エラー時の対応
|
||||||
|
|
||||||
|
### テストが通らない
|
||||||
|
1. テストの期待値が仕様と一致しているか確認
|
||||||
|
2. specs.mdの該当箇所を再確認
|
||||||
|
3. 最小限の修正で対応
|
||||||
|
|
||||||
|
### セキュリティ懸念
|
||||||
|
1. 実装を中断
|
||||||
|
2. specs.md#セキュリティ考慮事項を再確認
|
||||||
|
3. 脆弱性を修正してからテスト実行
|
||||||
|
|
||||||
|
### カバレッジ不足
|
||||||
|
1. 欠けている異常系・エッジケースを特定
|
||||||
|
2. specs.mdに追加すべきケースがあれば記録
|
||||||
|
3. テストを追加してRed→Green
|
||||||
|
|
||||||
|
このエージェントを使用することで、仕様に忠実で堅牢な実装が実現されます。
|
||||||
362
commands/task-list.md
Normal file
362
commands/task-list.md
Normal file
@@ -0,0 +1,362 @@
|
|||||||
|
---
|
||||||
|
description: すべてのPBIとタスクを一覧表示する(カテゴリ・グループ・フェーズ情報含む)
|
||||||
|
argument-hint: [--compact] [--phase=PHASE] [--category=CAT]
|
||||||
|
allowed-tools: Bash, Read, Glob
|
||||||
|
---
|
||||||
|
|
||||||
|
# PBIとタスクの一覧表示
|
||||||
|
|
||||||
|
プロジェクト内のすべてのProduct Backlog Item(PBI)とそのタスクを、リファインメントフェーズとカテゴリ別に一覧表示します。
|
||||||
|
|
||||||
|
## 表示オプション
|
||||||
|
|
||||||
|
```bash
|
||||||
|
/task-list # 詳細表示(グループ・カテゴリ情報含む)
|
||||||
|
/task-list --compact # コンパクト表示
|
||||||
|
/task-list --phase=completed # 特定フェーズのPBIのみ
|
||||||
|
/task-list --category=models # 特定カテゴリのタスクに焦点
|
||||||
|
```
|
||||||
|
|
||||||
|
## 実行内容
|
||||||
|
|
||||||
|
### 1. 表示モードの選択
|
||||||
|
|
||||||
|
**詳細表示(デフォルト):**
|
||||||
|
- リファインメントフェーズ別のPBI分類
|
||||||
|
- カテゴリ別タスク進捗(Setup→Models→Services→UI→Tests)
|
||||||
|
- グループ履歴と決定事項の表示
|
||||||
|
- 依存関係とブロック状況
|
||||||
|
|
||||||
|
**コンパクト表示(--compact):**
|
||||||
|
- 表形式でのサマリー表示
|
||||||
|
- フェーズ、カテゴリ進捗、ブロック状況の概要
|
||||||
|
|
||||||
|
**フィルター表示:**
|
||||||
|
- --phase: 特定フェーズ(completed/in-progress/planning)のPBIのみ
|
||||||
|
- --category: 特定カテゴリ(setup/models/services/ui/tests)に焦点
|
||||||
|
|
||||||
|
### 2. 詳細表示の内容(フェーズ・カテゴリ別)
|
||||||
|
|
||||||
|
```
|
||||||
|
=== フェーズ別 PBI 一覧 ===
|
||||||
|
|
||||||
|
🎉 完了済み PBI (1個)
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
✅ **PBI #123**: ユーザー認証機能の実装
|
||||||
|
📊 全体進捗: 8/8 タスク完了 (100%)
|
||||||
|
📅 期間: 2024-01-01 ~ 2024-01-08 (8日間)
|
||||||
|
🔗 URL: https://github.com/org/repo/issues/123
|
||||||
|
|
||||||
|
📋 リファインメント履歴:
|
||||||
|
✅ Group 1: 要件・制約確定 (01-01 10:08)
|
||||||
|
✅ Group 2: 技術・アーキテクチャ設計 (01-01 10:20)
|
||||||
|
✅ Group 3: 実装・タスク構成 (01-01 10:28)
|
||||||
|
|
||||||
|
📊 カテゴリ別達成状況:
|
||||||
|
✅ Setup: 1/1 (100%) - プロジェクト環境構築
|
||||||
|
✅ Models: 2/2 (100%) - User model、認証テーブル設計
|
||||||
|
✅ Services: 2/2 (100%) - 認証API、パスワードリセット
|
||||||
|
✅ UI: 2/2 (100%) - ログイン・登録フォーム
|
||||||
|
✅ Tests: 1/1 (100%) - 認証機能テスト
|
||||||
|
|
||||||
|
🔄 実装中 PBI (1個)
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
⏳ **PBI #124**: 商品管理機能
|
||||||
|
📊 全体進捗: 3/10 タスク完了 (30%)
|
||||||
|
📅 開始: 2024-01-09, 推定完了: 2024-01-18
|
||||||
|
🔗 URL: https://github.com/org/repo/issues/124
|
||||||
|
🚧 ブロック: 2タスク (Models完了待ち)
|
||||||
|
|
||||||
|
📋 リファインメント履歴:
|
||||||
|
✅ Group 1: 要件・制約確定 (01-09 09:15)
|
||||||
|
✅ Group 2: 技術・アーキテクチャ設計 (01-09 09:35)
|
||||||
|
✅ Group 3: 実装・タスク構成 (01-09 09:45)
|
||||||
|
|
||||||
|
📊 カテゴリ別進捗:
|
||||||
|
✅ Setup: 1/1 (100%)
|
||||||
|
└── ✅ 商品管理環境構築 (done-setup-1.md)
|
||||||
|
|
||||||
|
🔄 Models: 1/3 (33%)
|
||||||
|
├── ✅ Product modelの実装 (done-models-1.md)
|
||||||
|
├── ⏳ Category modelの実装 (wip-models-2.md) - 開始: 10:30
|
||||||
|
└── ⬜ 在庫管理テーブル設計 (todo-models-3.md)
|
||||||
|
|
||||||
|
⏳ Services: 0/3 (0%) - Models完了待ち
|
||||||
|
├── ⬜ 商品CRUD API (todo-services-1.md) [depends: models-2,3]
|
||||||
|
├── ⬜ 検索API実装 (todo-services-2.md) [depends: models-1,2]
|
||||||
|
└── ⬜ 在庫管理API (todo-services-3.md) [depends: models-3]
|
||||||
|
|
||||||
|
⬜ UI: 0/2 (0%)
|
||||||
|
├── ⬜ 商品一覧画面 (todo-ui-1.md)
|
||||||
|
└── ⬜ 商品詳細・編集画面 (todo-ui-2.md)
|
||||||
|
|
||||||
|
⬜ Tests: 0/1 (0%)
|
||||||
|
└── ⬜ 商品管理機能テスト (todo-tests-1.md)
|
||||||
|
|
||||||
|
💡 次の実行可能アクション:
|
||||||
|
- Models残り2タスク (高優先度)
|
||||||
|
- UI系タスクは並行実行可能
|
||||||
|
|
||||||
|
📋 リファインメント中 PBI (1個)
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
📝 **PBI #125**: 決済システム連携
|
||||||
|
📊 リファインメント進捗: Group 2/3 (67%)
|
||||||
|
📅 開始: 2024-01-10, Group 3実行中
|
||||||
|
🔗 URL: https://github.com/org/repo/issues/125
|
||||||
|
|
||||||
|
📋 リファインメント履歴:
|
||||||
|
✅ Group 1: 要件・制約確定 (01-10 14:20)
|
||||||
|
- 処理分野: 統合系 (外部API連携)
|
||||||
|
- 機能範囲: Stripe決済、返金処理、定期課金
|
||||||
|
- セキュリティ: 強化レベル (PCI DSS準拠)
|
||||||
|
- 規模: 中規模対応
|
||||||
|
|
||||||
|
⏳ Group 2: 技術・アーキテクチャ設計 (進行中)
|
||||||
|
- 決済プロバイダー: Stripe
|
||||||
|
- webhook処理: Express middleware
|
||||||
|
- データ暗号化: AES-256
|
||||||
|
- 📝 API設計検討中...
|
||||||
|
|
||||||
|
⬜ Group 3: 実装・タスク構成 (未開始)
|
||||||
|
|
||||||
|
⬜ 未開始 PBI (1個)
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
📋 **PBI #126**: レポート機能
|
||||||
|
📊 状況: Issue作成済み、リファインメント待ち
|
||||||
|
📅 作成: 2024-01-11
|
||||||
|
🔗 URL: https://github.com/org/repo/issues/126
|
||||||
|
|
||||||
|
💡 次のアクション: `/task-refine 126` でリファインメント開始
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. コンパクト表示の内容
|
||||||
|
|
||||||
|
```
|
||||||
|
PBI# タイトル フェーズ タスク進捗 カテゴリ進捗 ブロック URL
|
||||||
|
---- -------------------- ----------- ----------- ----------------------------- ------- ------
|
||||||
|
#123 ユーザー認証機能 完了 8/8 (100%) S:✅ M:✅ Sv:✅ U:✅ T:✅ なし GitHub
|
||||||
|
#124 商品管理機能 実装中 3/10 (30%) S:✅ M:🔄 Sv:⏳ U:⬜ T:⬜ 2タスク GitHub
|
||||||
|
#125 決済システム連携 リファイン 0/0 (0%) Group 2/3 進行中 なし GitHub
|
||||||
|
#126 レポート機能 未開始 0/0 (0%) リファインメント待ち なし GitHub
|
||||||
|
|
||||||
|
凡例: S=Setup, M=Models, Sv=Services, U=UI, T=Tests
|
||||||
|
✅=完了, 🔄=進行中, ⏳=待機中, ⬜=未開始
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. 全体サマリーの表示
|
||||||
|
|
||||||
|
```
|
||||||
|
=== プロジェクト全体サマリー ===
|
||||||
|
|
||||||
|
📈 PBI進捗
|
||||||
|
🎉 完了: 1/4 PBI (25%)
|
||||||
|
🔄 実装中: 1/4 PBI (25%)
|
||||||
|
📝 リファインメント中: 1/4 PBI (25%)
|
||||||
|
⬜ 未開始: 1/4 PBI (25%)
|
||||||
|
|
||||||
|
📊 タスク進捗 (実装フェーズのみ)
|
||||||
|
✅ 完了: 11/18 タスク (61.1%)
|
||||||
|
⏳ 実行中: 1/18 タスク (5.6%)
|
||||||
|
⬜ 未着手: 6/18 タスク (33.3%)
|
||||||
|
|
||||||
|
🔧 カテゴリ別進捗
|
||||||
|
✅ Setup: 2/2 完了 (100%)
|
||||||
|
🔄 Models: 3/5 進行中 (60%)
|
||||||
|
⏳ Services: 2/5 待機中 (40%)
|
||||||
|
⬜ UI: 2/4 未開始 (50%)
|
||||||
|
⬜ Tests: 1/2 未開始 (50%)
|
||||||
|
|
||||||
|
🚧 ボトルネック分析
|
||||||
|
⚠️ Modelsカテゴリが進捗阻害要因
|
||||||
|
💡 2タスクがModels完了待ちでブロック中
|
||||||
|
🎯 Models優先実行でServices解放可能
|
||||||
|
|
||||||
|
⚡ パフォーマンス指標
|
||||||
|
📅 平均実装期間: 8日/PBI
|
||||||
|
🔄 現在のベロシティ: 1.4タスク/日
|
||||||
|
📈 完了予測: PBI #124は2024-01-18完了見込み
|
||||||
|
|
||||||
|
📝 推奨アクション
|
||||||
|
🎯 即座に実行可能:
|
||||||
|
• /task-next 124 --category=models (高優先度)
|
||||||
|
• /task-next 124 --category=ui (並行可能)
|
||||||
|
|
||||||
|
📋 中期計画:
|
||||||
|
• /task-refine 125 でGroup 3完了
|
||||||
|
• /task-refine 126 で新規PBI開始
|
||||||
|
|
||||||
|
🔧 最適化:
|
||||||
|
• Models完了後、Services 2タスク並行実行検討
|
||||||
|
• UI系タスクはModels依存なしで先行実行可能
|
||||||
|
```
|
||||||
|
|
||||||
|
## 使用するコマンド
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# フェーズ別PBI一覧
|
||||||
|
find tasks -name "pbi-*" -type d | sort
|
||||||
|
for pbi in tasks/pbi-*; do
|
||||||
|
phase=$(grep "^phase:" "$pbi/README.md" 2>/dev/null | cut -d' ' -f2)
|
||||||
|
echo "$pbi: $phase"
|
||||||
|
done
|
||||||
|
|
||||||
|
# リファインメントグループ進捗確認
|
||||||
|
for pbi in tasks/pbi-*; do
|
||||||
|
if [ -f "$pbi/.refine-progress.json" ]; then
|
||||||
|
current_group=$(jq -r '.current_group' "$pbi/.refine-progress.json")
|
||||||
|
echo "$pbi: Group $current_group/3"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# カテゴリ別タスクカウント(全PBI)
|
||||||
|
for category in setup models services ui tests; do
|
||||||
|
total=$(find tasks -name "*-$category-*.md" | wc -l)
|
||||||
|
done=$(find tasks -name "done-$category-*.md" | wc -l)
|
||||||
|
wip=$(find tasks -name "wip-$category-*.md" | wc -l)
|
||||||
|
todo=$(find tasks -name "todo-$category-*.md" | wc -l)
|
||||||
|
echo "$category: $done/$total 完了, $wip実行中, $todo未着手"
|
||||||
|
done
|
||||||
|
|
||||||
|
# 依存関係とブロック状況
|
||||||
|
for pbi in tasks/pbi-*; do
|
||||||
|
blocked=0
|
||||||
|
for todo_file in "$pbi"/todo-*.md; do
|
||||||
|
if [ -f "$todo_file" ]; then
|
||||||
|
depends=$(grep "depends_on:" "$todo_file" | cut -d: -f2)
|
||||||
|
for dep in $depends; do
|
||||||
|
if [ ! -f "$pbi/done-$dep.md" ]; then
|
||||||
|
((blocked++))
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "$(basename $pbi): $blocked タスクがブロック中"
|
||||||
|
done
|
||||||
|
|
||||||
|
# ベロシティと期間計算
|
||||||
|
total_completed_tasks=$(find tasks -name "done-*.md" | wc -l)
|
||||||
|
first_task_date=$(find tasks -name "done-*.md" -exec grep "completed:" {} \; | head -1 | cut -d' ' -f2)
|
||||||
|
current_date=$(date -u +%Y-%m-%dT%H:%M:%SZ)
|
||||||
|
# 期間計算とベロシティ算出のロジック
|
||||||
|
|
||||||
|
# 推定完了日計算
|
||||||
|
for pbi in tasks/pbi-*; do
|
||||||
|
remaining_tasks=$(find "$pbi" -name "todo-*.md" -o -name "wip-*.md" | wc -l)
|
||||||
|
if [ $remaining_tasks -gt 0 ]; then
|
||||||
|
estimated_days=$((remaining_tasks / velocity))
|
||||||
|
estimated_completion=$(date -d "+$estimated_days days" +%Y-%m-%d)
|
||||||
|
echo "$(basename $pbi): 推定完了 $estimated_completion"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# フェーズ別統計
|
||||||
|
grep "^phase:" tasks/pbi-*/README.md | cut -d: -f3 | sort | uniq -c
|
||||||
|
```
|
||||||
|
|
||||||
|
## 状態アイコンの定義
|
||||||
|
|
||||||
|
### PBIレベル
|
||||||
|
- ✅ **完了**: 全タスク完了、フェーズcompleted
|
||||||
|
- ⏳ **実行中**: wipタスクあり、フェーズcompleted
|
||||||
|
- 🔄 **進行中**: doneタスクあり、フェーズcompleted
|
||||||
|
- 📝 **リファインメント中**: Group 1-3実行中
|
||||||
|
- ⬜ **未着手**: リファインメント未開始
|
||||||
|
|
||||||
|
### タスクレベル
|
||||||
|
- ✅ **完了**: done-{category}-N.md
|
||||||
|
- ⏳ **実行中**: wip-{category}-N.md
|
||||||
|
- 🚧 **ブロック中**: todo状態だが依存タスク未完了
|
||||||
|
- ⬜ **未着手**: todo-{category}-N.md
|
||||||
|
|
||||||
|
### カテゴリレベル
|
||||||
|
- ✅ **完了**: カテゴリ内全タスク完了
|
||||||
|
- 🔄 **進行中**: 一部タスク完了、一部実行中
|
||||||
|
- ⏳ **待機中**: 依存関係によりブロック
|
||||||
|
- ⬜ **未開始**: カテゴリ内全タスクがtodo
|
||||||
|
|
||||||
|
## データ集計項目
|
||||||
|
|
||||||
|
### PBIレベル集計
|
||||||
|
- **フェーズ別分布**: completed/in-progress/planning/未開始
|
||||||
|
- **リファインメント進捗**: Group完了状況 (Group 1-3)
|
||||||
|
- **実装進捗**: タスク完了率(実装フェーズのPBIのみ)
|
||||||
|
- **期間統計**: 平均実装期間、リファインメント期間
|
||||||
|
|
||||||
|
### カテゴリレベル集計
|
||||||
|
- **カテゴリ別進捗**: Setup/Models/Services/UI/Tests毎の完了率
|
||||||
|
- **依存関係**: ブロックされているタスク数、解放待ちタスク数
|
||||||
|
- **並行度**: 同時実行可能なカテゴリとタスク数
|
||||||
|
- **ボトルネック**: 進捗阻害要因となっているカテゴリ
|
||||||
|
|
||||||
|
### パフォーマンス指標
|
||||||
|
- **ベロシティ**: タスク完了速度(タスク/日)
|
||||||
|
- **スループット**: PBI完了速度(PBI/週)
|
||||||
|
- **サイクルタイム**: リファインメント〜完了までの期間
|
||||||
|
- **品質指標**: 手戻り発生率、再リファインメント率
|
||||||
|
|
||||||
|
### 予測・最適化
|
||||||
|
- **完了予測**: 残りタスクの推定完了日
|
||||||
|
- **並行実行提案**: 依存関係を考慮した最適実行順序
|
||||||
|
- **リソース配分**: カテゴリ別の作業負荷分散提案
|
||||||
|
- **ボトルネック解消**: 進捗改善のための優先アクション
|
||||||
|
|
||||||
|
## エラーハンドリング
|
||||||
|
|
||||||
|
- tasksディレクトリが存在しない場合の案内
|
||||||
|
- PBIディレクトリは存在するがREADME.mdがない場合の警告
|
||||||
|
- タスクファイルの形式が不正な場合の警告表示
|
||||||
|
- 引数が無効な場合の使用方法表示
|
||||||
|
|
||||||
|
## 推奨アクションの提案
|
||||||
|
|
||||||
|
### 即座実行可能アクション
|
||||||
|
- **高優先度タスク**: 依存関係なし、ブロックなしの重要タスク
|
||||||
|
- **並行実行**: 異なるカテゴリの独立タスク
|
||||||
|
- **ボトルネック解消**: 他タスクのブロック要因となっているタスク
|
||||||
|
|
||||||
|
### フェーズ別推奨アクション
|
||||||
|
- **完了済みPBI**: 🎉 完了祝福、新PBI計画提案
|
||||||
|
- **実装中PBI**: 次タスク実行、並行作業検討
|
||||||
|
- **リファインメント中PBI**: Group続行、一時停止オプション
|
||||||
|
- **未開始PBI**: リファインメント開始提案
|
||||||
|
|
||||||
|
### 最適化提案
|
||||||
|
- **スケジュール最適化**: 依存関係を考慮した実行順序調整
|
||||||
|
- **リソース配分**: カテゴリ間の作業負荷バランス調整
|
||||||
|
- **並行度向上**: 独立実行可能なタスクの特定と提案
|
||||||
|
- **品質向上**: リファインメント品質改善、手戻り防止策
|
||||||
|
|
||||||
|
### 戦略的提案
|
||||||
|
- **容量計画**: 新PBI追加のタイミングと優先度
|
||||||
|
- **技術債務**: リファクタリングタスクの計画的実行
|
||||||
|
- **スキル開発**: カテゴリ別の習熟度向上計画
|
||||||
|
- **プロセス改善**: リファインメント効率化、ベロシティ向上
|
||||||
|
|
||||||
|
## 完了条件
|
||||||
|
|
||||||
|
### 基本表示要件
|
||||||
|
- フェーズ別PBI分類が適切に表示されている
|
||||||
|
- カテゴリ別タスク進捗が正確に表示されている
|
||||||
|
- リファインメントグループ進捗が表示されている
|
||||||
|
- 依存関係とブロック状況が明確に示されている
|
||||||
|
|
||||||
|
### データ精度要件
|
||||||
|
- 全体進捗率が正確に計算・表示されている
|
||||||
|
- カテゴリ別進捗率が正確に算出されている
|
||||||
|
- ベロシティと完了予測が適切に計算されている
|
||||||
|
- ボトルネック分析が正確に実行されている
|
||||||
|
|
||||||
|
### ユーザビリティ要件
|
||||||
|
- 状態アイコンが統一され理解しやすい
|
||||||
|
- 重要情報が視覚的に強調されている
|
||||||
|
- 次のアクションが具体的で実行可能
|
||||||
|
- フィルター機能が適切に動作している
|
||||||
|
|
||||||
|
### 戦略的価値要件
|
||||||
|
- プロジェクト全体の健全性が把握できる
|
||||||
|
- 意思決定に必要な情報が提供されている
|
||||||
|
- 最適化機会が明確に提示されている
|
||||||
|
- 将来予測が実用的なレベルで提供されている
|
||||||
|
|
||||||
|
実行を開始しますか?
|
||||||
245
commands/task-next.md
Normal file
245
commands/task-next.md
Normal file
@@ -0,0 +1,245 @@
|
|||||||
|
---
|
||||||
|
description: 次に実行すべきタスクを取得して実行する
|
||||||
|
argument-hint: [issue_number] [--category=CAT] [--priority=high|medium|low]
|
||||||
|
allowed-tools: Bash, Read, Write, Edit, MultiEdit, Glob, Grep
|
||||||
|
---
|
||||||
|
|
||||||
|
# 次タスクの選択と実行
|
||||||
|
|
||||||
|
指定されたPBI($1が指定された場合)または全PBIから次に実行すべきタスクを選択し、実行します。
|
||||||
|
|
||||||
|
## 実行オプション
|
||||||
|
|
||||||
|
```bash
|
||||||
|
/task-next # 全PBIから最適なタスクを選択
|
||||||
|
/task-next 123 # PBI #123から次タスクを選択
|
||||||
|
/task-next 123 --category=setup # 特定カテゴリのタスクを優先
|
||||||
|
/task-next --priority=high # 高優先度タスクのみ検索
|
||||||
|
```
|
||||||
|
|
||||||
|
## 実行内容
|
||||||
|
|
||||||
|
### 1. 次タスクの特定(カテゴリ・優先度考慮)
|
||||||
|
|
||||||
|
**PBI指定時($1が存在):**
|
||||||
|
- `tasks/pbi-$1/` ディレクトリ内の `todo-*.md` ファイルを検索
|
||||||
|
- カテゴリ別ファイル命名規則: `todo-{category}-{number}.md`
|
||||||
|
- 優先度とカテゴリ依存関係を考慮してタスク選択
|
||||||
|
|
||||||
|
**全PBI検索時(引数なし):**
|
||||||
|
- `tasks/` 配下のすべての `pbi-*` ディレクトリを検索
|
||||||
|
- カテゴリ依存関係による実行可能タスクをフィルタリング
|
||||||
|
- 優先度・作成日時・ブロック状況を総合評価
|
||||||
|
|
||||||
|
**カテゴリ依存関係**:
|
||||||
|
```
|
||||||
|
Setup → Models → Services → UI → Tests
|
||||||
|
↓ ↓ ↓ ↓ ↓
|
||||||
|
基盤 データ層 API層 UI層 品質保証
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 詳細タスク情報の表示
|
||||||
|
|
||||||
|
選択されたタスクの内容を表示:
|
||||||
|
```
|
||||||
|
【次のタスク】
|
||||||
|
PBI: #<issue_number>
|
||||||
|
カテゴリ: <category> (Setup/Models/Services/UI/Tests)
|
||||||
|
優先度: <priority> (High/Medium/Low)
|
||||||
|
推定時間: <estimated_hours>時間
|
||||||
|
タスク: <task_title>
|
||||||
|
ファイル: <task_filename>
|
||||||
|
|
||||||
|
=== 前提条件 ===
|
||||||
|
✅ 完了済み依存タスク: <dependency_tasks>
|
||||||
|
⚠️ 未完了依存タスク: <blocking_tasks>
|
||||||
|
|
||||||
|
=== タスク詳細 ===
|
||||||
|
<task_content>
|
||||||
|
|
||||||
|
=== リファインメント情報 ===
|
||||||
|
関連する要件: <requirement_trace>
|
||||||
|
技術仕様: <tech_spec_summary>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 実行確認と開始処理
|
||||||
|
|
||||||
|
**依存関係チェック**:
|
||||||
|
- 前提タスクの完了状況確認
|
||||||
|
- ブロック状況があれば警告表示
|
||||||
|
- 実行可能性の判定
|
||||||
|
|
||||||
|
**ユーザー確認**:
|
||||||
|
- 実行確認とブロック解除オプション提示
|
||||||
|
- 確認後、以下の処理を実行:
|
||||||
|
1. `todo-{category}-N.md` → `wip-{category}-N.md` にリネーム
|
||||||
|
2. YAMLフロントマターの `started` フィールドを現在時刻で更新
|
||||||
|
3. 作業開始をユーザーに通知
|
||||||
|
|
||||||
|
### 4. 実装作業のガイド(カテゴリ別)
|
||||||
|
|
||||||
|
**Setup系タスク**:
|
||||||
|
- 環境構築、依存関係インストール
|
||||||
|
- 設定ファイル作成、初期構造構築
|
||||||
|
- 他のカテゴリの前提条件を満たす
|
||||||
|
|
||||||
|
**Models系タスク**:
|
||||||
|
- データモデル・スキーマ定義
|
||||||
|
- データベース migration作成
|
||||||
|
- ORM/モデルクラス実装
|
||||||
|
|
||||||
|
**Services系タスク**:
|
||||||
|
- ビジネスロジック実装
|
||||||
|
- API エンドポイント作成
|
||||||
|
- 外部サービス連携
|
||||||
|
|
||||||
|
**UI系タスク**:
|
||||||
|
- コンポーネント実装
|
||||||
|
- 画面・フォーム作成
|
||||||
|
- ユーザーインタラクション
|
||||||
|
|
||||||
|
**Tests系タスク**:
|
||||||
|
- 単体テスト・統合テスト
|
||||||
|
- E2Eテスト実装
|
||||||
|
- テストデータ準備
|
||||||
|
|
||||||
|
### 5. 完了処理とカテゴリ連携
|
||||||
|
|
||||||
|
**状態更新**:
|
||||||
|
1. `wip-{category}-N.md` → `done-{category}-N.md` にリネーム
|
||||||
|
2. YAMLフロントマターの `completed` フィールドを現在時刻で更新
|
||||||
|
3. 親PBIの `README.md` のカテゴリ別タスク一覧を更新
|
||||||
|
|
||||||
|
**次タスクの解放**:
|
||||||
|
- 依存関係チェーンの確認
|
||||||
|
- ブロックされていたタスクの実行可能化
|
||||||
|
- 次の実行可能タスクの通知
|
||||||
|
|
||||||
|
**GitHub Issue連携**:
|
||||||
|
- カテゴリ付きタスク完了コメント投稿
|
||||||
|
- 進捗状況の更新(カテゴリ別進捗含む)
|
||||||
|
|
||||||
|
### 6. 進捗状況とカテゴリ分析
|
||||||
|
|
||||||
|
**PBI進捗の詳細表示**:
|
||||||
|
```
|
||||||
|
【PBI #123 進捗状況】
|
||||||
|
全体: 3/8 タスク完了 (37.5%)
|
||||||
|
|
||||||
|
カテゴリ別進捗:
|
||||||
|
✅ Setup: 1/1 完了 (100%)
|
||||||
|
🔄 Models: 1/2 進行中 (50%)
|
||||||
|
⏳ Services: 0/2 待機中 (Models完了待ち)
|
||||||
|
⬜ UI: 0/2 未開始
|
||||||
|
⬜ Tests: 0/1 未開始
|
||||||
|
|
||||||
|
次に実行可能:
|
||||||
|
- Models残り1タスク (高優先度)
|
||||||
|
```
|
||||||
|
|
||||||
|
**全体最適化提案**:
|
||||||
|
- 並行実行可能タスクの提案
|
||||||
|
- ボトルネックとなっているカテゴリの特定
|
||||||
|
- 実装順序の最適化提案
|
||||||
|
|
||||||
|
## 利用可能な検索・操作コマンド
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# PBI一覧の取得
|
||||||
|
find tasks -name "pbi-*" -type d | sort
|
||||||
|
|
||||||
|
# カテゴリ別タスク検索
|
||||||
|
find tasks/pbi-$1 -name "todo-setup-*.md" # Setup系タスク
|
||||||
|
find tasks/pbi-$1 -name "todo-models-*.md" # Models系タスク
|
||||||
|
find tasks/pbi-$1 -name "todo-services-*.md" # Services系タスク
|
||||||
|
find tasks/pbi-$1 -name "todo-ui-*.md" # UI系タスク
|
||||||
|
find tasks/pbi-$1 -name "todo-tests-*.md" # Tests系タスク
|
||||||
|
|
||||||
|
# 優先度別検索
|
||||||
|
grep "priority: high" tasks/pbi-$1/todo-*.md
|
||||||
|
grep "priority: medium" tasks/pbi-$1/todo-*.md
|
||||||
|
|
||||||
|
# 依存関係確認
|
||||||
|
grep "depends_on:" tasks/pbi-$1/todo-*.md
|
||||||
|
|
||||||
|
# タスクファイルの状態変更(カテゴリ保持)
|
||||||
|
mv tasks/pbi-$1/todo-setup-1.md tasks/pbi-$1/wip-setup-1.md
|
||||||
|
mv tasks/pbi-$1/wip-setup-1.md tasks/pbi-$1/done-setup-1.md
|
||||||
|
|
||||||
|
# 進捗状況の取得
|
||||||
|
find tasks/pbi-$1 -name "done-*.md" | wc -l # 完了タスク数
|
||||||
|
find tasks/pbi-$1 -name "wip-*.md" | wc -l # 実行中タスク数
|
||||||
|
find tasks/pbi-$1 -name "todo-*.md" | wc -l # 未着手タスク数
|
||||||
|
|
||||||
|
# カテゴリ別進捗確認
|
||||||
|
find tasks/pbi-$1 -name "done-setup-*.md" | wc -l
|
||||||
|
find tasks/pbi-$1 -name "*-models-*.md" | wc -l
|
||||||
|
|
||||||
|
# GitHub Issueへのカテゴリ付きコメント投稿
|
||||||
|
gh issue comment $1 --body "✅ [Setup] タスク完了: <task_title>"
|
||||||
|
```
|
||||||
|
|
||||||
|
## カテゴリ依存関係の管理
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 依存関係チェック関数例
|
||||||
|
check_dependencies() {
|
||||||
|
local task_file="$1"
|
||||||
|
local depends_on=$(grep "depends_on:" "$task_file" | cut -d: -f2)
|
||||||
|
|
||||||
|
for dep in $depends_on; do
|
||||||
|
if [ ! -f "tasks/pbi-$1/done-$dep.md" ]; then
|
||||||
|
echo "❌ 依存タスク未完了: $dep"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# 次実行可能タスクの特定
|
||||||
|
find_executable_tasks() {
|
||||||
|
for todo_file in tasks/pbi-$1/todo-*.md; do
|
||||||
|
if check_dependencies "$todo_file"; then
|
||||||
|
echo "$todo_file"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## エラーハンドリング
|
||||||
|
|
||||||
|
### 基本エラー処理
|
||||||
|
- 指定されたPBIが存在しない場合の適切なエラー
|
||||||
|
- 実行可能なタスクが見つからない場合の案内
|
||||||
|
- GitHub CLI未認証時のエラー処理
|
||||||
|
- ファイル操作失敗時のロールバック
|
||||||
|
|
||||||
|
### カテゴリ特有のエラー処理
|
||||||
|
- 依存関係未満足時の詳細説明
|
||||||
|
- カテゴリ間の循環依存検出
|
||||||
|
- 優先度指定時の該当タスクなしエラー
|
||||||
|
- 推定時間超過時の警告
|
||||||
|
|
||||||
|
### 復旧支援機能
|
||||||
|
- 中断されたwipタスクの復旧提案
|
||||||
|
- 依存関係エラー時の解決パス提示
|
||||||
|
- カテゴリ順序の修正提案
|
||||||
|
|
||||||
|
## 完了条件
|
||||||
|
|
||||||
|
### 基本完了条件
|
||||||
|
- 次タスクが正常に特定・表示されている
|
||||||
|
- カテゴリと優先度が適切に考慮されている
|
||||||
|
- 依存関係チェックが正常に機能している
|
||||||
|
|
||||||
|
### 状態管理の完了条件
|
||||||
|
- タスク状態が適切に更新されている(todo→wip→done)
|
||||||
|
- カテゴリ情報がファイル名に保持されている
|
||||||
|
- 依存関係の解放が正常に実行されている
|
||||||
|
|
||||||
|
### 進捗管理の完了条件
|
||||||
|
- PBI進捗状況が正確に表示されている(カテゴリ別含む)
|
||||||
|
- GitHub Issueに適切なコメントが投稿されている
|
||||||
|
- 次の実行可能タスクが適切に提案されている
|
||||||
|
|
||||||
|
実行を開始しますか?
|
||||||
286
commands/task-refine.md
Normal file
286
commands/task-refine.md
Normal file
@@ -0,0 +1,286 @@
|
|||||||
|
---
|
||||||
|
description: GitHub IssueをProduct Backlog Item(PBI)としてリファインメントし、実装可能なタスクに分解する
|
||||||
|
argument-hint: <issue_number> [--group=N] [--from=groupN] [--edit=groupN]
|
||||||
|
allowed-tools: Bash, Read, Write, Edit, Glob
|
||||||
|
---
|
||||||
|
|
||||||
|
# GitHub Issue リファインメント・タスク分解
|
||||||
|
|
||||||
|
指定されたGitHub Issue #$1 をマイクロステップの対話を通じて、具体的な実装タスクに分解します。
|
||||||
|
|
||||||
|
## 実行モード
|
||||||
|
|
||||||
|
### 基本実行
|
||||||
|
```bash
|
||||||
|
/task-refine 123 # 全グループを順次実行
|
||||||
|
/task-refine 123 --group=1 # Group 1のみ実行
|
||||||
|
/task-refine 123 --from=group2 # Group 2から再開
|
||||||
|
/task-refine 123 --edit=group1 # Group 1のみ修正
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3段階グループ構成
|
||||||
|
|
||||||
|
### Group 1: 要件・制約の確定 (5-8分)
|
||||||
|
**目的**: 何を作るかを明確化
|
||||||
|
|
||||||
|
**ステップ構成**:
|
||||||
|
- Step 1: 認証・処理方式の選択
|
||||||
|
- Step 2: 機能範囲の決定
|
||||||
|
- Step 3: セキュリティレベルの設定
|
||||||
|
- Step 4: 非機能要件の確認
|
||||||
|
|
||||||
|
**出力**: 機能要件と制約の確定
|
||||||
|
|
||||||
|
### Group 2: 技術・アーキテクチャ設計 (8-12分)
|
||||||
|
**目的**: どう実装するかを技術的に決定
|
||||||
|
|
||||||
|
**ステップ構成**:
|
||||||
|
- Step 5: 技術スタックの選択
|
||||||
|
- Step 6: データ設計・モデル構造
|
||||||
|
- Step 7: API設計・インターフェース
|
||||||
|
- Step 8: UI/UX設計方針
|
||||||
|
|
||||||
|
**前提条件**: Group 1の完了が必要
|
||||||
|
**出力**: 技術仕様と設計方針の確定
|
||||||
|
|
||||||
|
### Group 3: 実装・タスク構成 (5-8分)
|
||||||
|
**目的**: 具体的な作業手順に分解
|
||||||
|
|
||||||
|
**ステップ構成**:
|
||||||
|
- Step 9: タスク分解粒度の決定
|
||||||
|
- Step 10: 実装優先順位の設定
|
||||||
|
- Step 11: 依存関係の整理
|
||||||
|
- Step 12: 最終タスクリストの確認
|
||||||
|
|
||||||
|
**前提条件**: Group 1, 2の完了が必要
|
||||||
|
**出力**: 実装可能なタスクリスト
|
||||||
|
|
||||||
|
## 実行フロー
|
||||||
|
|
||||||
|
### 1. Issue分析と進行状況確認
|
||||||
|
```bash
|
||||||
|
# GitHub CLI でIssue情報取得
|
||||||
|
gh issue view $1 --json title,body,url
|
||||||
|
|
||||||
|
# 既存の進行状況確認
|
||||||
|
if [ -f "tasks/pbi-$1/.refine-progress.json" ]; then
|
||||||
|
# 前回の続きから再開オプション表示
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. グループ別実行制御
|
||||||
|
|
||||||
|
#### Group 1実行例:
|
||||||
|
```
|
||||||
|
=== Group 1: 要件・制約の確定 ===
|
||||||
|
Progress: ▓▓▓░░░░░░░ (3/10 steps)
|
||||||
|
|
||||||
|
Step 1/4: 認証・処理方式
|
||||||
|
GitHub Issue #$1から検出キーワード: [動的表示]
|
||||||
|
|
||||||
|
Q: 主要な処理方式を選択してください
|
||||||
|
1. 認証系 (ログイン、権限管理)
|
||||||
|
2. データ処理系 (CRUD、検索、集計)
|
||||||
|
3. UI/UX系 (画面、コンポーネント)
|
||||||
|
4. 統合系 (API連携、外部サービス)
|
||||||
|
5. その他
|
||||||
|
|
||||||
|
選択: 1
|
||||||
|
|
||||||
|
Step 2/4: 機能範囲
|
||||||
|
認証系機能として、実装する機能を選択してください (複数選択可):
|
||||||
|
1. ユーザーログイン
|
||||||
|
2. ユーザー登録
|
||||||
|
3. パスワードリセット
|
||||||
|
4. 権限・ロール管理
|
||||||
|
5. プロフィール管理
|
||||||
|
6. セッション管理
|
||||||
|
|
||||||
|
選択: 1,2,3
|
||||||
|
|
||||||
|
Step 3/4: セキュリティレベル
|
||||||
|
選択した機能 (ログイン、登録、リセット) に対するセキュリティレベル:
|
||||||
|
1. 基本 (パスワード暗号化、基本バリデーション)
|
||||||
|
2. 強化 (2FA、IP制限、監査ログ)
|
||||||
|
3. 最小限 (暗号化のみ)
|
||||||
|
|
||||||
|
選択: 1
|
||||||
|
|
||||||
|
Step 4/4: 非機能要件
|
||||||
|
Q: 想定される利用規模は?
|
||||||
|
1. 小規模 (~100ユーザー)
|
||||||
|
2. 中規模 (~1,000ユーザー)
|
||||||
|
3. 大規模 (1,000ユーザー+)
|
||||||
|
|
||||||
|
選択: 2
|
||||||
|
|
||||||
|
✅ Group 1完了: 要件・制約が確定
|
||||||
|
|
||||||
|
【確定内容】
|
||||||
|
- 処理分野: 認証系
|
||||||
|
- 機能: ログイン、登録、パスワードリセット
|
||||||
|
- セキュリティ: 基本レベル
|
||||||
|
- 規模: 中規模対応
|
||||||
|
|
||||||
|
次のアクション:
|
||||||
|
1. Group 2に進む (技術・アーキテクチャ設計)
|
||||||
|
2. 後で続行 (進捗保存)
|
||||||
|
3. Group 1を修正
|
||||||
|
|
||||||
|
選択: 1
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 進捗管理と状態保存
|
||||||
|
|
||||||
|
**.refine-progress.json 形式**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"issue": "$1",
|
||||||
|
"started": "2024-01-01T10:00:00Z",
|
||||||
|
"current_group": 2,
|
||||||
|
"completed_groups": [
|
||||||
|
{
|
||||||
|
"group": 1,
|
||||||
|
"completed_at": "2024-01-01T10:08:00Z",
|
||||||
|
"decisions": {
|
||||||
|
"processing_type": "authentication",
|
||||||
|
"features": ["login", "registration", "password_reset"],
|
||||||
|
"security_level": "basic",
|
||||||
|
"scale": "medium"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"current_step": 6,
|
||||||
|
"session_data": {
|
||||||
|
"tech_stack_proposal": "node_express",
|
||||||
|
"database_preference": "postgresql"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. 最終ファイル生成
|
||||||
|
|
||||||
|
#### 拡張されたREADME.md形式:
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
issue: $1
|
||||||
|
title: <issue_title>
|
||||||
|
url: <github_url>
|
||||||
|
phase: completed
|
||||||
|
refinement_completed: <ISO8601>
|
||||||
|
created: <ISO8601>
|
||||||
|
updated: <ISO8601>
|
||||||
|
---
|
||||||
|
|
||||||
|
# PBI #$1
|
||||||
|
|
||||||
|
## リファインメント履歴
|
||||||
|
|
||||||
|
### Group 1: 要件・制約確定 ✅
|
||||||
|
- 処理分野: 認証系
|
||||||
|
- 機能範囲: ログイン、登録、パスワードリセット
|
||||||
|
- セキュリティ: 基本レベル (暗号化、バリデーション)
|
||||||
|
- 規模: 中規模対応 (~1,000ユーザー)
|
||||||
|
|
||||||
|
### Group 2: 技術・アーキテクチャ設計 ✅
|
||||||
|
- バックエンド: Node.js + Express + PostgreSQL
|
||||||
|
- フロントエンド: React + TypeScript (既存環境)
|
||||||
|
- 認証方式: JWT (24時間有効期限)
|
||||||
|
- API: RESTful 4エンドポイント
|
||||||
|
|
||||||
|
### Group 3: 実装・タスク構成 ✅
|
||||||
|
- タスク数: 8個
|
||||||
|
- カテゴリ: Setup(1), Models(2), Services(2), UI(2), Tests(1)
|
||||||
|
- 実装期間: 5-8日 (1日1-2タスク想定)
|
||||||
|
|
||||||
|
## タスク一覧 (カテゴリ別)
|
||||||
|
|
||||||
|
### Setup
|
||||||
|
- [ ] プロジェクト環境構築 (todo-setup-1.md)
|
||||||
|
|
||||||
|
### Models
|
||||||
|
- [ ] User model実装 (todo-models-1.md)
|
||||||
|
- [ ] 認証関連テーブル設計 (todo-models-2.md)
|
||||||
|
|
||||||
|
### Services
|
||||||
|
- [ ] 認証API実装 (todo-services-1.md)
|
||||||
|
- [ ] パスワードリセット機能 (todo-services-2.md)
|
||||||
|
|
||||||
|
### UI
|
||||||
|
- [ ] ログインフォーム実装 (todo-ui-1.md)
|
||||||
|
- [ ] 登録フォーム実装 (todo-ui-2.md)
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
- [ ] 認証機能テスト (todo-tests-1.md)
|
||||||
|
|
||||||
|
## 要件トレーサビリティ
|
||||||
|
- ログイン機能 → setup-1, models-1, services-1, ui-1, tests-1
|
||||||
|
- 登録機能 → models-1, services-1, ui-2, tests-1
|
||||||
|
- リセット機能 → models-2, services-2, tests-1
|
||||||
|
```
|
||||||
|
|
||||||
|
#### カテゴリ別タスクファイル形式:
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
parent: $1
|
||||||
|
category: setup
|
||||||
|
priority: high
|
||||||
|
estimated_hours: 4
|
||||||
|
created: <ISO8601>
|
||||||
|
started: null
|
||||||
|
completed: null
|
||||||
|
---
|
||||||
|
|
||||||
|
# プロジェクト環境構築
|
||||||
|
|
||||||
|
## やること
|
||||||
|
Node.js + Express + PostgreSQL の認証プロジェクト環境を構築する
|
||||||
|
|
||||||
|
## 成功条件
|
||||||
|
- [ ] package.json作成 (express, jwt, bcrypt, pg依存関係)
|
||||||
|
- [ ] PostgreSQL接続設定完了
|
||||||
|
- [ ] 基本的なサーバー起動確認
|
||||||
|
- [ ] 環境変数設定 (.env.example作成)
|
||||||
|
|
||||||
|
## 技術仕様
|
||||||
|
- Node.js: v18+
|
||||||
|
- Express: v4.x
|
||||||
|
- PostgreSQL: v14+
|
||||||
|
- JWT: jsonwebtoken
|
||||||
|
- 暗号化: bcrypt
|
||||||
|
|
||||||
|
## 制約
|
||||||
|
- 環境変数でDB接続情報管理
|
||||||
|
- セキュリティ設定は本番想定
|
||||||
|
- 既存Reactプロジェクトとの統合考慮
|
||||||
|
|
||||||
|
## 実装メモ
|
||||||
|
(作業中に追記)
|
||||||
|
```
|
||||||
|
|
||||||
|
## エラーハンドリング
|
||||||
|
|
||||||
|
### 実行前チェック
|
||||||
|
- GitHub CLI認証状態確認
|
||||||
|
- Issue存在確認
|
||||||
|
- tasksディレクトリアクセス権確認
|
||||||
|
|
||||||
|
### 進行中のエラー処理
|
||||||
|
- 不正な選択肢入力時の再プロンプト
|
||||||
|
- ネットワークエラー時の状態保存
|
||||||
|
- 強制終了時の進捗復旧
|
||||||
|
|
||||||
|
### グループ間整合性チェック
|
||||||
|
- Group 2開始時にGroup 1決定事項の参照
|
||||||
|
- Group 3開始時にGroup 1, 2決定事項の参照
|
||||||
|
- 矛盾検出時の修正提案
|
||||||
|
|
||||||
|
## 完了条件
|
||||||
|
|
||||||
|
- 全3グループが正常完了している
|
||||||
|
- `tasks/pbi-$1/README.md` にリファインメント履歴が記録されている
|
||||||
|
- カテゴリ別のタスクファイルが適切に生成されている
|
||||||
|
- 各タスクが実装可能なレベルまで詳細化されている
|
||||||
|
- 要件トレーサビリティが確立されている
|
||||||
|
|
||||||
|
実行を開始しますか?
|
||||||
475
commands/task-spec.md
Normal file
475
commands/task-spec.md
Normal file
@@ -0,0 +1,475 @@
|
|||||||
|
---
|
||||||
|
description: プロンプトベースで対話的に仕様を策定し、TDD前提のタスクに分解する(ネガティブチェック・認知バイアス除去含む)
|
||||||
|
argument-hint: "<要望内容>" [--id=custom-id]
|
||||||
|
allowed-tools: Bash, Read, Write, Edit, Glob, AskUserQuestion
|
||||||
|
---
|
||||||
|
|
||||||
|
# プロンプトベース仕様策定・タスク分解
|
||||||
|
|
||||||
|
プロンプトで記述された要望を、対話を通じて**網羅的な仕様**(正常系・異常系・エッジケース)に昇華し、TDD前提の実装タスクに分解します。
|
||||||
|
|
||||||
|
## 実行モード
|
||||||
|
|
||||||
|
```bash
|
||||||
|
/task-spec "ユーザー認証機能を実装したい"
|
||||||
|
/task-spec "データ検索APIを作りたい" --id=search-api
|
||||||
|
```
|
||||||
|
|
||||||
|
## 実行フロー
|
||||||
|
|
||||||
|
### Phase 1: 網羅的仕様策定(20-30分)
|
||||||
|
|
||||||
|
#### Step 1: 要望分析
|
||||||
|
```bash
|
||||||
|
# ユーザープロンプト解析
|
||||||
|
- キーワード抽出(認証、API、UI、データ処理など)
|
||||||
|
- 既存コードベースとの関連確認
|
||||||
|
- 初期スコープ推定
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Step 2: ポジティブ仕様の明確化(5-8分)
|
||||||
|
|
||||||
|
対話形式で以下を確定:
|
||||||
|
|
||||||
|
```
|
||||||
|
=== Step 2: ポジティブ仕様の明確化 ===
|
||||||
|
|
||||||
|
Q1: 入力は何ですか?
|
||||||
|
(例: ユーザーID、メールアドレス、JSONペイロード)
|
||||||
|
|
||||||
|
Q2: 期待される出力は何ですか?
|
||||||
|
(例: 認証トークン、ユーザー情報、HTTPステータス)
|
||||||
|
|
||||||
|
Q3: 成功の条件を具体的に教えてください
|
||||||
|
(例: 「有効な認証情報で200 + JWT返却」)
|
||||||
|
|
||||||
|
Q4: 制約や前提条件はありますか?
|
||||||
|
(例: PostgreSQL使用、既存API互換性必須)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Step 3: ネガティブチェック(認知バイアス除去)(10-15分)
|
||||||
|
|
||||||
|
##### 3-1. 失敗シナリオ分析
|
||||||
|
|
||||||
|
```
|
||||||
|
=== Step 3-1: 失敗シナリオ分析 ===
|
||||||
|
Progress: ▓▓▓▓░░░░░░ (4/10)
|
||||||
|
|
||||||
|
確証バイアスを排除するため、「どこで壊れるか」を先に考えます。
|
||||||
|
|
||||||
|
Q: この機能が失敗する可能性があるケースを選択してください(複数選択可)
|
||||||
|
|
||||||
|
1. 入力が不正(型違い、範囲外、フォーマット不正)
|
||||||
|
2. 依存リソースが存在しない(ファイル、DB、API)
|
||||||
|
3. 権限不足・認証失敗
|
||||||
|
4. タイムアウト・ネットワークエラー
|
||||||
|
5. リソース枯渇(メモリ、ディスク、CPU)
|
||||||
|
6. 並行実行による競合
|
||||||
|
7. その他(自由記述)
|
||||||
|
|
||||||
|
選択: 1,2,3
|
||||||
|
|
||||||
|
→ 選択された各ケースについて詳細を質問
|
||||||
|
```
|
||||||
|
|
||||||
|
##### 3-2. エッジケース網羅
|
||||||
|
|
||||||
|
```
|
||||||
|
=== Step 3-2: エッジケース網羅 ===
|
||||||
|
|
||||||
|
正常系偏重を避けるため、境界値での振る舞いを確認します。
|
||||||
|
|
||||||
|
以下のケースで期待される動作を確認してください(該当するものにチェック):
|
||||||
|
|
||||||
|
□ 空文字列 / 空配列 / 空オブジェクト
|
||||||
|
→ どう処理すべきですか? (1. エラー / 2. デフォルト値 / 3. そのまま通す)
|
||||||
|
|
||||||
|
□ null / undefined / NaN
|
||||||
|
→ どう処理すべきですか? (1. エラー / 2. 無視 / 3. デフォルト値)
|
||||||
|
|
||||||
|
□ 最小値・最大値(数値、文字数、配列長)
|
||||||
|
→ 境界値は? (例: 0-255文字、1-100件)
|
||||||
|
|
||||||
|
□ 0, -1, Infinity
|
||||||
|
→ 許可しますか? 許可する場合の意味は?
|
||||||
|
|
||||||
|
□ 特殊文字(<>"'&;など)
|
||||||
|
→ エスケープ必要? どのレベルで?
|
||||||
|
|
||||||
|
□ 非ASCII文字(絵文字、全角、Unicode)
|
||||||
|
→ サポートしますか? 制限は?
|
||||||
|
|
||||||
|
□ 巨大なデータ(1MB超の文字列、10万件の配列)
|
||||||
|
→ 制限値は? 超えた場合の処理は?
|
||||||
|
```
|
||||||
|
|
||||||
|
##### 3-3. セキュリティリスク分析
|
||||||
|
|
||||||
|
```
|
||||||
|
=== Step 3-3: セキュリティリスク分析 ===
|
||||||
|
|
||||||
|
楽観バイアスを排除し、攻撃シナリオを想定します。
|
||||||
|
|
||||||
|
該当する脅威を選択してください(複数選択可):
|
||||||
|
|
||||||
|
1. XSS(クロスサイトスクリプティング)
|
||||||
|
- ユーザー入力を画面表示する箇所がある
|
||||||
|
|
||||||
|
2. SQLインジェクション
|
||||||
|
- SQL文を動的生成している
|
||||||
|
|
||||||
|
3. CSRF(クロスサイトリクエストフォージェリ)
|
||||||
|
- 状態変更操作(POST/PUT/DELETE)がある
|
||||||
|
|
||||||
|
4. 権限昇格
|
||||||
|
- 他ユーザーのデータにアクセスする可能性
|
||||||
|
|
||||||
|
5. DoS(サービス拒否)
|
||||||
|
- 大量リクエストで停止する可能性
|
||||||
|
|
||||||
|
6. 情報漏洩
|
||||||
|
- エラーメッセージに秘密情報が含まれる可能性
|
||||||
|
|
||||||
|
選択: 1,3,4
|
||||||
|
|
||||||
|
→ 各脅威に対する対策を質問
|
||||||
|
```
|
||||||
|
|
||||||
|
##### 3-4. 認知バイアスチェック
|
||||||
|
|
||||||
|
```
|
||||||
|
=== Step 3-4: 認知バイアスチェック ===
|
||||||
|
|
||||||
|
以下のバイアスを意識的に排除したか確認します:
|
||||||
|
|
||||||
|
✓ 確証バイアス
|
||||||
|
「うまくいくはず」ではなく「どこで壊れるか」を先に考えた
|
||||||
|
|
||||||
|
✓ 正常系偏重
|
||||||
|
正常系:異常系 = 1:3 の比率でテストケースを設計した
|
||||||
|
|
||||||
|
✓ 楽観バイアス
|
||||||
|
「たぶん大丈夫」を「証明されるまで信用しない」に変換した
|
||||||
|
|
||||||
|
✓ 可用性バイアス
|
||||||
|
「よくあるケース」だけでなく「レアだが致命的なケース」も網羅した
|
||||||
|
|
||||||
|
全てチェック完了後、次へ進みます。
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Step 4: 失敗するテスト生成(5分)
|
||||||
|
|
||||||
|
```
|
||||||
|
=== Step 4: 失敗するテスト生成 ===
|
||||||
|
|
||||||
|
確定した仕様から、Red状態のテストコードを自動生成します。
|
||||||
|
|
||||||
|
テスト比率:
|
||||||
|
- 正常系テスト(20%): 2件
|
||||||
|
- 異常系テスト(50%): 5件
|
||||||
|
- エッジケーステスト(30%): 3件
|
||||||
|
|
||||||
|
合計: 10件のテストケース
|
||||||
|
|
||||||
|
生成されたテストは tasks/pbi-{id}/tests/ に保存されます。
|
||||||
|
```
|
||||||
|
|
||||||
|
### Phase 2: タスク分解(既存Group 1-3 + ネガティブレビュー)
|
||||||
|
|
||||||
|
#### Group 1: 要件・制約の確定(5-8分)
|
||||||
|
- 処理方式の選択
|
||||||
|
- 機能範囲の決定
|
||||||
|
- セキュリティレベルの設定
|
||||||
|
- 非機能要件の確認
|
||||||
|
|
||||||
|
#### **Group 1.5: ネガティブケース・レビュー(5分)**
|
||||||
|
```
|
||||||
|
=== Group 1.5: ネガティブケース・レビュー ===
|
||||||
|
|
||||||
|
Phase 1で抽出したネガティブケースを確認します:
|
||||||
|
|
||||||
|
【失敗シナリオ】
|
||||||
|
1. 入力不正(空文字列、型違い) - Priority: High
|
||||||
|
2. DB接続失敗 - Priority: Critical
|
||||||
|
3. 権限不足 - Priority: High
|
||||||
|
|
||||||
|
【エッジケース】
|
||||||
|
1. 最大長超過(255文字) - Priority: Medium
|
||||||
|
2. 特殊文字(XSSペイロード) - Priority: Critical
|
||||||
|
3. 並行実行 - Priority: Low
|
||||||
|
|
||||||
|
Q: 追加で考慮すべき失敗シナリオはありますか?
|
||||||
|
(あれば記述、なければEnter)
|
||||||
|
|
||||||
|
→ ユーザー入力を反映してspecs.mdを更新
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Group 2: 技術・アーキテクチャ設計(8-12分)
|
||||||
|
- 技術スタックの選択
|
||||||
|
- データ設計・モデル構造
|
||||||
|
- API設計・インターフェース
|
||||||
|
- UI/UX設計方針
|
||||||
|
|
||||||
|
#### Group 3: 実装・タスク構成(5-8分)
|
||||||
|
- タスク分解粒度の決定(ネガティブケース考慮)
|
||||||
|
- 実装優先順位の設定
|
||||||
|
- 依存関係の整理
|
||||||
|
- 最終タスクリストの確認
|
||||||
|
|
||||||
|
## 生成されるファイル構造
|
||||||
|
|
||||||
|
```
|
||||||
|
tasks/pbi-{timestamp or custom-id}/
|
||||||
|
├── specs.md # 網羅的仕様書(正常系+異常系+エッジケース)
|
||||||
|
├── tests/
|
||||||
|
│ ├── spec-test-positive-1.md # 正常系テスト(Red状態)
|
||||||
|
│ ├── spec-test-negative-1.md # 異常系テスト(Red状態)
|
||||||
|
│ ├── spec-test-edge-1.md # エッジケーステスト(Red状態)
|
||||||
|
│ └── tdd-log.md # Red→Green遷移記録
|
||||||
|
├── README.md # リファインメント履歴・タスク一覧
|
||||||
|
├── todo-{category}-N.md # 実装タスク(ネガティブケース含む)
|
||||||
|
└── .refine-progress.json # 進捗管理
|
||||||
|
```
|
||||||
|
|
||||||
|
### specs.md フォーマット
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
created: 2024-01-01T10:00:00Z
|
||||||
|
updated: 2024-01-01T10:30:00Z
|
||||||
|
status: confirmed
|
||||||
|
coverage_score: 85 # ネガティブチェック網羅率
|
||||||
|
---
|
||||||
|
|
||||||
|
# 仕様: ユーザー認証機能
|
||||||
|
|
||||||
|
## 要望(オリジナルプロンプト)
|
||||||
|
ユーザー認証機能を実装したい
|
||||||
|
|
||||||
|
## 確定した仕様
|
||||||
|
|
||||||
|
### 機能概要
|
||||||
|
メールアドレスとパスワードでユーザー認証を行い、JWTトークンを返却する
|
||||||
|
|
||||||
|
### 入力
|
||||||
|
- email: string(必須、メール形式、最大255文字)
|
||||||
|
- password: string(必須、最小8文字、最大128文字)
|
||||||
|
|
||||||
|
### 出力
|
||||||
|
- 成功時: 200 OK + { token: string, userId: string }
|
||||||
|
- 失敗時: 適切なHTTPステータス + エラーメッセージ
|
||||||
|
|
||||||
|
### 制約
|
||||||
|
- JWT有効期限: 24時間
|
||||||
|
- パスワードハッシュ: bcrypt
|
||||||
|
- データベース: PostgreSQL
|
||||||
|
|
||||||
|
### 成功条件(正常系)
|
||||||
|
- [ ] 有効な認証情報で200 + JWT返却
|
||||||
|
- [ ] トークンでユーザー情報取得可能
|
||||||
|
|
||||||
|
## ネガティブケース分析
|
||||||
|
|
||||||
|
### 失敗シナリオ
|
||||||
|
|
||||||
|
#### 入力不正
|
||||||
|
- [ ] 空文字列のemail → 400 + "email is required"
|
||||||
|
- [ ] 無効なメール形式 → 400 + "invalid email format"
|
||||||
|
- [ ] パスワード7文字 → 400 + "password must be at least 8 characters"
|
||||||
|
- [ ] 型違い(数値) → 400 + "email must be a string"
|
||||||
|
|
||||||
|
#### 依存リソース欠如
|
||||||
|
- [ ] DB接続失敗 → 503 + "service temporarily unavailable" + リトライ
|
||||||
|
- [ ] DBクエリタイムアウト → 504 + "gateway timeout"
|
||||||
|
|
||||||
|
#### 権限・認証
|
||||||
|
- [ ] 存在しないユーザー → 401 + "invalid credentials"
|
||||||
|
- [ ] パスワード不一致 → 401 + "invalid credentials"
|
||||||
|
- [ ] アカウント無効化済み → 403 + "account disabled"
|
||||||
|
- [ ] ログイン試行回数超過 → 429 + "too many attempts"
|
||||||
|
|
||||||
|
#### 並行実行
|
||||||
|
- [ ] 同一ユーザーの多重ログイン → 許可(トークン複数発行)
|
||||||
|
|
||||||
|
### エッジケース
|
||||||
|
|
||||||
|
| ケース | 入力例 | 期待される振る舞い |
|
||||||
|
|--------|--------|-------------------|
|
||||||
|
| 空文字列 | `email=""` | 400 + ValidationError |
|
||||||
|
| null | `email=null` | 400 + ValidationError |
|
||||||
|
| 最大長 | 256文字のemail | 400 + "email too long" |
|
||||||
|
| 最大長境界 | 255文字のemail | 正常処理 |
|
||||||
|
| 特殊文字 | `email="<script>"` | エスケープ処理 + 通常検証 |
|
||||||
|
| 絵文字 | `password="👍pass"` | 正常処理(UTF-8対応) |
|
||||||
|
| SQL注入試行 | `email="' OR '1'='1"` | プレースホルダーで無害化 |
|
||||||
|
|
||||||
|
### セキュリティ考慮事項
|
||||||
|
- [ ] パスワードは平文ログ出力禁止
|
||||||
|
- [ ] エラーメッセージで存在ユーザーを推測不可(401で統一)
|
||||||
|
- [ ] ブルートフォース対策: 5回失敗で15分ロック
|
||||||
|
- [ ] HTTPS必須(平文通信禁止)
|
||||||
|
- [ ] CSRF対策: 状態変更なしのため不要
|
||||||
|
- [ ] レート制限: 1IP 10req/min
|
||||||
|
|
||||||
|
### 想定される失敗モード(FMEA的分析)
|
||||||
|
|
||||||
|
| 失敗モード | 発生頻度 | 影響度 | 検出容易性 | 対策 |
|
||||||
|
|-----------|---------|--------|-----------|------|
|
||||||
|
| DB接続断 | 低 | 高 | 容易 | コネクションプール + リトライ |
|
||||||
|
| パスワード平文ログ出力 | 低 | 致命的 | 困難 | ログフィルター + コードレビュー |
|
||||||
|
| ブルートフォース | 高 | 中 | 容易 | レート制限 + アカウントロック |
|
||||||
|
| タイミング攻撃 | 低 | 中 | 困難 | 固定時間比較 |
|
||||||
|
|
||||||
|
## 対話履歴
|
||||||
|
|
||||||
|
### Q1: 入力は何ですか?
|
||||||
|
A: メールアドレスとパスワード
|
||||||
|
|
||||||
|
### Q2: 失敗シナリオ - 入力不正
|
||||||
|
Q: 空文字列が渡された場合の振る舞いは?
|
||||||
|
A: 400 BadRequestでValidationErrorを返す
|
||||||
|
|
||||||
|
### Q3: エッジケース - 最大長
|
||||||
|
Q: メールアドレスの最大長は?
|
||||||
|
A: 255文字。超過時は400エラー
|
||||||
|
|
||||||
|
### Q4: セキュリティ - ブルートフォース
|
||||||
|
Q: 連続失敗時の対策は?
|
||||||
|
A: 5回失敗で15分間アカウントロック
|
||||||
|
|
||||||
|
## テスト戦略
|
||||||
|
|
||||||
|
### 正常系テスト(20%)
|
||||||
|
- test_001: 有効な認証情報で200 + JWT
|
||||||
|
- test_002: トークンでユーザー情報取得成功
|
||||||
|
|
||||||
|
### 異常系テスト(50%)
|
||||||
|
- test_101: 空文字列emailで400
|
||||||
|
- test_102: 無効なメール形式で400
|
||||||
|
- test_103: 短いパスワードで400
|
||||||
|
- test_104: 存在しないユーザーで401
|
||||||
|
- test_105: パスワード不一致で401
|
||||||
|
- test_106: DB接続失敗で503
|
||||||
|
- test_107: ログイン試行超過で429
|
||||||
|
|
||||||
|
### エッジケーステスト(30%)
|
||||||
|
- test_201: 最大長境界値(255文字)
|
||||||
|
- test_202: 最大長超過(256文字)
|
||||||
|
- test_203: XSSペイロード試行
|
||||||
|
- test_204: SQL注入試行
|
||||||
|
- test_205: パスワードにUnicode文字
|
||||||
|
|
||||||
|
### カバレッジ目標
|
||||||
|
- 行カバレッジ: 90%以上
|
||||||
|
- 分岐カバレッジ: 85%以上
|
||||||
|
- 異常系カバレッジ: 100%
|
||||||
|
```
|
||||||
|
|
||||||
|
### todo-{category}-N.md フォーマット(拡張版)
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
parent: auth-feature
|
||||||
|
category: services
|
||||||
|
priority: high
|
||||||
|
estimated_hours: 6
|
||||||
|
negative_cases: 7 # このタスクがカバーすべき異常系の数
|
||||||
|
edge_cases: 5 # エッジケースの数
|
||||||
|
test_ratio: "2:7:5" # 正常:異常:エッジ
|
||||||
|
---
|
||||||
|
|
||||||
|
# ユーザー認証API実装
|
||||||
|
|
||||||
|
## やること
|
||||||
|
specs.mdに基づき、ユーザー認証エンドポイントを実装
|
||||||
|
|
||||||
|
## 成功条件(正常系)
|
||||||
|
- [ ] POST /api/auth/login で200 + JWT返却
|
||||||
|
- [ ] 有効なトークンでユーザー情報取得可能
|
||||||
|
|
||||||
|
## 失敗条件(異常系)
|
||||||
|
- [ ] 空email → 400 + ValidationError
|
||||||
|
- [ ] 無効なメール形式 → 400 + validation message
|
||||||
|
- [ ] パスワード7文字 → 400 + length requirement
|
||||||
|
- [ ] 存在しないユーザー → 401 + generic message
|
||||||
|
- [ ] パスワード不一致 → 401 + generic message
|
||||||
|
- [ ] DB接続失敗 → 503 + retry logic
|
||||||
|
- [ ] ログイン試行5回超過 → 429 + lockout period
|
||||||
|
|
||||||
|
## エッジケース
|
||||||
|
- [ ] メール255文字(境界値) → 正常処理
|
||||||
|
- [ ] メール256文字 → 400 error
|
||||||
|
- [ ] XSSペイロード → エスケープして検証
|
||||||
|
- [ ] SQL注入試行 → prepared statementで無害化
|
||||||
|
- [ ] Unicode文字パスワード → 正常処理
|
||||||
|
|
||||||
|
## 技術仕様
|
||||||
|
- パスワードハッシュ: bcrypt(salt rounds: 10)
|
||||||
|
- JWT署名: HS256 + 環境変数シークレット
|
||||||
|
- DB: prepared statement必須
|
||||||
|
- エラーログ: パスワード除外
|
||||||
|
|
||||||
|
## 制約
|
||||||
|
- specs.md#セキュリティ考慮事項 を全て遵守
|
||||||
|
- 認証失敗はタイミング攻撃対策で固定時間応答
|
||||||
|
- エラーメッセージでユーザー存在を推測不可
|
||||||
|
|
||||||
|
## 実装メモ
|
||||||
|
(TDD Red→Green→Refactorサイクルを記録)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 実行後の出力
|
||||||
|
|
||||||
|
```
|
||||||
|
✅ 仕様策定完了
|
||||||
|
|
||||||
|
【生成ファイル】
|
||||||
|
- tasks/pbi-auth-feature/specs.md
|
||||||
|
- tasks/pbi-auth-feature/tests/spec-test-positive-1.md
|
||||||
|
- tasks/pbi-auth-feature/tests/spec-test-negative-1.md
|
||||||
|
- tasks/pbi-auth-feature/tests/spec-test-negative-2.md
|
||||||
|
- tasks/pbi-auth-feature/tests/spec-test-negative-3.md
|
||||||
|
- tasks/pbi-auth-feature/tests/spec-test-negative-4.md
|
||||||
|
- tasks/pbi-auth-feature/tests/spec-test-negative-5.md
|
||||||
|
- tasks/pbi-auth-feature/tests/spec-test-edge-1.md
|
||||||
|
- tasks/pbi-auth-feature/tests/spec-test-edge-2.md
|
||||||
|
- tasks/pbi-auth-feature/tests/spec-test-edge-3.md
|
||||||
|
- tasks/pbi-auth-feature/README.md
|
||||||
|
|
||||||
|
【ネガティブチェック網羅率】
|
||||||
|
- 失敗シナリオ: 7件
|
||||||
|
- エッジケース: 5件
|
||||||
|
- セキュリティ: 6項目
|
||||||
|
- カバレッジスコア: 85/100
|
||||||
|
|
||||||
|
【タスク数】
|
||||||
|
- Setup: 1タスク
|
||||||
|
- Models: 1タスク
|
||||||
|
- Services: 1タスク(正常2 + 異常7 + エッジ5 = 14テストケース)
|
||||||
|
- UI: 1タスク
|
||||||
|
- Tests: 1タスク
|
||||||
|
|
||||||
|
次のステップ:
|
||||||
|
1. /task-next で最初のタスクを実行
|
||||||
|
2. /task-status auth-feature で進捗確認
|
||||||
|
```
|
||||||
|
|
||||||
|
## エラーハンドリング
|
||||||
|
|
||||||
|
### 実行前チェック
|
||||||
|
- tasksディレクトリの存在確認
|
||||||
|
- プロンプトの最小文字数確認(10文字以上)
|
||||||
|
- カスタムIDの重複チェック
|
||||||
|
|
||||||
|
### 進行中のエラー処理
|
||||||
|
- 不正な選択肢入力時の再プロンプト
|
||||||
|
- ネットワークエラー時の状態保存
|
||||||
|
- 強制終了時の進捗復旧(.refine-progress.json)
|
||||||
|
|
||||||
|
## 完了条件
|
||||||
|
|
||||||
|
- Phase 1, 2の全ステップが正常完了
|
||||||
|
- specs.mdにネガティブケース分析が記録されている
|
||||||
|
- テストファイルが正常系:異常系:エッジ = 2:5:3の比率で生成されている
|
||||||
|
- 各タスクに異常系・エッジケースが割り当てられている
|
||||||
|
- カバレッジスコアが80以上
|
||||||
247
commands/task-status.md
Normal file
247
commands/task-status.md
Normal file
@@ -0,0 +1,247 @@
|
|||||||
|
---
|
||||||
|
description: タスクの進捗状況を表示する(カテゴリ・グループ情報含む)
|
||||||
|
argument-hint: [issue_number] [--detail] [--category=CAT]
|
||||||
|
allowed-tools: Bash, Read, Glob
|
||||||
|
---
|
||||||
|
|
||||||
|
# タスク進捗状況の確認
|
||||||
|
|
||||||
|
指定されたPBI($1が指定された場合)または全PBIのタスク進捗状況を、リファインメントグループとカテゴリ別に表示します。
|
||||||
|
|
||||||
|
## 表示オプション
|
||||||
|
|
||||||
|
```bash
|
||||||
|
/task-status # 全PBI概要表示
|
||||||
|
/task-status 123 # PBI #123詳細表示
|
||||||
|
/task-status 123 --detail # 詳細表示(グループ履歴含む)
|
||||||
|
/task-status --category=setup # Setup系タスクのみ表示
|
||||||
|
```
|
||||||
|
|
||||||
|
## 実行内容
|
||||||
|
|
||||||
|
### 1. PBI指定時の詳細表示($1が存在)
|
||||||
|
|
||||||
|
**基本情報の表示:**
|
||||||
|
```
|
||||||
|
【PBI #$1】<title>
|
||||||
|
URL: <github_url>
|
||||||
|
作成日: <created>
|
||||||
|
更新日: <updated>
|
||||||
|
フェーズ: <phase> (completed/in-progress/planning)
|
||||||
|
|
||||||
|
全体進捗: <done>/<total> タスク完了 (<percentage>%)
|
||||||
|
```
|
||||||
|
|
||||||
|
**リファインメントグループ履歴** (--detail指定時):
|
||||||
|
```
|
||||||
|
=== リファインメント履歴 ===
|
||||||
|
✅ Group 1: 要件・制約確定 (2024-01-01 10:08)
|
||||||
|
- 処理分野: 認証系
|
||||||
|
- 機能範囲: ログイン、登録、パスワードリセット
|
||||||
|
- セキュリティ: 基本レベル
|
||||||
|
- 規模: 中規模対応
|
||||||
|
|
||||||
|
✅ Group 2: 技術・アーキテクチャ設計 (2024-01-01 10:20)
|
||||||
|
- バックエンド: Node.js + Express + PostgreSQL
|
||||||
|
- フロントエンド: React + TypeScript
|
||||||
|
- 認証方式: JWT (24時間有効期限)
|
||||||
|
- API: RESTful 4エンドポイント
|
||||||
|
|
||||||
|
✅ Group 3: 実装・タスク構成 (2024-01-01 10:28)
|
||||||
|
- タスク数: 8個
|
||||||
|
- カテゴリ: Setup(1), Models(2), Services(2), UI(2), Tests(1)
|
||||||
|
- 実装期間: 5-8日想定
|
||||||
|
```
|
||||||
|
|
||||||
|
**カテゴリ別進捗:**
|
||||||
|
```
|
||||||
|
=== カテゴリ別進捗 ===
|
||||||
|
✅ Setup: 1/1 完了 (100%)
|
||||||
|
└── ✅ プロジェクト環境構築 (done-setup-1.md)
|
||||||
|
|
||||||
|
🔄 Models: 1/2 進行中 (50%)
|
||||||
|
├── ✅ User model実装 (done-models-1.md)
|
||||||
|
└── ⏳ 認証関連テーブル設計 (wip-models-2.md) - 開始: 10:45
|
||||||
|
|
||||||
|
⏳ Services: 0/2 待機中 (0%) - Models完了待ち
|
||||||
|
├── ⬜ 認証API実装 (todo-services-1.md)
|
||||||
|
└── ⬜ パスワードリセット機能 (todo-services-2.md)
|
||||||
|
|
||||||
|
⬜ UI: 0/2 未開始 (0%)
|
||||||
|
├── ⬜ ログインフォーム実装 (todo-ui-1.md)
|
||||||
|
└── ⬜ 登録フォーム実装 (todo-ui-2.md)
|
||||||
|
|
||||||
|
⬜ Tests: 0/1 未開始 (0%)
|
||||||
|
└── ⬜ 認証機能テスト (todo-tests-1.md)
|
||||||
|
```
|
||||||
|
|
||||||
|
**推奨アクション:**
|
||||||
|
- 実行可能タスク: Models残り1タスク (高優先度)
|
||||||
|
- ブロック解除: Models完了後にServices 2タスクが実行可能
|
||||||
|
- 並行作業: UI系タスクは独立して実行可能
|
||||||
|
- 全完了時: 🎉 PBI完了祝福メッセージ
|
||||||
|
|
||||||
|
### 2. 全PBI一覧表示(引数なし)
|
||||||
|
|
||||||
|
**PBI別サマリー(カテゴリ・グループ情報含む):**
|
||||||
|
```
|
||||||
|
=== PBI 一覧 ===
|
||||||
|
|
||||||
|
✅ PBI #123: ユーザー認証機能
|
||||||
|
📊 進捗: 8/8 (100%) | フェーズ: 完了
|
||||||
|
📋 カテゴリ: Setup(✅), Models(✅), Services(✅), UI(✅), Tests(✅)
|
||||||
|
🕒 期間: 2024-01-01 ~ 2024-01-08 (8日)
|
||||||
|
🔗 URL: https://github.com/org/repo/issues/123
|
||||||
|
|
||||||
|
⏳ PBI #124: 商品管理機能
|
||||||
|
📊 進捗: 3/10 (30%) | フェーズ: 実装中
|
||||||
|
📋 カテゴリ: Setup(✅), Models(🔄), Services(⏳), UI(⬜), Tests(⬜)
|
||||||
|
🚧 ブロック: 2タスク (Models完了待ち)
|
||||||
|
🔗 URL: https://github.com/org/repo/issues/124
|
||||||
|
|
||||||
|
📋 PBI #125: 決済システム
|
||||||
|
📊 進捗: 0/6 (0%) | フェーズ: リファインメント中
|
||||||
|
📋 グループ: Group 2実行中 (技術・アーキテクチャ設計)
|
||||||
|
🔗 URL: https://github.com/org/repo/issues/125
|
||||||
|
|
||||||
|
⬜ PBI #126: レポート機能
|
||||||
|
📊 進捗: 0/0 (0%) | フェーズ: 未開始
|
||||||
|
📋 ステータス: Issue作成済み、リファインメント待ち
|
||||||
|
🔗 URL: https://github.com/org/repo/issues/126
|
||||||
|
```
|
||||||
|
|
||||||
|
**全体サマリー(カテゴリ・フェーズ別):**
|
||||||
|
```
|
||||||
|
=== 全体サマリー ===
|
||||||
|
📊 PBI進捗: 1/4 完了 (25%)
|
||||||
|
📋 タスク進捗: 11/24 完了 (45.8%)
|
||||||
|
⏳ 実行中: 2タスク、1リファインメント
|
||||||
|
|
||||||
|
📈 フェーズ別状況:
|
||||||
|
✅ 完了: 1 PBI
|
||||||
|
🔄 実装中: 1 PBI
|
||||||
|
📋 リファインメント中: 1 PBI
|
||||||
|
⬜ 未開始: 1 PBI
|
||||||
|
|
||||||
|
📂 カテゴリ別進捗:
|
||||||
|
✅ Setup: 3/3 完了 (100%)
|
||||||
|
🔄 Models: 4/6 進行中 (66.7%)
|
||||||
|
⏳ Services: 2/8 開始可能 (25%)
|
||||||
|
⬜ UI: 1/6 待機中 (16.7%)
|
||||||
|
⬜ Tests: 1/1 未開始 (0%)
|
||||||
|
|
||||||
|
🎯 次の実行可能アクション:
|
||||||
|
💡 PBI #124: Models残り2タスク
|
||||||
|
📋 PBI #125: Group 3 (タスク構成) 実行可能
|
||||||
|
➕ PBI #126: Group 1 (要件確定) から開始
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 状況に応じた案内表示
|
||||||
|
|
||||||
|
**進捗状況別のメッセージ:**
|
||||||
|
- 全完了: 🎉 すべてのタスクが完了しています!
|
||||||
|
- 実行中あり: 💡 `/task-next` で次のタスクを実行できます
|
||||||
|
- 未着手のみ: 💡 `/task-next` で次のタスクを開始できます
|
||||||
|
|
||||||
|
## 使用するコマンド
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# PBI一覧の取得
|
||||||
|
find tasks -name "pbi-*" -type d | sort
|
||||||
|
|
||||||
|
# リファインメント進捗の確認
|
||||||
|
grep "^phase:" tasks/pbi-$1/README.md
|
||||||
|
ls tasks/pbi-$1/.refine-progress.json 2>/dev/null
|
||||||
|
|
||||||
|
# カテゴリ別タスクカウント
|
||||||
|
find tasks/pbi-$1 -name "todo-setup-*.md" | wc -l
|
||||||
|
find tasks/pbi-$1 -name "wip-models-*.md" | wc -l
|
||||||
|
find tasks/pbi-$1 -name "done-services-*.md" | wc -l
|
||||||
|
find tasks/pbi-$1 -name "*-ui-*.md" | wc -l
|
||||||
|
find tasks/pbi-$1 -name "*-tests-*.md" | wc -l
|
||||||
|
|
||||||
|
# 全体のカテゴリ別集計
|
||||||
|
for cat in setup models services ui tests; do
|
||||||
|
echo "$cat: $(find tasks -name "*-$cat-*.md" | wc -l)"
|
||||||
|
done
|
||||||
|
|
||||||
|
# 優先度・依存関係情報
|
||||||
|
grep "priority:" tasks/pbi-$1/todo-*.md
|
||||||
|
grep "depends_on:" tasks/pbi-$1/todo-*.md
|
||||||
|
grep "estimated_hours:" tasks/pbi-$1/todo-*.md
|
||||||
|
|
||||||
|
# リファインメントグループ履歴
|
||||||
|
if [ -f "tasks/pbi-$1/README.md" ]; then
|
||||||
|
sed -n '/## リファインメント履歴/,/## タスク一覧/p' tasks/pbi-$1/README.md
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 実行可能タスクの特定
|
||||||
|
for todo_file in tasks/pbi-$1/todo-*.md; do
|
||||||
|
# 依存関係チェック後、実行可能なタスクを特定
|
||||||
|
depends=$(grep "depends_on:" "$todo_file" | cut -d: -f2)
|
||||||
|
# 依存タスクがすべて完了している場合のみ表示
|
||||||
|
done
|
||||||
|
|
||||||
|
# フェーズ別PBI集計
|
||||||
|
grep "^phase:" tasks/pbi-*/README.md | sort | uniq -c
|
||||||
|
```
|
||||||
|
|
||||||
|
## ファイル構造の想定
|
||||||
|
|
||||||
|
```
|
||||||
|
tasks/
|
||||||
|
├── pbi-123/
|
||||||
|
│ ├── .refine-progress.json # リファインメント進捗(Group状態)
|
||||||
|
│ ├── README.md # PBI概要、グループ履歴、カテゴリ別タスク
|
||||||
|
│ ├── done-setup-1.md # 完了タスク(カテゴリ別)
|
||||||
|
│ ├── wip-models-2.md # 実行中タスク
|
||||||
|
│ ├── todo-services-1.md # 未着手タスク
|
||||||
|
│ ├── todo-services-2.md
|
||||||
|
│ ├── todo-ui-1.md
|
||||||
|
│ ├── todo-ui-2.md
|
||||||
|
│ └── todo-tests-1.md
|
||||||
|
├── pbi-124/
|
||||||
|
│ ├── .refine-progress.json # Group 2で中断中
|
||||||
|
│ └── README.md # 部分的なリファインメント情報
|
||||||
|
└── pbi-125/
|
||||||
|
└── (リファインメント未実行)
|
||||||
|
```
|
||||||
|
|
||||||
|
**リファインメント状態の分類:**
|
||||||
|
- `phase: completed` - 全グループ完了、タスク実装中
|
||||||
|
- `phase: in-progress` - グループ途中で中断
|
||||||
|
- `phase: planning` - リファインメント未開始
|
||||||
|
- `.refine-progress.json` - グループ進捗と決定履歴
|
||||||
|
|
||||||
|
## エラーハンドリング
|
||||||
|
|
||||||
|
- 指定されたPBIが存在しない場合の適切なエラー
|
||||||
|
- README.mdが見つからない場合の警告
|
||||||
|
- tasksディレクトリが存在しない場合の案内
|
||||||
|
- タスクファイルの形式が不正な場合の警告
|
||||||
|
|
||||||
|
## 表示される進捗指標
|
||||||
|
|
||||||
|
### PBI・フェーズレベル
|
||||||
|
1. **PBI進捗**: 完了PBI数/全PBI数
|
||||||
|
2. **フェーズ分布**: 完了/実装中/リファインメント中/未開始
|
||||||
|
3. **リファインメント品質**: Group完了度、決定事項の詳細度
|
||||||
|
|
||||||
|
### タスク・カテゴリレベル
|
||||||
|
4. **タスク進捗**: 完了タスク数/全タスク数(カテゴリ別)
|
||||||
|
5. **カテゴリバランス**: Setup→Models→Services→UI→Tests の進行状況
|
||||||
|
6. **依存関係状況**: ブロックされているタスク数、実行可能タスク数
|
||||||
|
|
||||||
|
### アクティビティレベル
|
||||||
|
7. **実行中作業**: 現在のwipタスク数、推定残り時間
|
||||||
|
8. **ボトルネック**: 進捗を阻害しているカテゴリ・依存関係
|
||||||
|
9. **最適化提案**: 並行実行可能タスク、優先度調整の提案
|
||||||
|
|
||||||
|
## 完了条件
|
||||||
|
|
||||||
|
- 指定されたPBIまたは全PBIの状況が正確に表示されている
|
||||||
|
- 進捗率が正しく計算されている
|
||||||
|
- 次のアクションが適切に提案されている
|
||||||
|
- エラー時も適切なガイダンスが表示されている
|
||||||
|
|
||||||
|
実行を開始しますか?
|
||||||
410
commands/task-sync.md
Normal file
410
commands/task-sync.md
Normal file
@@ -0,0 +1,410 @@
|
|||||||
|
---
|
||||||
|
description: GitHub Issueの最新情報を同期してタスクとの整合性を確認する(リファインメントグループ・カテゴリ考慮)
|
||||||
|
argument-hint: <issue_number> [--force-rerefine] [--preserve-completed]
|
||||||
|
allowed-tools: Bash, Read, Write, Edit, Glob
|
||||||
|
---
|
||||||
|
|
||||||
|
# GitHub Issue 同期
|
||||||
|
|
||||||
|
指定されたGitHub Issue #$1 の最新情報をローカルのPBIデータと同期し、リファインメントグループとカテゴリ構造を考慮した再構成を提案します。
|
||||||
|
|
||||||
|
## 同期オプション
|
||||||
|
|
||||||
|
```bash
|
||||||
|
/task-sync 123 # 標準同期(変更検知時のみ更新)
|
||||||
|
/task-sync 123 --force-rerefine # 強制的にリファインメント再実行
|
||||||
|
/task-sync 123 --preserve-completed # 完了タスクは保護して同期
|
||||||
|
```
|
||||||
|
|
||||||
|
## 実行内容
|
||||||
|
|
||||||
|
### 1. 多層同期状況確認
|
||||||
|
|
||||||
|
**ローカル情報の取得:**
|
||||||
|
- `tasks/pbi-$1/README.md` からローカルの最終更新日時を取得
|
||||||
|
- リファインメント完了フェーズ(phase)の確認
|
||||||
|
- `.refine-progress.json` からグループ進捗の確認
|
||||||
|
- カテゴリ別タスク状況の把握
|
||||||
|
|
||||||
|
**リモート情報の取得:**
|
||||||
|
```bash
|
||||||
|
gh issue view $1 --json title,body,url,updatedAt,labels,milestone
|
||||||
|
```
|
||||||
|
|
||||||
|
**多層変更検知:**
|
||||||
|
- **Issue層**: タイトル、本文、ラベル、マイルストーンの変更
|
||||||
|
- **リファインメント層**: 既存のGroup決定事項との整合性
|
||||||
|
- **タスク層**: カテゴリ構造と実装方針の妥当性
|
||||||
|
- **時系列層**: Issue更新とローカル更新の時間差分析
|
||||||
|
|
||||||
|
### 2. 同期状況の表示(多層分析)
|
||||||
|
|
||||||
|
```
|
||||||
|
=== GitHub Issue #$1 同期状況 ===
|
||||||
|
|
||||||
|
📊 基本情報
|
||||||
|
ローカル最終更新: 2024-01-15T10:30:00Z
|
||||||
|
Issue最終更新: 2024-01-16T14:20:00Z
|
||||||
|
リファインメントフェーズ: completed (Group 3完了)
|
||||||
|
実装進捗: 3/8 タスク完了 (37.5%)
|
||||||
|
|
||||||
|
🔍 変更検出結果
|
||||||
|
✅ タイトル: 変更なし
|
||||||
|
⚠️ 本文: 更新あり (新機能要件追加の可能性)
|
||||||
|
✅ ラベル: 変更なし
|
||||||
|
⚠️ マイルストーン: v1.0 → v1.1 に変更
|
||||||
|
|
||||||
|
📋 リファインメント整合性チェック
|
||||||
|
Group 1 (要件・制約): 📝 再確認が必要
|
||||||
|
- Issue本文の新要件がGroup 1決定と矛盾する可能性
|
||||||
|
Group 2 (技術設計): ✅ 整合性維持
|
||||||
|
- 技術スタック選択に影響なし
|
||||||
|
Group 3 (タスク構成): ⚠️ 見直し推奨
|
||||||
|
- 新要件により追加タスクが必要な可能性
|
||||||
|
|
||||||
|
🏗️ カテゴリ別影響分析
|
||||||
|
Setup: ✅ 影響なし (完了済み)
|
||||||
|
Models: ⚠️ 新データ要件の可能性
|
||||||
|
Services: ⚠️ API拡張が必要な可能性
|
||||||
|
UI: 📝 新画面要件を確認必要
|
||||||
|
Tests: ⚠️ テストケース追加が必要な可能性
|
||||||
|
|
||||||
|
=== 更新されたIssue内容(抜粋) ===
|
||||||
|
【新機能要件】
|
||||||
|
+ "ユーザーは複数の認証方法を選択できる"
|
||||||
|
+ "ソーシャルログイン(Google、GitHub)を追加"
|
||||||
|
|
||||||
|
【変更された要件】
|
||||||
|
~ "パスワードリセット" → "パスワードリセット + 2FA設定"
|
||||||
|
|
||||||
|
... (続きは GitHub Issue で確認)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 多層ローカル情報の更新
|
||||||
|
|
||||||
|
**README.mdの段階的更新:**
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
issue: $1
|
||||||
|
title: <最新のタイトル>
|
||||||
|
url: <最新のURL>
|
||||||
|
phase: <current_phase>
|
||||||
|
sync_history:
|
||||||
|
- date: 2024-01-16T14:30:00Z
|
||||||
|
changes: ["milestone_updated", "requirements_added"]
|
||||||
|
impact_analysis: "Group1_recheck_required"
|
||||||
|
created: <元の作成日時>
|
||||||
|
updated: <現在の日時>
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
**同期履歴の記録:**
|
||||||
|
- 同期実行日時と検出した変更内容
|
||||||
|
- 影響を受けるリファインメントグループの特定
|
||||||
|
- カテゴリ別の影響度評価
|
||||||
|
- 推奨される次のアクション
|
||||||
|
|
||||||
|
**リファインメント整合性の更新:**
|
||||||
|
- `.refine-progress.json` に同期結果を反映
|
||||||
|
- Group決定事項の再検証が必要な箇所をマーク
|
||||||
|
- カテゴリ別タスクの妥当性フラグ更新
|
||||||
|
|
||||||
|
### 4. 構造化タスク再構成の検討
|
||||||
|
|
||||||
|
**変更内容のレイヤー別分析:**
|
||||||
|
```
|
||||||
|
📊 要件レイヤー分析
|
||||||
|
新機能: ソーシャルログイン追加
|
||||||
|
機能拡張: 2FA機能の追加
|
||||||
|
削除機能: なし
|
||||||
|
優先度変更: マイルストーン v1.0 → v1.1
|
||||||
|
|
||||||
|
🏗️ アーキテクチャへの影響
|
||||||
|
認証フロー: 大幅変更が必要
|
||||||
|
データモデル: user_auth_methods テーブル追加
|
||||||
|
API設計: OAuth エンドポイント追加
|
||||||
|
セキュリティ: 外部プロバイダ連携考慮
|
||||||
|
|
||||||
|
📋 カテゴリ別インパクト評価
|
||||||
|
Setup: ✅ 影響小 (OAuth ライブラリ追加のみ)
|
||||||
|
Models: 🔴 影響大 (新テーブル設計必要)
|
||||||
|
Services: 🔴 影響大 (OAuth実装、2FA実装)
|
||||||
|
UI: 🟡 影響中 (ソーシャルログインボタン追加)
|
||||||
|
Tests: 🟡 影響中 (OAuth/2FA テストケース追加)
|
||||||
|
```
|
||||||
|
|
||||||
|
**現在のタスク状況とリスク評価:**
|
||||||
|
```
|
||||||
|
📊 現在のタスク状況
|
||||||
|
✅ 完了: 1タスク (Setup完了)
|
||||||
|
影響: なし(完了済みタスクは保護)
|
||||||
|
|
||||||
|
⏳ 実行中: 1タスク (Models: User model実装)
|
||||||
|
リスク: 🔴 高
|
||||||
|
理由: 認証データ構造の大幅変更が必要
|
||||||
|
推奨: 現在の作業を一時停止し、設計見直し
|
||||||
|
|
||||||
|
⬜ 未着手: 6タスク
|
||||||
|
影響: 🔴 大部分で見直し必要
|
||||||
|
Services: OAuth/2FA実装により大幅変更
|
||||||
|
UI: ソーシャルログイン対応で変更
|
||||||
|
Tests: 新機能に対応したテスト設計が必要
|
||||||
|
```
|
||||||
|
|
||||||
|
**リファインメントグループへの影響:**
|
||||||
|
```
|
||||||
|
🔄 Group 1 (要件・制約) - 再実行推奨
|
||||||
|
現在の決定: 基本認証のみ、中規模対応
|
||||||
|
新要件: マルチ認証、外部連携、2FA
|
||||||
|
→ 要件確定からやり直しが必要
|
||||||
|
|
||||||
|
🔄 Group 2 (技術設計) - 部分見直し
|
||||||
|
現在の設計: JWT単体、シンプル認証
|
||||||
|
新設計: OAuth対応、2FA統合、プロバイダ管理
|
||||||
|
→ 認証アーキテクチャの再設計が必要
|
||||||
|
|
||||||
|
🔄 Group 3 (タスク構成) - 全面見直し
|
||||||
|
現在: 8タスク、シンプル実装フロー
|
||||||
|
新構成: 12-15タスク想定、複雑な依存関係
|
||||||
|
→ 完全なタスク再分解が必要
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. 段階的再構成提案
|
||||||
|
|
||||||
|
**再構成戦略の選択肢:**
|
||||||
|
```
|
||||||
|
🎯 戦略A: 部分的更新(推奨)
|
||||||
|
対象: 未着手タスクのみ更新
|
||||||
|
期間: 2-3時間
|
||||||
|
リスク: 低
|
||||||
|
適用条件: 実行中タスクの影響が限定的
|
||||||
|
|
||||||
|
🔄 戦略B: 段階的リファインメント
|
||||||
|
対象: Group 2から再実行
|
||||||
|
期間: 4-6時間
|
||||||
|
リスク: 中
|
||||||
|
適用条件: 技術設計の大幅変更が必要
|
||||||
|
|
||||||
|
🏗️ 戦略C: 完全リファインメント
|
||||||
|
対象: Group 1から全面やり直し
|
||||||
|
期間: 1-2日
|
||||||
|
リスク: 高(既存作業の無駄)
|
||||||
|
適用条件: 要件が根本的に変更
|
||||||
|
```
|
||||||
|
|
||||||
|
**推奨戦略: 戦略B(段階的リファインメント)**
|
||||||
|
```
|
||||||
|
📋 実行プラン:
|
||||||
|
|
||||||
|
1. 現在の実行中タスク (wip-models-2.md) を一時停止
|
||||||
|
- 作業内容を実装メモに記録
|
||||||
|
- todo状態に戻して保留
|
||||||
|
|
||||||
|
2. Group 2 (技術設計) から再実行
|
||||||
|
- OAuth/2FA対応のアーキテクチャ設計
|
||||||
|
- 新しいデータモデル設計
|
||||||
|
- API仕様の見直し
|
||||||
|
|
||||||
|
3. Group 3 (タスク構成) で新しいタスク分解
|
||||||
|
- Setup: OAuth ライブラリ追加
|
||||||
|
- Models: 認証関連テーブル設計(拡張版)
|
||||||
|
- Services: OAuth実装、2FA実装、既存API
|
||||||
|
- UI: ソーシャルログイン、2FA設定画面
|
||||||
|
- Tests: 統合認証テスト
|
||||||
|
|
||||||
|
4. 既存完了タスクの統合
|
||||||
|
- Setup-1 (完了済み) は新Setup-1にマージ
|
||||||
|
- Models-1 (実行中) は新Models-1として再設計
|
||||||
|
```
|
||||||
|
|
||||||
|
**カテゴリ別タスク影響分析:**
|
||||||
|
```
|
||||||
|
📂 Setup (影響: 小)
|
||||||
|
現在: todo-setup-1.md "プロジェクト環境構築"
|
||||||
|
新規: OAuth ライブラリ (passport, google-auth) 追加
|
||||||
|
|
||||||
|
📂 Models (影響: 大)
|
||||||
|
現在: wip-models-2.md "認証関連テーブル設計"
|
||||||
|
新規: user_auth_methods, oauth_tokens テーブル追加
|
||||||
|
2FA設定テーブル追加
|
||||||
|
|
||||||
|
📂 Services (影響: 大)
|
||||||
|
現在: 2タスク (基本認証API)
|
||||||
|
新規: 4-5タスク (OAuth, 2FA, 統合認証)
|
||||||
|
|
||||||
|
📂 UI (影響: 中)
|
||||||
|
現在: 2タスク (ログイン・登録フォーム)
|
||||||
|
新規: 3-4タスク (ソーシャル選択、2FA設定追加)
|
||||||
|
|
||||||
|
📂 Tests (影響: 中)
|
||||||
|
現在: 1タスク (基本認証テスト)
|
||||||
|
新規: 2-3タスク (OAuth, 2FA, 統合テスト)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6. 実行オプションと安全対策
|
||||||
|
|
||||||
|
**Option A: 安全な部分更新(推奨)**
|
||||||
|
```bash
|
||||||
|
/task-sync 123 --preserve-completed
|
||||||
|
|
||||||
|
実行内容:
|
||||||
|
1. 完了タスク (done-*.md) は保護
|
||||||
|
2. 実行中タスク (wip-*.md) は todo に戻して保留
|
||||||
|
3. 未着手タスク (todo-*.md) のみ削除・再生成
|
||||||
|
4. README.md の履歴に同期ログ追加
|
||||||
|
5. Group 2 から段階的リファインメント実行
|
||||||
|
```
|
||||||
|
|
||||||
|
**Option B: 強制的な完全リファインメント**
|
||||||
|
```bash
|
||||||
|
/task-sync 123 --force-rerefine
|
||||||
|
|
||||||
|
⚠️ 危険: 全ての進行中作業が失われます
|
||||||
|
実行内容:
|
||||||
|
1. .refine-progress.json をリセット
|
||||||
|
2. 全タスクファイル削除(backup作成後)
|
||||||
|
3. Group 1 から完全リファインメント実行
|
||||||
|
4. 新しいカテゴリ構造で再構築
|
||||||
|
```
|
||||||
|
|
||||||
|
**手動調整オプション**
|
||||||
|
```bash
|
||||||
|
段階的手動調整:
|
||||||
|
1. 特定カテゴリのみ更新
|
||||||
|
find tasks/pbi-$1 -name "todo-services-*.md" -delete
|
||||||
|
# サービス系タスクのみ手動再作成
|
||||||
|
|
||||||
|
2. 実行中タスクの内容更新
|
||||||
|
# wip-models-2.md の要件を新仕様に合わせて編集
|
||||||
|
# 実装メモに移行作業を記録
|
||||||
|
|
||||||
|
3. 依存関係の再調整
|
||||||
|
# カテゴリ間依存関係を新要件に合わせて更新
|
||||||
|
# タスクファイルの depends_on フィールド修正
|
||||||
|
```
|
||||||
|
|
||||||
|
**安全対策とバックアップ**
|
||||||
|
```bash
|
||||||
|
# 実行前の自動バックアップ
|
||||||
|
cp -r tasks/pbi-$1 tasks/pbi-$1.backup.$(date +%Y%m%d_%H%M%S)
|
||||||
|
|
||||||
|
# 段階的実行での中断ポイント
|
||||||
|
# Group 2 完了後、Group 3 実行前にユーザー確認
|
||||||
|
# カテゴリ別タスク生成後、依存関係確認でユーザー確認
|
||||||
|
|
||||||
|
# ロールバック機能
|
||||||
|
# 問題が発生した場合、前回の同期状態に戻すオプション
|
||||||
|
```
|
||||||
|
|
||||||
|
## 使用するコマンド
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 多層情報取得
|
||||||
|
gh issue view $1 --json title,body,url,updatedAt,labels,milestone,assignees
|
||||||
|
|
||||||
|
# ローカル状態の包括的確認
|
||||||
|
grep "^updated:" tasks/pbi-$1/README.md
|
||||||
|
grep "^phase:" tasks/pbi-$1/README.md
|
||||||
|
ls tasks/pbi-$1/.refine-progress.json 2>/dev/null
|
||||||
|
|
||||||
|
# リファインメントグループ進捗の確認
|
||||||
|
if [ -f "tasks/pbi-$1/.refine-progress.json" ]; then
|
||||||
|
jq -r '.current_group, .completed_groups[].group' tasks/pbi-$1/.refine-progress.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
# カテゴリ別タスク状況確認
|
||||||
|
for category in setup models services ui tests; do
|
||||||
|
echo "$category:"
|
||||||
|
find tasks/pbi-$1 -name "done-$category-*.md" | wc -l
|
||||||
|
find tasks/pbi-$1 -name "wip-$category-*.md" | wc -l
|
||||||
|
find tasks/pbi-$1 -name "todo-$category-*.md" | wc -l
|
||||||
|
done
|
||||||
|
|
||||||
|
# 依存関係とブロック状況の確認
|
||||||
|
for todo_file in tasks/pbi-$1/todo-*.md; do
|
||||||
|
if [ -f "$todo_file" ]; then
|
||||||
|
depends=$(grep "depends_on:" "$todo_file" | cut -d: -f2)
|
||||||
|
echo "$(basename $todo_file): depends on [$depends]"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# 同期履歴の更新
|
||||||
|
sync_entry="{
|
||||||
|
\"date\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\",
|
||||||
|
\"changes\": [\"issue_updated\"],
|
||||||
|
\"impact_analysis\": \"group2_recheck_required\"
|
||||||
|
}"
|
||||||
|
|
||||||
|
# README.mdの拡張メタデータ更新
|
||||||
|
sed -i.bak "s/^updated:.*/updated: $(date -u +%Y-%m-%dT%H:%M:%SZ)/" tasks/pbi-$1/README.md
|
||||||
|
echo "sync_history:" >> tasks/pbi-$1/README.md
|
||||||
|
echo " - $sync_entry" >> tasks/pbi-$1/README.md
|
||||||
|
|
||||||
|
# バックアップの作成
|
||||||
|
backup_dir="tasks/pbi-$1.backup.$(date +%Y%m%d_%H%M%S)"
|
||||||
|
cp -r tasks/pbi-$1 $backup_dir
|
||||||
|
echo "Backup created: $backup_dir"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 同期判定ロジック
|
||||||
|
|
||||||
|
**変更検知の条件:**
|
||||||
|
1. **タイトル変更**: ローカルタイトル ≠ Issue タイトル
|
||||||
|
2. **内容更新**: Issue updatedAt > ローカル updated
|
||||||
|
3. **URL変更**: ローカルURL ≠ Issue URL
|
||||||
|
|
||||||
|
**同期の必要性:**
|
||||||
|
- いずれかの変更が検知された場合
|
||||||
|
- ユーザーが明示的に同期を要求した場合
|
||||||
|
|
||||||
|
## 再構成時の安全対策
|
||||||
|
|
||||||
|
**実行中タスクの保護:**
|
||||||
|
- wipタスクがある場合は慎重な操作を促す
|
||||||
|
- 破壊的変更前の確認プロンプト
|
||||||
|
|
||||||
|
**完了タスクの保護:**
|
||||||
|
- doneタスクは原則として変更しない
|
||||||
|
- 履歴として保持
|
||||||
|
|
||||||
|
**バックアップの推奨:**
|
||||||
|
- 重要な変更前のディレクトリバックアップ提案
|
||||||
|
|
||||||
|
## エラーハンドリング
|
||||||
|
|
||||||
|
- GitHub CLI未認証時のエラー
|
||||||
|
- 指定されたIssueが存在しない場合
|
||||||
|
- PBIディレクトリが存在しない場合
|
||||||
|
- ネットワーク接続エラー時の対応
|
||||||
|
|
||||||
|
## 完了条件
|
||||||
|
|
||||||
|
### 基本同期要件
|
||||||
|
- Issue情報が正常に取得されている
|
||||||
|
- ローカル情報が最新の内容で更新されている
|
||||||
|
- 変更内容が適切に分析・表示されている
|
||||||
|
- 同期履歴が記録されている
|
||||||
|
|
||||||
|
### リファインメント整合性要件
|
||||||
|
- Group 1-3 の決定事項と新Issue内容の整合性が評価されている
|
||||||
|
- 影響を受けるグループが特定されている
|
||||||
|
- 必要な再リファインメント範囲が明確になっている
|
||||||
|
|
||||||
|
### カテゴリ・タスク整合性要件
|
||||||
|
- カテゴリ別の影響度が正確に評価されている
|
||||||
|
- 依存関係の変更が適切に分析されている
|
||||||
|
- 実行中タスクへの影響とリスクが明示されている
|
||||||
|
- 完了タスクの保護策が実施されている
|
||||||
|
|
||||||
|
### 再構成提案要件
|
||||||
|
- 複数の再構成戦略が提示されている
|
||||||
|
- 推奨戦略の根拠が明確に示されている
|
||||||
|
- 実行プランが具体的で実行可能
|
||||||
|
- 安全対策とロールバック手順が提供されている
|
||||||
|
|
||||||
|
### ユーザー支援要件
|
||||||
|
- 次のアクションが明確で実行可能
|
||||||
|
- リスクと期待効果が適切に説明されている
|
||||||
|
- 段階的実行でのチェックポイントが設定されている
|
||||||
|
|
||||||
|
実行を開始しますか?
|
||||||
69
plugin.lock.json
Normal file
69
plugin.lock.json
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
{
|
||||||
|
"$schema": "internal://schemas/plugin.lock.v1.json",
|
||||||
|
"pluginId": "gh:krhrtky/agents:plugins/pbi-task-manager",
|
||||||
|
"normalized": {
|
||||||
|
"repo": null,
|
||||||
|
"ref": "refs/tags/v20251128.0",
|
||||||
|
"commit": "6d7bc7c539e766aa2dce53d767504d341d71440b",
|
||||||
|
"treeHash": "7c4b71676f74ae04b416a3d57ca47082ec783e464adfbd269426953d751e100d",
|
||||||
|
"generatedAt": "2025-11-28T10:19:58.027869Z",
|
||||||
|
"toolVersion": "publish_plugins.py@0.2.0"
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"remote": "git@github.com:zhongweili/42plugin-data.git",
|
||||||
|
"branch": "master",
|
||||||
|
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
|
||||||
|
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
|
||||||
|
},
|
||||||
|
"manifest": {
|
||||||
|
"name": "pbi-task-manager",
|
||||||
|
"description": "Comprehensive task management system integrating GitHub Issues with structured refinement and execution workflows",
|
||||||
|
"version": "1.0.0"
|
||||||
|
},
|
||||||
|
"content": {
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"path": "README.md",
|
||||||
|
"sha256": "38467b88a093a4badd345a20ed21ca4f8d075099b3e3b464b2ceeb311b9b68eb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "agents/task-executor.md",
|
||||||
|
"sha256": "b098a91329a196567348da5c8e8bb8409a23003bc71f5ae4031681d2ae6a26b0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": ".claude-plugin/plugin.json",
|
||||||
|
"sha256": "b28255f50475aee237a668fb272401f6d8df73e7353a4a607d52c9d507eb1b11"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/task-status.md",
|
||||||
|
"sha256": "7ed9c139caf0e959cd2192ae42603b3383c0d11bfbc19e1c786295971b50cc78"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/task-sync.md",
|
||||||
|
"sha256": "46bf6dd52d6861d07b88942ddc45857d68d4baac4a1365d4d6561cab0dccb7c5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/task-list.md",
|
||||||
|
"sha256": "2ddd41353aaf58d580ae976901633c78ee307ddf5238f04642decd795df00879"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/task-spec.md",
|
||||||
|
"sha256": "d6c921de4838c3c329731eada119090c474df1caffcdc5e042cf67f2aadfef9e"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/task-refine.md",
|
||||||
|
"sha256": "acfabdc28b47fa2906c204e00bd01e1e868b428a1b9ad1916e20fb729aac3428"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/task-next.md",
|
||||||
|
"sha256": "a7bf835812a81805c73885bcd149d56f3e7f5e6e79667b070818ead1dfffc18b"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dirSha256": "7c4b71676f74ae04b416a3d57ca47082ec783e464adfbd269426953d751e100d"
|
||||||
|
},
|
||||||
|
"security": {
|
||||||
|
"scannedAt": null,
|
||||||
|
"scannerVersion": null,
|
||||||
|
"flags": []
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user