manifest について
manifest は、Domo アプリの `manifest.json` 設定を扱うスキルです。リソースのマッピング、エイリアス、必須ファイルに加え、データセット、コレクション、ワークフロー、Code Engine パッケージの設定を説明します。
主な機能
- 01`manifest.json` の構造と必須ファイル
- 02データセットとコレクションのマッピング
- 03ワークフローと Code Engine のマッピング
- 04エイリアスの命名制約
- 05マッピングと契約の検証ガイド
活用シーン
- 01アプリで使うデータセットを宣言する
- 02アプリを AppDB コレクションに接続する
- 03ワークフローと Code Engine のエイリアスを設定する
- 04公開前にマニフェストの項目を確認する
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ stahura/ domo-ai-vibe-rules --skill manifestインストール後、Claude Code で/manifestを入力して読み込まれたか確認します。
詳細
manifest.json
manifest.json ファイルは重要です。アプリが必要とするすべての外部リソースを宣言します。Domo はこれを使用して、次のことを行います。
- 接続するデータセット、コレクション、ワークフロー、Code Engine 関数を把握します
- エイリアス(コード内で使用)を実際の Domo リソース ID(公開時に設定)にマッピングします
packagesMapping に反映されるパッケージの作成/更新ライフサイクルの詳細については、次を参照してください。
~/.agents/skills/code-engine-create/SKILL.md~/.agents/skills/code-engine-update/SKILL.md
基本構造
{
"name": "My App Name",
"version": "1.0.0",
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"fullpage": true,
"size": {
"width": 4,
"height": 3
},
"datasetsMapping": [],
"collections": [],
"workflowMapping": [],
"packagesMapping": []
}
主なプロパティ
name/version- アプリのメタデータid- 初回公開時に生成されます(デプロイのセクションを参照)fullpage- 全ページアプリの場合はtrueに設定しますsize- カードの寸法(グリッド単位の幅/高さ)datasetsMapping- アプリがクエリできるデータセットcollections- 保存用の AppDB コレクションworkflowMapping- アプリが実行できるワークフローpackagesMapping- Code Engine 関数のマッピングとコントラクト
必須ファイル
manifest.json- アプリの設定(必須)thumbnail.png- アプリのサムネイル画像(必須。300x300 ピクセルで、manifest.json と同じディレクトリに配置する必要があります)
データセットのマッピング構造
{
"datasetsMapping": [
{
"alias": "transactions", // Used in code: new Query().fetch('transactions')
"dataSetId": "abc-123-def-456", // ⚠️ Use 'dataSetId' NOT 'id'
"fields": [] // ⚠️ REQUIRED - must be present even if empty
}
]
}
重要なポイント:
- データセット識別子には
idではなくdataSetIdを使用します fields配列は必須です。空の[]であっても含める必要がありますfieldsを省略すると、Cannot read properties of undefined (reading 'map')が発生します- エイリアス名は識別子として安全な形式にします。文字/数字のみを使用してください(
^[A-Za-z][A-Za-z0-9]*$を推奨) - エイリアスにはスペース、ハイフン、ドット、その他の特殊文字を使用しないでください
エイリアスの命名制約(すべてのマッピング)
データセットのエイリアス、Code Engine のエイリアス、ワークフローのエイリアス、およびアプリコードで参照するすべてのエイリアスに適用されます。
✅ Good: storeSales, Sales2026, RevenuePulse
❌ Bad: store-sales, store sales, store.sales, store@sales
エイリアスに特殊文字が含まれていると、実行時の呼び出しに失敗したり、マッピングを一貫して解決しにくくなったりすることがあります。
Code Engine の packagesMapping 構造
{
"packagesMapping": [
{
"name": "myPackage",
"alias": "myFunction",
"packageId": "00000000-0000-0000-0000-000000000000",
"version": "1.0.0",
"functionName": "myFunction",
"parameters": [
{
"name": "param1",
"displayName": "param1",
"type": "decimal",
"value": null,
"nullable": false,
"isList": false,
"children": [],
"entitySubType": null,
"alias": "param1"
}
],
"output": {
"name": "result",
"displayName": "result",
"type": "number",
"value": null,
"nullable": false,
"isList": false,
"children": [],
"entitySubType": null,
"alias": "result"
}
}
]
}
Code Engine の manifest に関する注意点:
packageMappingではなくpackagesMapping(s付き)を使用します。- 各パラメーターと出力に、コントラクトのすべてのフィールドを含めます。
- パラメーターの名前/型/null 許容性が、アプリコードから実際に送信される値と一致していることを確認します。
- 動作を確定させたい場合は、
packagesMapping[].versionを明示的に設定します(例:"1.0.0")。 version: nullはバージョンを固定しない/最新バージョンを使用する動作として扱われ、通常、公開後もnullのままになります。
コレクションのマッピング構造(collectionsMapping)
公開済みの manifest でアプリを既存の AppDB コレクションに接続する場合は、id と name を含む collectionsMapping エントリーを使用します。
{
"collectionsMapping": [
{
"id": "47bd2c9e-b22d-4436-8265-4798be8b218e",
"name": "RandomFunIdeas",
"syncEnabled": false
}
]
}
コレクションマッピングに関する注意点:
collectionsMappingでaliasとcollectionIdのようなその場限りのキーは使用しないでください。manifest の解析に失敗することがあります。- マッピングされたコレクションオブジェクトには
nameが必須です。 - 既存のコレクションを接続する場合、アプリの要件でデータセットとの同期が明示的に必要でない限り、
syncEnabledの既定値はfalseにします。
FileSets — manifest のエントリーは不要
FileSets は「すべてを manifest で宣言する」パターンの例外です。filesetsMapping や同等のキーはありません。サービスコード内で、ファイルセット ID を定数として直接参照してください。
// src/services/filesetApi.js
const FILESET_ID = 'b6ebf7e9-64ae-4e6d-b8ca-b356fe62923f';
ファイルセット ID は UUID です。Domo UI または community-domo-cli filesets search で取得できます。API の全体的な使用パターンについては、fileset-api スキルを参照してください。