ハクソク

世界を動かす技術を、日本語で。

Cook: Claude CodeをオーケストレーションするためのシンプルなCLI

概要

Primitives Cookは、3つのトークンカテゴリを解析し、柔軟な自動化ワークフローを実現。
ループ演算子合成演算子により、繰り返し処理や並列分岐が可能。
reviewralphなどのゲート機能で品質管理やタスク進行を制御。
vN, vs, pickで複数ブランチの同時実行や結果統合を実施。
cook initコマンドでプロジェクト設定を自動生成し、柔軟なエージェント・モデル構成が可能。

Primitives Cookの基本構造

  • トークンの3カテゴリ

    • Work:プロンプト1つ・エージェント1回呼び出し。基本単位。
    • Loop Operators:繰り返しやレビュー処理。例:xN、review、ralph。
    • Composition Operators:並列分岐・結果統合。例:vN、vs、pick。
  • 演算子の合成規則

    • 左から右へ順に適用。
    • 各演算子は左側すべてをラップ。

  • cook "work" x3 review
    • workを3回繰り返し、その後reviewループ。
  • cook "work" review x3
    • work→reviewループを3回繰り返し。
  • cook "work" review v3 pick
    • reviewループ付きworkを3並列で実行し、pickで最良を選択。

ループ演算子の詳細

  • repeat (xN)

    • 指定回数、逐次的にworkを実行。各パスで前回の出力を参照。
      • cook "Add dark mode" x3
        • 3回逐次的に実行。
      • cook "Add dark mode" repeat 3
        • x3のロングフォーム。
  • review

    • work後にreview→gateループを追加。

      • reviewerが品質確認し、gateがDONE/ITERATE判定。
      • ITERATEの場合、iterateステップ実行後、再度review→gate。
      • 例:cook "Add dark mode" review(最大3イテレーション)
    • カスタムプロンプト指定

      • 明示的:
        cook "Add dark mode" review \ "Review for accessibility" \ "DONE if WCAG AA, else ITERATE"
      • 省略形:
        cook "Add dark mode" \ "Review for accessibility" \ "DONE if WCAG AA, else ITERATE"
    • エージェント・モデルごとの個別指定

      • cook "Add dark mode" review \ --work-agent codex --work-model gpt-5-codex \ --review-agent claude --review-model opus
  • ralph

    • 外部ゲートでタスクリスト進行を管理。
    • workプロンプトは自己指示型で、プロジェクト状態を参照して現在タスクを特定。
      • cook "Work on next task in plan.md" \ ralph 5 "DONE if all tasks complete, else NEXT"
        • 各タスクごとにreviewゲート、完了ならralphが次タスクへ進行。

合成演算子の詳細

  • versions (vN / race N)

    • vN:N個の同一cookを独立したworktreeで並列実行。
    • pick:デフォルトのリゾルバーで最良を選択。
      • cook "Add dark mode" v3
        • 3つのブランチで同時実行し、最良をpick。
      • cook "Add dark mode" v3 "least code wins"
        • pick基準を指定。
  • vs

    • 2つの異なるcookを並列worktreeで実行、各ブランチは独立したcookを持つ。
      • cook "Implement auth with JWT" \ vs \ "Implement auth with sessions" \ pick "best security"
        • JWTとsessions認証を並列実装し、セキュリティ基準でpick。
  • リゾルバー種別

    • pick ["criteria"]:1ブランチ選択・マージ(デフォルト)。
    • merge ["criteria"]:全ブランチ統合し新実装を生成。
    • compare:比較ドキュメントを.cook/compare-<session>.mdに出力、マージなし。

プロジェクト設定とサンドボックス

  • cook init

    • プロジェクトルートで実行し、設定ファイルを自動生成。
      • COOK.md:プロジェクト指示・エージェント用プロンプトテンプレート。
      • .cook/config.json:エージェント・モデル・サンドボックスのデフォルトやステップごとの上書き。
      • .cook/Dockerfile:Dockerサンドボックス用依存定義。
      • .cook/logs/:セッションログ(gitignore対象)。
  • .cook/config.json記述例

    {
      "agent": "claude",
      "sandbox": "agent",
      "steps": {
        "work": {
          "agent": "codex",
          "model": "gpt-5-codex"
        },
        "review": {
          "agent": "claude",
          "model": "opus"
        }
      },
      "env": ["CLAUDE_CODE_OAUTH_TOKEN"]
    }
    
  • サンドボックスモード

    • Agent(デフォルト)--sandbox agent、各エージェントが自身のOSレベルサンドボックスを利用。Docker不要。
    • Docker--sandbox docker、Dockerコンテナ内でエージェント実行。ネットワーク制限あり。OpenCodeはDockerモードのみサポート。

Hackerたちの意見

