choosing-determinism について
ワークフローのうち、スクリプト化する手順とモデルの判断に任せる手順を分けるスキルです。タスクの分割、スクリプトの作成とテスト、変更内容の報告を案内します。
主な機能
- 01決定的な手順と判断手順の分類
- 02ツールの構造化出力を優先
- 03スクリプトの入出力規則
- 04エラー経路のテストを要求
- 05スキルへの組み込みと報告方法
活用シーン
- 01スキル内のスクリプト化候補の確認
- 02スキルへのスクリプト追加
- 03スクリプトのエラー経路のテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ bostonaholic/ skills --skill choosing-determinismインストール後、Claude Code で/choosing-determinismを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yaml
詳細
決定性を選ぶ
選択肢がある場合は、常に決定性を選んでください。モデルによる処理は実行のたびに結果が変わり、毎回トークンを消費し、テストもできません。スクリプトにはそのどれも当てはまりません。
すべてのステップを分類する
スキル全体を読みます。SKILL.md、その参照資料、スクリプトを確認してください。各ステップについて、同じ入力を与えた場合、正しい実行結果は必ず同じになるかを問いかけます。そうであれば、スクリプト化してください。
| 決定的:スクリプト化する | 判断が必要:モデルに任せる |
|---|---|
| 取得、フィルタリング、ソート、カウント、重複排除 | 選択肢から選ぶ、またはトレードオフを比較する |
| コマンド出力、ファイル、構造化データの解析 | あいまいな意図や文章の解釈 |
| 固定されたコマンド列。特に順序が重要なものや破壊的なもの | 文章やコードの作成、レビュー |
| パス、名前、日付、年齢、バージョン、IDの解決 | 見つかった事項が重要かどうかの判断 |
| 形式、スキーマ、前提条件のチェック | 結果のユーザー向け説明 |
| 人やパーサーが正確なレイアウトを使う出力のレンダリング | 表現を調整する必要があるメッセージの下書き |
混在するステップは分割します。スクリプトで入力を収集して正規化し、モデルが判断し、スクリプトでその判断を適用またはレンダリングします。
次の順で優先してください。スクリプト内で既存ツールの構造化モード(--json フラグ、クエリフィルター、プラミングコマンド)を使うこと、新しいスクリプトをスキルの scripts/ に追加すること、最後にモデルの推論を使うこと。
スクリプトの作成
- ヘッダーコメントに、使用方法、引数、出力形式、すべての終了コードを記載します。
- すべての入力は引数または標準入力で受け取ります。プロンプトを表示してはいけません。時刻、乱数、環境を読み取るのは、その値自体が目的の場合に限り、テストで固定できるように上書き手段を用意します。
- JSON または順序が定義された固定形式の行を、文章を含めずに出力します。
- エラーは明確に通知します。必要なツールを最初に確認し、各エラーを標準エラー出力に明記して、ゼロ以外の終了コードで終了します。空または不正な入力で成功してはいけません。失敗時には毎回、その内容を説明するスキルファイルへの参照を添えます。ラップしたツール独自のエラーテキストはそのまま通します。
- 書き込み処理は冪等にします。各エラーパスを含む合成入力でテストします。
SKILL.md への組み込み
「scripts/<name> <args> を実行する」と記載し、各出力と終了コードへの対処を説明します。スクリプトの処理内容を文章で繰り返してはいけません。ヘッダーに記載されています。
決定性を選べない場合
- スクリプト化できそうなステップをモデルに任せる場合は、その理由を1行で記載し、次の編集者がスクリプト化しないようにします。
- 決定性があるように装ってはいけません。キーワード一覧を使ってコードを読む代わりにするのは、作者が実際に使用しているルールでない限り、モデルにコードを読ませるより劣ります。
報告
スクリプトに移した各ステップ、テストを含めて追加または変更した各スクリプト、そしてスクリプト化できそうでありながらモデルに任せた各ステップとその理由を列挙します。
コメント
Markdown 対応