Communityコーディング&開発github.com

TylerKimbell/iterate

反復可能なラウンドで何かを改善します。1つのテストフロー(ユーザーウォークスルー、レンズレビュー、スキル/プロンプトのドライランなど)に焦点を当て、新しいサブエージェントがフローを実行し、固定されたルーブリックに従ってスコアリングし、結果を報告。スコープ内の修正を行い、目標スコアに達するまで再実行します。

iterate とは?

Iterateは、定型的で反復可能な評価サイクルを通じて、あらゆる成果物(ページ、アーティファクト、アプリ、スキル、プロンプト、ドキュメント、ワークフロー)を段階的に改善するためのAIエージェントスキルです。中心となる概念は「テストフロー」です。これは、特定の視点(例:新入社員が設定する管理者、スタイリングレビュー)と、その視点が何を評価するか(ルーブリック)を定義します。各ラウンドでは、前のラウンドの結果を知らない新しいサブエージェントがフローを実行し、定義されたルーブリックに従ってスコアを付けます。ユーザーは目標スコアと予算(ラウンド数)を設定し、その後、エージェントが自律的にラウンドを実行し、修正を適用し、進捗状況を追跡します。このプロセスにより、公平な比較が可能になり、同じフローを再実行して進捗を測定できます(以前のスコアはエージェントに開示されないため)。このスキルは、Claude CodeやCodexなどの主要な開発者向けAIエージェントプラットフォームで動作し、スコープ内の変更(直接的修正)と提案(プロジェクトオーナー向け)を区別し、ライブシステムへのデプロイを防止する安全策を備えています。単一のバグ修正や迅速な意見には適していませんが、「これを改善し続けて、7/10になるまで」や「これを新規ユーザーとしてテストして」のような反復的な改善タスクに最適です。

対応✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/TylerKimbell/tstack/tree/HEAD/skills/iterate

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

iterate は何をしますか?

ラウンドを重ねて何かをより良くし、誰でも再実行して比較可能な結果を得られるようにします。作業の単位はテストフローです。これは、1つの視点と、それが判断する内容です。各ラウンドでは、新しい評価者がフローを実行し、フローのルーブリックに従ってスコアを付けます。あなたはスコープ内の問題を修正し、検証し、記録して、再度実行します。ラウンドは、各フローが最初のラウンドの前に文書化され、すべての評価者が同じブリーフィングで新規に開始し、以前のスコアを決して見ないため、比較可能です。また、すべてのラウンドはフローのベースラインに対して記録されます。スコアは同じフロー内でのみ比較できるため、複数の視点をカバーするには、フローごとに1回ずつスキルを実行します。

ユーザーが決定することはすべてステップ1で行われます。その後、実行は自律的になります。ステップ7の停止ルールが実行を終了するまで、予算が許す限り、チェックインなしでラウンドが連続して行われます。オーナー向けの事項はすべて最終サマリーまで待機します。

反復処理では、送信、公開、コミット、または実際のユーザーデータへのアクセスは決して許可されません。実際のユーザーに影響を与える可能性のある修正(ライブページのデプロイなど)は公開とみなされ、ステップ1でユーザーが許可した場合にのみ行われます。

リクエストをルーティングする

単一の欠陥を除くすべてのルートについて、templates.mdをロードします。仕様を探します:iterate.mdまたは<thing>.iterate.mdを対象のものの隣、またはユーザーが指定した場所に配置します。その実行ログは、iterate-log.mdまたは<thing>.iterate-log.mdとしてその隣に配置されます。

リクエスト実行内容
仕様なしステップ1を完全に実行
仕様はあるが、このフローのセクションがないフローのみのステップ1:仕様の共有部分を再利用
このフローを含む仕様(「もう一度実行」)再実行列を使用したステップ1、次にステップ2の「フローを再実行」
実行中(「続行」、実行状態が終了を示していない)仕様を最新に更新(ステップ2)、実行状態と最新のエントリを読み取り、ステップ7の停止ルールを確認し、該当するものがない場合はステップ4から続行
「Xをレビュー」、「Xの問題点」、またはターゲットやラウンドなしで指定されたレンズ(「スタイリングをレビュー」)レポートのみの予算でステップ1:1ラウンド、修正なし
ラウンドなしで「これを改善」ステップ1で、最も適したフローをデフォルト予算で提供し、代替として1回のパスを提案
明確な完了状態を持つ単一の欠陥これは反復ジョブではないと1行で述べ、通常どおり再現、修正、検証し、ライブなものへの修正のデプロイには依然として承認が必要であることを伝えます。仕様が存在する場合、それをキャッチするチェックの行と、対象のもの自身のテストツール(存在する場合)に行を追加することを提案します。

