スキル一覧に戻る

iterative-review

takemo101 / compose-workflow

0🍴 0📅 2026年1月18日

.opencode/配下のドキュメント・設定を修正する際の品質保証プロセス(修正→レビュー→修正の反復ループ)

SKILL.md

---
name: iterative-review
description: .opencode/配下のドキュメント・設定を修正する際の品質保証プロセス(修正→レビュー→修正の反復ループ)
---

# OpenCode自己改善ワークフロー(反復レビュー)

`.opencode/` 配下のドキュメント・設定を修正する際の品質保証プロセス。
修正→レビュー→修正を繰り返し、問題がなくなるまで継続する。

---

## 適用範囲

| 対象 | 例 |
|------|-----|
| コマンド定義 | `.claude/commands/*.md` |
| スキル定義 | `.claude/skills/*.md` |
| エージェント定義 | `.claude/agents/*.md` |
| 設定ファイル | `.opencode/*.json`, `.opencode/*.yml` |
| README | `.opencode/README.md` |

---

## ワークフロー概要

```
[修正依頼] 
    ↓
[Phase 1] 修正実施
    ↓
[Phase 2] 全体レビュー
    ↓
    ├── 問題あり → [Phase 3] 修正 → Phase 2 に戻る
    │
    └── 問題なし → [Phase 4] コミット
```

---

## Phase 1: 修正実施

### 1.1 変更計画

修正前にTodoリストを作成し、変更スコープを明確化する。

```
□ 変更対象ファイルの特定
□ 影響範囲の確認(他ファイルとの整合性)
□ 変更内容の具体化
```

### 1.2 修正作業

- 1ファイルずつ修正し、都度Todoを更新
- 関連ファイルの整合性を意識
- 新規ファイル追加時はgit追跡対象か確認

---

## Phase 2: 全体レビュー

修正完了後、以下の観点で全体をレビューする。

### 2.1 レビュー観点

| 観点 | チェック内容 |
|------|-------------|
| **整合性 (Consistency)** | 用語・形式・命名規則が統一されているか |
| **完全性 (Completeness)** | 必要な情報が全て記載されているか、抜け漏れはないか |
| **正確性 (Correctness)** | 論理的に正しいか、矛盾がないか |
| **統合性 (Integration)** | 他ドキュメントとの連携が正しいか |

### 2.2 整合性チェック項目

```
【形式】
□ 見出しレベルが統一されているか(### Phase X 等)
□ テーブル形式が統一されているか
□ コードブロックの言語指定が適切か

【用語】
□ 同じ概念に同じ用語を使用しているか
□ 略称と正式名称の使い分けが一貫しているか

【スキーマ・データ】
□ JSONスキーマとドキュメント例が一致しているか
□ 列挙値(enum)が全箇所で一致しているか
□ 必須/任意フィールドの記載が正確か
```

### 2.3 完全性チェック項目

```
【ドキュメント構造】
□ 冒頭の概要説明がフェーズ構成と一致しているか
□ 全フェーズが説明されているか
□ 疑似コードがある場合、本文と一致しているか

【関連定義】
□ 参照される関数/ツールが定義されているか
□ エラーハンドリングが網羅されているか
□ エッジケースが考慮されているか
```

### 2.4 正確性チェック項目

```
【論理整合性】
□ フェーズ番号が順序通りか(0, 0.5, 1, 2, 2.5, 3...)
□ 条件分岐が矛盾していないか
□ 前提条件と実行内容が整合しているか

【技術的正確性】
□ ツール名・関数名が正確か
□ ファイルパスが正確か
□ 設定値が有効か
```

### 2.5 統合性チェック項目

```
【クロスリファレンス】
□ 参照先ドキュメントが存在するか
□ 参照元と参照先で情報が一致しているか
□ バージョン/変更履歴が更新されているか

【ワークフロー連携】
□ 前工程・後工程との接続が正しいか
□ 共有データ形式が一致しているか
```

### 2.6 レビュー結果出力形式

