dkh について
dkhはClaude Code向けの自律ビルドスキルです。アプリ構築の指示から計画、並列実装、テスト、修正、出荷まで進めます。dkodのASTレベルのマージでシンボル単位に作業を分割し、段階ごとのゲートと独立評価を通して実行します。
主な機能
- 01計画と並列作業単位への分割
- 02分離したdkodセッションでの実装とマージ
- 03テスト、評価、自動修正
- 04中断後の状態復元
活用シーン
- 01単一の指示からアプリを構築
- 02独立した機能を並行して開発
- 03中断したビルドの再開
MCP 対応
接続、ファイル書き込み、検証、レビュー、マージ、プッシュ、状態確認にdkod MCPツールを使用します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dkod-io/ harness --skill dkhインストール後、Claude Code で/dkhを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/evaluator.mdgenerator.mdorchestrator.mdplanner.mdreferences/dkod-patterns.mdevaluation-guide.mdplanning-guide.md詳細
dkod Harness — 自律型並列ビルドシステム
概要
完全自律型のビルドハーネスです。ユーザーは単一のプロンプト(「……を作る Web アプリを構築して」など)を入力します。 ハーネスはそれ以外のすべて(計画、並列実装、テスト、修正、リリース)を、ユーザーとの追加のやり取りなしで実行します。
これは、dkod の並列実行機能に特化して構築された、Anthropic の Planner → Generator → Evaluator ハーネスパターンの実装です。Anthropic のリファレンスアーキテクチャでは Generator を順次実行しますが、このハーネスでは、dkod の AST レベルのマージによって誤検出される競合がなくなるため、N 個の Generator を同時に実行します。
このスキルが有効になる場合
- ユーザーが「……を構築して」「……を作成して」「……を作って」と言った場合
- ユーザーが
/dkh <prompt>を実行した場合 - ユーザーがゼロから構築する完全なアプリケーションや機能セットを説明した場合
- 並列分割と評価が有効なほど複雑なタスクの場合
/dkh continue の処理
ユーザーが /dkh continue(または単に「continue」)を送信した場合:
═══ 必須:再開前に状態を復元し、クリーンアップする ═══
Generator を再ディスパッチする前に必ず、中断されたセッションの状態を復元し、不完全なものだけをクリーンアップします。すべてを一括で閉じてはいけません。送信済みの変更セットは完了した作業を表すため、保持する必要があります。
ステップ 1:既存の変更セットを dkod に問い合わせる
dk_status を呼び出すか、API 経由で変更セットを一覧表示して、中断されたセッションの状態を確認します。
各変更セットを分類します:
submitted状態 → 保持します。この Generator の作業は完了しています。そのchangeset_idを記録します。 閉じてはいけません。この単位を再ディスパッチしてはいけません。approved状態 → 保持します。この変更セットはレビューに合格しており、マージ可能です。 そのchangeset_idを記録します。フェーズ 3 でマージします。draft状態 → 未完了です。この Generator はdk_submitの前に中断されました。 この単位を再ディスパッチ対象としてマークします。conflicted状態 → 停滞しています。この単位を再ディスパッチ対象としてマークします。rejected状態 → 失敗です。この単位を再ディスパッチ対象としてマークします。
ステップ 2:未完了/失敗した変更セットを閉じ、シンボルの占有を解放する
# Close draft/conflicted/rejected — preserve submitted and approved
Bash: curl -sf -X POST "https://api.dkod.io/api/repos/<owner>/<repo>/changesets/bulk-close" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DKOD_API_KEY" \
-d '{"states": ["draft", "conflicted", "rejected"], "created_before": "'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"}' \
|| { echo "Bulk-close failed — aborting resume. Check DKOD_API_KEY and repo path."; exit 1; }
ステップ 3:ハーネスの状態を再構築する
changeset_ids= ステップ 1 で確認した、送信済みおよび承認済みのchangeset_idのリストactive_units= Generator が未完了だった単位(draft/conflicted/rejected/存在しない)- 送信済みまたは承認済みの変更セットがある単位は完了済みです。スキップしてください。
ステップ 4:未完了の単位だけで再開する
active_units(未完了の単位)の Generator だけを再ディスパッチします。完了した Generator の送信済み変更セットは保持されるため、20 分間の作業が失われることはありません。
出力:「ハーネスを再開しています — 中断前に N/M 個の Generator が完了しました。未完了の K 個の単位を再ディスパッチしています。」
続いて、次の手順に進みます:
-
アクティブなハーネスセッションがある場合(エージェントが前のターンの状態を保持している場合):
- 現在のハーネスの状態とフェーズを出力します
- 完了したエージェント(送信済み)と再ディスパッチが必要なエージェントを示します
- 完了済みの単位をスキップして、ハーネスのループを再開します
-
アクティブなハーネスセッションがない場合(アプリの再起動後の新しいコンテキストの場合):
- コマンドを確認します:「このコンテキストにアクティブなハーネスセッションが見つかりません。」
dk_statusを使って、アクティブな dkod セッションがあるか確認します- アクティブなセッションが見つかった場合は、上記の説明に従って状態を復元します
- セッションが見つからない場合は、
/dkh <prompt>で新しいビルドを開始するようユーザーに伝えます
/dkh continue を決して黙って無視してはいけません。 必ず現在の状態を示して応答します。
前提条件の確認
開始する前に、以下が利用可能であることを確認してください。
-
dkod MCP ツール:
dk_connect、dk_context、dk_file_write、dk_submit、dk_verify、dk_review、dk_approve、dk_merge、dk_push、dk_status、dk_watch -
ブラウザーでのテスト(いずれかを選択 — Playwright を推奨):
- playwright-cli(推奨):
playwright-cli --versionで確認します。スキル不要のブラウザー自動化向けスタンドアロン CLI です。スクリーンショット、スクリプト実行、PDF 生成に対応しています。 Node.js スクリプトも MCP サーバーも不要で、デフォルトでヘッドレス実行されます。 参照:https://github.com/microsoft/playwright-cli - chrome-devtools MCP(代替):
navigate_page、take_screenshot、click、evaluate_script、list_console_messages、lighthouse_audit。Playwright がインストールされていない場合にのみ使用します。 - 見つからない場合は、インストール手順を出力して代替手段に進んでください。ユーザーへの確認やインストールは行わないでください。
- Playwright と chrome-devtools のどちらも利用できない場合、評価は
dk_verifyとコードレビューに移行します(実際の UI テストは行いません)。
- playwright-cli(推奨):
-
デザインシステム(いずれかを選択 — DESIGN.md を推奨):
- DESIGN.md(推奨):プロジェクトのルートにある、awesome-design-md に基づくデザインシステムファイルです。存在する場合は、正式なデザインリファレンスとなります。プランナーはこれを仕様に取り込み、ジェネレーターはスキルを呼び出さずに直接従い、評価者はこれを基準に評価します。汎用スキルよりも、ブランドに沿った独自性の高い UI を実現できます。
- frontend-design skill(代替):DESIGN.md がない場合、ジェネレーターは UI コンポーネントの実装前に
Skill(skill: "frontend-design")を呼び出します。プランナーは引き続き、仕様に Design Direction セクションを生成します。評価者も引き続き、デザインの品質を評価します。 見つからない場合は、インストール手順を出力して代替手段に進んでください。ユーザーへの確認やインストールは行わないでください。 - DESIGN.md と frontend-design のどちらも利用できない場合、ジェネレーターはプランナーの Design Direction セクションに手動で従います。
検出フロー(PRE-FLIGHT 中に一度実行):
# 1. Detect playwright-cli (standalone CLI, skills-less operation)
HAS_PLAYWRIGHT=false
playwright-cli --version 2>/dev/null && HAS_PLAYWRIGHT=true
# 2. Detect DESIGN.md (check all paths the planner searches)
HAS_DESIGN_MD=false
( [ -f DESIGN.md ] || [ -f design.md ] || [ -f docs/DESIGN.md ] || [ -f docs/design.md ] ) && HAS_DESIGN_MD=true
# Pass both flags to all agent dispatches:
# - Planner: HAS_DESIGN_MD
# - Generators: HAS_DESIGN_MD
# - Evaluators: HAS_PLAYWRIGHT
# - Smoke test: HAS_PLAYWRIGHT
dkod が見つからない場合は、インストール方法を案内してください。
claude mcp add --transport http dkod https://api.dkod.io/mcp
モデルプロファイル
有効なプロファイル:quality
各エージェントは、タスクに適したモデルで実行されます。オーケストレーターは有効なプロファイルを読み取り、エージェントのディスパッチ呼び出しごとに model: と effort: を渡します。
| エージェント | quality | balanced | budget | effort |
|---|---|---|---|---|
| オーケストレーター* | opus | opus | sonnet | high |
| プランナー | opus | opus | sonnet | max |
| ジェネレーター | opus | sonnet | sonnet | high |
| 評価者 | opus | sonnet | haiku | max |
* オーケストレーターモデルは、この表ではなく、呼び出し元の Claude Code セッションによって設定されます。この行はセッションモデルの推奨であり、ハーネスによって強制されるものではありません。
effort レベルは必須です。 プランナーと評価者は max(複雑な推論 — 分解、採点)を使用します。ジェネレーターは high(高速な実行 — ファイル書き込み、深い分析は行わない)を使用します。エージェントをディスパッチする際は、必ず effort: を渡してください。
- quality — すべて Opus。最大限の能力を発揮します。複雑なビルドや重要度の高いビルドに使用します。
- balanced(デフォルト)— 計画とオーケストレーションには Opus、実装と評価には Sonnet を使用します。コストと品質のバランスに優れています。
- budget — 計画と実装には Sonnet、評価には Haiku を使用します。最も高速で低コストです。シンプルなビルドや反復作業に使用します。
プロファイルを切り替えるには、上の Active profile: を変更します。オーケストレーターは実行のたびに開始時にこの値を読み取ります。
自律型ループ
ハーネスは厳密なフェーズゲート方式のループを実行します:PLAN → BUILD → LAND → File Sync → Smoke Test → EVAL → SHIP/FIX/REPLAN。各フェーズには開始/終了ゲートがあり、成果物がそろうまで次のフェーズへの移行を阻止します。
agents/orchestrator.md が、フェーズの詳細、ゲートチェック、状態追跡、ディスパッチテンプレート、遷移ロジックの唯一の信頼できる情報源です。作業を始める前に読んでください。
主な制約:
- 評価レポートが完成していない状態で
dk_push(mode:"pr")を実行しないでください(Phase 5 のみ) - コードが LAND 済みかつスモークテスト済みでない限り、評価者を起動しないでください
- 検証済みの計画がない限り、生成器を起動しないでください
dk_verifyは評価ではありません — Phase 4 では chrome-devtools 経由で実行中のアプリをテストします- コード変更はすべて dkod 経由で行います — ソースファイルに対して Write/Edit/Bash を使用しないでください
- ユーザーに質問しないでください — すべての判断を自律的に行います
- 評価ラウンドは最大 3 回です。その後、問題を文書化してリリースします
重要な設計原則
0. 並列性を最大化する — 最優先事項
データ上の依存関係がある場合に限り逐次実行し、それ以外は並列実行をデフォルトにします。 Claude Code のエージェントチーム(1 回のメッセージで複数の Agent 呼び出し)と dkod のセッション分離 (各エージェントに専用のオーバーレイを付与)を活用します。これらを組み合わせることで、逐次ビルドを並列化できます。
すべてのフェーズに適用されます: 生成器は同時にディスパッチし、dk_verify は並列実行し、 失敗した生成器も並列で再ディスパッチします。唯一の例外は評価者で、共有の chrome-devtools ブラウザーセッションを使うため、逐次実行します。
1. ファイルではなくシンボル単位で分割する
dkod は AST レベルでマージします。同じファイル内の異なる関数を編集する 2 つの生成器は、 競合しません。
2. 生成器ごとに dkod セッションを 1 つ使う
各生成器は dk_connect を 1 回呼び出します。セッションはマージされるまで分離されています。
3. 評価者は独立しており、懐疑的である
Anthropic の研究によると、「独立した評価者を懐疑的になるよう調整するほうが、生成器に自身の成果を批判させるよりも、はるかに実現しやすいことが分かっています」。証拠によって PASS が立証されない限り、デフォルトは FAIL とします。
4. ファイルベースのコミュニケーション
計画と評価レポートは、コンテキストがリセットされても保持される構造化された成果物です。
5. 自律性は譲れない
ハーネスはユーザーに入力を求めることは決してありません。競合 → 自動解決。評価の失敗 → 自動修正。フレームワーク → プロンプトから推定。パッケージマネージャー → bun。
6. 評価ラウンドは最大 3 回
無限ループを防止します。3 回のラウンド後は、動作するものをリリースし、動作しないものを文書化します。
作業単位のスキーマ
プランナーは、次の構造で作業単位を生成します(計画成果物に埋め込まれます)。
## Work Unit: <id>
**Title:** <descriptive title>
**OWNS (exclusive):** <list of qualified symbol names this unit solely owns>
**Creates:** <list of new symbols with file paths>
**Acceptance criteria:**
- <testable criterion 1>
- <testable criterion 2>
**Complexity:** low | medium | high
エージェントの定義
- プランナー:
agents/planner.md— プロンプトを仕様と並列作業単位に展開します - 生成器:
agents/generator.md— dkod セッションを通じて 1 つの作業単位を実装します - 評価者:
agents/evaluator.md— chrome-devtools と dk_verify を使ってマージ済みの成果をテストします - オーケストレーター:
agents/orchestrator.md— 自律型ループを進行させます(これがあなたです)
リファレンスガイド
references/planning-guide.md— シンボル単位の分割に関する詳細ガイドreferences/evaluation-guide.md— 懐疑的な評価手法と chrome-devtools のパターンreferences/dkod-patterns.md— dkod セッションのライフサイクルとマージのパターン