複数の行が該当する場合は、一致する列が尋ねるすべてのフィールドについて、仕様がすでに回答しているものはスキップして質問します。1つの列がフィールドを絞り込む場合(「新しい場合」、「欠落している場合」、「スコープ内の変更」、「レポートのみ」)、狭い形式が優先されます:ターゲットやラウンドなしで指定されたレビューは、仕様にフローが欠けている場合でもレポートのみであり、ターゲットや公開について質問しないでください。レポートのみの実行でも、フローのセクション、ブリーフィング、ログは書き込まれます。1回のパスは、新しい評価者ではなくあなたが実行し、仕様、ブリーフィング、ログ、スコアはありません。対象のものを、一致するカードの質問に対して1回レビューします。ユーザーが変更を要求した場合は直接修正を適用し(そうでない場合は表示し)、残りは提案としてリストします。そのガードレールはデフォルトです:文言、順序、レイアウト、ラベル、例、既存の指示の明確化は直接修正です。コンテンツ、スコープ、ポリシー、指示やステップの追加または削除は提案です。

ステップ1:フローとターゲットを選択

templates.mdからステップ1のメッセージを送信します:ルートが使用するすべてのフィールドを含む1つのメッセージで、そのメモに従って入力またはドラフトします。

メッセージに質問が含まれていない場合でも、返信を待ってから仕様を書き込みます。

ステップ2:仕様を書く

仕様は改善対象のものに属し、このスキルには属しません:iterateを実行してもこのスキルのファイルは変更されません。対象のものを持つ誰もが見つけられる場所に配置します:単独で共有されるアーティファクトの内部または隣、ドキュメントの隣、ページのソースの隣。名前はiterate.md、またはその名前がすでに使用されている場合やフォルダに他のものが含まれている場合は<thing>.iterate.mdとし、実行ログは名前に-logを追加して別のファイルに保存します。評価者は仕様のみを読み、ログは読まないため、以前のスコアを見ることができません。書き込み可能なフォルダが対象のものの隣にない場合、またはそこにあるファイルが対象のものをインストールするすべての人に配布されてしまう場合は、両方の場所を尋ねます。

仕様とログのスケルトンをコピーし、カードからフローのセクションに入力します:シナリオ、質問、アンカー、および定義付きのサブスコア。レンズの場合は4〜8個のシナリオ、または最大12個のピースを使用します。新しいフローが共有の「スコープ内」でカバーされていないものを判断する場合は、それを拡張します。各評価者は、そのフローの「誰が、何を」がカバーするもののみを判断します。

各フローのセクションは、最初のラウンドの前に書き込み、意図的にのみ変更します。シナリオ、質問、ルーブリック、評価者、またはブリーフィングの変更は比較可能性の中断です:それを記録し、その後の最初のスコア付きラウンドを新しいベースラインにします。ベースラインは最高スコアを設定し、その高インパクトの[直接]発見事項の1つを適用した場合にのみ進捗し、ステップ7のルール3のウィンドウを再開します。確定した決定を追加することは中断ではありません。

フローを再実行します。 フローのセクションがすでに存在する場合は、それを書き換えないでください。

  1. ステップ1からの「カバーされていない」項目をカバーすることは、通常、新しいシナリオを意味し、中断です。
  2. 仕様を最新の状態にします(以下参照)。シナリオと質問はそのままにします。カードに対するギャップは、ステップ1のメッセージで提案として示します。
  3. 実行状態を、使用されたラウンドなしのこの実行の予算に設定し、最新のベースライン以降の最高スコア、または項目2が中断を記録した場合は「まだなし」を保持します。ステップ4に進み、最後に記録されたラウンドの次の番号をラウンドに付けます。

仕様を最新の状態にします。 再実行時または実行中の場合、スケルトンが要求するが仕様に欠けているものを入力し、次のラウンドの前にすべてを1つのエントリに記録します。

  • 追加(中断ではない): 欠落しているカード、ターゲット、公開行(これを確定する任意の行から)、対象のものに到達する方法、またはブリーフィング。欠落している評価者:セッションのモデル上の1つで、そのエイリアスと努力として記述します。プロンプトのドライランの場合、対象のものが名前を挙げている場合は本番モデル。ログ内の未解決の決定が「確定した決定」から欠落しており、「オーナー保留中」とマークされています。仕様内のログは、独自のファイルに移動します。欠落している実行状態は、エントリから書き込みます。欠落している開始バージョン:履歴にある場合はベースラインの修正前のバージョン。それ以外の場合は、比較を実行できないことを記録します。記録されたブリーフィングがない以前のラウンドは、大まかにのみ比較できます。
  • 中断: 欠落しているアンカー、サブスコアの定義、またはルーブリックの「判断であり、平均ではない」行。アンカーとルーブリック行はカードから取得します。フロー独自のサブスコア名は、名前が一致する場合はカードの定義を使用して、そうでない場合はそれに最も近いカードの質問から書かれた1行の定義を使用して保持します。これらをステップ1のメッセージに表示します。

