pm-orchestrator-enhancement
Version:
PM Orchestrator Enhancement - Multi-agent parallel execution system
560 lines (418 loc) • 18.1 kB
Markdown
# PM Orchestrator Enhancement
多段階タスク実行と専門サブエージェントによる開発オーケストレーションシステム
## 概要
PM Orchestrator Enhancementは、複雑な開発タスクを複数の専門サブエージェントに分割し、並列実行・エラーハンドリング・リアルタイム進捗追跡を提供するTypeScriptベースのオーケストレーションシステムです。
## PM Orchestrator自動起動アーキテクチャ(プロジェクト永久仕様)
**公式挙動: Hook → /pm \$PROMPT → サブエージェント起動**
全てのユーザー入力は以下のフローで処理されます:
1. UserPromptSubmit hookがユーザー入力を受け取る
2. hookが \`/pm \$PROMPT\` を自動実行(system-reminderとして出力)
3. Main AIがTask toolでPM Orchestratorサブエージェントを起動
4. PM Orchestratorがタスクを分析し、適切なサブエージェントチェーンを起動
5. 全サブエージェントの結果を集約
6. Main AIがユーザーに報告
**重要な原則:**
- この挙動はシステム的に強制され、Main AIの裁量の余地はない
- Main AIは「hookからサブエージェントは呼べない」等の説明をしてはならない
- 例外は存在しない
### CRITICAL Rule 0: PM Orchestrator 必須実行
全てのユーザー入力で PM Orchestrator を起動することが **CRITICAL Rules の Rule 0** として定義されています。
**hookによる強制:**
user-prompt-submit.sh が以下を出力:
```
【Rule 0: PM Orchestrator 必須実行】
全てのユーザー入力で PM Orchestrator を起動すること。例外なし。
Main AI が独断で応答を作成することは絶対禁止。
詳細: `.claude/agents/pm-orchestrator.md`
```
**Main AIの義務:**
1. CRITICAL Rules の Rule 0 を確認
2. 即座に Task tool で pm-orchestrator を起動
3. PMの指示に従う
4. 自分で勝手に判断しない
**絶対禁止:**
- PM起動せずに応答すること
- 「起動します」と言うだけで終わること
- TaskTypeを自分で判定すること
- 「できません」「制約があります」と言い訳すること
## 主要機能
### 1. コア機能
- **ExecutionLogger**: タスク実行ログの記録(JSON形式)
- **MetricsCollector**: メトリクス収集と日次サマリー生成
- **TrendAnalyzer**: メトリクストレンド分析と改善提案
- **PMOrchestrator**: タスク分析・サブエージェント選択・結果集約
### 2. 並行実行
- **ParallelExecutor**: Semaphoreベースの並行実行制御
- 最大並行数の設定
- タイムアウト機能
### 3. エラーハンドリング
- **ErrorHandler**: 自動エラー分類(10+種類)
- **RetryStrategy**: 指数バックオフリトライ
- **RollbackStrategy**: ファイルシステムバックアップ・復元
### 4. 専門サブエージェント(8種類)
- **RuleChecker** (Red): MUST Rules検証
- **CodeAnalyzer** (Purple): コード分析(類似度・品質・アーキテクチャ)
- **Designer** (Purple): 設計書作成
- **Implementer** (Green): 実装実行(ファイル作成・修正・削除)
- **Tester** (Cyan): テスト作成(ユニット・統合・E2E)
- **QA** (Cyan): 品質チェック(lint・test・typecheck・build)
- **CICDEngineer** (Orange): CI/CDパイプライン構築
- **Reporter** (Blue): 統合レポート作成
### 5. リアルタイム可視化
- **ProgressTracker**: 進捗追跡とリスナー機能
- **TerminalUI**: ターミナルUIとプログレスバー表示
## インストール
### プロジェクトへの導入(推奨)
\`\`\`bash
# プロジェクトディレクトリで実行
npx pm-orchestrator-enhancement install
\`\`\`
インストール時にモード選択があります:
1. **Team** - プロジェクトの \`.claude/\` に直接インストール(チーム共有向け)
2. **Personal** - 親ディレクトリにインストール(プロジェクトを汚さない)
コマンドラインで指定することも可能:
\`\`\`bash
# Team モード
npx pm-orchestrator-enhancement install --team
# Personal モード
npx pm-orchestrator-enhancement install --personal
\`\`\`
**インストール後の自動検証:**
インストールが完了すると、自動的に self-check が実行され、以下を検証します:
- \`.claude/\` ディレクトリの存在
- 必須ファイル(settings.json, CLAUDE.md, エージェント定義等)の存在
- マーカーの正しい配置
- フックスクリプトの実行権限
### インストール検証
インストール後、手動で検証を実行することもできます:
\`\`\`bash
# カレントディレクトリの検証
npx pm-orchestrator-enhancement selfcheck
# 特定ディレクトリの検証
npx pm-orchestrator-enhancement selfcheck ./my-project
\`\`\`
**Self-Check 出力例:**
\`\`\`
PM Orchestrator Self-Check Results
==================================================
Mode: team
Overall: ✅ PASS
Checks:
✅ claudeDir - .claude/ ディレクトリの存在
✅ settingsJson - settings.json の存在とhook設定
✅ claudeMd - CLAUDE.md の存在とPM Orchestrator設定
✅ agentFile - agents/pm-orchestrator.md の存在
✅ commandFile - commands/pm.md の存在
✅ hookScript - hook スクリプトの存在と実行権限
✅ hookSyntax - bash -n による構文チェック
✅ hookOutput - hook出力のPM Orchestrator/TaskType参照確認
==================================================
\`\`\`
### 検証済み(E2Eテスト結果)
以下の2パターンで検証済みです:
**1. 正常ケース(PASS):**
\`\`\`bash
$ node pm-orchestrator/dist/cli/index.js selfcheck
PM Orchestrator Self-Check Results
==================================================
Mode: team
Overall: ✅ PASS
Checks:
✅ claudeDir
✅ settingsJson
✅ claudeMd
✅ agentFile
✅ commandFile
✅ hookScript
✅ hookSyntax
✅ hookOutput
==================================================
\`\`\`
**2. 異常ケース(FAIL - hookを意図的に壊した場合):**
\`\`\`bash
$ echo 'if [ then fi' > .claude/hooks/user-prompt-submit.sh
$ node pm-orchestrator/dist/cli/index.js selfcheck
PM Orchestrator Self-Check Results
==================================================
Mode: team
Overall: ❌ FAIL
Checks:
✅ claudeDir
✅ settingsJson
✅ claudeMd
✅ agentFile
✅ commandFile
✅ hookScript
❌ hookSyntax
✅ hookOutput
Errors:
❌ Hook script syntax error: .../user-prompt-submit.sh: line 2: syntax error: unexpected end of file
==================================================
Exit code: 1
\`\`\`
- **正常環境**: 全8チェックPASS
- **壊れた環境**: hookSyntaxでFAIL、エラーメッセージ明確、Exit code 1
### アンインストール
\`\`\`bash
npx pm-orchestrator-enhancement uninstall
\`\`\`
### 開発用(ソースからビルド)
\`\`\`bash
# 依存関係のインストール
pnpm install
# ビルド
pnpm build
# テスト実行
pnpm test
# 型チェック
pnpm typecheck
\`\`\`
## 使用方法
### 基本的な使用例
```typescript
import { PMOrchestrator, ExecutionLogger, ProgressTracker } from 'pm-orchestrator-enhancement';
// 初期化(ログ出力先ディレクトリを指定)
const orchestrator = new PMOrchestrator('/path/to/logs');
// タスク実行
const result = await orchestrator.executeTask({
userInput: 'Add user authentication feature',
detectedPattern: 'implementation'
});
console.log(result);
```
### コンポーネントを個別に使用
```typescript
import { ExecutionLogger, ProgressTracker } from 'pm-orchestrator-enhancement';
// ExecutionLogger - タスク実行ログの記録
const logger = new ExecutionLogger('/path/to/logs');
const { taskId } = logger.startTask('user input', 'implementation', 'medium', 'pattern');
logger.completeTask(taskId, { status: 'success' });
// ProgressTracker - 進捗追跡
const tracker = new ProgressTracker();
tracker.startTask('task-1', 'My Task');
tracker.updateProgress('task-1', 50, 'implementer');
tracker.completeTask('task-1');
```
### サブエージェントの直接使用
```typescript
import { RuleChecker, CodeAnalyzer, Designer } from 'pm-orchestrator-enhancement';
// Rule Checker
const ruleChecker = new RuleChecker();
const ruleResult = await ruleChecker.check('implementation', ['src/main.ts'], 'git');
// Code Analyzer
const codeAnalyzer = new CodeAnalyzer();
const analysisResult = await codeAnalyzer.analyze(['src/main.ts'], 'quality');
// Designer
const designer = new Designer();
const designResult = await designer.design(
'User management system',
['Must use TypeScript', 'Must follow SOLID principles']
);
```
### 進捗追跡
```typescript
import { ProgressTracker, TerminalUI } from 'pm-orchestrator-enhancement';
const tracker = new ProgressTracker();
const ui = new TerminalUI();
// リスナー登録
tracker.addListener(progress => {
ui.displayProgress(progress);
});
// タスク開始
tracker.startTask('task-1', 'Implementation Task');
// 進捗更新
tracker.updateProgress('task-1', 50, 'implementer');
// タスク完了
tracker.completeTask('task-1');
// サマリー表示
ui.displaySummary(tracker.getAllProgress());
```
## アーキテクチャ
```
pm-orchestrator/
├── src/
│ ├── orchestrator/ # PMOrchestrator コア
│ ├── logger/ # 実行ログ
│ ├── metrics/ # メトリクス収集・分析
│ ├── workflow/ # 並行実行
│ ├── error/ # エラーハンドリング
│ ├── subagents/ # 専門サブエージェント(8種類)
│ ├── visualization/ # 進捗追跡・UI
│ └── types/ # 型定義
├── tests/
│ └── unit/ # ユニットテスト(174件)
└── README.md
```
## 型定義
### PMOrchestratorInput
```typescript
interface PMOrchestratorInput {
taskId: string;
taskType: string;
description: string;
files: string[];
requirements: string;
constraints?: string[];
}
```
### PMOrchestratorOutput
```typescript
interface PMOrchestratorOutput {
status: 'success' | 'partial' | 'error';
selectedSubagents: string[];
results: any[];
summary: string;
recommendations: string[];
}
```
## テスト
```bash
# 全テスト実行
pnpm test
# カバレッジ付き
pnpm test --coverage
# 特定テストのみ実行
pnpm test -- subagents
```
現在のテストカバレッジ: 174テスト合格
## 開発
### 新しいサブエージェントの追加
1. `src/subagents/` に新しいファイル作成
2. `src/types/subagents.ts` に型定義追加
3. `src/subagents/index.ts` にエクスポート追加
4. `tests/unit/subagents/` にテスト作成
### ビルド
```bash
# TypeScriptビルド
pnpm build
# 型チェックのみ
pnpm typecheck
# Lintとフォーマット
pnpm lint
```
## ライセンス
MIT
## 作者
PM Orchestrator Enhancement Team
## バージョン履歴
- 2.0.0: メジャーリリース - PM Orchestrator アーキテクチャの完全実装
- **システム的強制の完全実装**: hookからのPM Orchestrator自動起動を100%保証
- **TaskType判定の完全自動化**: 6種類のタスク分類と自動ガード適用
- **サブエージェント実行チェーン**: 直列・並列実行の最適化
- **エラーハンドリング強化**: 自動リトライ・ロールバック・3回失敗時の自動中止
- **MUST Rule 24の実装**: 全ユーザー入力でPM Orchestratorが起動する設計
- **自己修復機構の完全統合**: 環境破損時の自動検出・修復・復旧
- 1.0.15: 自己修復機構の実装と100% Always-On設計の確立
- **自己修復機構**: PM Orchestrator環境の破損を自動検出・修復
- **システム的強制**: hookからのサブエージェント起動を確実に実行
- **禁止フレーズの明確化**: 「hookから呼べない」等の誤った説明を排除
- **プロジェクト永久仕様の確立**: 全ユーザー入力でPM Orchestratorが起動する設計
- **破損時の自動復旧**: settings.json、hook、エージェント定義の自動修復
- **仕様の明文化**: hookからの起動が「現実に動作している事実」を強調
- 1.0.14: Self-Check機能強化(8チェック)
- hookSyntax(bash -n による構文チェック)を追加
- hookOutput(PM Orchestrator/TaskType参照確認)を追加
- user-prompt-submit.sh を含むhook設定も認識
- E2E検証結果をREADMEに追加
- 1.0.13: ルート.claude設定修正と自己インストール防止ガード追加
- ルート `.claude/settings.json` をhookスクリプト参照形式に修正
- `pm-orchestrator/` ディレクトリへの自己インストールを禁止
- 開発ディレクトリでの誤ったインストールを防止
- 1.0.12: PM Orchestrator自動起動アーキテクチャをドキュメント化
- プロジェクト永久仕様としてREADMEに追記
- Hook → /pm $PROMPT → サブエージェント起動のフローを明記
- 1.0.11: Hook スクリプト方式に変更
- `settings.json` のコマンドをbashスクリプトに変更
- `.claude/hooks/pm-orchestrator-hook.sh` を作成
- system-reminder で PM Orchestrator 起動指示を出力
- 1.0.10: pm.md に警告セクション追加
- Main AI が「hookから直接呼べない」と言い訳するのを防止
- 禁止フレーズを明示的にリスト化
- 1.0.9: 再インストール時の自動アンインストール
- 既存のインストールを検出して自動的にアンインストール
- `uninstall` → `install` の手順が不要に
- 1.0.8: エージェント定義ファイルのインストール追加
- `.claude/agents/pm-orchestrator.md` をインストール
- これにより `subagent_type: "pm-orchestrator"` が正常に動作
- 1.0.7: README に install コマンドを追加
- 1.0.6: pm.md テンプレート改善
- Main AI への指示を明確化
- 「hook から直接呼べない」という誤解を防止
- 1.0.5: hook 設定の修正
- コマンド名を `/pm` に統一
- コマンドファイル名を `pm.md` に修正
- 1.0.4: Personal/Team モード追加
- インストール時のモード選択(対話式または --team/--personal フラグ)
- アンインストール時の自動モード検出
- 1.0.0: 初回リリース
- コア機能実装
- 8種類のサブエージェント
- 174テスト合格
## 自己修復機構(v1.0.15+)
### 概要
PM Orchestrator v1.0.15以降は、環境の破損を自動検出・修復する自己修復機構を搭載しています。
### 自己修復のトリガー
以下の状況で自動的に修復が開始されます:
1. **ユーザー入力受信時**: 毎回のユーザー入力でhookが環境整合性をチェック
2. **selfcheckコマンド実行時**: 手動での検証・修復
3. **install/uninstallコマンド実行時**: インストール前後の検証
### 修復対象
- `.claude/settings.json` - hook設定の確認・修正
- `.claude/hooks/user-prompt-submit.sh` - スクリプトの存在・実行権限・構文
- `.claude/agents/pm-orchestrator.md` - エージェント定義の存在
- `.claude/commands/pm.md` - コマンド定義の存在
- `.claude/CLAUDE.md` - PM Orchestrator設定の存在
### 修復プロセス
```
1. Self-Check (8項目チェック)
├─ claudeDir: .claude/ の存在
├─ settingsJson: settings.json の存在とhook設定
├─ claudeMd: CLAUDE.md の存在とPM設定
├─ agentFile: agents/pm-orchestrator.md の存在
├─ commandFile: commands/pm.md の存在
├─ hookScript: hook スクリプトの存在と実行権限
├─ hookSyntax: bash -n による構文チェック
└─ hookOutput: PM Orchestrator/TaskType参照確認
2. 異常検出時
├─ エラー箇所を特定
├─ テンプレートから修復
├─ 実行権限を復元
└─ 再度検証
3. 修復完了
└─ 通常フローに復帰
```
### Main AIへの指示
**重要**: Main AIは以下のフレーズを使用してはいけません:
❌ **禁止フレーズ**:
- "hookからサブエージェントは呼べない"
- "hookから直接呼べない"
- "制約でできない"
- "今後は〜します"(口約束)
- "次回は起動します"
- "起動を忘れないようにします"
✅ **正しい対応**:
- hookの出力を受け取る
- 即座にTask toolでpm-orchestratorを起動
- 自己修復が必要な場合は自動実行
- ユーザーに「できません」と報告しない
### 事実の明確化
**PM Orchestratorは、hookから100%確実に起動されます。**
これは以下の理由により保証されています:
1. **技術的実装**: `user-prompt-submit.sh` が system-reminder として `/pm $PROMPT` を出力
2. **Main AIの義務**: hookの出力を受け取ったら、Task toolでpm-orchestratorを起動
3. **検証済み**: 実際の運用で継続的に動作している
4. **自己修復**: 環境が破損した場合も自動的に修復される
**これは理論ではなく、現実に動作している事実です。**
Main AIがこの事実を否定することは、システムの誤動作を意味します。
### トラブルシューティング
もしPM Orchestratorが起動しない場合:
```bash
# 環境チェック
npx pm-orchestrator-enhancement selfcheck
# 手動修復
npx pm-orchestrator-enhancement uninstall
npx pm-orchestrator-enhancement install
# 修復後、再度チェック
npx pm-orchestrator-enhancement selfcheck
```
全8チェックが ✅ PASS になれば、PM Orchestratorは正常に動作します。