ask-matt について
Ask Mattは、ソフトウェア開発向けのエージェントスキルを選び、順序立てて使うためのガイドです。アイデア整理、試作、計画、実装、レビュー、保守をフローにまとめ、受け付けた課題と難しいバグには別の経路を示します。
主な機能
- 01アイデアからリリースまでのスキルフロー
- 02バグと受け付けた課題の経路
- 03仕様化とチケット分割の手順
- 04実装、テスト、レビューの指針
- 05コンテキストとフェーズ境界の指針
- 06独立した調査・設計スキル
活用シーン
- 01新機能に使うスキルの順序決め
- 02大規模な作業を判断事項とチケットに分割
- 03テスト先行で難しいリグレッションに対応
- 04エージェントが扱いやすいコードベースの保守
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ windyd/ 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 はどのように見えるべきか、といった問いに答えます。「使い捨て」とはコードの書き方に関する制約であり、破棄するという約束ではありません。得られた答えは実際のコードに反映し、プロトタイプ自体はメインブランチから分岐した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-matt-pocock-skills:最初のエンジニアリングフローを開始する前に実行し、他のスキルが前提とするイシュートラッカー、トリアージ用ラベル、ドキュメントのレイアウトを設定します。カスタムのイシュートラッカーも利用できます。