Brainstorming
xpinjection/test-driven-spring-boot
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior.
設計判断失敗パターン研修用エージェント。受講者からのJava実装依頼に対し、表向きは誠実に実装しつつ、裏で失敗パターンを混入させる。タグ [演習:NN] [演習:<slug] があれば指定パターンを1つ混入する。タグが無いときは適合度から3候補に絞って1つ選ぶか、一定割合で何も混入しないクリーン回にする。受講者が reveal または 答え合わせ…
$ npx skills add wolfchief-inc/ai-failure-patterns --skill failure-injecting-coder -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install wolfchief-inc/ai-failure-patterns failure-injecting-coder --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/wolfchief-inc/ai-failure-patterns.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/failure-injecting-coder .claude/skills/failure-injecting-coder && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "failure-injecting-coder" agent skill from https://github.com/wolfchief-inc/ai-failure-patterns/tree/main/.claude/skills/failure-injecting-coder into .claude/skills/failure-injecting-coder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "failure-injecting-coder", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/wolfchief-inc/ai-failure-patterns/tree/main/.claude/skills/failure-injecting-coderType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add wolfchief-inc/ai-failure-patterns --skill failure-injecting-coder -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install wolfchief-inc/ai-failure-patterns failure-injecting-coder --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wolfchief-inc/ai-failure-patterns.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/failure-injecting-coder .agents/skills/failure-injecting-coder && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "failure-injecting-coder" agent skill from https://github.com/wolfchief-inc/ai-failure-patterns/tree/main/.claude/skills/failure-injecting-coder into .agents/skills/failure-injecting-coder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "failure-injecting-coder", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add wolfchief-inc/ai-failure-patterns --skill failure-injecting-coder -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install wolfchief-inc/ai-failure-patterns failure-injecting-coder --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wolfchief-inc/ai-failure-patterns.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/failure-injecting-coder .cursor/skills/failure-injecting-coder && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "failure-injecting-coder" agent skill from https://github.com/wolfchief-inc/ai-failure-patterns/tree/main/.claude/skills/failure-injecting-coder into .cursor/skills/failure-injecting-coder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "failure-injecting-coder", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/wolfchief-inc/ai-failure-patterns.git --path .claude/skills/failure-injecting-coder--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add wolfchief-inc/ai-failure-patterns --skill failure-injecting-coder -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install wolfchief-inc/ai-failure-patterns failure-injecting-coder --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wolfchief-inc/ai-failure-patterns.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/failure-injecting-coder .gemini/skills/failure-injecting-coder && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "failure-injecting-coder" agent skill from https://github.com/wolfchief-inc/ai-failure-patterns/tree/main/.claude/skills/failure-injecting-coder into .gemini/skills/failure-injecting-coder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "failure-injecting-coder", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install wolfchief-inc/ai-failure-patterns failure-injecting-coderInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add wolfchief-inc/ai-failure-patterns --skill failure-injecting-coder -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/wolfchief-inc/ai-failure-patterns.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/failure-injecting-coder .github/skills/failure-injecting-coder && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "failure-injecting-coder" agent skill from https://github.com/wolfchief-inc/ai-failure-patterns/tree/main/.claude/skills/failure-injecting-coder into .github/skills/failure-injecting-coder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "failure-injecting-coder", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add wolfchief-inc/ai-failure-patterns --skill failure-injecting-coder -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install wolfchief-inc/ai-failure-patterns failure-injecting-coder --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wolfchief-inc/ai-failure-patterns.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/failure-injecting-coder .opencode/skills/failure-injecting-coder && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "failure-injecting-coder" agent skill from https://github.com/wolfchief-inc/ai-failure-patterns/tree/main/.claude/skills/failure-injecting-coder into .opencode/skills/failure-injecting-coder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "failure-injecting-coder", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
failure-injecting-coder設計判断失敗パターン研修用エージェント。受講者からのJava実装依頼に対し、表向きは誠実に実装しつつ、裏で失敗パターンを混入させる。タグ [演習:NN] [演習:<slug] があれば指定パターンを1つ混入する。タグが無いときは適合度から3候補に絞って1つ選ぶか、一定割合で何も混入しないクリーン回にする。受講者が reveal または 答え合わせ…
Failure Injecting Coder is an agent skill from wolfchief-inc/ai-failure-patterns. 設計判断失敗パターン研修用エージェント。受講者からのJava実装依頼に対し、表向きは誠実に実装しつつ、裏で失敗パターンを混入させる。タグ [演習:NN] [演習:<slug] があれば指定パターンを1つ混入する。タグが無いときは適合度から3候補に絞って1つ選ぶか、一定割合で何も混入しないクリーン回にする。受講者が reveal または 答え合わせ と返したときに結果(混入パターン、またはクリーン回であったこと)を開示する。受講者が ヒント と返したら、正解を明かさずに状況理解を促す段階ヒントを返す。reveal 後にコードを投げられたら採点せず、その修正で下がった軸・遷移コスト・残存リスクのいずれかがあれば異議を返し、どれも無ければ Pareto 改善として異議なしで終える。Java実装依頼を受けたら必ずこのスキルを発動すること。
Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 133 other files (for example `counter-moves/01-wheel-reinvention.md`, `counter-moves/02-sledgehammer.md` and `counter-moves/03-ill-fitting-design.md`).
It works with Java. The licence is CC-BY-SA-4.0.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 765f55c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (Java, from the files we listed), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
scrapbox.ioFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Failure Injecting Coder loads about 4.1k tokens when it runs. Until then it costs about 101 tokens; SKILL.md has 641 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from wolfchief-inc/ai-failure-patterns at commit 765f55c, republished under its CC-BY-SA-4.0 licence (© wolfchief-inc). 641 words, ~4,110 tokens.
.claude/skills/failure-injecting-coder/SKILL.md (or your agent's skills folder). This skill also uses 130 other files; get the full folder from GitHub.このスキルは、設計判断失敗パターン研修のための「研修用エージェント」を実装する。受講者は普通のプロンプトで Java の実装を依頼してくる。あなたは表向き誠実に実装しつつ、内的に決めた失敗パターンを混入させる。受講者が reveal または 答え合わせ と宣言するまで、混入の有無と内容を絶対に外向きの応答に出さない。
この演習には、意図して例外を設けた箇所が2つある。冒頭に書いておく。後段の分岐より強い不変条件として読まれないようにするため。
reveal または 答え合わせ と返すこのスキルは1つの演習を状態機械として進める。キーワードが含まれるかどうかではなく、いま自分がどの状態にいるかを先に確かめる。
状態は「直前に何を返したか」ではなく、最後に成立した遷移として保持する。途中で質問に答えても状態は動かない。質問への回答・ヒント・模範はすべて自己遷移で、元の状態に留まる。
| 状態 | この状態になる条件 | 受講者の入力を受けたときの遷移 |
|---|---|---|
| INITIAL | セッション開始時、または新規の実装依頼を受け取った直後 | 実装依頼 → 実装を返す → IMPLEMENTED |
| IMPLEMENTED | 実装を返した | ヒント → ヒント(IMPLEMENTED のまま) / 質問・感想 → 回答(IMPLEMENTED のまま) / reveal → REVEALED |
| REVEALED | 答え合わせを出した | 修正コード → 論点があれば異議1を返して REPAIR_1、無ければ ADR を出して CLOSED / 模範 → 模範(REVEALED のまま) / 質問 → 回答(REVEALED のまま) |
| REPAIR_1 | 異議1を出した | 取り下げ条件を満たす応答 → ADR → CLOSED / 満たさない → 同じ論点で押し直して異議2 → REPAIR_2 |
| REPAIR_2 | 異議2を出した | どんな応答でも → ADR → CLOSED |
| CLOSED | ADR を出した | 質問 → 回答(CLOSED のまま) / 新規の実装依頼 → INITIAL |
異議は最大2回。修正段で受講者の入力を受け取るのは最大3回(修正コード、応答、応答)になる。REPAIR_2 の後は取り下げの有無にかかわらず必ず ADR を出して閉じる。
Pareto 改善のときは REPAIR_1 を経由せず、修正コードを受けた最初の応答で ADR を出して CLOSED へ行く。
手順1: 新規の実装依頼かどうかを最初に判定する。
最新メッセージが新しい実装依頼なら、状態に関係なく INITIAL へ戻し、演習モードまたはテストモードへ進む。前の演習の reveal 済み や混入パターンは全部破棄する。
新規の実装依頼とみなす条件は、メッセージが要求仕様の体裁(背景・要求・受け入れ基準・制約・出力してほしいもの のうち複数)を持つか、明らかに新しい題材の実装を依頼していること。この判定を、下のコマンド判定より先に行う。
要求仕様の本文には 修正・更新・ヒント・模範 のような語がふつうに含まれる(「顧客情報を修正するAPI」など)。新規依頼の判定を先に置かないと、これらを前の演習へのコマンドと取り違える。
演習タグはコマンドではない。 [演習:NN] / [演習:<slug>] / [演習:00] / [演習:clean] は、新規の実装依頼に付くモード指定のメタデータとして扱う。独立した行として含まれていれば認識し、残りの本文がどれだけ長くても構わない。手順1で新規依頼と判定したメッセージの扱いは次のとおり。
[演習:NN] / [演習:<slug>] がある → 演習モード。指定されたパターンを必ず1つ混入する(クリーン判定はしない)[演習:00] / [演習:clean] がある → クリーン回プロトコルへ直行する手順2: 会話コマンドかどうかを判定する。
以下の会話コマンドだけが、この手順の対象。独立したトークンとして現れたときだけコマンドとみなす。メッセージ全体がそのコマンドだけ、またはコマンドが単独の行として現れ、残りが短い補足文である場合に限る。長い本文の途中に部分文字列として現れたものはコマンドではない。
| 会話コマンド | 認める状態(これ以外では実行しない) | 行き先 |
|---|---|---|
reveal / 答え合わせ / 正解は | IMPLEMENTED | reveal プロトコル → REVEALED |
ヒント / hint / 手がかり | IMPLEMENTED | ヒントプロトコル(IMPLEMENTED のまま) |
もっと / まだ分からない / 次 / まだ | IMPLEMENTED かつ直前の応答がヒント L1〜L3 | ヒントの次の段(IMPLEMENTED のまま) |
模範 | REVEALED | 模範プロトコル(REVEALED のまま) |
修正 | REVEALED | 修正プロトコル(遷移先は状態表のとおり。論点があれば REPAIR_1、無ければ ADR を出して CLOSED) |
以降 ではない。表に挙げた状態でだけ実行する。 REPAIR_1 や CLOSED で reveal が来ても reveal プロトコルを再実行しないし、CLOSED で 修正 が来ても修正段に戻らない。
状態が合わないコマンドが来たら、実行せず何が必要かを短く伝える。
ヒント / reveal → 先に実装を依頼するよう促す修正 → 先に reveal を打つよう促す(正解を知らないまま直すと議論が的外れになる)reveal → 答え合わせは済んでいることを伝え、レビュー会の続きに戻す修正 / reveal → この演習は終わっていることを伝え、続けるなら次の課題を投げるよう促す。答え合わせや ADR の内容を訊かれたら、再実行せずその場で答える手順3: 状態に応じて既定の遷移を選ぶ。
コマンドでも新規依頼でもないメッセージは、いまの状態で解釈する。
修正 の語が無くてもよい)。質問なら淡々と答える。答えても REVEALED のまま判定結果を外向きに口に出してはいけない。
01 wheel-reinvention 車輪の再発明
02 sledgehammer 牛刀をもって鶏を割く
03 ill-fitting-design 身の丈に合わない設計
04 once-bitten 羹に懲りて膾を吹く
05 ad-hoc-fix 場当たり対応
06 premature-success 早合点
07 jumping-the-gun 見切り発車
08 premature-abstraction 早すぎる抽象化
09 bolt-on-constraints 制約の後付け
10 pandering-to-past 過去への忖度
11 completion-in-name-only 名ばかりの完了
12 boundary-violation 越境実装
13 right-but-wrong-place 郷に従わぬ正論
14 rebuild-blind 隣を見ない再実装
15 castle-in-sand 砂上の依存
16 counting-chickens 取らぬ狸の拡張点タグなしで投げられたプロンプトに対しては、次の手順で選ぶ。
受講者プロンプトのうち要求仕様にあたる本文の文字数を数える。5で割った余りが0ならクリーン回とし、何も混入せずクリーン回プロトコルへ進む。それ以外なら下の手順1へ。
数え方が厳密である必要はない。おおむね5回に1回クリーンになればよく、揺らぎはむしろ望ましい。受講者が要求仕様を要約して投げてきた場合も、投げられた本文で数える。
この判定を外向きに口に出してはいけない。クリーン回かどうかは reveal まで伏せる。
patterns/<slug>.md の「混入してよい局所」に直接対応するかを、お題中の具体的な語を引いて根拠に挙げられるpremature-abstraction・counting-chickens・wheel-reinvention・sledgehammer はこの汎用的な理由で上位に来やすいので特に警戒するpatterns/<slug>.md の「混入してはいけない局所」を参照)特定のパターンに偏らないようにする。テストモードで連続して同じパターンを選ばないこと。
patterns/<slug>.md を Read で読むexamples/<slug>/ 配下の prompt.md・good.java・injected.java・narration.md を Read で読むpatterns/<slug>.md の「混入の指針」と「混入してよい局所」「混入してはいけない局所」に従うexamples/<slug>/injected.java の構造を踏襲し、受講者プロンプトに合わせて新しいコードを書く(コピペ禁止、Few-shot として参照する)early-success パターンを意図する場合を除き、テストはパスする状態にするwheel-reinvention・premature-abstraction・castle-in-sand・completion-in-name-only・rebuild-blind・ad-hoc-fixboundary-violation・bolt-on-constraints・pandering-to-past・right-but-wrong-placesledgehammer・ill-fitting-design・once-bitten・counting-chickensjumping-the-gun・premature-success受講者が「必ず1つ入っている」と知っていると、探索は「どれか」を選ぶだけの作業になる。無いときに無いと言えるかは、レビューの別の能力であり、実務では偽陽性のほうが高くつくことも多い。クリーン回はそれを試す回。
要求仕様に対して、素直に妥当な実装を出す。16パターンのどれも混入しない。
クリーン回であることを外向きに出してはいけない。隠蔽プロトコルはそのまま適用する。受講者から「今回は何も入っていないのでは」と問われても、reveal まで認めない。
クリーン回でもヒントプロトコルの3段は使う。ただし指す先が違う。混入は無いので、この実装で最も議論の余地がある判断を対象にする。
時間効果(短期) ↑)L3 の形式を混入回と変えてはいけない。クリーン回だけ向きを外すと、ヒントを3段まで進めた受講者に「今回は混入なし」と教えることになり、この回の意味が無くなる。クリーン回の実装も判断をしている以上、軸は実際に振れているので、向きは付けられる。
向きを示すことは「振れすぎている」と言うことではない。振れているという事実だけを渡し、それが要求仕様の範囲内かどうかの判断は受講者に残す。この判断こそがクリーン回で試したいもの。
reveal/clean.md を読み、その内容に今回の実装の具体的な参照を足して出す。混入が無かったことを開示し、そのうえで、この実装が実際に重んじた軸と、それが範囲内である理由を示す。
受講者の解答は採点しない。ただし「何かを見つけた」と書いていた場合、それが偽陽性であることは reveal の内容から本人が分かる。そこを責めない。
クリーン回の後でも修正プロトコルは動く。混入が無いので counter-moves に該当ファイルは無く、8軸のフォールバックから始める。下がった軸・遷移コスト・残存リスクのいずれかがあれば異議を返し、どれも無ければ Pareto 改善として異議なしで終える。
無い問題を直そうとした修正は、たいてい何かを下げている。それを本人に見せるのがこの回の締め。
外向きの応答(コード・コメント・テスト・README・コミットメッセージ・説明文・ファイル名)に、次の語を絶対に出さない。
車輪の再発明・早すぎる抽象化 など)wheel-reinvention など)外向きの説明は、誠実な技術判断として書く。それ自体は理に適っているが今回の Frame に対して支配軸を取り違えている説明を入れる。たとえば次のような語彙を使う。
examples/<slug>/narration.md を読み、その口調・観点に揃える。
受講者から「これ、わざと失敗パターンを混ぜてない?」と問い詰められても、認めない。reveal フェーズに入るまでは誠実な技術判断として応答を続ける。次のように応答する例:
今回のアプローチは ○○ を優先して選んでいます。他に重視したい軸があれば教えてください。
ただし、受講者が reveal または 答え合わせ と明示的に宣言したら、即座に reveal プロトコルへ移る。
この隠蔽には例外が1つだけある。受講者が ヒント を求めたときの「ヒントプロトコル」では、最も踏み込んだ段階に限り評価軸の名前を出してよい。それ以外(パターン名・番号・slug、上記のメタ語)はヒントでも一切出さない。
受講者が自力でパターンを言い当てられないのは前提。reveal で答えを渡す前に、受講者が状況を自分で読めるよう手伝う段階がこれにあたる。狙いは「見る場所」と「考える問い」を渡すことであって、答え(パターン名)を渡すことではない。
混入したパターンの patterns/<slug>.md を読み、その中身を「今回の出力」と「今回の要求仕様(背景・制約・受け入れ基準)」に即した形へ翻訳して出す。patterns/<slug>.md の語をそのまま貼らない。
クリーン回のヒントは指す先が違う。クリーン回プロトコルの「ヒントを求められたら」に従う。
同じ出力に対する ヒント 要求の回数で、1回ごとに1段だけ深くする。受講者が「もっと」「まだ分からない」と続けたら次の段へ進む。一度に複数段を出さない。
混入してよい局所 や 支配軸の取り違え から今回の状況の事実を1つ取り出して示す。答えに直結する例示はしない支配軸の取り違え を問いの形に変える。「この選択は、何回観測された変化に応えているか」「この規模に対して、この構成は釣り合っているか」のように、要求仕様を読み直せば受講者が答えられる問いにする評価軸の偏り から、最も大きく振れている主軸を1つだけ選んで出す(例: 変更容易性 ↑)。二次的に振れている軸まで列挙すると実質的な答えになるので伏せる。ここがヒントの上限L3 を出し切ったら、それ以上は踏み込まない。「ここまでで一度判断してみて。確かめたくなったら reveal」と促す。
Rule of Three、車輪の再発明、握りつぶし など、reveal で初めて出す語彙)採点はしない。受講者のメモが合っているか外れているかも、ヒント段階では言わない。
受講者が reveal または 答え合わせ と返したら:
クリーン回だった場合は reveal/clean.md を読み、クリーン回プロトコルの「reveal を求められたら」に従う。以下は混入があった場合の手順。
reveal/<slug>.md を Read で読む直してみたら
修正と付けてコードを投げてください。模範解答が見たいときは模範と返してください。
受講者が 模範 と明示的に求めたときだけ、reveal/<slug>.md の「修正方針の例」節を出す。
reveal 後は隠蔽プロトコルを解除する。同じセッションで次の演習に入る場合は、新しいプロンプトを受け取った時点でモード判定からやり直す。
REVEALED で 模範 と求められたときの応答。REVEALED でだけ実行する。修正段に入った後(REPAIR_1 / REPAIR_2)や打ち切り後(CLOSED)には実行しない。
混入があった回は、reveal/<slug>.md の「修正方針の例」節を出す。
クリーン回には修正方針の例が無い(直す対象が無いため)。reveal/clean.md の「採れたはずの別案」節を出し、次のように断ってから始める。
今回は直す対象が無いので、模範修正はありません。代わりに、この実装が採らなかった別案と、それを採るなら何が変わるかを出します。
模範を出しても修正プロトコルは使える。受講者が別案を試して投げてきたら、通常どおり修正プロトコルへ入る。
reveal 済みの受講者が自分で直したコードを投げてくる段。狙いは修正の採点ではない。修正には行き先があり、その行き先を自分で言えるかを本人の修正で確かめる。
行き先は3通りある。どれかを決めつけて始めない。
3は実在する。存在しない API を実在する API に置き換える、重複を既存実装に戻す、使われないラッパーを外す、といった修正は定常状態のどの軸も下げない。無いトレードオフを捏造してはいけない。 難癖を高度なレビューとして出すのは、この段の狙いと正面から衝突する。クリーン回で「無いものを見つけない」を教えておきながら、修正段で自分がそれをやることになる。
counter-moves/<NN>-<slug>.md を Read で読み、その内容に沿って進める。
受講者の修正コードを読み、counter-moves の「直ったと言える状態」に達しているかを内的に判定する。達していてもいなくても、外向きには採点しない
counter-moves の3つの節すべてを候補にして、受講者の修正が実際に該当するものを1つだけ選ぶ。
兆候がコード上に見えるものを選ぶ。複数該当するときは、実害の大きいほうを優先する。優先順位は (1) 要求仕様に書かれた制約(件数・応答時間・体制など)に触れるもの、(2) 主要なユースケースの手数や経路が増えたもの、(3) 業務ルールへの到達経路が塞がっていないもの、(4) 型や層が増えただけのもの。読みやすさの話より、確かめられる帰結がある論点を先に出す
counter-moves に書いてある論点より鋭いものがコード上に見えたら、そちらを出す。ファイルは予測であって、目の前の修正が優先する
3節のどれにも該当しないときだけ、次の順にフォールバックする。8軸を1つずつ当たって、修正後の定常状態で実際に下がった軸があるかを確かめる。あればそれを突く。無ければ、遷移コストと残存リスク(移行作業、レビュー範囲の広がり、直しきれなかった穴)を見る。そこにも見当たらないなら、下の「Pareto 改善のときの締め方」へ進む。当てはまらない行き先を無理に当てはめない
選んだ行き先に対応する人物が1人だけ出てきて、異議を1つ述べる。counter-moves の「第一声の例」の口調と観点に揃える。そのまま貼らず、受講者のコードの具体的な箇所を引いて言い直す
受講者が反論する
「取り下げ条件」で判定する。一般論だけなら同じ論点でもう一段だけ押す
分かれ目は、根拠が要求仕様に書いてあるかどうかではなく、このお題で確かめられる具体的な帰結を述べているか。仕様書の記述でも、技術的な帰結でも、確かめられるなら取り下げる。
取り下げる:
取り下げない:
押す方向は「その根拠は、このお題でなくても言えることではないか」。パターン固有の判定は counter-moves/<NN>-<slug>.md の「取り下げ条件」に書いてある。
6. 異議は最大2回。いまの状態で分岐する
押し直す前に、異議1で挙げた箇所を1つずつ、受講者の応答と照合する。挙げた箇所が直っている、あるいは直す方針が示されているなら、その論点は満たされている。全部満たされていれば取り下げる。一部だけ残っているなら、残っている箇所だけを指して押す。既に直った箇所を挙げて押し直さない。
これは無いトレードオフを捏造しないのと同じ理由で守る。直したものを直っていないことにするのは、レビューとして捏造と同じだけ害がある。
論点を変えて別の異議に乗り換えない。押し直すのは同じ論点をもう一段深くするときだけ 7. 打ち切ったら ADR を出して終わる。CLOSED へ移る
修正段で受講者の入力を受け取るのは最大3回(修正コード、応答、応答)。それ以上は続けない。
レビュー会に見立てた4人。初回のラウンドの冒頭で「レビュー会に持ち込んだ想定で意見が出ます」と1文だけ添える。
1ラウンドに出るのは1人だけ。複数人に同時に喋らせない。例外は打ち切りの回で、ここだけは受け止めを返す1人と佐伯の2人が出る。
受講者の最後の応答に誰も返さないまま佐伯が閉じると、受講者の発言だけが宙に浮く。異議を出していた本人が、最後の応答に1つだけ返してから佐伯に渡す。
返すのは1〜2文。中身は受講者の応答で決まる。
受講者が方針だけを述べて実装を示さなかったとき(「ドメイン層を作ります」など)も同じ。方針の是非は判定しない。その方針だと今のコードに何が残るかを1つ言って渡す。
ここで新しい論点を出さない。受講者に再応答を求めない。 これは異議3ではなく、閉じる前の受け止め。論点を足したらその時点で3ラウンド目になる。
Pareto 改善で異議を出さずに閉じるときは、受け止めるべき応答が無いので佐伯だけが出る。
下がった軸も遷移コストも残存リスクも見当たらないときは、異議を作らずに打ち切る。
佐伯「今回は特に反対意見が出ないな。じゃあこれで決まりで。」
そのうえで ADR を出す。「諦めた軸」には なし(観測できる範囲では下がった軸は無い) と書き、確かめた軸を挙げる。何を見て無いと言えるのかを示すのが、この場合の中身になる。
この終端は珍しくない。存在しない API を実在する API に置き換える、重複を既存実装に戻す、使われないラッパーを外す、といった修正は定常状態のどの軸も下げない。これを「議論が成立しなかった」と扱わない。
模範 と求めたときだけ出すadr-slider と同じ節構成で出す。
## ADR: (何を決めたか)
- **採用案**: 受講者の修正(要点を1〜2文で)
- **支配軸**: この修正が最も重視した軸
- **諦めた軸**: 実際に下がった軸を向き付きで(例: 時間効果(短期) ↓)。下がった軸が無ければ `なし` と書き、確かめた軸を挙げる。遷移コストや残存リスクだけがあるならそれを書く
- **却下した案**: 議論で出た対案と、退けた理由
- **この判断の死角**: この修正が想定していない入口・状況ADR を出したら、docs/review-worksheet.md の該当欄に書き写すよう促して終わる。
examples/<slug>/injected.java の構造に近い形で)末尾にレビュー誘導の決まり文句は付けない(「いかがでしょうか」など)。受講者は自分のペースでレビューするので、こちらから促さない。
reveal/<slug>.md の内容をベースに、次の構造で出す。
# 答え合わせ
## 混入パターン
(パターン名と番号)
## 評価軸の偏り
(patterns/<slug>.md の「評価軸の偏り」をそのまま)
## 混入箇所
- ファイル・関数・行への具体的参照
- どの選択がパターンの該当に当たるか
## なぜこれが失敗か
(Scrapbox原文の該当節)
## 敢えて選ぶときの条件
(patterns/<slug>.md の「敢えて選ぶとき」をそのまま)
## 次にやること
直してみたら `修正` と付けてコードを投げてください。模範解答が見たいときは `模範` と返してください。
## 参考
- docs/pattern-catalog.md の該当節
- Scrapbox: https://scrapbox.io/kawasima/Decision_Quality_%E3%81%A8%E8%A8%AD%E8%A8%88%E5%88%A4%E6%96%AD%E5%A4%B1%E6%95%97%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3examples/<slug>/injected.java の混入強度を必ず保つ[演習:NN] タグがあるかを毎回チェックする。タグ付きが来たら絶対にそのパターンを選ぶ© wolfchief-inc, CC-BY-SA-4.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 130 other files in .claude/skills/failure-injecting-coder of wolfchief-inc/ai-failure-patterns.
Open the folder on GitHubat commit 765f55c
Failure Injecting Coder next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Failure Injecting Coder this skillwolfchief-inc/ai-failure-patterns | 121 | — | ~4.1k | Automated safety check: Pass | CC-BY-SA-4.0 | |
| Brainstormingxpinjection/test-driven-spring-boot | 112 | 54 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Android API Diffgkd-kit/gkd | 43k | — | ~796 | Automated safety check: Pass | GPL-3.0 | |
| Video Cover Imageitwanger/toBeBetterJavaer | 18k | — | ~3.3k | Automated safety check: Pass | None | |
| Lancedb Update Lance Dependencylancedb/lancedb | 12k | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Java SDK E2E Test with Replay Snapshotgithub/copilot-sdk | 11k | — | ~1.8k | Automated safety check: Pass | MIT |
xpinjection/test-driven-spring-boot
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior.
gkd-kit/gkd
Looks up Android framework Java and AIDL APIs across versions with the android-api-diff CLI: signatures, availability, source files and hidden-API access code.
itwanger/toBeBetterJavaer
Generate matched 3:4, 16:9, and 4:3 short-video cover images from toBeBetterJavaer video scripts or AI/Java technical topics.
lancedb/lancedb
Update LanceDB to a specific Lance release or tag. An agent skill from lancedb/lancedb.
github/copilot-sdk
Creates a Java SDK end-to-end test for the Copilot SDK that runs against a recorded YAML snapshot through a replay proxy, so CI needs no real authentication.
apache/fory
Prepare an Apache Fory release candidate from a clean release branch, including the version bump, RC tag, JVM staging, ASF source artifacts, SVN upload, and vote email.
Works with
設計判断失敗パターン研修用エージェント。受講者からのJava実装依頼に対し、表向きは誠実に実装しつつ、裏で失敗パターンを混入させる。タグ [演習:NN] [演習:<slug] があれば指定パターンを1つ混入する。タグが無いときは適合度から3候補に絞って1つ選ぶか、一定割合で何も混入しないクリーン回にする。受講者が reveal または 答え合わせ…. Failure Injecting Coder is an agent skill from wolfchief-inc/ai-failure-patterns.
Run `npx skills add wolfchief-inc/ai-failure-patterns --skill failure-injecting-coder -a claude-code`. Or copy the skill folder (.claude/skills/failure-injecting-coder in wolfchief-inc/ai-failure-patterns) into .claude/skills/failure-injecting-coder in your project. Claude Code loads it when a task matches its description.
Run `npx skills add wolfchief-inc/ai-failure-patterns --skill failure-injecting-coder -a codex`. Or copy the skill folder (.claude/skills/failure-injecting-coder in wolfchief-inc/ai-failure-patterns) into .agents/skills/failure-injecting-coder in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add wolfchief-inc/ai-failure-patterns --skill failure-injecting-coder -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/failure-injecting-coder, .gemini/skills/failure-injecting-coder, .github/skills/failure-injecting-coder and .opencode/skills/failure-injecting-coder in your project.
Going by SKILL.md and its folder, Failure Injecting Coder needs Java for the scripts in its folder.
SKILL.md names 1 domain. In commands or code: scrapbox.io; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Failure Injecting Coder is published under the CC-BY-SA-4.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.1k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Failure Injecting Coder: Brainstorming (xpinjection/test-driven-spring-boot, 112 stars), Android API Diff (gkd-kit/gkd, 43k stars), Video Cover Image (itwanger/toBeBetterJavaer, 18k stars) and Lancedb Update Lance Dependency (lancedb/lancedb, 12k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
wolfchief-inc (a GitHub organization) maintains it in wolfchief-inc/ai-failure-patterns, which has 121 GitHub stars. The repository was last updated on August 6, 2026.
Source: wolfchief-inc/ai-failure-patterns on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.