Next Steps:ターンごとに出る Claude Code のプロンプト提案
各ターンの後、Claude Code の入力欄の上に次に送りそうなプロンプトを 2〜3 件表示します。1、2、3 で下書き入力。
権限
- モデルを呼び出す(利用枠を消費)独自に Claude へリクエストを送信でき、その分はプランの利用量にカウントされます($.model.* / $.agent.spawn)。
- プロンプトを読み取る入力内容と会話のトランスクリプトを参照できます(prompt.* / session.append / session.messages)。
- UI を変更Claude Code の画面に描画します。バンド、ペイン、ステータス表示、トーストなど(ui.render / $.ui.*)。
- 検証バージョン
- v2.1.291
- 最終検証日
- 必要バージョン
- Claude Code ≥ 2.1.287
- 表示先
- プロンプト上部
Claude Code 内でインストール:
/plugin install next-steps --marketplace hamzafer/claude-code-modsこのModでできること
Next Steps は、Hamza Zafar(hamzafer)による claude-code-mods コレクションの一部で、コミュニティ Mod です。Claude Code のプロンプト提案を行います。ターンが終わると、入力欄の上の帯に、次に入力しそうな短いプロンプトを 2〜3 件表示します。たとえば Claude がファイルを説明した後に Write a test for the login function を提案することがあります。
入力欄が空のとき、1、2、3 を押すと対応する提案が下書きとして入力欄に入り、0 でリストが閉じます。何も自動では送信されません。下書きを編集するか、Enter を押します。ターミナルが広ければ提案は 1 行に並びます(next: 1 ... · 2 ... · 0 dismiss)。1 行に収まらないときは提案ごとに 1 行ずつ使い、帯に使える行数が足りない場合は 1 行にして末尾を切り詰めます。
提案は、ターンの後に haiku モデルを 1 回呼び出して作られます。Claude が作業中のとき、アンケートが開いているとき、返答が 20 文字未満のとき、バックグラウンドエージェントがまだ実行中のときは、帯は表示されません。サブエージェントのターンは無視されます。作者の where-am-i Mod は共有フラグを読み取り、このリストが表示されている間は自分の "next" 部分を省きます。
デモ
録画では、小さなデモプロジェクトでこの Mod を読み込んだ Claude Code を起動し、Claude に src/login.js を読んで 2 文で説明するよう依頼します。ターンが終わると、入力欄の上に next: の帯が現れ、Add error handling for empty strings や Write a test for the login function などの番号付き提案が 3 件と、0 dismiss の表示が出ます。動画はこの画面でしばらく止まり、その後、空の入力欄で 1 を押すと、1 件目の提案が未送信の下書きとして入力欄に入ります。動画は早送りされているため、実際の待ち時間は見た目より短くなっています。
インストール
インストールブロックのいずれかの方法を使ってください。どれも作者自身のマーケットプレイスから直接インストールします。帯は次にターンが完了した後に表示されます。
$ install next-steps
Claude Code 2.1.287 以上が必要
作者のマーケットプレイスからインストール: hamzafer/claude-code-mods
1.Claude Code 内で1行
/plugin install next-steps --marketplace hamzafer/claude-code-mods実行中のセッション(v2.1.275 以降)に貼り付けます。最初に Claude Code がマーケットプレイスの追加を確認します。
2.シェルから
claude plugin marketplace add hamzafer/claude-code-mods claude plugin install next-steps@claude-code-modsその後、すでに開いているセッションでは /reload-plugins を実行してください。
3.インストールせずに試す
git clone https://github.com/hamzafer/claude-code-mods claude --plugin-dir ./claude-code-mods/mods/next-stepsその1セッションだけ Mod を読み込みます。設定には何も追加されません。
仕組み
Mod は現在のリストをホストが保持する $.state アトムに保存し、AbovePrompt の描画位置に、他の Mod の帯の下として表示します。キー処理のコードは hooks/register.tsx からの抜粋です。
on('prompt.edit', async ($, e, next) => {
if (hasSurvey || !e.key || e.key.ctrl || e.key.meta || e.text !== '' || e.start !== 0 || e.end !== 0 || !/^[0-9]$/.test(e.inputText)) return next(e)
const s = await read($, steps)
if (!s) return next(e)
if (e.inputText === '0') {
await setSteps($, () => null)
return { text: '', cursor: 0 } // consumed: the box stays empty
}
const pick = s.items[Number(e.inputText) - 1]
if (!pick) return next(e)
return next({ ...e, inputText: pick }) // a draft: the person edits it or presses Enter
})turn.complete(メインエージェントのみ)で、suggest は maxTokens: 200 と 20 秒のタイムアウトで $.model.complete を呼び出します。モデルには、60 文字未満の命令形のプロンプトを 1 行に 1 件ずつ 2〜3 件返すか、NONE と返すよう求めます。その後 parseSteps が、コードフェンス、箇条書き記号、番号、引用符、エムダッシュを取り除き、前置きや 120 文字を超える行を破棄し(切り詰めず、破棄します)、重複を除いて、最大 3 件を残します。その間に新しいプロンプトや新しいターンが始まっていない場合にのみ結果が書き込まれるため、遅れて届いた応答が新しい状態を上書きすることはありません。prompt.submit と turn.start はリストを消去します。
カスタマイズ
/config にオプションはありません。動作を変えるには、register.tsx の先頭にある定数を編集します。MODEL(既定値は haiku)、MAX_ITEMS(3)、MAX_CHARS(60、モデルに求める長さ)、MAX_KEPT(120、残す最長の行)、MIN_ANSWER(20、呼び出しの引き金になる最短の返答)です。モデルへのリクエストの文言は、suggest の system と prompt の文字列にあります。
権限と安全性
何かを実行する前に、プラグインが実行できるすべてのファイルを読みました。.claude-plugin/plugin.json、hooks/hooks.json、hooks/register.tsx(唯一のモジュール)、型宣言、テストです。package.json、インストールスクリプト、バイナリ、バンドルまたは圧縮されたコードはなく、プラグインのフォルダー外から読み込まれるものもありません。
- モデル呼び出し。 メインエージェントのターンが完了するたびに、
suggestは$.model.completeを通じて、直近のセッションメッセージ最大 6 件(各 800 文字まで)と最新の返答(2,000 文字まで)を haiku モデルに送ります。これは他のモデル呼び出しと同様にあなたの Claude Code アカウントを使い、Mod が他のネットワーク接続を開くことはありません。送られるのはセッションの内容なので、あなたと Claude が話した内容が含まれる可能性があります。 - プロンプトのテキスト。 Mod がモデルに渡す指示は、読みやすい普通の文字列です。あなたのプロンプトや Claude のコンテキストには何も注入しません。モデルの出力は下書きとして入力欄に入るだけで、送信するのはあなた自身です。提案はトランスクリプトから作られるため、Claude が読んだファイル内のテキストが提案内容に影響する可能性はありますが、送信前に目にすることになります。
- キーとプロンプトのフック。
prompt.editは、空の入力欄に入力された数字を提案テキストに置き換えるか、0を消費します。prompt.submitはリストを消去してプロンプトをそのまま渡すだけです。claude plugin validateはprompt.submitを.catchのないゲーティングフックとして記録していますが、プロンプトをブロックしたり書き換えたりすることはありません。 - それ以外はなし。 コマンドを実行せず、ファイルの読み書きもせず、設定、シェルファイル、デーモンには触れず、環境変数も読まず、テレメトリもありません。状態はホストがメモリ上で保持します。ライセンスは MIT で、リポジトリに LICENSE ファイルがあります。
claude plugin validate はエラーも警告も報告せず、作者の 16 件のテストは Claude Code 2.1.291 ですべて通りました。
- モデルを呼び出す(利用枠を消費)
- 独自に Claude へリクエストを送信でき、その分はプランの利用量にカウントされます($.model.* / $.agent.spawn)。
- プロンプトを読み取る
- 入力内容と会話のトランスクリプトを参照できます(prompt.* / session.append / session.messages)。
- UI を変更
- Claude Code の画面に描画します。バンド、ペイン、ステータス表示、トーストなど(ui.render / $.ui.*)。
互換性とトラブルシューティング
macOS 上の Claude Code 2.1.291 で確認しました(validate、テスト、デモの録画)。提案が表示されない場合:
- 直前の返答が非常に短い(20 文字未満)か、モデルが付け加えるべき内容を思いつかなかった。
- バックグラウンドエージェントがまだ実行中で、メインエージェントが作業を再開するまで呼び出しは待機します。
- Claude がまだ作業中か、入力欄の上でアンケートが開いている。帯はターンが終わると表示されます。
- 入力欄にテキストがある状態で数字を押したか、数字を貼り付けた。数字は入力欄が空のときだけ動作します。
- プロンプトを送信したか新しいターンを始めた。ターンが終わるまでリストは消えたままです。
よくある質問
- Next Steps は私の代わりにプロンプトを送信しますか?
- いいえ。数字キーは提案を下書きとして入力欄に入れるだけです。編集することも、Enter を押すこともできます。あなたが操作するまで何も送信されません。
- トークンを消費しますか?
- 少しだけ消費します。各ターンの後に、Claude Code 自身のモデル API を通じて haiku モデルを 1 回呼び出し、最近のメッセージ最大 6 件と最新の返答を入力として渡します。返答が 20 文字未満の場合や、バックグラウンドエージェントが実行中の間は呼び出しをスキップします。
- リストが表示されているとき、数字で始まるプロンプトを入力するには?
- 先に 0 を押してください。リストが閉じて入力欄が空のままになるので、次の数字はテキストとして入力されます。他のテキストの後に入力した数字や、貼り付けた数字は常にテキストとして入ります。
- リストはいつ消えますか?
- プロンプト(スラッシュコマンドを含む)を送信したとき、新しいターンが始まったとき、0 を押したとき、そして Claude が作業中のときや入力欄の上でアンケートが開いているときです。
- モデルや提案の件数を変更できますか?
- 設定項目はありませんが、hooks/register.tsx の先頭にある定数で制御できます:MODEL、MAX_ITEMS、MAX_CHARS、MAX_KEPT、MIN_ANSWER。モデルへのプロンプトは同じファイルの suggest 関数にあります。
# 関連する Mod
おすすめContext Bar
Claude Code のコンテキストウィンドウを、カテゴリごとに色分けした 1 本の積み上げバーとしてプロンプトの上に表示します。トークン数付き。
- プロンプト上部
- UI を変更
- コマンド・ツールを追加
- データを保存
v2.1.291 で検証済み
おすすめmd-preview
Claude が編集した Markdown ファイルを、GitHub と同じ見た目でチャットの横のペインに表示します。変更前と変更後の比較表示付き。
- ペイン
- トースト
- ファイルを読み取る
- ファイルを書き込む
- コマンドを実行
- ツール呼び出しを傍受
- UI を変更
- コマンド・ツールを追加
v2.1.291 で検証済み
同じカテゴリの Mod: タイマー、ToDo、スタンドアップ。