with one click
duet-config
// 「DUET.mdを更新して」「duet設定を整理して」「entryを追加して」「roleを見直して」など、プロジェクトの DUET.md をAIエージェントが読み、必要に応じて安全に編集するときに使う。既存方針を尊重し、軽微な整理は進め、方針変更や権限変更は確認する。
// 「DUET.mdを更新して」「duet設定を整理して」「entryを追加して」「roleを見直して」など、プロジェクトの DUET.md をAIエージェントが読み、必要に応じて安全に編集するときに使う。既存方針を尊重し、軽微な整理は進め、方針変更や権限変更は確認する。
| name | duet_config |
| description | 「DUET.mdを更新して」「duet設定を整理して」「entryを追加して」「roleを見直して」など、プロジェクトの DUET.md をAIエージェントが読み、必要に応じて安全に編集するときに使う。既存方針を尊重し、軽微な整理は進め、方針変更や権限変更は確認する。 |
プロジェクトの DUET.md を、AIエージェントと人間の共有設定ガイドとして扱う。
DUET.md には Duet の起動設定だけでなく、そのプロジェクトでAIエージェントが作業するときの前提、entry の役割、権限、運用上の合意を残す。
この skill は DUET.md を厳密に固定するためではなく、作業を通じて設定を育てるために使う。
AIエージェントは既存の記述を尊重しつつ、次回以降の作業で迷いにくい形へ整理してよい。
DUET.md や duet 設定の作成、更新、整理を依頼したときDUET.md に残したいときDUET.md 全体を読んでから編集する未確定 や 要確認 として残すapproval_policy、thread_sandbox、turn_sandbox_policy、networkAccess の変更DUET.md の YAML front matter は Duet の設定であり、entry ごとの値は codex app-server の thread/start と turn/start に渡される。
設定値を追加・変更するときは、まず既存の DUET.md とこの skill の設定表を優先する。
Codex CLI のバージョン差分が疑わしい場合は codex app-server --help と codex app-server generate-ts または codex app-server generate-json-schema で確認する。
| 項目 | 意味 | 設定値・編集方針 |
|---|---|---|
node_name | Duet の Erlang node 名 | 通常は "duet" または duet@<hostname>。変更すると接続先名に影響するため確認する |
entries | 起動する entry の一覧 | entry 追加は用途が明確なら行ってよい。削除、名称変更、統合は確認する |
entries[].name | entry の識別名 | 必須。skill や RPC 呼び出しで使うため、既存名の変更は確認する |
entries[].command | app-server 起動コマンド | 通常は "codex app-server"。--listen、--config、--enable などを足す場合は影響範囲を確認する |
entries[].role | entry の初回 turn に渡す役割説明 | 用途に合わせて整理してよい。長すぎる一般論より、任せたい振る舞いと判断基準を短く書く |
entries[].approval_policy | turn/start などに渡す承認ポリシー | 代表値は "never"、"on-request"、"on-failure"、"untrusted"。権限運用に関わるため変更は確認する |
entries[].thread_sandbox | thread/start に渡す sandbox mode | 代表値は "read-only"、"workspace-write"、"danger-full-access"。thread 作成時の権限に関わるため変更は確認する |
entries[].turn_sandbox_policy.type | turn/start に渡す sandbox policy 種別 | 代表値は "readOnly"、"workspaceWrite"、"dangerFullAccess"。"externalSandbox" は外部 sandbox 前提なので、採用前に確認する |
entries[].turn_sandbox_policy.networkAccess | turn 中のネットワーク可否 | true は外部通信を許す。調査や依存取得に便利だが、変更は確認する |
entries[].turn_sandbox_policy.writableRoots | workspaceWrite で書き込み可能にする絶対パスの一覧 | ローカル絶対パスを含むため、共有される DUET.md や例にはデフォルトで書かない。sandbox レベルの書き込み制限が明示的に必要な private 設定でだけ追加する |
entries[].turn_sandbox_policy.excludeTmpdirEnvVar | workspaceWrite で環境変数由来の tmpdir を書き込み対象から外すか | 最新 schema で見える詳細設定。必要性が明確な場合だけ使う |
entries[].turn_sandbox_policy.excludeSlashTmp | workspaceWrite で /tmp を書き込み対象から外すか | 最新 schema で見える詳細設定。必要性が明確な場合だけ使う |
thread_sandbox: "read-only" と turn_sandbox_policy.type: "readOnly" を基本にするworkspace-write / workspaceWrite を使える。共有設定では writableRoots を省き、role と運用メモで意図する書き込み範囲を明示するdanger-full-access / dangerFullAccess は強い権限なので、ユーザーが明示した場合以外は提案に留めるapproval_policy: "never" は非対話運用に向くが、危険な操作も承認できない。権限を広げる場合は sandbox 側で制限するapproval_policy: "on-request" はAIエージェントが必要時に承認を求める運用に向くapproval_policy: "on-failure" は失敗時だけ承認を求める挙動だが、Codex CLI では deprecated と表示される場合があるため、新規採用は慎重にするapproval_policy: "untrusted" は信頼済みでない操作の承認を求める用途に使うDUET.md に入れる前に、現在の Codex CLI で使える値か確認するDUET.md を読むDUET.md は YAML front matter を持つ Markdown として扱う。
front matter には Duet が読む設定を置き、本文にはプロジェクト固有の説明や運用メモを置く。
---
node_name: "duet"
entries:
- name: "work_partner"
command: "codex app-server"
role: "作業伴走者。設計、実装、レビューを継続的に相談する。"
approval_policy: "never"
thread_sandbox: "workspace-write"
turn_sandbox_policy:
type: "workspaceWrite"
networkAccess: true
excludeTmpdirEnvVar: false
excludeSlashTmp: false
---
# DUET
## entry の使い分け
- `work_partner`: 作業中の相談、反証、レビューに使う
## 運用メモ
- entry の追加、削除、role 変更を反映するには Duet を再起動する
[HINT] Download the complete skill directory including SKILL.md and all related files