TAKTは、エンジニアのnrslib(成瀬允宣)氏が公開しているオープンソースのCLIです。Claude CodeやCodexなどのAIコーディングエージェントに、計画→実装→レビュー→修正という工程をYAMLのワークフローどおりに踏ませます。公式READMEの言葉では「AI はコードを書きますが、次に何をするかは workflow が決めます」。この記事では、2026年10月15日公開のv0.71.0を手元に入れて動かした結果をもとに、導入手順、ワークフローの書き方、ここ3か月の破壊的変更、類似ツールとの違いを整理します。なお、製造業の「タクトタイム」、ゲームの「takt op.」、デンマークの家具ブランド「TAKT」とは別物です。
まとめ:TAKTの要点と導入判断(v0.71.0時点)
- TAKTはMITライセンスのTypeScript製OSS。AIエージェントを信頼して任せるのではなく、stepと遷移ルールを書いたYAMLで外側から制御する。
- 導入は
npm install -g taktのあとにtakt install claude-sdkが必要。v0.71.0からSDKを同梱しなくなり、入れないと実行時に止まる。Node.jsは22.22.0以上。 - 2026年7月19日のv0.52.0から10月15日のv0.71.0まで、npmへの公開は27回。既定providerの変更やworkflow YAMLの構文削除が含まれるので、チームで使うなら版を固定する。
- 書いたYAMLは
takt workflow doctorで実行前に検証できる。存在しないpersona、遷移先の誤記、廃止されたproviderキーはここで止まる。 - 向いているのは、同じ品質保証の工程を毎日回すチーム。単発の修正や捨てるプロトタイプでは、ワークフローを書く手間を回収できない。
以下、基本情報、導入、YAMLの書き方、検証の実測、コマンドの使い分け、類似ツール比較の順に説明します。
TAKTの基本情報:作者・ライセンス・設計の考え方
nrslib(成瀬允宣)氏のOSS・MITライセンス・Node.js 22.22.0以上
TAKTはGitHubのnrslib/taktで開発され、npmのtaktパッケージとして配布されています。npmの初版(0.1.0)は2026年1月25日です。実装はTypeScriptで、ライセンスはMITなので商用利用も改変もできます。npmのパッケージ定義では動作要件がnode >=22.22.0です。名前は「TAKT Agent Koordination Topology」の頭字語で、オーケストラの指揮で拍を刻む意味のドイツ語「Takt(タクト)」にも掛けています。
「AIを信頼せず外側から制御する」設計と通常のエージェントとの違い
READMEは、プロンプトやCLAUDE.mdやスキルにルールを書き足しても「プロセスを強制できない」と書いています。守るかどうかをAI自身の振る舞いに委ねることになるからです。TAKTはそこで工程をYAMLに移し、stepごとに役割・文脈・権限・遷移ルールを渡します。公式READMEの日本語版にある対比を要約すると次のとおりです。
| 観点 | 通常のAIコーディングエージェント | TAKT |
|---|---|---|
| 工程の管理 | プロンプトでお願いする | YAMLのworkflowが決める |
| レビュー | 忘れる・飛ばすことがある | 遷移として強制される |
| コンテキスト | 1本が肥大化し続ける | stepごとに必要な分だけ渡す |
| 作業場所 | カレントツリーに直接入る | 既定で隔離worktree |
| 追跡 | 経路を追いにくい | ログとレポートが残る |
TAKTはAIの裁量を減らす側に立っています。レビュー飛ばしのような取りこぼしはモデルの賢さでは防げない、という立場です。
TAKTのインストールと始め方:v0.71で変わった手順
npm install -g taktからtakt runまでの最小手順
少なくとも1回コミット済みのGitリポジトリで実行します。初回はproviderの認証も必要です。既定のclaude-sdkをAPIキーで使う場合は、環境変数TAKT_ANTHROPIC_API_KEYを設定してください。v0.71.0のREADMEにある「5分で試す」の手順を、版を0.71.0に固定して書くと次の5行です。
npm install -g [email protected]
takt install claude-sdk # 既定providerのSDKを入れる(v0.71.0から必須)
takt # AIと会話してタスクを決め、/go のあと「タスクにつむ」を選ぶ
takt run # 積んだタスクを隔離worktreeで実行する
takt list # 差分の確認・マージ・リトライ・削除
taktで会話を始め、/goで指示書を作ると「タスクにつむ/Issueを建てる/その場で実行する/会話を続ける」のメニューが出ます。既定は「タスクにつむ」で、タスクは.takt/tasks/に保存されます。takt runはClaude Codeのgit worktreeで並列エージェント開発を行う方法と同じ考え方で、作業ブランチ側のworktreeで計画→実装→レビュー→修正を回し、終わるとPRを作るか尋ねます。takt add '#6'のようにGitHub Issueからタスクを積むこともでき、その場合はghコマンドが必要です。
takt installを忘れたときに出るエラー(実測)
v0.71.0のCHANGELOGは、Claude Agent SDK・Codex SDK・OpenCode SDK・Pi SDKを本体と一緒に入れないようにした変更をBREAKINGとしています。v0.70以前の手順書どおりnpm install -g taktだけで止めると、どうなるかを確かめました。SDKを入れていない環境で非対話のパイプラインモードを実行すると、最初のstepに入る前に終了コード3で止まります。
$ takt --pipeline --skip-git -w pir -t "README.mdを作成する"
=== Running Workflow: plan-implement-review ===
[ERROR] Managed provider claude-sdk is not installed or failed an integrity check. Run `takt install claude-sdk`.
[ERROR] Workflow 'pir' failed
端末で対話的に使うときはインストールするか確認されますが、CIやtakt watchのような非対話の実行ではこのメッセージで止まります。GitHub Actionsなどでは、ジョブの中で先にtakt install claude-sdkを実行してください。TAKTを更新したら、SDKを固定版にそろえるtakt updateも必要です(v0.71.0が固定している版はClaude Agent SDK 0.3.300、Codex SDK 0.162.1)。
providerの選び方:SDK経由とCLI経由の違い
TAKTは特定のAIに縛られません。providerは、Node.jsだけで動くSDK経由と、外部CLIを呼ぶCLI経由に分かれます。v0.68.0で既定が従来のClaude Code CLIからClaude Agent SDKを使うclaude-sdkに変わり、provider: claudeはclaude-sdkの別名になりました。
| 区分 | provider名 | 必要なもの |
|---|---|---|
| SDK経由 | claude-sdk(既定)・codex・pi | takt install |
| SDK経由 | deepseek-harness | takt install・Linux x64/arm64(glibc 2.28以上)・macOS arm64(14.0以上) |
| SDK+CLI | opencode | takt install・OpenCode CLI |
| CLI経由 | claude-headless | Claude Code |
| CLI経由 | claude-terminal | Claude Code・tmux |
| CLI経由 | copilot・cursor・kiro | 各社のCLI |
| テスト用 | mock | なし |
最小の設定は~/.takt/config.yamlにprovider・model・languageの3行を書くだけです。これまでClaude Code CLIで動かしていた人は、provider: claude-headlessへ書き換えないと挙動が変わります。権限設定もprovider_profiles.claudeからprovider_profiles.claude-sdk(またはclaude-headless)へ移す必要があります。stepごとにproviderやモデルを変えたいときは、~/.takt/runtime.yamlか.takt/runtime.yamlに書きます(プロジェクト側が優先)。
YAMLワークフローの書き方:step・rules・persona・loop_monitors
計画→実装→レビューを回す最小のworkflow
workflowはstepの並びで、各stepに担当するpersona、編集の可否(edit)、次へ進む条件(rules)を書きます。COMPLETEが成功終了、ABORTが失敗終了です。READMEの最小例を、ビルトインに実在するpersona名(後述)に直したものが次のYAMLで、.takt/workflows/pir.yamlに置きました。
name: plan-implement-review
initial_step: plan
max_steps: 10
steps:
- name: plan
persona: planner
edit: false
rules:
- condition: Planning complete
next: implement
- name: implement
persona: coder
edit: true
required_permission_mode: edit
rules:
- condition: Implementation complete
next: review
- name: review
persona: coding-reviewer
edit: false
rules:
- condition: Approved
next: COMPLETE
- condition: Needs fix
next: implement # レビューで差し戻されたら実装へ戻る
レビュー役にはedit: falseを指定します。ただし、実効的な編集制限はproviderと権限設定にも依存します。たとえばCodexでpermission_control: codexを選ぶ場合は、Codex側のサンドボックス設定も確認してください。max_stepsはrun全体のstep実行回数の上限で、レビュー⇄修正が収束しないときの最後の歯止めになります。
rulesの評価順とrule_no_matchで止まる条件
Workflowガイドによると、rulesはYAMLに書いた順に評価され、最初に成立したものが採用されます。暗黙の優先順位やフォールバック遷移は無く、どれも成立しなければworkflowはrule_no_matchでABORTします。
これをAIを呼ばずに確かめるため、上のYAMLをテスト用のmock providerで実行しました。rulesが1つしかないplanとimplementはauto_selectでそのまま次へ進みました。2つあるreviewでは、ビルトインのconductor personaが出力をどの条件に当てはめるかを判定し、mockの定型応答がどちらにも当たらなかったため、Workflow failed after 3 iterations (4.0s): rule_no_matchで終了しました。分岐を作るときは「どれにも当てはまらない出力」が来る前提で、受け皿の遷移を用意しておく必要があります。
実際の運用でも、「OKなら次へ/NGなら全体を中断」の2択にしたところ、厳しいレビュアーが5回連続で中断させたという利用者の報告があります。差し戻しの遷移(上の例ではNeeds fix→implement)を用意し、ABORTは本当に続けられないときだけにするのが安全です。
persona・policy・knowledge・instruction・output contractの5ファセット
エージェントへの指示は、Faceted Promptingという考え方で5つに分けます。誰として振る舞うか(persona)、守るルール(policy)、参照する知識(knowledge)、そのstepの具体的な指示(instruction)、成果物の形(output contract)です。必要なstepに必要なファセットだけを渡すので、1本の長いプロンプトにすべてを詰め込むより文脈が汚れません。自作のファセットは~/.takt/facets/personas/のようにMarkdownで置き、workflowからpersona: my-reviewerのように名前で参照します。
v0.71.0でtakt catalog personasを実行すると、ビルトインのpersonaは29個ありました。planner・coder・coding-reviewer・architecture-reviewer・security-reviewer・testing-reviewer・supervisorなどです。READMEの最小例にあるreviewerはこの一覧に無いので、そのまま使うと次の章の検証で止まります。
loop_monitorsによるレビュー・修正ループの進捗判定
レビュー⇄修正を遷移で強制すると、指摘と修正が噛み合わずに同じ往復を繰り返すことがあります。loop_monitorsは、指定したstepの循環がthreshold回に達したら判定役のpersonaに進捗の有無を評価させ、進捗が無ければ打ち切る仕組みです。前掲のpir.yamlの末尾(stepsと同じ階層)に次のブロックを足すと、reviewとimplementの往復を監視できます(このブロックを足したYAMLもtakt workflow doctorで終了コード0を確認)。
loop_monitors:
- cycle: [review, implement]
threshold: 3
judge:
persona: supervisor
instruction: "implement ループに進捗があるかを評価してください"
rules:
- condition: "進捗あり"
next: implement
- condition: "進捗なし"
next: ABORT
max_stepsが回数で止める上限なのに対し、loop_monitorsは中身を見て止めます。両方を設定しておくと、無駄なトークン消費を早めに切れます。
takt workflow doctorによるYAMLの静的検証結果(実測)
v0.71.0には、workflowの雛形を作るtakt workflow initと、定義を静的に検証するtakt workflow doctorがあります。AIを1回も呼ばずに動くので、書いたYAMLをコミットする前やCIで確かめるのに使えます。macOS・Node.js v26.5.0・takt 0.71.0の環境で、4種類のYAMLを検証した結果が次の表です(2026年10月16日)。
| 検証したYAML | 終了コード | 出力 |
|---|---|---|
| workflow initの雛形 | 0 | Workflow OK |
| READMEの最小例そのまま | 1 | persona references missing resource “reviewer” |
| next: implementをimplemntと誤記 | 1 | routes to unknown next step/Unreachable steps |
| workflowにprovider: codexを追加 | 1 | Unrecognized key: “provider” |
2行目は、公式の例でも実在しないpersona名なら止まることを示しています。personaをcoding-reviewerに直すと終了コード0になりました。3行目では誤記した遷移先だけでなく、その結果どこからも到達できなくなったstep(implementとreview)も列挙されました。
4行目は版の追随で効きます。v0.60.0でprovider・model・provider_optionsなどの実行設定がworkflow YAMLから削除され、runtime.yamlへ移りました。それ以前に書かれた解説記事のYAMLをそのまま写すと、このエラーで読み込みに失敗します。版を上げたら、まず手持ちのworkflowすべてにtakt workflow doctorをかけるのが確実です。
もう一つ確認できたのは、takt workflow initが.takt/.gitignoreも作ることです。中身は「すべて無視したうえで、config.yaml・workflows/・steps/・facets/だけを追跡する」設定でした。タスクの指示書や.takt/runs/の実行ログはGitの追跡から外れ、リポジトリに載せられるのはこの.gitignore自身と上の4種類です。
TAKTの主要コマンドと使い分け
takt run・exec・make・watchの違い
v0.71.0のtakt --helpには24個のサブコマンドが並びます。日常的に使うのは次のコマンドです。
| コマンド | 用途 | 追加された版 |
|---|---|---|
| takt / takt add | 会話でタスクを決めて積む | 初期から |
| takt run | 積んだタスクをまとめて実行 | 初期から |
| takt exec | YAMLを書かずに即実行 | v0.49.0 |
| takt watch | キューを監視して自動実行 | v0.68で並列化 |
| takt make | 対話でworkflowを作成・修正 | v0.64.0 |
| takt ui | ローカルWeb UI(実験的) | v0.63.0 |
| takt caccia | CodeRabbitの指摘に対応 | v0.67.0 |
| takt merge | PRのレビュー・修正・マージ | v0.71.0 |
takt execは、Assistantが要求を整理し、/goで会話を.takt/exec/workflow.yamlに変換して、Worker・Review・Replanningのエージェントで実行します。ワークフローを書く前に一度試すにはこれが手軽です。毎回同じ工程を回すと決まったら、takt makeやtakt workflow initで自分のworkflowにしてtakt runに移ります。同じプロジェクトでtakt runとtakt watchは同時に起動できません(v0.71.0から)。
takt merge・takt cacciaによるPRレビューと修正・マージ
v0.67.0で入ったtakt caccia <PR番号>は、CodeRabbitのレビューを待ち、未解決のbotスレッドに隔離クローンで対応して、反復ごとの判断レポートを残します。v0.71.0のtakt mergeは、開いているPRをworkflowでレビュー・修正・マージします。既定は2件ずつ並行、マージ方法はsquashで、下書きとforkのPRは既定で対象外です。実装からマージ前までをTAKTに任せる構成が、本体の機能だけで組めるようになりました。
ハーネスエンジニアリングにおけるTAKTの位置づけ
成瀬氏は、Findy主催のイベント「ハーネスエンジニアリング(Harness Engineering)入門:AIエージェントを制御するアプローチ」(2026年4月22日開催)で「実践ハーネスエンジニアリング:TAKTで実現するAIエージェント制御」を講演しています。TAKTはこの「ハーネスエンジニアリング」を実装した道具として読むと分かりやすくなります。
ハーネスエンジニアリングのSpec・Context・Harness三層設計でいえば、TAKTが受け持つのは3層目のHarness、つまりエージェントをどう走らせ、どこで止めるかの制御です。何を作るか(Spec)は指示書やoutput contractで、何を知らせるか(Context)はknowledgeとpolicyのファセットで渡します。仕様駆動開発の工程をTAKTで回したい場合は、コミュニティのj5ik2o/takt-sddがワークフローとファセットを公開しています(仕様駆動開発(SDD)の考え方をそのままworkflowにしたもの)。
類似ツールとの比較:Claude Code Agent Teams・Microsoft Conductor・CrewAI・LangGraph
オーケストレーション系のツールは、AIにどこまで判断させるかで立ち位置が分かれます。2026年10月16日時点の版で並べると次のとおりです。
| ツール | 工程の決め方 | 主な対象 | 現行版・状態 |
|---|---|---|---|
| TAKT | YAMLで固定 | コーディングエージェント | v0.71.0(MIT) |
| Microsoft Conductor | YAMLで固定 | コーディングエージェント | v0.1.42(MIT) |
| Claude Code Agent Teams | リーダーがその場で分担 | Claude Codeの並列作業 | 実験的機能 |
| LangGraph | コードでグラフ定義 | LLMアプリ全般 | 1.2.15 |
| CrewAI | 役割を与えて自律協調 | 汎用マルチエージェント | 1.15.28 |
TAKTに最も近いのは、Microsoftが公開しているConductorです。こちらもYAMLのworkflow・agents・routesでエージェントと遷移条件を定義します。Conductorの比較対象版は2026年10月6日公開のv0.1.42です。製品間で版番号の付け方は異なるため、番号の大小ではなく、必要なproviderへの対応やワークフローの記法で比較してください。どちらも0.x系なので、記法が変わる前提で使います。
Claude Code Agent Teamsは実験的機能で既定では無効になっており、環境変数CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1で有効にします。「このPRを3人のレビュアーで見て」のようなその場限りの協調はAgent Teamsが手軽です。毎回同じ手順で回すならTAKTのYAMLにします。TAKTには、ビルトインのworkflowとpersonaをClaude CodeのSkillとして書き出すtakt export-ccもあるので、両方を併用できます。複数エージェントにする価値があるかどうかの判断は、シングルエージェントとマルチエージェントの違いで整理しています。
TAKTを採用すべき場面と見送るべき場面
採用すべき場面:同じ品質保証の工程を毎日回すチーム
投資に見合うのは、実装→AIレビュー→修正の流れが定型化しているチームです。たとえばcoding-reviewerにレビューを担当させ、指摘があればimplementへ戻るrulesを定義すると、人のレビュー前にAIレビューと修正の工程を実行できます。workflowとファセットをリポジトリでバージョン管理すれば、新しく入ったメンバーも同じ基準で開発を始められます。「あの人のレビューは鋭い」という属人的な品質を、コードとしてレビューできる形にできるのが組織で使う利点です。
TAKTの導入やエージェント開発の工程設計を外部に相談したい場合は、一創のAIエージェント開発でも支援しています。
見送るべき場面:単発の作業と、版を追えないチーム
一度きりの調査、すぐ捨てるプロトタイプ、数行の修正には向きません。ワークフローを書くより、エージェントを直接動かすほうが早く終わります。
もう一つの判断材料が更新の速さです。v0.52.0からv0.71.0までの約3か月でnpmへの公開が27回あり、そのなかに既定providerの変更(v0.68.0)、workflow YAMLからの実行設定の削除(v0.60.0)、ビルトインworkflowの改名(v0.61.0で旧experimentalが新defaultに)、SDKの別インストール化(v0.71.0)が含まれます。npm install -g [email protected]のように版を固定し、上げるときにCHANGELOGのBREAKINGを読んでtakt workflow doctorを通す作業を担当できる人がいないなら、まだ様子を見るほうが安全です。
TAKTに関するよくある質問
TAKTは無料で使えますか?商用利用はできますか?
TAKT本体はMITライセンスのOSSなので無料で、商用利用も改変もできます。費用がかかるのは呼び出す側のAIで、Claude(Anthropic API)、Codex(OpenAI API)、GitHub Copilotなどの料金はそれぞれの契約に従います。
TAKTはClaude Codeで使えますか?
使えます。v0.68.0以降の既定providerは、Claude CodeのエンジンをNode.jsから呼ぶclaude-sdk(Claude Agent SDK)で、事前にtakt install claude-sdkが必要です。インストール済みのClaude Code CLIを使いたい場合はprovider: claude-headless、対話型ターミナルで動かすならclaude-terminal(tmuxが必要)を指定します。
takt runとtakt execはどう違いますか?
takt runは、会話やtakt addで積んでおいたタスクを、自分で選んだworkflowに沿って隔離worktreeで実行します。takt execは、ワークフローを書かずに会話から入り、/goで自動生成したworkflowで即座に実行します。工程を固めて繰り返すならtakt run、まず試すならtakt execです。
TAKTの作者は誰ですか?
nrslib(成瀬允宣)氏です。GitHubのnrslib/taktで開発されており、質問や議論はREADMEに案内のあるDiscordで受け付けています。成瀬氏はTAKTを「ハーネスエンジニアリング」の文脈で講演しています。
TAKTという名前の意味は?タクトタイムとは関係ありますか?
READMEによると、名前はオーケストラの指揮で拍を刻む「拍」「指揮棒の一振り」を意味するドイツ語「Takt(タクト)」に由来し、「TAKT Agent Koordination Topology」の頭字語にもなっています。製造業で稼働可能時間を必要生産数で割って求める「タクトタイム」も語源は同じドイツ語ですが、ソフトウェアとしての関係はありません。