Back to skills
extension
Category: Development & EngineeringNo API key required

request-design-fix

A command to correct design deficiencies discovered during the implementation phase, etc., and to restore consistency.

personAuthor: jakexiaohubgithub

設計修正リクエスト (Design Fix)

実装フェーズ等で発覚した設計不備を修正し、整合性を回復させるためのコマンド。 実装者が「勝手に直す」のではなく、「設計に戻る」プロセスを正規化します。

入力

$ARGUMENTS

| パラメータ | 必須 | 説明 | |-----------|:----:|------| | issue | ✅ | 関連するGitHub Issue番号 | | target | ✅ | 修正対象の設計書パス | | problem | ✅ | 発生している問題・不備の説明 |


全体フロー

| Phase | 名称 | 内容 | |-------|------|------| | 0 | 入力検証 | 設計書の存在確認、Issue番号の検証 | | 0.5 | 影響分析 | 変更の影響範囲、関連設計書の特定 | | 1 | 問題分析 & 方針策定 | 問題の特定、修正方針の決定 | | 2 | 設計書修正 | detailed-design-writer` skill` による修正 | | 2.5 | ユーザー承認(大規模時) | `approval-gate` skill ※3ファイル以上の場合 | | 3 | レビューループ | detailed-design-reviewer skill によるレビュー(最大3回) | | 4 | テスト項目書更新 | ``test-spec-writer skill による追従(存在する場合) | | 5 | 完了通知 | GitHub Issueへのコメント |

Phase規約: workflow-phase-convention skill を参照


サーキットブレーカー

| 条件 | アクション | |------|----------| | 最大リトライ回数: 3回 | 3回修正してもレビュー通過しない場合、現状をユーザーに報告して判断を仰ぐ | | スコア悪化検知 | 修正後にスコアが悪化した場合、即座に中断 | | 大規模変更検知 | 変更が3ファイル以上に及ぶ場合、Phase 2.5でユーザーに確認 |


Phase 0: 入力検証

  1. 設計書パス (target) の存在確認
  2. GitHub Issue番号の有効性確認
# 設計書の存在確認
test -f "{target}" || echo "Error: 設計書が見つかりません"

# Issue番号の確認
gh issue view {issue} --json state

Phase 0.5: 影響分析

| チェック項目 | 確認内容 | |-------------|---------| | 影響ファイル数 | 修正が複数ファイルに波及するか | | 関連設計書 | 同一機能の他設計書への影響 | | API互換性 | 既存APIシグネチャへの影響 |


Phase 1: 問題分析 & 方針策定

  1. 入力された problem と現在の設計書を比較
  2. どの部分(ロジック、データ構造、API定義など)を修正すべきか特定
  3. 修正方針を決定

Phase 2: 設計書修正 (``detailed-design-writer skill)

  • 修正方針に基づき、設計書 (.md) を更新する
  • 注意: 既存の整合性を壊さないよう、変更は局所化する

Phase 2.5: ユーザー承認ゲート(大規模変更時)

トリガー: Phase 0.5で3ファイル以上の変更を検出した場合

共通仕様: approval-gate skill を参照

## 承認リクエスト: 大規模設計修正

**影響ファイル数**: {count}ファイル
**影響範囲**:
{affected_files_list}

---
**選択肢**:

1. 続行 → Phase 3(レビュー)へ進む
2. 中断 → 修正を中断、手動対応を推奨
3. 再分析 → 影響範囲を絞って再分析

> 番号を選択してください(1-3):

Phase 3: レビューループ (``detailed-design-reviewer skill)

| 条件 | アクション | |------|----------| | スコア >= 9 | Phase 4へ | | スコア < 9 | Phase 2に戻り修正(最大3回) | | スコア悪化 | 即時中断 |


Phase 4: テスト項目書の追従 (``test-spec-writer skill)

  • 設計変更によりテストケースに影響がある場合、テスト項目書も更新する
  • テスト項目書が存在しない場合は警告を出して続行

