エキスパートパックを自作する(ハンズオンチュートリアル)
対象:「1人のAI社員」または「1つのチーム」を配布可能なインストールパッケージにまとめたい制作者(SI、コンサルタント、コミュニティ貢献者)向け。 これはチュートリアルです。フィールドの完全なリファレンスはfeatures/32-expert-packs.mdを参照してください。
エキスパートパックはDuDuClawエコシステムの統一パッケージング単位です:ディレクトリ(またはzip/URL)の中に、社員のペルソナ、スキル、SOP wikiページ、推奨プロンプトが入っており、相手は1行のコマンドで自分のDuDuClawにインストールできます。
1. 最小構成のパック(10分)
Section titled “1. 最小構成のパック(10分)”ディレクトリを作成します:
my-first-pack/├── expert.toml├── agents/│ └── helper/│ ├── soul.md # 社員のペルソナ(アイデンティティ/責務/境界)│ ├── agent.partial.toml # 任意:agent.tomlにディープマージされるフラグメント│ └── CONTRACT.toml # 任意:禁止事項。[boundaries] のみ導入└── skills/ └── greeting/ └── SKILL.md # 任意:パックに同梱されるスキルCONTRACT.toml の形式は CONTRACT.toml 仕様 を参照してください。各 must_not はこのスタッフのチャネル返信とも文字どおり照合され、その文言を含む返信はブロックされます。単語1つではなく、禁止する行動を説明する文として書いてください。導入時には、ワイルドカードのルール、10文字未満のルール、ペルソナ自身の引き継ぎの言い回しと同じルールを削除し、削除した内容を表示します。
expert.tomlの最小内容(フィールドはfeatures/32を正としてください):
[expert]name = "my-first-pack"description = "デモ:フレンドリーな小さなヘルパー"version = "0.1.0"author = "あなたの名前"license = "MIT"tags = ["demo"]category = "general"
[[expert.agents]]name = "helper"role = "main"display_name = "ヘルパー"agents/helper/soul.mdにペルソナを書きます。アイデンティティ/責務/境界の3段構成が良い出発点です——境界が明確であるほど、インストールする側は安心して使えます。
pack.tomlについて
Section titled “pack.tomlについて”チームパックと業種パックにはexpert.tomlを使ってください。新しいpack.tomlスキーマはチームパック、業種パック、職務プリセットを記述でき、duduclaw pack inspectはそのすべてを読めます。ただしduduclaw pack installでインストールできるのは、kindが"preset"のpack.toml(職務プリセット)だけです。kind = "team"または"template"のpack.tomlは読み取りと確認はできますが、まだインストールできません。背後のインストーラーが、チームパックや業種パックをexpert.tomlでしか認識しないためです。そのためexpert.tomlは非推奨ですが引き続き読み込まれ、pack.tomlのチームパックがインストールできるようになった後で、書き直された有料テンプレートと一緒に削除されます。バージョン番号は未定です。
手元のパックが新スキーマでどう見えるかは、duduclaw pack inspect <dir> --emit-canonicalで確認できます。対応するpack.tomlを表示するので、レビューしてから保存できます。あなたのファイルを上書きすることはありません。
2. ローカルテストループ
Section titled “2. ローカルテストループ”# インストール前に、DuDuClawがこのパックをどう読むかを確認duduclaw pack inspect ./my-first-pack
# 検証 + インストール(ディレクトリから直接インストール)duduclaw pack install ./my-first-pack
# 何がインストールされたか確認duduclaw pack list
# 共有可能なzipにパッケージング(制作側の動詞は`expert`配下に残ります)duduclaw expert pack ./my-first-pack
# 相手がインストール(ローカルzipでもURLでも可)duduclaw pack install ./my-first-pack-0.1.0.zipduduclaw pack install https://example.com/my-first-pack-0.1.0.zip
# きれいに削除(パックの社員、同梱スキル、wikiページを削除)duduclaw expert remove my-first-packduduclaw expert installはv1.69.0で削除されました。実行するとduduclaw pack installを表示し、終了コード2で終了します。expert listは引き続き使え、インストール済みの記録を一覧表示します。
インストール側の防御は組み込み済みです:zip-slipフェンス、50MB上限、コンテンツスキャン。フックは常に隔離ディレクトリ(hooks-disabled/)に無効化された状態でインストールされ、オペレーターが明示的に信頼を許可するまで有効化されません。パックを書くときは、フックが自動的に有効になると想定しないでください。
3. 発展編:チーム、wikiページ、要件宣言
Section titled “3. 発展編:チーム、wikiページ、要件宣言”- マルチエージェントチーム:複数の
[[expert.agents]]エントリ、reports_toで階層を組む(インストール時にトポロジカル順で自動作成)、departmentで部門分け。 - SOP/ナレッジ:
wiki/<namespace>/*.mdは共有ナレッジベースにインストールされます。法規、トークスクリプト、価格表はここに置き、SOULには詰め込まないでください。 - 要件宣言:
[expert.requires]のenv(必要な環境変数)とbins(必要な外部コマンド)により、インストールする側はインストール前に前提条件を把握できます——インストール後に問題に気づくことがなくなります。 - 推奨プロンプト:
[expert.prompts] recommendedに3〜5行の「まずはこれを試す」を並べます。インストールした人のファーストウィンになります。
4. 既存資産からの変換
Section titled “4. 既存資産からの変換”- 既存のDuDuClawチームをお持ちですか?
duduclaw expert convert-teamsでチームプレイブックを一括でパックに変換できます。 - Claude Codeエコシステムに公開したいですか?
duduclaw expert export <slug> --format claude-pluginでプラグイン形式に変換できます。
5. 公開と品質
Section titled “5. 公開と品質”現在の公開方法:zipをダウンロード可能な任意のURLに置く(GitHub Releaseが最も手軽です)。相手はpack install <url>でインストールします。テンプレートギャラリー(distribution/gallery/)にページを追加するのも歓迎です。集中型レジストリ(PR提出+自動検証+署名)は構築中です。
品質の目安(将来の等級付きスコアカードはこれらを見ます):
- SOULに明確な「境界」セクションがある
-
requiresが前提条件を正直に列挙している - evalケースを添付している(
duduclaw eval-scaffoldでSOULから草案を作成可能)——evalのあるパックは評価が一段高くなる - CHANGELOG形式のバージョン説明(どのバージョンで何が変わったか)がある