Skip to main content

issue-decide

issue:needs-human-decision が付いた boy-scout Issue の論点を1件ずつ人間に示し、決まった方針を本文へ書き戻して ai-fixable に変換する。/sweep の前処理として人間が打つ。「issue-decide」「人間判断待ちのissueを片付けて」と指示されたとき。

Ir a la instalación

Datos de origen

Repositorio
kasiopeiya/claude-dev-template
Última actividad en el origen
27 de septiembre de 2026 a las 06:37
Idioma detectado de SKILL.md
japonés
Estrellas
0
Forks
0

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
issue-decide
description
issue:needs-human-decision が付いた boy-scout Issue の論点を1件ずつ人間に示し、決まった方針を本文へ書き戻して ai-fixable に変換する。/sweep の前処理として人間が打つ。「issue-decide」「人間判断待ちのissueを片付けて」と指示されたとき。
argument-hint
[件数 or #Issue番号(省略可・複数可)]
disable-model-invocation
true
allowed-tools
AskUserQuestion, Bash, Read, Edit, Write
# /issue-decide `issue:needs-human-decision` が付いた open Issue を古い順に1件ずつ取り上げ、論点を人間に示して方針を決め、決まった方針を本文へ書き戻して `ai-fixable` に変換する。**`/sweep` の前処理**として、人間が対話しながら打つ。 `/quick-issue` は[名指し例外](../quick-issue/SKILL.md#どちらを付けるか)に当たる Issue に `issue:needs-human-decision` を貼る。だがこのラベルが付いた Issue を前へ進める担当がいない——`/issue-check` は方針がポリシーに合うかを監査し、`/sweep` は `ai-fixable` を実装する。どちらも人間判断待ちの Issue を素通りする。**本スキルがその担当である。** ```mermaid stateDiagram-v2 state "人間判断待ち(issue:needs-human-decision)" as Pending state "実装可(ai-fixable)" as Fixable state "決定済み(ai-fixable + issue:decided)" as Decided [*] --> Pending: /quick-issue が起票(名指し例外に当たる) [*] --> Fixable: /quick-issue が起票(例外に当たらない) Pending --> Decided: /issue-decide で人間が方針を決めた Pending --> Pending: /issue-decide で保留 Pending --> [*]: /issue-decide で「対応しない」を選んだ Fixable --> Pending: /issue-check が名指し例外に当たると判定 Decided --> Fixable: /issue-check が方針差し替えと判定(issue:decided を外す) Decided --> Pending: /issue-check が判定不能と判定 Decided --> [*]: /sweep が実装して close Fixable --> [*]: /sweep が実装して close ``` 「決定済み」が名指し例外では押し戻されないのが要点である。人間が例外を承知で決めた方針を、同じ例外で戻さない。 ## 前提 - **始めるタイミングは人間が握る。** 人間の応答を待ちながら進むので、いつ走らせるかは人間が決める。 - **リポジトリのファイルは変更しない。** 触るのは GitHub Issue(本文・ラベル・コメント・close)だけである。実装は `/sweep` の仕事である。 - **人間は Issue を読んでいない前提で書く。** 判断に要る材料は、こちらが本文から取り出して示す。 - **方針の監査はしない。** ラベルが名指し例外に本当に当たるか、対応方針がポリシーに合うかは `/issue-check` の責務である。ここで重ねると判定が2箇所に散る。 ## Phase 1: 対象の決定 ```bash gh issue list --state open --limit 100 --search 'label:boy-scout label:"issue:needs-human-decision"' \ --json number,title --jq 'sort_by(.number) | .[] | "\(.number)\t\(.title)"' ``` 取得件数がちょうど100件なら上限で切れている可能性があるので、その旨を伝えてから処理する。 引数の解釈は次のとおり。**素の数字は常に件数**として読む——同じ形の入力が件数にも Issue 番号にもなると、誤用を防げないからである。 - **なし**:一覧の全件 - **数字1つ**:一覧の古い順にその件数 - **`#` 付き番号(複数可)**:その Issue だけ(ラベルの有無を問わない) 対象が0件なら、その旨を伝えて終了する。決めた対象リストを表示してから Phase 2 へ進む。 ## Phase 2: 1件ずつ処理する 対象を**古い順に1件ずつ**、2-1 〜 2-6 を最後まで通してから次の Issue へ移る。 ### 2-1. 本文を読む 後で差し替えるので、最初からファイルへ書き出す。 ```bash gh issue view <番号> --json body --jq .body > <スクラッチパッド>/issue-<番号>.md ``` ### 2-2. 論点の裏取り 「現状」の対象箇所を Read・Grep で開き、**実在するか**と、**本文の記述と現物がずれていないか**を見る。ポリシー照合はしない(`/issue-check` の責務)。 古い前提のまま人間に決めさせないためである。対象箇所が消えていれば論点も消えているので、2-4 の第一選択肢を「対応しない(close する)」にする。 ### 2-3. ブリーフィングを出す **本文の貼り付けにしてはならない。** 人間は Issue を読んでいないので、決めるのに要る分だけに畳む。箇条書き・表とも1項目1行で、全体15行以内。 - **一言でいうと**:何が困っているかを1文 - **なぜ人間に来たか**:該当する名指し例外を1文 - **論点**:何を決めるかを1文 - **案**:表(案/利点/欠点/AI の見立て) - **裏取り**:対象箇所が実在するか、本文と現物がずれていないか - **決めないとどうなるか**:1文 本文の「どう気づいたか」は落とす。経緯は決定に要らない。 ### 2-4. 方針が決まるまで対話する **1問で終わらせない。** 1問ずつ出し、決着するまで問いを重ねる。 **決着の判定基準**:この会話を知らない別セッションが、方針を決め直さずに着手できるか。具体的には「対応方針」の[quick-issue テンプレートの全項目](../quick-issue/SKILL.md#対応方針)を、**推測を混ぜずに書き切れる**状態になったら決着とする。書けない項目が残っているうちは、その項目を埋める問いを次に出す。 最初の問いは案の選択にする。 - 先頭は AI の見立てが有力な案に置き、ラベル末尾に「(推奨)」を付ける。 - **最後は必ず「対応しない(close する)」**を置く。 - 案が3つを超えるときは有力3案+close にする。残りは 2-3 の表に出してあるので Other で選べる。 - **「保留」は最初の問いには入れない。** 決着を試す前に逃げ道を出すと、そちらへ流れる。Other に「保留」と書かれたら、本文もラベルも触らず次の Issue へ移る。 - label・description は**会話依存の指示語を使わず、対象を毎回名指しして書く**。選択肢は応答本文とは別のパネルに出るので、本文を読まずに選べる必要がある(CLAUDE.md)。 続く問いは、返ってきた答えの型で決める。 - **案を選んだが、その案に未決の分岐が残る**:分岐を1つずつ潰す(例:足す先はどのファイルか) - **条件・懸念を付けて選んだ**:その条件を「対応方針」に書ける形へ翻訳し、解釈が合っているか確かめる - **どの案とも違う考えを述べた**:それを案として組み直し、却下する既存案と対にして示す - **判断材料が足りないと言われた**:**問い返さず自分で調べる。** 現物・ポリシーを読んで材料を出し、問いを立て直す 3つ以上の具体的な選択肢に絞れる問いは `AskUserQuestion` を使う。絞れないなら会話文で1問だけ聞く。 決着したら、**決めた内容を1文にして人間に見せてから** 2-5 へ進む。取り違えたまま本文を書き換えると、誤りがそのまま `/sweep` の実装まで通る。 ### 2-5. 決定を Issue へ反映する `gh` を並列で叩かない。同じ Issue へ本文・ラベル・コメントが同時に飛ぶと、後から投げたほうが前の更新を消す。 - **案を選んだ**:本文差し替え → ラベル貼り替え → コメント - **対応しない**:理由コメント付きで close - **Other(自由入力)**:入力を採る案として本文に書き、根拠に「人間の指示」と明記 - **Other に「保留」**:何もせず次の Issue へ #### 割り込みが無かったことを確かめる 対話のあいだ時間が空くので、その間に別セッションが本文を変えていることがある。**反映の前に必ず確かめる。** ```bash gh issue view <番号> --json body --jq .body | diff - <スクラッチパッド>/issue-<番号>.md ``` 差分が出たら反映せず中断し、その事実を報告する。黙って上書きすると、他セッションの編集が消える。 #### 本文を差し替える 書き出したファイルを Read し、Edit で該当セクションだけを差し替える。本文全体を書き直してはならない。 1. **「人間に決めてほしいこと」を削除し、同じ位置に「対応方針」を書く。** `/quick-issue` はこの2セクションを排他と定めている([quick-issue のテンプレート](../quick-issue/SKILL.md))。書式もそこに従う([対応方針の全項目](../quick-issue/SKILL.md#対応方針))。 2. 根拠に **「人間が決定(YYYY-MM-DD)」** を明記し、選ばれなかった案を「却下した案」へ移す。決めた内容が `docs/policy/adr-policy.md` の判定で ADR 対象になるなら、「実装フロー(使用するSkill)」に `/create-adr` を加える(却下した案は Issue に残したまま、`/create-adr` が ADR を書くときの材料にする)。 3. **タスク一覧から「案を人間が決める」タスクを消し、決まった案に沿って書き直す。** 残すと `/sweep` が何を直すか決められず、離脱する。 4. 完了条件が案に依存していれば直す。 ```bash gh issue edit <番号> --body-file <スクラッチパッド>/issue-<番号>.md ``` #### ラベルを貼り替える ```bash gh issue edit <番号> --add-label ai-fixable,issue:decided --remove-label issue:needs-human-decision ``` Issue 番号を直接指定して処理し、`issue:needs-human-decision` が付いていなかったときは `--remove-label` を省く。 `issue:decided` は「**人間が名指し例外を承知のうえで方針を決めた**」印である。これが無いと、`issue-auditor-agent` が同じ名指し例外を再判定し、`issue:needs-human-decision` へ押し戻す。名指し例外の多くは作業そのものの性質(不可逆である・新設である)で、方針が決まっても消えないからである。 #### 決定をコメントで残す ```bash gh issue comment <番号> --body "<何を決めたか・なぜか・却下した案>" ``` 本文だけでは「誰がいつ決めたか」が残らない。次に開いた人が方針を蒸し返さないために要る。 ### 2-6. 反映できたか確かめる 次を全部満たしてから次の Issue へ移る。1つでも欠けると、**人間が決めたのに `/sweep` が動かない Issue** が残る。 - [ ] 決めた内容の1文を人間に見せた - [ ] 「人間に決めてほしいこと」が消え、「対応方針」に[quick-issue テンプレートの全項目](../quick-issue/SKILL.md#対応方針)が入っている - [ ] タスク一覧から「案を人間が決める」タスクが消えている - [ ] ラベルが `ai-fixable` + `issue:decided` になっている - [ ] 決定のコメントを残した ## Phase 3: 報告 処理した Issue を表にして報告する。 | Issue | タイトル | 決めたこと | 取った操作 | | ----- | -------- | ------------------------------------- | ------------------------------ | | #271 | … | 案1(中身は agent、呼び出しは Skill) | 本文差し替え+ラベル+コメント | | #280 | … | 対応しない | close | | #281 | … | 保留 | なし | 末尾に **`/sweep` へ渡せる Issue 番号の一覧**を出す。人間はこれを見て `/sweep` を打つ。 ## エラーハンドリング - **本文に「人間に決めてほしいこと」が無い**:本文から論点を組み立てて示す。案が無ければ2案作り、「AI が作った案」と明記する - **対象箇所が実在しない**:第一選択肢を「対応しない(close する)」にする - **`issue:decided` が未作成で `gh` が失敗する**:`gh label create "issue:decided" --description "人間が名指し例外を承知で方針を決めた Issue。名指し例外による差し戻しをしない"` を実行して再実行する - **別セッションの更新が入っている**:上書きせず中断し、その事実を報告する - **問いを2巡しても決着しない**:そこで初めて保留の可否を聞き、保留なら次へ移る。何が分かれば決まるかをコメントで残す - **人間が応答を打ち切った**:そこまでの反映は残る。残りの Issue を報告して終了する ## 使用方法 ``` /issue-decide # issue:needs-human-decision の open Issue を全件 /issue-decide 3 # 古い順に3件だけ /issue-decide #271 #280 # 指定した Issue だけ ``` 引数: $ARGUMENTS
Ver en GitHub