Phase 5: 完了通知

GitHub Issueに以下のフォーマットでコメントする。

## :wrench: 設計修正完了 (Design Fix)

**修正対象**: `{target}`
**修正内容**:
[修正の概要]

**実装者へのメッセージ**:
設計書が更新されました。最新の設計書とテスト項目書をPullして、実装を再開してください。

エラーハンドリング

| 状況 | 対処法 | |------|--------| | 設計書が存在しない | エラー報告、正しいパスをユーザーに確認 | | 問題の特定が困難 | 追加情報をユーザーに要求 | | 修正が複数設計書に波及 | 影響範囲を報告し、ユーザー承認後に実行 | | レビュー3回失敗 | 現状の問題点をまとめて報告、手動対応を推奨 | | テスト項目書が存在しない | 警告を出して続行(テスト更新をスキップ) |


Sisyphusへの指示

このコマンドは、実装作業中の「割り込み」として機能します。 実装タスクを一時停止し、設計修正タスクを優先実行し、完了後に実装タスクへ戻るよう制御してください。

def request_design_fix(issue: int, target: str, problem: str):
    """
    設計修正リクエストの実行
    
    Args:
        issue: GitHub Issue番号
        target: 修正対象の設計書パス
        problem: 問題・不備の説明
    """
    
    # 0. 入力検証
    if not file_exists(target):
        return error(f"設計書が見つかりません: {target}")
    
    # 1. 問題分析 & 方針策定
    current_design = read(target)
    analysis = analyze_problem(current_design, problem)
    
    if analysis.scope == "large":
        # 大規模変更の場合はユーザー確認
        approval = await_user_approval(f"""
大規模な変更が必要です。
影響ファイル: {analysis.affected_files}
続行しますか?
""")
        if not approval:
            return cancelled()
    
    # 2. 修正・レビューループ
    history = []
    for i in range(3):  # 最大3回リトライ
        # 設計書修正
        task(
            subagent_type="detailed-design-writer",
            description=f"設計書修正: {target}",
            prompt=f"""
## 修正対象
{target}

## 問題
{problem}

## 修正方針
{analysis.fix_plan}

## 注意
- 変更は局所化すること
- 既存の整合性を壊さないこと
"""
        )
        
        # レビュー
        review = task(
            subagent_type="detailed-design-reviewer",
            description=f"修正レビュー: {target}",
            prompt=f"修正後の{target}をレビューしてください"
        )
        
        if review.score >= 9:
            break
        
        # スコア悪化検知
        if i > 0 and review.score < history[-1]:
            return fail("スコアが悪化しました。手動対応を推奨します。")
        
        history.append(review.score)
    else:
        # 3回失敗
        return fail(f"3回の修正でレビュー通過できませんでした。最終スコア: {review.score}")
    
    # 3. テスト項目書更新(存在する場合)
    test_spec = find_test_spec(target)
    if test_spec:
        task(
            subagent_type="test-spec-writer",
            description="テスト項目書更新",
            prompt=f"設計変更に伴い{test_spec}を更新してください"
        )
    
    # 4. Issue通知
    comment_on_issue(issue, f"""
## :wrench: 設計修正完了 (Design Fix)

**修正対象**: `{target}`
**修正内容**: {analysis.summary}

**実装者へのメッセージ**:
設計書が更新されました。最新の設計書をPullして、実装を再開してください。
""")
    
    return success()

参考スキル

| スキル | 用途 | |--------|------| | approval-gate skill | ユーザー承認ゲート(大規模変更時) | | workflow-phase-convention skill | Phase命名規約 |


関連ドキュメント

  • 呼び出し元: 実装フェーズ(実装中に設計不備を検知した場合)
  • 修正対象: docs/designs/detailed/**/*.md
  • レビュー: ``detailed-design-reviewer skill

変更履歴

| バージョン | 変更内容 | |-----------|---------| | v2.0 | Phase構造に再構成、全体フロー表追加、承認ゲート追加 | | v1.0 | 初版 |