# Challenge

> 発見した問題が本物か、提案したアイデアが使えるかを 2 フェーズで判定する。Phase 1 は OUTCOME.md と並列 subagent の証拠に対し、subagent 検証と advisor 判断をループで回して設計の分岐を自力で解決する。残る分岐のうち不可逆なものだけをユーザーへ確認し、他は仮定を明記して進める。Phase 2 は critic-design の subagent 2 体 (内部攻撃 / OUTCOME.md 攻撃) を devil's advocate として起動する。判定は GO / NO-GO を最上段に出す。コードレビューの findings には使わない (audit workflow を使う)。outcome の assertion にも使わない (/assert に adversarial testing が組み込まれている)。

- Skill: `thkt/challenge-2` (Agent Skill)
- Install (CLI): `npx skillmds@latest add thkt/challenge-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/thkt/challenge-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- Author: thkt (https://skillmd.com/u/thkt)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/thkt/challenge-2

---


# /challenge - 提案の GO / NO-GO 判定

提案を 2 フェーズで判定し、次の意思決定を検証済みの GO/NO-GO から始めさせる。

## 入力

`$ARGUMENTS` に対象を受け取る。提案のファイルパスか、記述そのものを渡す。空なら停止して対象の指定をユーザーに求め、会話から推測しない。複数行のときは先頭行が対象のタイトル。

## Phase 1: Grill

提案を証拠で検証し、決着しなかった論点だけをユーザーへ返す。

### Step 1: 論点を証拠で決着させる

判断はすべて下表が定める。advisor の自信度では決めない。

| 対象         | 条件                                                                               | 満たすときの扱い                      | 満たさないときの扱い                           |
| ------------ | ---------------------------------------------------------------------------------- | ------------------------------------- | ---------------------------------------------- |
| 論点         | 証拠で答えが 1 つに決まる。優先順位やスコープのように選択が要るものは決まらない    | subagent が並列で答えを確かめる       | 検証せず未決へ回す                             |
| 確かめた事実 | 狙う状態が既に成立している、または提案と矛盾する。advisor の見解だけでは満たさない | Phase 2 を飛ばし、根拠を Why に据える | 食い違わなかった主張で続ける                   |
| 未決の論点   | 後戻りできない、または影響が大きい                                                 | AskUserQuestion で聞く。上限 7 問     | advisor の仮説を仮定として進め、Why に全件残す |

1. `.claude/OUTCOME.md` を読む。無ければ `$ARGUMENTS` と会話から outcome を推定し、AskUserQuestion で確認する。Phase 2 の outcome 攻撃がこれを評価軸に使うので、省略せず確定させる
2. 提案の論点を洗い出し、表に従って振り分ける
3. 検証ループを回す。subagent が並列で答えを確かめ、advisor が振り分けを見直して次の証拠を指す
4. 証拠を足しても振り分けが変わらなくなったら打ち切る。上限 3 周。決着しなかった論点は未決へ回す
5. 確かめた事実を表に当てる。Phase 2 を飛ばす扱いなら、そのまま出力へ抜ける
6. 未決の論点へ advisor が仮説、可逆性、影響度を付け、表に従って振り分ける

### Step 2: 引き継ぎを作る

Step 1 の発見を下表の形に集約する。Phase 2 はこれだけを入力に取る。

| 項目             | ソース                                                                                                      |
| ---------------- | ----------------------------------------------------------------------------------------------------------- |
| approach         | 提案が何をするかの 1 行要約                                                                                 |
| decisions        | 固まったアーキテクチャ水準の判断。用語確認やスコープ細部は除く                                              |
| trade-offs       | 表面化したトレードオフ                                                                                      |
| referenced_files | 参照したファイル                                                                                            |
| outcome_ref      | `.claude/OUTCOME.md` のパスと Behavior / Non-goals / Constraints の要約。無ければ Step 1 で確認した outcome |

## Phase 2: Devil

引き継ぎを critic-design 2 体に敵対的に当て、穴を探す。

### Step 1: 2 体を起動する

両方の起動プロンプトに、対象のタイトル、引き継ぎ、`ARCHITECTURE.md` のような設計ドキュメントのパスを入れる。outcome を確定できなければ outcome の Pass は省略する。Pass ごとに違う部分は下表が定める。

| Pass                    | 攻撃対象                                        | 追加の入力    |
| ----------------------- | ----------------------------------------------- | ------------- |
| critic-design (内部)    | 提案そのもの                                    | なし          |
| critic-design (outcome) | outcome への適合と non-goal / constraint の侵害 | `outcome_ref` |

1. critic-design を Agent で 2 体並列に起動する。subagent_type は critic-design
2. 両者の完了を待つ。返り値は agent 定義どおり verdict (confirmed/weakened/needs_revision) と weaknesses (viewpoint、severity、finding、evidence、disconfirming probe を持つ項目の配列)

### Step 2: 判定する

弱点を突き合わせて重複を除き、仮定を VERDICT_SCHEMA `{ verdict, assumptions: [{ text, irreversible, underspecified }] }` に集約する。下表を上から順に当て、最初に該当した行の判定を採る。

| 条件                                                                       | 判定                            |
| -------------------------------------------------------------------------- | ------------------------------- |
| `irreversible` か `underspecified` の仮定が残る、または仮定が 7 件を超える | NO-GO。手動で GO に上書きしない |
| 片方でも needs_revision を返した                                           | NO-GO                           |
| 両方 confirmed を返した                                                    | GO                              |
| それ以外                                                                   | 条件付き GO                     |

## 出力

| セクション       | 内容                                                                                                 |
| ---------------- | ---------------------------------------------------------------------------------------------------- |
| Verdict          | GO / NO-GO の 1 行。条件付き GO なら満たすべき条件を、NO-GO なら判定表のどの行に該当したかを併記する |
| Why              | 事実検証の結果、critic-design 2 体の判定、仮定で進めた未決の論点の全件と可逆性                       |
| Actionable items | keep / remove / revise の具体アクション トップ 3                                                     |

