エキスパートパック
1つのzipにAIチームまるごと——エージェント、スキル、SOP、組織配置。インポートするものを一切信用しないセキュリティパイプラインを通してインストールされます。
エキスパートパックは、チームを持ち運べるバンドルにしたものです:reports_to階層を持つ1つ以上のエージェントに加えて、そのチームを初日から役立たせるスキル、共有wikiのSOPページ、推奨プロンプト、チャネルのヒントが含まれます。ネイティブフォーマットは、expert.tomlマニフェストを持つディレクトリ(または.zip、またはhttps://…zip URL)です:
<slug>/├── expert.toml # manifest: roster, category, prompts, requires├── agents/<name>/soul.md # persona (becomes SOUL.md)├── agents/<name>/agent.partial.toml # settings fragment, deep-merged onto the scaffold├── skills/<name>/SKILL.md # Agent Skills spec, verbatim└── wiki/<ns>/*.md # shared-wiki SOP / policy pages各ロスターエントリはname、role、reports_to(パック内の上司)、department、rank、トリガーキーワード、スキルリストを持ちます。duduclaw expert packはzip化の前に厳格に検証します(slugの形式、名前の重複、トポロジカルソートによるreports_toの循環検出、soul.mdの欠落、SKILL.mdのfrontmatterのnameがディレクトリ名と一致すること)。installは寛容で、修正を推測する代わりに問題を報告します。[expert.requires]はdoctor形式でenv変数とバイナリを列挙します——不足していれば警告しますが、決してブロックはしません。
外部フォーマットも同じコマンドでインストールできます:Claude Codeプラグイン(.claude-plugin/plugin.json)、単体のAgent Skill(SKILL.md)、そして他のプラットフォームのエージェント定義(Doubao パートナーパッケージ、OpenClaw、Hermes、AGENTS.md/CLAUDE.md/GEMINI.md、Claude Code/Copilot サブエージェント、Dify アプリのエクスポート。他のプラットフォームから AI スタッフを取り込む を参照)。フォーマット検出はフェイルクローズです——認識できないレイアウトは、見つかったものの一覧とともに拒否され、中途半端にインポートされることは決してありません。
1つのフォーマット、1つの入口
Section titled “1つのフォーマット、1つの入口”エキスパートパック、プレミアムのチームプレイブック、ジョブプリセットは、かつて3つのマニフェスト方言と3つのインストール動詞に分かれていました。いまは1つのスキーマ(pack.toml)と1つのコマンドです:
duduclaw pack list # インストール済みパック、ローカルのプリセット、カタログで提供中のものduduclaw pack inspect <src> # 正規化した表示。どの方言で読み取ったかも表示duduclaw pack install <src> # kindで経路分岐。プレミアム内容のライセンス確認は1か所のみ[pack] kindが経路を選びます——preset(1つの職務設定、identityを持たない)、team(ロスター。エキスパートパックが元々そうであったもの)、template(単体の業種ペルソナ)。[pack] tierが唯一残ったプレミアム判定です:以前は4つのコードパスがディレクトリパスから「これは有料コンテンツか」を各自推測していましたが、いまはパックがtierを持ち、1つの述語だけがそれを読みます。読み取れないtierはプレミアム扱いです——読めないフィールドが有料コンテンツを解錠してはなりません。
duduclaw expert installはv1.69.0で削除されました。実行するとduduclaw pack installを表示し、終了コード2で終了します。制作側の動詞(pack、publish、export、convert-teams、hooks、remove)とexpert list(インストール済みの記録を一覧表示)はduduclaw expert配下に残ります。ダッシュボードのワンクリックインストールとexperts.installも同じコードに到達します——どちらも元々CLIを駆動しているためです。
expert.toml、team.toml、preset.tomlは引き続き読み込まれます。 ディスク上は何も書き換えません。expert.toml、team.toml、業種パックのディレクトリ構成は非推奨で、書き直された有料テンプレートと一緒に今後のバージョンで削除されます(バージョン番号は未定)。理由は、pack.tomlのチームパックと業種パックがまだインストールできないことです。インストーラーが受け付けるのはpack.tomlの職務プリセットだけです。preset.tomlは職務プリセットの保存形式で、非推奨ではありません。duduclaw pack inspect <dir> --emit-canonicalは旧パックに対応するpack.tomlを表示するので、自分でレビューしてから移行できます——あなたが責任を持つ内容を機械が書き換えるのではなく。
インストールパイプライン
Section titled “インストールパイプライン”ワンクリックのダッシュボードインストールやLLM生成ドラフトを含め、すべてのインストールは同じシーケンスを実行します:
- アーカイブをフェンスする。 Zip展開はzip-slip対策で保護され、50 MB上限付き。URLダウンロードも同じ上限を共有します。
- 配置を最初に検証する。
--attach-under <agent>(パックのルートエージェントを既存の上司、たとえばあなたのCEOの下にぶら下げる)は、何かが書き込まれる前にチェックされます——タイプミスは何もインストールされないまま中断します。 - すべての外来物をスキャンする。 インポートされる各SOUL/SKILLテキストはDATAに降格され、プロンプトインジェクション入力ガードとスキルセキュリティスキャナーの両方を通されます。ブロックレベルの検出があればそのアセットの着地は止まり、レポートが理由を示します。
- 親から順にスキャフォールドする。 エージェントはトポロジカル順にインストールされるため、
reports_toは常に実在するものを指します。名前の衝突は、--renameで-importedサフィックスにオプトインしない限り、コンフリクトとして報告されます。未知のroleストリングはworkerにフォールバックします(不正なroleはレジストリロード時にエージェントを壊すため)。Claude以外のモデルidはそのまま保持されますが、レビュー用にフラグが立ちます——プラットフォームが黙って単一モデルへ強制変換することは決してありません。 - 置き換えではなくマージする。
agent.partial.tomlはスキャフォールドされたagent.tomlにディープマージされます。パックが宣言するMCPサーバーはエージェントの.mcp.jsonにマージされますが、配線済みのduduclawサーバーエントリが上書きされることはありません——敵対的なパックはツールサーフェスを乗っ取れません。 - フックを隔離する。 下記参照。
--dry-runは1バイトも書き込まずに完全なプランを表示します。すべての項目は正直なレポート(imported / skipped / conflict / warning)に載ります——何も黙って落とされません。expert remove <slug>は、インストール記録が「パックが作成した」と言うものだけを削除します。既存のアセットは残ります。
同じパックをもう一度インストールするときは、--replace <slug>(以前のバージョンをまずバックアップへ移し、失敗時は元に戻す)か、両方を残す --as-copy を付けます。ダッシュボードでも同じ選択肢が表示されます。書き込む前に追加される AI スタッフの数を数え、ライセンスの上限を超える場合はパック全体をインストールしません。エラーコードと対処は他のプラットフォームから AI スタッフをインポートを参照してください。
組織配置:部門 × ランク
Section titled “組織配置:部門 × ランク”departmentを持つロスターメンバーは、それがagent.tomlの[agent] departmentに書き込まれ、インストーラーが対応する共有wikiの部門スペースを作成します——新入りは即座に組織図と部門ページに現れます。ランク(executive / manager / staff)は表示用メタデータです:マニフェストが省略した場合はroleから導出されます(ceo → executive、main / front_desk / team_leader / product_manager → manager、それ以外はstaff)。ランクは導出されるものであり、決して権威を持ちません——階層の唯一の情報源はreports_toツリーのままです。
組み込みカタログ
Section titled “組み込みカタログ”ダッシュボードカタログは、22のプレミアム産業チームプレイブック(クリニック、薬局、会計、法律事務所、eコマース…)をワンクリックでインストール可能なパックとして表示します。冪等なexpert convert-teamsパイプラインが、オンデマンドでバージョン付きキャッシュへ変換します。単体のエキスパートパックもチームと並んで一覧されます。エントリは6つのカテゴリセクション——health、professional、retail、lifestyle、education、other——にグループ化され、各カードはそのロスターがどの部門に着地するかを表示するため、22+のパックはフラットなグリッドではなく組織メニューとして読めます。
LLMガイド付きオーサリング
Section titled “LLMガイド付きオーサリング”あなたのビジネス向けのパックがない?説明してください。ガイド付きフローは、業種のヒント、自由記述の説明(最大2,000文字)、チームサイズ(1–8)、推奨チャネルを受け取ります。モデルは厳格なJSONデザインを出力します——モデルは決してファイルを書きません。ゲートウェイがデザインをドラフトパックとして実体化し、マニフェストバリデーターのミラーで検証し、プレビューを表示します。ドラフトごとに最大5回の生成/修正ラウンド。ドラフトは24時間で期限切れになります。
生成は段階的に行われ、チーム全体を1回のモデル応答に詰め込むことはなくなりました:
- メンバー構成:メンバー、役割、職責、報告先。
- メンバーごとに1回の呼び出し:そのメンバーの役割説明(SOUL)。必須の章(自分は誰か、担当範囲、作業手順、2組以上の回答例、理由付きの禁止事項、人に引き継ぐ条件、口調)を含みます。さらにそのメンバー専用のスキル(使う場面、手順、出力テンプレート、記入済みの例)と、SOULの禁止事項を言い換えたCONTRACTルール。各スタッフには最低1つの専用スキルがあり、受付には振り分けスキルが付きます。
- ナレッジベース:少なくとも4ページの共有wiki(業務SOP、用語集、法令・コンプライアンスの注意点、よくある質問)。コンプライアンスのページの冒頭には「法令名・条番号・数値は人による確認が必要」という注意書きが必ず入り、プロンプトでも条番号の捏造を禁じています。
段階2と3は同時に最大2件のモデル呼び出しで進みます。各段階はJSONを検査し、問題をモデルに返して1回だけ再試行します。それでも失敗したメンバーにはメンバー構成から作った仮の役割説明が入り、スキルは付かず、プレビューにどのメンバーかが表示されます(一部未完成のドラフト)。メンバー構成が失敗した場合か全員が失敗した場合だけ、そのラウンドは失敗になります。ダッシュボードはバックグラウンドで生成を開始し、段階ごとの進捗を表示します。キャンセルするとモデル呼び出しが止まり、ドラフトは前のラウンドの内容を保ちます。プロンプトには組み込みの作例(SOUL・スキル・wikiページ各1つ)が入り、キャッシュ済みの業種パックがあればそのマニフェストも加わるため、新規インストール環境でも同じ品質基準になります。新しく生成されたメンバーには、モデルが書いた agent.partial.toml の設定は付きません。メンバーIDは必ずチームのIDで始まり(flowershop-team なら flowershop-…)、呼び出し語は表示名から作ります(文字と数字のみ)。モデルが出した値は使いません。
オプションで、ナレッジベースの段階だけウェブ検索(Claude CLI の WebSearch、提供元側で実行)を許可できます。WebFetch を含むほかのツールはすべて無効のままで、Direct API へのフォールバックにはツールがありません。ウェブ検索を使ったページには印が付き、プレビューで全文を読めます。管理者が「確認した」にチェックするまで導入できません。CLI が失敗してツールなしのフォールバックがナレッジベースを書いた場合は、ウェブ検索をしていないことがプレビューに表示されます。1ラウンドは既定で25分で停止します(config.toml の [experts] generate_timeout_minutes、5–120)。タイムアウト・失敗・キャンセルでも前のラウンドは残ります。同時に実行できる生成は3件までで、導入は数えません。
CONTRACT.toml の禁止事項は返信フィルターでもあります。 must_not はチャネルの返信ごとに文字どおり照合され、一致した返信はブロックされます。そのためチームの生成時と、どのパックの導入時にもルールを整理します:ワイルドカード文字を除き、10文字未満のルールと、スタッフ自身が言うべき言葉(人への引き継ぎの言い回しや回答例)と同じルールを削除します。削除したルールは導入結果に表示されます。「返金」のような単語1つで返金に触れた返信がすべて止まることはありません。導入前にプレビューで各メンバーの禁止事項を確認してください。
プレビューには、各メンバーのスキルと禁止事項、ナレッジベースのページ、一部未完成の説明、導入時にスキップされる見込みの項目(同名のAIスタッフやwikiページが既にある、または安全チェックを通過しない内容)が表示されます。導入後は、メンバーごと(スキル、CONTRACT.toml)とwikiページごとに実際に入ったものを報告します。既存の同名ページは上書きせず、報告に載せます。
パック内のメンバーIDが1つでも使われている場合、導入時にチーム全員のIDへ同じ番号を付けます(-2、-3…。--rename を付けた場合はまず -imported)。報告関係はチーム内に保たれます。表示名や呼び出し語が既存スタッフと同じメンバーは「名前(ID)」に変更し、呼び出し語も合わせます。プレビューで事前に警告し、導入結果にすべての変更を表示します。パックのスキル数には各スタッフ専用のスキルも含まれます。
2つのハードルールが自己オーサリングを安全に保ちます:生成されたパックは決してフックを含んではならない(プロンプトでブロックされ、生成後にも検証、フェイルクローズ)。そしてドラフトのインストールは、上記のCLIセキュリティパイプライン全体を通過します——LLMの出力は、見知らぬ人のzipと同じ外部コンテンツとして扱われます。
フック:人間が承認するまで隔離
Section titled “フック:人間が承認するまで隔離”インポートされたフックは、エージェントランタイムに配線される任意のコマンドです——サプライチェーンリスクです。そのため無効化された状態で隔離ディレクトリにコピーされ、暗黙に配線されることは決してありません。有効化には明示的な許可が必要です:インストール時の--trust-hooks、または後からダッシュボードの承認センターで決定されるApprovalBrokerリクエストをduduclaw expert hooks <slug>で適用する方法です。許可なし、拒否、TTL期限切れの承認は、いずれもフックを無効のままにします(フェイルクローズ)。状態機械(disabled → pending_approval → enabled | disabled)はパックごとに永続化され、CLIとダッシュボードで共有されます。
エクスポート
Section titled “エクスポート”duduclaw expert export <slug> --format claude-pluginは、インストール済みパックをClaude Codeプラグインへ戻します:.claude-plugin/plugin.json(DuDuClaw固有フィールドはx-duduclawキーの下に置かれ、Claude Codeはこれを無視します)、エージェントごとにfrontmatterとSOUL本文を持つagents/<id>.md、そしてエージェントの非duduclaw MCPサーバーをプラグインレベルで集約したもの。ここで作ったチームがここにロックインされることはありません。
| 項目 | 制限 |
|---|---|
| アーカイブサイズ(zip / ダウンロード) | 50 MB |
| 生成チームサイズ | 1–8エージェント |
| ドラフトごとの生成ラウンド | 5 |
| 生成中に同時実行するモデル呼び出し | 2 |
| 1ラウンドの生成時間の上限 | 既定25分([experts] generate_timeout_minutes、5–120) |
| 同時に実行する生成 | 3(導入は含まない) |
| 生成チームのナレッジページ数 | 4–10 |
| 生成メンバーごとのスキル数 | 1–3 |
| ドラフトの寿命 | 24 h |
| 生成パック内のフック | なし(フェイルクローズ) |
| エクスポートフォーマット | claude-plugin(P0) |