ルーティン設計
ルーティンはミニオン個体が自律的に実行するスケジュールタスクです。スキルパイプラインをcronスケジュールに従い、HQを介さずに実行します。
ルーティンの構造
Section titled “ルーティンの構造”{ "name": "morning-report", "pipeline": ["write-daily-report", "send-to-slack"], "content": "日報を作成してチームのSlackチャンネルに投稿する", "cron_expression": "0 9 * * 1-5", "minion_id": "<uuid>", "workspace_id": "<uuid|null>"}| フィールド | 型 | 説明 |
|---|---|---|
name | string | ルーティン名 |
pipeline | string[] | 実行順のスキルIDリスト |
content | string|null | 説明(Markdown) |
cron_expression | string|null | cronスケジュール |
minion_id | string | 所有ミニオンのUUID |
workspace_id | string|null | バインド対象のワークスペース(任意)。null の場合はミニオン全体のスコープで実行(ミニオン全体のシークレット・変数のみ注入)。UUIDを指定するとそのワークスペースのスコープにバインドされ、ワークスペース変数・ワークスペース別シークレットも実行時に参照可能になる。いずれのケースでもセッション環境変数 MINION_ROUTINE_WORKSPACE_ID がエクスポートされる |
パイプライン実行
Section titled “パイプライン実行”ルーティンのパイプラインに含まれるすべてのスキルは1つのCLIセッション内で実行されます。これにより前のスキルの出力が次のスキルに引き継がれます。
flowchart LR A["write-daily-report"] --> B["send-to-slack"]CLIセッション終了時、ランナーがミニオンのローカルoutcome APIに実行結果(成否とログtailのサマリ)を自動で報告します。
ルーティン vs ワークフロー
Section titled “ルーティン vs ワークフロー”ルーティンとワークフローはどちらもスキルをスケジュール実行しますが、スコープとガバナンスのレベルが異なります。ルーティンはミニオン1体の中で動く直列のスキルパイプラインであり、ワークフローは分岐・fan-out・複数ミニオンにまたがれるプロジェクト単位のDAG(ノード/エッジのグラフ)です。
本質的な違い
Section titled “本質的な違い”ルーティンは個人のcrontab、ワークフローはCI/CDパイプラインと考えてください。
| 観点 | ルーティン | ワークフロー(DAG) |
|---|---|---|
| スコープ | ミニオン1体で完結 | プロジェクト全体、複数ミニオンの協調 |
| 形 | 直列のスキルパイプライン | ノード/エッジのグラフ(並列・fan-out/join・条件分岐) |
| 所有者 | ミニオン個体 | プロジェクト |
| ロール割り当て | なし — 所有ミニオンがすべて実行 | ノードごとにロール指定(PM / Engineer) |
| レビューゲート | なし | レビューノードで人間/ミニオンの承認と差し戻しループ |
| バージョン管理 | なし — 常に最新のスキルバージョンを使用 | 完全な変更履歴、イミュータブルなスナップショット |
| 実行追跡 | ローカルのみ(ミニオン側、直近200件) | HQデータベースに完全な監査証跡 |
| トリガー | ミニオン上のcron(自律実行) | HQ起点のcronまたはオンデマンド |
使い分けの判断基準
Section titled “使い分けの判断基準”ルーティンを使うべきケース:
- ミニオン1体でタスク全体が完結する
- ステップ間に人間のレビューが不要
- 個人の習慣的なタスク(朝の準備、日次振り返り、受信トレイ整理)
- 軽量な自律実行が望ましい
ワークフローを使うべきケース:
- 複数のミニオンが協調する必要がある(例:エンジニアが分析、PMがレビュー)
- 特定のノード前に人間の承認ゲートが必要
- タスクに実際の依存関係がある — 並列分岐、リストへのfan-out、条件分岐
- すべての実行をノード単位で追跡する監査証跡が必要
- 再現性が重要 — 特定のスキルバージョンを固定したい
同じスキルを、求められるガバナンスレベルに応じてルーティンにもワークフローにも使えます。
ルーティンとして(ミニオン1体、自律実行):
flowchart LR subgraph "ルーティン: morning-report (平日 9:00)" A["write-daily-report"] --> B["send-to-slack"] endワークフローとして(プロジェクト協調のDAG、レビューゲート付き):
flowchart LR subgraph "ワークフロー: team-daily-report" A["Skill: write-daily-report<br/><i>engineer</i>"] --> R{"Review<br/><i>pm</i>"} R -->|承認| C["Skill: send-to-slack<br/><i>pm</i>"] R -. 差し戻し .-> A endwrite-daily-report と send-to-slack はどちらのケースでも同じスキルです。違うのはオーケストレーションの方法(ワークフローはレビューゲート・分岐・fan-outを追加できる)であり、スキルが行う処理ではありません。
cronスケジュール
Section titled “cronスケジュール”標準的なcron式をサポートします(ワークフローのスケジュールと同じ構文)。
| 式 | 実行タイミング |
|---|---|
0 9 * * * | 毎日 9:00 |
0 9 * * 1-5 | 平日 9:00 |
0 18 * * * | 毎日 18:00 |
0 0 * * 1 | 毎週月曜 0:00 |