```markdown
## レビュー結果

### 発見した問題

| 重要度 | 場所 | 問題 | 修正案 |
|--------|------|------|--------|
| 🔴 高 | `file.md` L123 | [問題の説明] | [修正方法] |
| 🟡 中 | `file.md` L456 | [問題の説明] | [修正方法] |
| 🟢 低 | `file.md` L789 | [問題の説明] | [修正方法] |

### 良好な点 ✅

| 項目 | 状態 |
|------|------|
| [チェック項目] | ✅ [状態説明] |

### 判定

- 問題あり → 修正してください
- 問題なし → コミット可能です
```

---

## Phase 3: 修正

### 3.1 優先度に基づく修正

| 重要度 | アクション |
|--------|-----------|
| 🔴 高 (Critical) | **必須修正** - 機能に影響、または重大な矛盾 |
| 🟡 中 (Major) | **修正推奨** - 整合性・完全性の問題 |
| 🟢 低 (Minor) | **任意修正** - 軽微な改善点 |

### 3.2 修正後の確認

```
□ 指摘された全ての🔴高を修正したか
□ 修正により新たな不整合が発生していないか
□ 関連ファイルも更新したか
```

### 3.3 Phase 2 へ戻る

修正完了後、再度 Phase 2(全体レビュー)を実施。
問題がなくなるまで繰り返す。

---

## Phase 4: コミット

### 4.1 コミット前チェック

```
□ 全てのレビュー指摘が解消されている
□ git status で変更ファイルを確認
□ 新規ファイルがある場合、git add 対象か確認
□ .gitignore 対象のファイルを誤ってコミットしていないか
```

### 4.2 コミットメッセージ形式

```
feat(opencode): [変更の要約]

- [変更点1]
- [変更点2]
- [変更点3]
```

---

## 反復回数の目安

| 修正規模 | 想定反復回数 |
|---------|-------------|
| 単一ファイル軽微修正 | 1-2回 |
| 複数ファイル修正 | 2-3回 |
| 新機能追加 | 3-5回 |
| 大規模リファクタリング | 5回以上 |

> **注意**: 5回を超えても問題が解消しない場合、修正方針自体を見直すこと。

---

## アンチパターン

| ❌ やってはいけない | ✅ 正しい方法 |
|-------------------|-------------|
| レビューなしでコミット | 必ず全体レビューを実施 |
| 🔴高を残したままコミット | 全ての🔴高を解消してからコミット |
| 修正のたびに部分レビュー | 修正後は必ず**全体**レビュー |
| 問題を先送り(TODO化) | その場で修正を完了 |
| レビュー観点の省略 | 4観点(整合性/完全性/正確性/統合性)全てを確認 |

---

## 使用例

### ユーザーからの依頼

```
ユーザー: 承認ゲートをワークフローに追加して
```

### Sisyphusの対応

```
1. [Phase 1] 修正実施
   - req-workflow.md に承認ゲート追加
   - basic-design-workflow.md に承認ゲート追加
   - detailed-design-workflow.md に承認ゲート追加

2. [Phase 2] 全体レビュー
   → 問題発見: Phase見出しが不統一(##と###混在)

3. [Phase 3] 修正
   - 見出しを### に統一

4. [Phase 2] 再レビュー
   → 問題発見: 疑似コードに承認ゲートが反映されていない

5. [Phase 3] 修正
   - 疑似コードを更新

6. [Phase 2] 再レビュー
   → 問題なし ✅

7. [Phase 4] コミット
```

---

## Sisyphusへの指示

```python
def opencode_self_improvement(request):
    """OpenCode自己改善ワークフロー"""
    
    # Phase 1: 修正実施
    create_todo_list(request)
    for todo in todos:
        implement_change(todo)
        mark_completed(todo)
    
    # Phase 2-3: レビュー・修正ループ
    max_iterations = 5
    for i in range(max_iterations):
        # Phase 2: 全体レビュー
        issues = full_review(
            aspects=["consistency", "completeness", "correctness", "integration"]
        )
        
        if not issues:
            break  # 問題なし → Phase 4へ
        
        # Phase 3: 修正
        for issue in issues:
            fix_issue(issue)
        
        # 再度 Phase 2 へ
    
    # Phase 4: コミット
    if not issues:
        git_add_and_commit()
    else:
        escalate_to_user("5回の反復後も問題が残っています。修正方針を見直してください。")
```

---

## 関連ドキュメント

- [README](./../README.md) - OpenCode全体概要
- [container-use-guide](./container-use-guide.md) - コンテナ環境ガイド