誰かこれを私の初心者脳に説明してくれない?claude-cliに何が足りないのか、これが何を追加しているのか全然わからないんだけど。
追加するというよりは、包み込む感じかな。これの多くは、シンプルなbashスクリプトで達成できると思うよ。
個人的には、素のClaude CLIは一回限りのインタラクティブなセッションにはいいけど、繰り返しできるマルチステップのワークフローをやりたくなると、ずっとプロンプトをコピペするか、自分で手動で解決策を考えなきゃいけなくなる。まさにこのツールがそのギャップを埋めてくれるんだ。私の考えた解決策は、https://ossature.dev だよ。 .smd仕様のマークダウンファイルとossatureの監査/ビルドを使うことで、DAGオーケストレーション、SHAトレースされたインクリメント、そして小さく集中したコンテキストを提供してくれる。
前提として、ラルフ・ウィグムループの目的を理解しておく必要があるけど、一般的にはこれはCLIエージェントに関するメタな話だよ。だから、CLIを使ってコードのレビューをする場合、このツールを使うとコードレビューの出力を5回ループさせることができるんだ。
スキルのインストールオプションがあるよ。スキルのマークダウンは180行あるんだって。[1] 私の意見?好きだな。試してみるには十分に簡潔だし、ウェブページも気に入ってる。[1] https://github.com/rjcorwin/cook/blob/main/no-code/SKILL.md
サブエージェントはメインエージェントとは異なる思考/努力の振る舞いを持っていて、その点では非常に限られたコントロールしかないから(これについては完全には確信がないけど、https://github.com/anthropics/claude-code/issues/14321を見てみて、同じプロンプトをメインエージェントで使ったときとサブエージェントに渡したときで非常に異なる振る舞いを見たこともある)、このスキルが同じになるかはわからないな。
いいね!ノーコードのオプションを見つけたんだね。外部エージェントがクックが説明するワークフローの役割を果たすってやつ。ちょっと実験的だけど(全体的にそうだけど)、これが純粋なスキルとしてうまく機能するか、クックスクリプトの決定論的な性質が信頼性を向上させるか、みんなの感想が聞けたらいいな。
数日前に私のCLIエージェント「cook」でShow HN[0]をやったんだけど、一瞬だけ私のツールがフロントページに載ってめっちゃ嬉しかった。笑。[0]: https://news.ycombinator.com/item?id=47262711 [1]: https://getcook.dev
あはは、小さな世界だね!もしかしたら、cook(オーケストレーション)のためにcook(エージェント)サポートを追加すべきかな。そしたらcookがサブエージェントを管理できるようになるね!
鈍い色合いとコピー用に使われている表示フォントのせいで、このウェブサイトは読むのがすごく不快だよ。
ごめんね、デザインのセンスが変わってるんだ。README.mdはあまり詳しくないけど、基本的なことはカバーしてるよ: https://github.com/rjcorwin/cook/
二種類の人がいるってことか、俺は結構楽しめたよ!スーパーファミコンのゲームを思い出した。
いい感じだね。似たようなツールを作ってる開発者が多いと思うけど、俺も自分で作った作業レビューのループがあるんだ。君のインターフェースは気に入ったよ。試してみるつもりだけど、自分のコードでオーケストレーションしてるときのコントロールを手放すのはちょっとためらうな。
ああ、最近は色んなツールがオーケストレーションしてるよね。スクリプトを書くのも全然アリだと思う。制御の部分だけど、プロジェクトで `cook init` を実行すると、メタプロンプトをテンプレート化できるCOOK.mdが生成されるよ。クラウドも君がやってることを見て、COOK.mdに移植すれば、使ってるプロンプトに似た感じになるんじゃないかな。
これ、トークンはどのくらい重いの?俺はこういうスタイルのワークフローは使わないし、claudeコードもまだまだ初心者だから、3回パスする時は3倍のトークンよりマシだと思ってるんだけど。
3回の実行だから3倍ってわけじゃないよ。もっとトークンが必要な場合もあれば、少なくて済むこともある。考え方としては、Claudeに問題に3回挑戦させる感じで、毎回違うアプローチを使うかもしれないし、前回の改善点を修正するかもしれないってことだね。
うーん、よくわからないな。俺はただClaudeにsubprocess.run()で呼び出すPythonスクリプトを作らせてるだけなんだ。最近、そのアプローチで自動リサーチみたいなものを作ったよ。スクリプトがClaudeコードを呼び出して仮説を作り、それに基づいてコードを書いて評価、また繰り返す感じ。これが本当に何かに繋がってるのか、ただトークンを無駄にしてるだけなのか、まだわからない。結論は出てないね。
それは全然有効なアプローチだよ!特に君が探してる特定のワークフローにはね。cookでカバーしてるケースでは、同じパターンを何度もやってきたから、説明があまり必要なくて、Claudeにコードを書かせるのを待たなくても済むようにツール/スキルを作る時だと思ったんだ。今はClaudeに「/cook race 3 of foo plan with review, pick the best」って頼むと、何をすればいいか分かってるんだ。
何か掴んでると思うけど、これは統合されたエージェントを持つライブREPLみたいなもので、ちょっと手間がかかる感じだね。Pythonはあまり使ったことないけど、十分に強力なREPLを設定できるんじゃないかな。ジュリアはそれをうまくやることができるし、かなり似た言語だよね。もちろん、これをうまくやる強力なリスプもあるし。
半分話題に関係あるけど:Cursorの上にいい代替UIを載せる方法知ってる人いる?うちの会社がそのクソツールの使用量を追跡してるんだけど(そのオートコンプリートは標準のVSCodeよりも役に立たないし、唯一まともなのは、一つの行に対して同じことを繰り返すときだけなんだ。それが次の行にも適用されるのは俺にとってだけ有用で、テキストエディタをちゃんと使う方法を学ぶ気が全くないからね)だから避けられないんだけど、数百行のコードベースでも16GBのノートパソコンでOOMになっちゃうんだ(それとクソTeamsが、他の日にはメモリの半分を食ってた…Cursorだけでほぼ6GB使ってた。マジで。プラス面として、こういうソフトが専門家が集まる会社から出てくるなら、俺たちの仕事は安全かも…でも不況とZIRPの影響からは逃れられないけどね)。
初心者の質問なんだけど:トークンのクォータが5時間後にリセットされたときに、Claude Codeに自動で「続ける」よう指示するツールってある? fancyなループよりそっちの方が興味あるんだ。
これは素晴らしいアイデアだね!追加するよ!