mcpField
M
manifest

manifest

github.com/stahura開発24191 回インストール26 週間前に更新
リポジトリ

manifest について

manifest は、Domo アプリの `manifest.json` 設定を扱うスキルです。リソースのマッピング、エイリアス、必須ファイルに加え、データセット、コレクション、ワークフロー、Code Engine パッケージの設定を説明します。

主な機能

  1. 01`manifest.json` の構造と必須ファイル
  2. 02データセットとコレクションのマッピング
  3. 03ワークフローと Code Engine のマッピング
  4. 04エイリアスの命名制約
  5. 05マッピングと契約の検証ガイド

活用シーン

  1. 01アプリで使うデータセットを宣言する
  2. 02アプリを AppDB コレクションに接続する
  3. 03ワークフローと Code Engine のエイリアスを設定する
  4. 04公開前にマニフェストの項目を確認する

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/stahura/domo-ai-vibe-rules --skill manifest

インストール後、Claude Code で/manifestを入力して読み込まれたか確認します。

詳細

manifest.json

manifest.json ファイルは重要です。アプリが必要とするすべての外部リソースを宣言します。Domo はこれを使用して、次のことを行います。

  1. 接続するデータセット、コレクション、ワークフロー、Code Engine 関数を把握します
  2. エイリアス(コード内で使用)を実際の 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 スキルを参照してください。

コメント