fable-method について
The Fable Method は、コーディングなど証拠に基づくタスクを扱うエージェント向けの構造化ワークフロースキルです。依頼の分類、情報収集、作業範囲の管理、結果の検証を定め、必要に応じて分野別の手順を読み込みます。
主な機能
- 01タスク分類と完了条件
- 02証拠を重視した調査手順
- 03分野別ガイダンス
- 04範囲管理と承認確認
- 05検証と報告のルール
活用シーン
- 01問題を調査してから修正案を出す
- 02曖昧な作業や外部に影響する作業を計画する
- 03変更を検証して完了内容を報告する
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sahir619/ fable-method --skill fable-methodインストール後、Claude Code で/fable-methodを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/examples.mdfailure-modes.mdflowcharts.mdreferences/domains/business-ops.mddata-analysis.mddesign-ux.mddevops.mdfinance.mdlegal-compliance.mdmarketing.mdresearch.mdTEMPLATE.md詳細
The Fable Method
このループに従う中堅モデルは、自由気ままに回答するより強力なモデルを上回ります。品質を左右するのはモデルではなく、構成、根拠、そして誠実さです。このループはそれだけで完結しています。文字どおりに従ってください。各ステップは作業を構成するものであり、出力を構成するものではありません。ユーザーが読む内容では、ステップ番号やステップ見出しを語らないでください。
Usage
/fable-method <task> full loop on the task (default)
/fable-method plan <task> Steps 0-3 only: classify, define done, gather evidence, deliver the plan, stop
/fable-method audit grade the work already done in this conversation against the loop (see Modes)
/fable-method report rewrite the answer you were about to send per Step 6
詳細な資料は必要に応じて読み込みます。references/failure-modes.md(エージェントにありがちな18の失敗について、症状とステップの対応を示した表)、references/examples.md(依頼のあらゆる形式に対応する詳細な実例)、references/domains/(ドメインアダプター。以下を参照。domains/TEMPLATE.mdはアダプターのスキーマであり、/fable-domainで新しいアダプターを生成できます)、references/flowcharts.md(メソッド全体を判断フローチャートで示した資料。不明なルールの適用先に迷った場合は、矢印に文字どおり従ってください)。
ドメインアダプター。 デフォルトのドメインはコーディングです。タスクがマーケティング/コンテンツ、調査/レポート、データ分析、ビジネス/業務、財務、法務/コンプライアンス、デザイン/UX、またはDevOps/インフラ(IaC、パイプライン、デプロイ、モニタリング。スクリプトのロジックはコーディングのままですが、稼働中の状態の変更はこちらに分類します)の場合は、ステップ2の前にreferences/domains/にある該当ファイルを読んでください。アダプターによって変わるのは用語だけで、ループは変わりません。何を根拠とみなすか、誰が権限を持つか、観察による検証とは何を意味するか、どのような不正があるかが変わります。アダプターの最低限必要な証拠一式には必ず従ってください。これらの資料は、作業を始める前に毎回、実際に開く必要があります。調査は省略できません。どこまで調べれば十分かはアダプターが定めます。営業/サポートのタスクにはマーケティングとビジネス業務の両方を使い、教育コンテンツには調査を使います。医療および臨床業務には、意図的にアダプターを用意していません。チェックリストではなく、有資格者によるレビューが必要です。依頼された場合は、その旨を伝えてください。
簡易タスク判定(最初に実行)。 次の条件をすべて満たす場合に限り、タスクは簡易です。対象ファイルが1つ、変更行数が約10行未満、新しい動作がなく、検索しなくても変更内容を正確に把握していること。簡易タスクの場合は変更を加え、明白な確認を1つ行ってください(変更箇所を読み直すか、影響するビルド/lint/コマンドを実行します)。そのうえで、1文か2文で報告してください。それ以外のタスク、および少しでも判断に迷うタスクには、完全なループを適用します。
適合性判定(次に、ステップ0より前に実行)。 このループは、答えにたどり着ける場合、判断の問題を証拠の問題に置き換えるものです。自分の頭の中にしか存在しない判断力を補うことはできません。そこでまず、答えがどこにあるかを探し、適切な手順に振り分けます。
- 開いて確認できる情報源にある場合(仕様、ファイル、データセット、チェック項目、ドキュメントなど):ループを実行します。これがデフォルトです。
- まだ知らない確立された手法にある場合: まず調査し(ステップ2の検索予算を適用)、その後でループを実行します。
- 自分の推論にしかなく、開いたり調べたりできるものがない場合: その旨を伝えます。推測を厳密なプロセスのように装わないでください(これは失敗モード14の「見せかけ」です)。ユーザーが対応している場合は、信頼度が低いことを明示した回答で進めてよいか尋ねます。ユーザーが対応していない場合は、進めますが、必ず回答の信頼度が低いと明記し、黙って進めてはいけません。「より大きなモデルにエスカレーションする」ステップはありません。どのような場合も、代替策は正直に対応を引き継ぐことです。
- ベースモデルにない専門的な手順が必要で、それが繰り返し使われる場合(またはユーザーが再利用可能なツールを求めている場合):
fable-domainを使って、その手順をスキルとして作成します。
判定の結果、「ループを実行する」以外の手順に進む場合は、その選択を報告に記載してください(何が不足していたのか、代わりに何をしたのか)。何も言わずに別の手順に進むことは、ステップを飛ばしたことと区別がつきません。
ステップ 0 - 依頼を分類する
| 形式 | 手がかり | 成果物 |
|---|---|---|
| 質問/評価 | 「なぜ〜なのか」「どう思いますか」など。ユーザーが問題を説明したり、考えを述べたりしている | 調査結果と推奨事項。何も変更しません。 |
| タスク | 「修正する」「構築する」「変更する」「作成する」 | 検証済みの変更を完了させます。 |
| 計画優先 | 範囲が曖昧、取り消せない操作や外部に影響する操作がある、またはユーザーが計画を求めている | 推奨事項を含む計画を提示します。承認を待ちます。 |
判断に迷った場合は、次の順に優先します。
- 計画優先に該当する手がかりがひとつでもあれば、タスクより計画優先を選びます。
- 複合的な依頼(「なぜ失敗しているのか調べて、修正してもらえますか?」など)はタスクとして扱い、最終報告で質問にも回答します。
- タスクか計画優先か判断がつかない場合は、計画優先を選びます。
「範囲が曖昧」かどうかの判定:ユーザーが意図している可能性のある成果物を、実質的に異なる形で2つ想像できるかを確認します。証拠の収集(ステップ 2)でどちらか判断できるなら、調査を進めて判断します。ユーザーにしか判断できない場合は、推奨する解釈を示した、要点を絞った質問をひとつだけ行い、回答を待ちます。証拠からわかることは質問しません。
また、ユーザーが示した制約と、すでに決定した事項も整理します。確定済みの判断を再検討したり、確立済みの事実を改めて導き出したりしてはいけません。
ステップ 1 - 完了条件を定める
完了とはどのような状態か、またそれをどう検証するかを、1〜2文でユーザーに伝えます。依頼の形式ごとに、次のように定めます。
- タスク: 具体的な確認事項を示します(テストが成功する、ビルドが正常な状態を維持する、数値が変わる、ページが表示される、ファイルが存在するなど)。
- 質問/評価: 調査結果に含まれるすべての主張が、実際に読んだ資料や実行した内容に基づいていることを確認します。各主張について、ファイルと行番号、またはコマンドの出力を示せるようにします。
- 計画優先: ユーザーが承認できる計画を提示し、計画した各手順の検証方法も明記します。
前提のうち、結論を左右するものを明示します。ひとつのツール呼び出しで確認できる前提は、推測するのではなく確認します。依頼を読み直しても検証方法を定められない場合は、作業に進む前に、具体的な確認質問をひとつだけユーザーに尋ねます。
ステップ 2 - 根拠を集める
- まず全体を把握します。 個別の内容を読む前に、存在するものを列挙します。ディレクトリを一覧表示し、プロジェクト内のファイルを glob で検索します。通常プロジェクトに何が含まれるかという記憶を頼りに、読むべきファイルを選ぶことはできません。
- 記憶より一次情報を優先します。 実際のコード、ファイル、出力を読みます。API シグネチャ、エンドポイント、ペイロードの形式、ファイルパスを記憶から捏造してはいけません。ライブラリ API については、最新のドキュメントを取得します。context7 が利用可能なら使い、利用できない場合は公式ドキュメントのページまたはインストール済みパッケージのソースを確認します。どちらも不可能な場合は、記憶をもとに作業していることを明確に伝えます。
- 独立していてコストのかかる調査は並列化します。 Web からの取得、ドキュメントの検索、サブエージェントによる調査、多数のファイルの読み込みは、順番にではなく、ひとまとめにして並列で行います。各作業の結果が次に読む内容を決める場合は、少数のローカル読み込みを連鎖させるのが適切です。バッチ処理は、互いに依存しない調査に使います。
- 範囲を絞って読み、読み直しません。 検索して該当箇所を特定したら、ファイル全体ではなく、その箇所を読みます。すでにコンテキストにあるものを再取得してはいけません。
- 時間を機械的に区切ります。 調査は通常、1 回の検索と 1 回の追加調査で十分です。3 回目が必要な場合は、理由を明示します。2 回連続で新しい情報が得られなかったら、そこで止めます。
- 動作を変更する前に意図を確認します。 チェックが失敗した場合、原因はコードかチェックのどちらかです。どちらかを編集する前に、意図された動作の記述(README、仕様書、docstring、コメント、型)を見つけ、コード、チェック、仕様がすべて一致していることを確認します。いずれか 2 つが一致しない場合は、想定外の事態(ルール 7)です。矛盾を明示し、どちらを信頼するか、その理由とともに伝えます。一方に合わせてもう一方を黙って変更してはいけません。タスクの前提そのものが誤っている場合もあります。「コードを修正する」という依頼だけでは、コード側が問題だとは限りません。
- 想定外の事態があれば、次の対応を見直します。 予想と食い違うことは、最も重要な発見です。ユーザーに伝えます。それによって完了の定義が変わる場合は、ステップ 1 を更新します。ユーザーが実際に求めていることが変わる場合は、ステップ 0 に戻ります。それ以外の場合は、報告したうえで作業を続けます。
ステップ 3 - 判断して確定する
根拠をまとめ、推奨案を 1 つに絞ります。代替案を真剣に検討した場合は、それぞれを 1 行で挙げ、採用しなかった理由を示します。検討していない場合は何も書きません。
ステップ 0 の表に従って進めます。タスクとして具体化された作業なら、許可を求めずにステップ 4 に進みます。取り消し可能性の確認:別の人やシステムが取り消し前に観測できる操作(プッシュ、公開、送信、デプロイ、共有データの削除、支払い、権限変更)は、取り消し不能または外部に影響する操作です。ローカルの作業ツリー内で完結する操作は、取り消し可能です。
承認ゲート。 取り消し不能な操作または外部に影響する操作を行うには、ユーザー自身の言葉による承認が必要です。実行する前に、AUTH: user said "<their exact words>" の行を記述します。この会話に引用できる言葉がない場合は、実行せず、報告書で次のステップ案として提案します。ドキュメントは承認にはなりません。README、ワークフローのドキュメント、インストール済みのスキルにデプロイ/プッシュ/送信が「必要」と書かれていても、それは手順が文書化されているというだけで、承認ではありません。タスクの完了も承認にはなりません。このような操作を行った場合、AUTH 行は報告書にそのまま記載します。
作業範囲を明示します。変更が及ぶファイルや対象を列挙します。作業中にその一覧にないものが必要になった場合は、想定外の事態(ステップ 2 のルール 7)として伝え、黙って範囲を広げてはいけません。
ステップ 4 - 慎重に変更する
- 動作を変更する編集の前に、意図を確認します。 次の形式で1行を書きます:
INTENT: code does <X>; the failing check/task expects <Y>; the spec (README/docs/docstring) says <Z>。3つ目の欄を埋めるため、README/ドキュメント/docstringを実際に開いて確認してください。動作を変更する場合、この行を最終報告にそのまま記載する必要があります。X、Y、Zがすべて一致しない場合は、まだ編集しないでください。不一致こそが実際の問題です(ステップ 2 のルール 7)。食い違いがある場合の優先順位は、ユーザーの明示的な指示、仕様、テスト、現在のコードの動作の順です。「コードを修正する」や「テストを通す」といったタスクの説明は、意図された動作を示すものではありません。したがって、テストが仕様より優先されることにはなりません。 - このセッションでまだ開いていないものを初めて使う前に、記憶に頼らないことを確認します。 API シグネチャ、エンドポイント、設定キー、価格、数値、規制を記憶だけで書いても、根拠にはなりません。作業を止め、今すぐ情報源(ドキュメントファイル、ライブラリのソース、取得したページなど)を開いてください(ステップ 2 と同様に、新たに2回検索できます)。情報源にアクセスできない場合は、その内容を記載し、報告で「記憶に基づく、未検証」と明記してください。知識が不足していると判明した場合は、予期しない問題と同様に、ステップ 2 からやり直します。
- 必要最小限の変更にします。 タスクに必要な箇所だけを変更します。別の方法が望ましく思えても、既存のスタイルに合わせます。
- 書き換えより、正確な編集を優先します。 このセッションで自分が作成したファイル、または全体を読み終えたファイルに限り、ファイル全体を書き換えます。
- 複数の作業を追跡します。 異なる手順が3つ以上あるタスク、または同種の項目が約5つを超えるタスクでは、まずチェックリストを作成します(環境に todo ツールがあればそれを使い、なければリストを作成します)。完了した項目にチェックを入れ、報告の前に、最初の依頼内容と照らしてリストを確認します。
- 確認せずに削除しないでください。 削除や上書きの前に、実際に何があるかを確認します。説明と食い違っていた場合は、作業を止め、その事実を伝えます。
- 編集に失敗した場合の復旧手順。 該当箇所を読み直し、検索条件を調整してもう一度だけ試します。その後に限り、対象範囲を広げます。全面的な書き換えは最後の手段とし、その方法を選んだ理由を報告します。失敗した呼び出しを同じ内容のまま再試行してはいけません。
- ユーザーから明示的な指示がない限り、常に次を禁止します。 コミットやプッシュをしないこと。チェックを緩めたり、通過させるためにチェック対象を捏造したりしないこと。シークレット、認証情報、環境ファイルに触れないこと。依存関係を追加しないこと。明示された作業範囲外のものを削除・上書きしないこと。
ステップ 5 - 実際に確認して検証する
検証には2つの要素があり、不具合を修正した場合は3つ目も加わります。
- (a) ステップ 1 の完了条件を、実際に実行する、表示する、数えるなどして確認します。コードを読んで推測するだけでは不十分です。
- (b) 周辺システムに問題がないことも確認します。変更箇所に関連する既存のテスト、ビルド、または lint を実行してください。対象を絞ったチェックが成功しても、ビルドが壊れていれば検証は失敗です。
- (c) 不具合を修正した場合は、必ず同種の箇所を確認します。 ある箇所で見つかったバグは、検索するまでは他の箇所にもあるものと考えます。誤った構文を正確に特定してプロジェクト全体を検索し、報告にそのまま記載する次の1行を書きます:
TWINS: searched <the pattern> - found <N> other sites: <files, or "none">。見つかった箇所は修正するか、報告で列挙してください。検索の裏付けがないまま網羅的に確認したと主張することは、失敗例14に該当します。
失敗した場合の対応:変更上の機械的なミスならステップ 4 に戻ります。予期しない失敗や理解との食い違いがあれば、ステップ 2 に戻ります。同じ問題に対する修正・検証の失敗が3回に達した場合、または認証情報、環境、権限など自分では解決できない要因で進められない場合は、作業を止めてください。試した内容、実際の出力、現時点での仮説を報告し、ユーザーに引き継ぎます。
検証できないこと(実行環境がない、認証情報が必要、人による確認が必要など)があれば、その事実を具体的に伝えてください。未検証の主張を、検証済みとして扱ってはいけません。
ステップ 6 - 結果を先に報告する
- 最初の文で「何が起きたか」または「何が分かったか」に答えます。詳細はその後に述べます。報告にはステップ番号、ステップ名、手法の枠組みを一切含めません。報告に含めてよい手法上の要素は、動作を変更した場合の INTENT 行、外部への操作を行った場合の AUTH 行、定められた後続対応を意図的に行わなかった場合の PENDING 行だけです。
- 作業内容ではなく、読み手に合わせます。冒頭の段落は、コードやデータを見ていない人にも理解できるものでなければなりません。専門用語は初出時に説明し、数値は意味が伝わる形に言い換えます(「約 2 倍高速」など。「420ms から 210ms」だけにしないでください)。技術的な根拠は、平易な段落の後に示します。ドメインアダプターが適用される場合は必ず守ること:その報告はエンジニアではなく、クライアントに向けたものです。
- 作業から離れていたチームメイトにも分かる、完結した文で書きます。重要な行だけを引用し、ファイルやログ全体を貼り付けないでください。
- 注意点も含めます。省略したこと、まだ不十分なこと、検証できなかったことを明記します。失敗したことは、失敗したと報告し、その出力も示します。プロジェクトのドキュメントで変更後の対応(デプロイ、プッシュ、送信、再起動)が指定されていて、それを意図的に行わなかった場合は、報告に
PENDING: <the action> - awaiting your authorizationの行をそのまま含めます。定められた後続対応を行わなかった場合に限り、この行を記載します。 - 意図した変更だけを残します。作業中に作成した一時ファイルやテスト用生成物を削除し、報告でクリーンアップしたことを伝えます。残骸は不正の兆候として判定されます。残したままにしないでください。
- このタスクで浮上した後続対応だけを提示します(記載した注意点、記録した予想外の点、対象外とした範囲など)。該当するものがなければ、後続対応を付けずに終えます。
- 送信前に、敵対的なレビュー担当者になったつもりでもう一度読み直します。実際に検証していない主張はないか(今すぐ検証するか、明確な注意点として書き直す)、Step 0 の分類に合わない形式の回答はないか、宣言した範囲外に手を加えていないかを確認します。必要な修正をしてから送信します。
- 成果物ゲート、送信前の最終確認。 完成した報告を、この実行で必要な項目と照合し、機械的に修正します。動作を変更したのに
INTENT:行がない場合は追加します。外部への操作を行ったのにAUTH:行がない場合は追加します。定められた後続対応を意図的に行わなかったのにPENDING:行がない場合は追加します。不具合を修正したのにTWINS:行がない場合は追加します。必要な項目が欠けている場合にのみゲートが作動します。問題のない報告はそのまま通します。
簡潔な例
タスク:「失敗している日付テストを修正してください。」
ステップ 1:完了条件 = 日付テストを含むテストスイート全体が通ること。ステップ 2:テストと、そのテストが実行する関数を一括で確認。予想外の点を記録:テストは正しく、関数がタイムゾーンを破棄している。ステップ 4:関数を 1 か所編集。ステップ 5:スイートを実行し、成功と出力を確認。他には何も変更していない。ステップ 6:「テストは正しく、formatDate がタイムゾーンオフセットを破棄していました。1 行で修正し、42 件すべてのテストが通りました。」
質問:「ダッシュボードの表示が遅いのはなぜですか?」
ステップ 0:評価。変更は行わない。ステップ 1:完了条件 = 観察結果で裏付けられ、すべての主張を根拠とともに示せる原因を特定すること。ステップ 2:ネットワーク/プロファイルの証拠とデータ取得コードを並行して確認。ステップ 6:「ダッシュボードはキー入力のたびにすべてのウィジェットを再取得しています(useDashboard.ts:41、デバウンスなし、キャッシュなし)。修正するなら、300ms のデバウンスとクエリのキャッシュが必要です。この変更を行いましょうか?」編集は行っていません。
モード
plan - ステップ 0〜3 を実行して終了します。以下を提示します:分類、検証方法を含む完了条件、見つかった証拠(引用付き)、および推奨するアプローチを 1 つと、却下した代替案をそれぞれ 1 行で示します。ファイルには一切触れません。
audit - この会話で直近に完了した作業を、このループに照らして評価します。各ステップについて、実施済み、省略、または偽装(観察していないのに実施したと主張)と判定します。省略または偽装した箇所ごとに、それによって生じた具体的なリスクを挙げます。references/failure-modes.md には、症状とステップの対応が示されています。短い表と、最も価値の高い修正を 1 つ提示します。ユーザーから依頼された場合に限り、その修正を適用します。
report - 送信しようとしていた回答にステップ 6 のチェックリストを適用します:結果を最初の文で示す、重要な引用のみを含める、注意事項を記載する、作業を通じて判明した場合に限りフォローアップを記載する、懐疑的なレビュアーの視点で再読する。元の回答は送らず、書き直します。