ask-matt について
ask-mattは、コーディングエージェント向けに、構想からリリースまでの作業や課題対応、デバッグ、コードベースの保守を案内するスキル集です。スキルの連携と使いどころをフローで示します。
主な機能
- 01構想から実装までのフロー案内
- 02課題のトリアージとバグ診断
- 03仕様書とチケットの作成
- 04テスト駆動の実装とレビュー
- 05コードベース保守と設計リファレンス
活用シーン
- 01アイデアを開発計画にまとめる
- 02届いたバグ報告に対応する
- 03断続的なリグレッションを調査する
- 04大規模で不明瞭なプロジェクトを計画する
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ nstaab1/ nathan-agent-skills --skill ask-mattインストール後、Claude Code で/ask-mattを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yamlPHASE-BOUNDARIES.md
詳細
Ask Matt
すべてのスキルを覚えているわけではありません。気軽に尋ねてください。
フローとは、スキルをたどる経路です。ほとんどの経路は1つのメインフローを進み、2つのオンランプがそこに合流します。それ以外は単独で使うか、下層で機能する語彙レイヤーです。
メインフロー:アイデア → リリース
作業の大半がたどる経路です。アイデアがあり、それを形にしたいときに使います。
-
/grill-with-docsは、インタビュー形式でアイデアを磨き上げます。作業ディレクトリで作業しているときは、いつでもここから始めてください。学んだことをGLOSSARY.mdと ADR に保持するため、状態を引き継げます。(作業ディレクトリがない場合は、後述の「単独で使うスキル」で説明する/grill-meを使ってください。どちらも同じ/grillingプリミティブを実行します。grill-with-docsは記録を残すので、記録先となるリポジトリがある場合はこちらのほうが適しています。) -
分岐:会話ですべての疑問を解決できますか? 実行可能な回答が必要な疑問(状態、ビジネスロジック、実際に確認が必要な UI)がある場合は、プロトタイプに寄り道します。プロトタイプは専用のディレクトリに置かれるため、これはまさに
/handoffの用途です。両方向の引き継ぎに/handoffを使います(「フェーズの境界」を参照してください)。/handoffで引き継いでから、そのファイルを対象に新しいセッションを開始します。/prototypeで使い捨てのコードを書き、疑問への答えを出します。- 学んだことを
/handoffで引き継ぎ、元のアイデアのスレッドから参照します。
-
分岐:複数のセッションにまたがる実装ですか?
- はい →
/to-specでスレッドを仕様書にまとめ、続いて/to-ticketsでトレーサーバレットチケットに分割し、それぞれにブロッキング依存関係を明記します。その後、次のどちらかの方法でチケットに取り組みます。- チケットごとに
/implementを実行し、各チケットの間でコンテキストを/clearでクリアします。ローカルトラッカーでは、.scratch/<feature>/issues/にチケットごとのファイルを置き、手作業でブロッカーから順に進めます。実際のトラッカーでは、依存関係がネイティブなブロッキングリンクになるため、ブロッカーが完了したチケットを誰でも着手できます。各チケットは自己完結しているので、最後のチケットのコンテキストは破棄してかまいません。 - 仕様書全体に対して
/implement-specを実行します。チケットをタスクグラフとして読み込み、実装サブエージェントを準備ができたフロンティア全体で並列に実行し、すべてを1つの統合ブランチに取り込みます。チケットごとに自分で進めるより、ビルドのオーケストレーションを任せたい場合に使います。
- チケットごとに
- いいえ → 同じコンテキストウィンドウ内で、このまま
/implementを実行します。
どちらの場合も、コードの実装は
/tdd(一度に1つのレッド・グリーンのスライスを進める)を使って行い、最後に差分を2つの軸(規約と仕様)でレビューする/code-reviewを実行します。/implementはチケットごとに両方を実行します。/implement-specでは、各実装エージェントが/tddを実行し、統合ブランチ全体に対して/code-reviewを1回実行します。完全な仕様書なしで、具体的な振る舞いをテストファーストで実装したい場合は/tdd単独で、固定された基準に照らしてブランチや PR をレビューしたい場合は/code-review単独で使ってください。作業をプルリクエストとして提出するときは、
/prで本文を整えます。変更点を示す最小限のビジュアル、動作を示す変更前後の証拠、一方通行か双方向かの判断を用意します。モデルから呼び出されるため、エージェントは PR を作成するときにこのスキルを使います。 - はい →
-
/retroで一連の作業を締めくくります。ビルドの後、特にうまくいかなかった場合に、セッションを振り返り、コードではなくエージェントの環境への改善を提案します。対象は、ナビゲーション用のポインター、自動チェック、/code-reviewが適用するコーディング規約、ステアリングファイル、ツールなどです。機械的なミスは決定論的なチェックに、判断が必要な事項はコーディング規約にします。こうすることで、次のビルドをより良い環境から始められます。
コンテキストの衛生管理
手順1〜3は途切れない1つのコンテキストウィンドウで進めます(/to-ticketsが終わるまで、圧縮したりクリアしたりしないでください)。そうすることで、掘り下げ、仕様、チケットがすべて同じ思考の流れを引き継ぎます。各/implementはチケットをもとに、新しいセッションで開始します。振り返る対象のセッション内で、クリアする前に/retroを実行してください。クリアした後に実行する場合は、そのセッションのログを指定してください。
この制限の目安は**スマートゾーン**です。これは、モデルが鋭い推論を保てるウィンドウ(最先端モデルで約15万トークン)を指します。/to-ticketsの前にセッションがこの上限に近づいた場合は、推論が鈍ったまま進めず、最も近いフェーズの境界で/compactを実行して続けてください(「フェーズの境界」を参照)。
導入経路
作業が発生する状況から始まり、メインフローに合流する経路です。
-
バグやリクエストが積み上がっている →
/triage。トリアージの各役割を通して課題を処理し、エージェントが対応できる課題を作成します。これを後から**/implement**が取り込みます。トリアージの対象は、自分で作成していない課題に限ります。バグ報告、寄せられた機能リクエストなど、未加工のまま届いたものが対象です。
/to-ticketsが作成したチケットはすでにエージェントが対応できる状態なので、トリアージしないでください。 -
何かが壊れている →
/diagnosing-bugs。一筋縄ではいかないバグに使います。ひと目では原因がわからないバグ、断続的に発生する不安定な問題、正常な状態の間に紛れ込んだリグレッションなどが対象です。まず短いフィードバックループ(そのバグで実際に失敗するコマンド1つ)を確立するまでは、原因を推測しません。その後、リグレッションテストを追加して修正します。修正が入ったら、同じセッション内で**/retroを実行し、バグを未然に防ぐには何ができたかを振り返ります。根本的な発見が、問題を確実に防ぐための適切な接点がないことなら、/improve-codebase-architecture**の出番です。 -
見通しの立たない大規模な取り組み:新規プロジェクトや、1つのセッションでは大きすぎる大規模な機能開発 →
/wayfinder。ここで最も認知負荷の高いフローです。現在地から目的地までの道筋がまだ見えない場合は、イシュートラッカー上に意思決定チケットの共有マップを作成し、1つずつ解決していきます。霧が晴れて道筋が明らかになるまでは、成果物ではなく意思決定を生み出します。**/grill-with-docs**が1つのセッション内で扱えるアイデアを明確にするのに対し、Wayfinderは1つのセッションでは扱えないアイデアのためのものです。また、時間がかかり情報量も多いため、スコープが明確な機能には使わず、まさにこのような大規模な取り組みに限って使ってください。マップが明確になったら、実装はせず、引き継ぎます。メインフローの**
/to-spec**に合流し、マップ上で関連付けられた意思決定を実装可能な計画にまとめてから、通常どおり/to-ticketsと/implementに進みます。マップから直接/implementに進むと、この整理を飛ばして関連する詳細が失われるため、取り組みが本当に小規模だとわかった場合に限り、そのまま/implementに進んでください。
コードベースの健全性
機能開発ではなく、保守作業です。
/improve-codebase-architectureは、エージェントが扱いやすいコードベースを保つため、空き時間にいつでも実行できます。ここから改善の機会が見つかり、その中から1つ選ぶと、メインフローの/grill-with-docsに持ち込めるアイデアが生まれます。候補を見つけるのが調査であり、選んだ候補を設計する作業台が、以下の**/codebase-design**です。
下位にある語彙
ほかのスキルの下位で動作し、それぞれが語彙の唯一の信頼できる情報源となる、モデルから呼び出される2つのリファレンスです。プロセスではなく言葉が問題なら、直接参照してください。または、上位のスキルから参照させてください。
/domain-modeling:プロジェクトのドメイン言語を磨きます。曖昧な用語に異議を唱えたり、複数の意味を持つ単語(「account」が3つの役割を担っている場合など)を整理したり、変更が難しい決定をADRとして記録したりします。これは、GLOSSARY.mdを明確な用語集に保つために/grill-with-docsが推進する実践です。- **
/codebase-design**は、モジュールの形を設計するためのディープモジュールの語彙(モジュール、インターフェース、深さ、継ぎ目、アダプター、レバレッジ、局所性)です。明確な継ぎ目の背後に、多くの振る舞いを小さなインターフェースで隠します。/tddと/improve-codebase-architectureはいずれもこの語彙を使います。
フェーズの境界
フェーズとは、セッション内の作業のまとまりです。たとえば、質問を重ねる工程、実装、QAなどです。その2つのフェーズの境界では、5つの選択肢があります。このマップ全体で最も判断が曖昧なのは、どれを選ぶかです。
- 続行:そのまま続けます。コストも損失もありません。
/clear:次の作業に必要な情報がここに何もない場合、ウィンドウを空にします。/handoffは、持ち運び可能なMarkdownファイルを作成します。対象は限定的で、新しいハーネス、新しいディレクトリ、同僚への引き継ぎ、またはフェーズの途中でのサイドタスクの分岐に限ります。得られるのは持ち運びやすさです。- サブエージェント:範囲を明確に限定したタスクを別のウィンドウに送り、レポートを受け取ります。
/compactは、このコンテキストを圧縮して、新しいセッションに引き継ぎます。ツリーの最初ではなく、最下部にあるデフォルトの選択肢です。
PHASE-BOUNDARIES.mdを読んで、順序立てられたツリーを確認してください。5つの質問、それぞれの分岐の根拠、そして一次情報を参照するコストを考えると、まず続行を候補から外すべき理由が説明されています。判断は境界で行ってください。フェーズの途中なら、続行するか、残りをサブエージェントに分割します。
単独で使うもの
メインフローから完全に独立しています。
/grill-me:/grill-with-docsと同じく徹底的にインタビューしますが、ステートレスです。ローカルには何も保存せず、GLOSSARY.mdも作成しません。作業ディレクトリにいないとき(計画、設計、文章など、リポジトリに紐づかないものを練り上げるとき)に使います。作業ディレクトリにいる場合は、代わりに/grill-with-docsを使ってください。同じインタビューを実行し、記録も残すため、こちらのほうが明らかに優れています。/grillingはインタビューの基本機能そのものです。ラウンド、探索の最前線、事実の確認はエージェントの役目で、意思決定はあなたが行います。/grill-meと/grill-with-docsは、この機能を使うための名前付きの方法です。また、/triage、/wayfinder、/improve-codebase-architectureは内部でこの機能を実行します。ラッパーなしでインタビューを行いたい場合に限り、直接使ってください。/prototypeは、設計上の疑問をひとつ解決するための、小規模で使い捨てのプログラムです。たとえば、この状態モデルはしっくりくるか、この UI はどのような見た目にすべきか、といった疑問に答えます。「使い捨て」とはコードの書き方に関する制約であり、破棄する約束ではありません。得られた答えは実際のコードに反映され、プロトタイプ自体はmainから分岐したprototype/<name>ブランチに一次資料として残され、実装のイシューから参照されます。メインフローのステップ 2 にある寄り道ですが、設計上の疑問を机上で解決しにくいときはいつでも使ってください。/research:調査の下調べをバックグラウンドエージェントに委任します。エージェントは一次資料をもとに疑問を調査し、引用を含む Markdown ファイルをリポジトリに残します。調査中も作業を続けられます。生成されたファイルは、メインフローの/grill-with-docsに持ち込んで使うものです。調査は思考を支えるものであり、置き換えるものではありません。/to-questionnaire:あなたの頭の中にもコードベースにもなく、他の誰かの中にある情報が作業を妨げているときに使い、相手に記入してもらう質問票を作成します。これは/grill-meの逆です。対象についてあなたにインタビューする代わりに、送付について(誰に送るのか、どんな回答が必要なのか)あなたに質問し、不足している情報に焦点を当てます。返ってきた内容は/grill-with-docsまたは/to-specで使います。/wizardは、人間にしかできない手順のためのものです。インフラのプロビジョニング、認証情報や CI シークレットの設定、使い慣れないサードパーティのダッシュボードでの操作、単発のマイグレーションや切り替えなどが該当します。各 URL を開き、それぞれの値を取得して.envと GitHub シークレットに書き込む、対話型の bash スクリプトを生成します。これにより、毎回エージェントに説明し直していた手順をなくせます。モデルから呼び出されるため、エージェントは自分だけでは越えられない壁にぶつかった時点でこれを使います。エージェント自身で実行できるなら、エージェントが実行すべきです。人間が本当に介在する必要がある場合に使ってください。/wait-whatは、メッセージが伝わらなかったときに使う修正機能です。会話の途中でも、ほかのどのスキルの実行中でも使えます。エージェントは、あなたに不足していた背景情報を補い、平易な英語で、GLOSSARY.mdの用語を使って直前の説明を言い換えます。これは事後に使うものです。事前に使う/grill-with-docsは、早い段階で共通の言葉遣いに合意しておくことで、専門用語がそもそも登場しないようにする予防策です。/teach:現在のディレクトリを状態を保持する作業スペースとして使い、複数のセッションにわたって概念を学びます。/writing-for-agentsは、エージェントが読むドキュメント(スキル、AGENTS.md、参照先として指定されたドキュメント)の書き方に関するリファレンスです。
前提条件
/setup-agent-skills:最初のエンジニアリングフローを始める前に実行し、ほかのスキルが前提とするイシュートラッカー、トリアージ用ラベル、ドキュメントの構成を設定します。カスタムのイシュートラッカーも使用できます。