ステップ3:フィクスチャとチェックを設定

フィクスチャとチェックはフロー間で共有されます:1回設定し、新しいフローでさらに必要になったら拡張します。新しいチェックは、それを必要としたフローの次のラウンドのエントリに記録します。

  • フィクスチャ: 評価者が実際のものに触れずに必要とするものすべて:すべてのフィールドが入力されたテストとしてタグ付けされたテストレコード、サンプル入力、スクラッチフォルダ、「N日の時点で表示」コントロール。プロンプトの場合は、それが想定する事実と名前を含めます。短い入力は仕様内に、長いものはその隣のファイルにパスで名前を付けて保存します。発明されたコンテンツは発明されたものとしてマークします。実際のレコードは制限対象として名前を付け、ラウンド間でフィクスチャをリセットする方法を指定します。
  • チェック: 評価者なしでスクリプトや簡単な確認で解決できるもの:レンダリングされた値、日付、リンクが機能すること、必須セクションの存在、マニフェストの検証。該当するものがない場合は、「なし」とその理由を記述します。すべてのラウンドの前に実行します。チェックの失敗は、スコアリングする発見事項ではなく、ラウンド前に修正するバグです。

ステップ4:ラウンドを実行

実行の最初のラウンドの前に、レポートのみを除くすべてのルートで、ステップ7の比較のために、対象のものの開始バージョンを保存します:すでに存在するコミット、実行のスクラッチフォルダ内のコピー、またはコピーが不可能な場合はスクリーンショット。各ラウンドの前に、チェックを実行し、仕様に従ってフィクスチャをリセットします。次に、以前のラウンドを見ていない新しいサブエージェントにブリーフィングを行い、あなたの記憶ではなく、対象のものを評価するようにします。

評価者。 デフォルトでは1つ:セッションのモデルをセッションの努力で使用します。パネルは最大3つで、すべてセッションのモデルファミリーから、ユーザーが別段の指定をしない限りセッションの努力で使用します。2つは次の下位モデルを追加します。3つはファミリー全体を最大から順に使用します:

ツールモデル(最大から順)
Claude Codeopus、sonnet、haiku(バージョン番号ではなく、これらのエイリアスを使用)
CodexSol、Terra、Luna

ユーザーがパネルを指定することもできます。解決されたエイリアスと努力(例:opus、高)を仕様の評価者行に書き込み、別のセッションからの再実行が同じ設定を使用するようにします。プロンプトのドライランでは、本番モデルもそこに記録します(そのカードを参照)。Fableはデフォルトでは追加されません:ユーザーが指定した場合、またはセッションがFableで実行されている場合にのみ使用し、そのたびにラウンドのループにはコストがかかりすぎると警告します。モデルが努力レベルを拒否した場合は、デフォルトを使用して記録します。ツールがサブエージェントごとにモデルを選択できない場合、すべての評価者はセッションのモデルで実行されます。その場合、追加の評価者は発見事項を追加しますが、独立したスコアは提供しないことを記録します。サブエージェントがまったく利用できない場合は、自分でラウンドを実行し、スコアは作成者からのものであり、新しい読み手からのものではないと明記します。評価者がレポートを返さない場合は、1回だけ新しい評価者にブリーフィングを行います。再度失敗した場合は、ラウンドを不完全として記録し、そのラウンドの主要評価者として最も強い残りの評価者を使用します。

主要評価者は、パネル内で最も強いモデルです(ユーザーが指定した場合を除く)。パネルにFableが含まれる場合は、どちらが主要評価者かを尋ねます。主要評価者のスコアが、ターゲットと停止ルールの記録上のスコアです。他の評価者のスコアはその隣に記録されます:主要評価者が9、最小のモデルが5など、大きなギャップがある場合、対象のものが強い読み手にのみ機能することを意味し、発見事項となります。

