インストール
dandori は ritsu の言語の一つで、ritsu のリポジトリからビルドします。規則を使う(use rule がある)ワークフローは ritsu dandori で走らせます。規則は rulec が、日付のファイルと帳簿(use dates、use book)は koyomi と chobo が、同じプロセスの中で読みます。規則を使わないワークフローなら、dandori のコマンドだけでも動き、生成したコードに rulec のものは入りません。
インストールする前に試すなら、ritsu のサイトのブラウザで試すを開いてください。dandori が、フローが読む規則や日付のファイル、帳簿と一緒に、ページの中で動きます。
ritsu
最近の安定版の Rust でビルドします。dandori が外から取ってくる依存は serde_json だけです。
ritsu dandori <コマンド> は、規則を rulec で読む dandori のコマンドです(ritsu dandori check、ritsu dandori build など)。ritsu の代わりにパッケージ dandori を入れると、dandori のコマンドだけが入ります。規則も日付のファイルも帳簿も使わないワークフローのためのもので、それらを使うワークフローを渡すと、ritsu dandori で走らせるよう言います。
rulec
生成したコードが呼ぶ規則のコードは、rulec gen が書き出します。規則を Connect のサービスとして呼ぶこともでき、そのサービスも rulec gen が書きます。ritsu では ritsu rulec gen で走らせます。rulec だけを入れるなら、パッケージ rulec を指定します。
規則を使わない場合、あきらめるものが二つあります。一つは、規則による判断です。.flow には比較も計算も無いので、分岐はタスクの結果(列挙、bool、オプショナルな値)の match だけになり、金額や日付を比べるような判断はタスク(API、エージェント、自分で書くコード)に任せることになります。その判断に抜けが無いことは、誰も証明してくれません。もう一つは案件です。案件は規則のステートマシンに従うので、規則が無ければ書けず、案件にかかわる検査(E013、E020〜E022、E030、W101〜W103)も働きません。引当と発送の例の子のフロー(examples/fulfillment/arrange_delivery.flow)は規則を使わずに書いてあり、入力の運送会社(列挙)で分かれます。
動くか確かめる
例は、リポジトリの crates/dandori/examples にあります。リポジトリをクローンし(git clone https://github.com/i2y/ritsu)、crates/dandori で、例を一つ検査して、ビルドしてみます。
$ ritsu dandori check examples/hotel/temporal/hotel.flow
examples/hotel/temporal/hotel.flow: ok
$ ritsu dandori build examples/hotel/temporal/hotel.flow --target temporal --out out/hotel
ホテルの予約の例は規則を使います。dandori だけで試すなら、代わりに規則を使わないフローを検査してみてください。
$ dandori check examples/fulfillment/arrange_delivery.flow
examples/fulfillment/arrange_delivery.flow: ok
--lang ja(または DANDORI_LANG=ja、RITSU_LANG=ja)を付けると、検査のメッセージが日本語になります。
AI エージェント向けのスキル
ritsu のリポジトリの根の skills/dandori は、Claude Code のような AI コーディングエージェント向けの Agent Skill です。dandori を使う場面、下書きからビルドまでの手順、言語の要点、人に聞くべきこと、診断ごとの直し方をまとめてあり、参照するサイトのページも一緒に入っています。
ritsu のバイナリが、ritsu とほかの言語のスキルと一緒に持っています。
$ ritsu skills install dandori # 一つのプロジェクトの .claude/skills/ に入れる
$ ritsu skills install dandori --user # このマシンのすべてのプロジェクトで使う
$ ritsu skills install dandori --dir path/to/skills # ほかのエージェントがスキルを読む場所に入れる
Claude Code なら、プラグイン ritsu に八つが入っています。/plugin marketplace add https://i2y.github.io/ritsu/marketplace.json を実行してから、/plugin install ritsu@ritsu を実行します。リポジトリのクローンから skills/dandori を ~/.claude/skills/ かプロジェクトの .claude/skills/ にコピーしても同じで、リリースごとの ritsu-skills-v<版>.zip にも八つが入っています。
スキルは、規則を使うワークフローでは PATH にある ritsu dandori を、規則を使わないワークフローでは dandori を動かします。
生成したコードを動かすのに要るもの
生成したコードが使うのは各プラットフォームの SDK だけで、dandori のライブラリは要りません。
| ターゲット | 動かすのに要るもの |
|---|---|
temporal |
Temporal の TypeScript SDK(@temporalio/*)。AWS SDK、OpenAI の Agents SDK、Anthropic の SDK は、それを通して呼ぶタスクがあるときだけ |
temporal-python |
Temporal の Python SDK(temporalio)。boto3 やエージェントの SDK も同じく、使うときだけ |
temporal-go |
Temporal の Go SDK(go.temporal.io/sdk。Go 1.26 が要る)。AWS SDK for Go v2、OpenAI の Go のクライアント、Anthropic の Go の SDK は、それを通して呼ぶタスクがあるときだけ |
asl |
AWS Step Functions。規則は、rulec が生成する Python を包んだ Lambda 関数になるか、サービスを呼ぶ HTTP Task になる |
durable |
AWS Lambda durable functions(@aws/durable-execution-sdk-js) |
argo |
Argo Workflows と、生成した caller/ から作るイメージ |
pydantic-graph |
pydantic-graph 2.x。自分の Python のプロセスの中で動く |
ターゲットごとに何が書き出されるかは、プラットフォーム別のビルドにあります。