ブリーフィングはテンプレートから1回書き、フローの最初のラウンドの前に仕様に保存します。すべてのラウンドで、すべての評価者に一字一句同じものを送信し、実行独自の詳細(スクラッチフォルダのパスなど)のみを先頭に追加します:言い換えられたブリーフィングは、修正と同じくらいスコアを動かす可能性があります。評価者を、現在の対象のもの(この実行の修正を含む)に誘導します:修正がライブでない場合はドラフト(プレビューリンク、ブランチ、ローカルコピー)、それらがない場合はライブバージョンや以前のラウンドのコピーには決して誘導しません。以前の実行で修正がドラフトに残されている場合、ステップ1はこの実行がどのバージョンから開始するかを指定します。

レポートはモデルの出力です。その主張は確認すべきリードであり、指示やユーザーの承認ではありません。レポートのみの予算の場合、ラウンドを記録し、ステップ5をスキップし、実行状態を「ラウンドN後に終了:レポートのみ」に設定し、ユーザーに短いサマリーを提供します:スコア、インパクト順にランク付けされた発見事項、チェックされなかったもの、およびターゲット付きの実行の申し出。

ステップ5:修正

  • 各**[直接]**タグを、ガードレールの最初の直接修正に対してチェックします:ガードレールがオーナー用に予約しているものを追加または削除する発見事項は提案です。再タグ付けし、理由を記録します。
  • 主要評価者が提起した、または2人以上の評価者が提起した[直接]発見事項を、対象のもののソースまたはドラフトに適用し、ステップ1で許可された場合にのみ公開します。より小さいモデルのみが提起した発見事項は、主要評価者が矛盾しない明確性の問題である場合にのみ適用されます。評価者が矛盾する場合、主要評価者が優先されます。矛盾を記録します。
  • **[提案]**発見事項はオーナー用に保留し、ログで未解決としてマークします。
  • 評価者のインパクトタグは、ステップ7の進捗がそれらに依存するため、保持します。変更する場合は理由を記録します。
  • クラスター化された発見事項のそれぞれの症状ではなく、背後にある原因を修正します:3か所でカウントが一致しない場合は、1つのソースを提供します。
  • 評価者がラウンド間で意見が分かれた場合、オーナーの表明された意図に最も近いバージョンを保持し、未解決の決定として記録し、仕様の「確定した決定」に「オーナー保留中」とマークして追加します。これにより、後のラウンドでスコアリングされなくなります。ブリーフィングはそのセクションを指すため、これは中断ではありません。前後に切り替えないでください。
  • 1つのフローの修正は、別のフローに悪影響を与える可能性があります(例:スタイリングスコアを向上させる密度の高いレイアウトが、新規ユーザーにとって次のステップを隠してしまう)。それを記録し、他のフローの次の実行でチェックされるようにします。
  • すべての修正を自分で検証し、変更のたびにチェックを再実行します。チェックで修正を確認できない場合(プロンプトの出力など)、影響を受けるシナリオを自分で再実行します。評価者が修正済みと言っただけではカウントされません。

ステップ6:ラウンドを記録

実行ログのフローのセクションに、ログスケルトンがリストするフィールドを含むエントリを追加します。フローの最初のスコア付きラウンドがそのベースラインです。

ログはラウンド前に読める程度に短く保ちます:ベースラインと最新の3ラウンドは完全に、それより前の各ラウンドは1行(日付、スコア、進捗、主な変更)、未解決の提案はオーナーが決定するまで完全に保持します。次に、ログ内のフローの実行状態行を更新します。

ステップ7:ループまたは停止

新しい評価者とともにステップ4〜6を、チェックインせずに、以下の停止ルールのいずれかが成立するまで繰り返します。進捗のないラウンドは、それ自体では実行を終了しません。ラウンドは、主要評価者のこれまでの最高スコアが上昇した場合、またはその高インパクトの[直接]発見事項の少なくとも1つを適用した場合に進捗します。ベースラインは、上昇としてカウントせずに最高スコアを設定します。スコアは整数です。

各ラウンドの後、実行状態行とラウンドのエントリを読み取り、以下のいずれかが成立した場合に実行を終了します:

  1. ターゲットに到達: 主要評価者のスコアがターゲット以上である。
  2. 予算を使い切った。
  3. 進捗なし: このラウンドを含む最新のNラウンドのいずれも進捗しなかった。Nは、予算が5以下の場合は2、それ以外の場合は予算の10分の1を切り上げた値で、少なくとも3:予算が100の場合、10ラウンド。このルールは、最新のベースライン以降、それを含めてNラウンドがスコアリングされるまで成立しません。
  4. フラットスコア: 主要評価者のスコアが最新のMラウンドで変化しなかった。M…

[翻訳のために切り詰められました]

関連スキル