cap-apps-manifest

SKILL.md

manifest.json

The manifest.json file is critical - it declares all external resources your app needs. Domo uses this to:

  1. Know which datasets, collections, workflows, and code engine functions to connect
  2. Map aliases (used in your code) to actual Domo resource IDs (configured at publish time)

Basic structure

{
  "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": []
}

Key properties

  • name / version - App metadata
  • id - Generated on first publish (see deployment section)
  • fullpage - Set true for full-page apps
  • size - Card dimensions (width/height in grid units)
  • datasetsMapping - Datasets the app can query
  • collections - AppDB collections for storage
  • workflowMapping - Workflows the app can trigger
  • packagesMapping - Code Engine function mappings and contracts

Required files

  • manifest.json - App configuration (required)
  • thumbnail.png - App thumbnail image (required, must be 300x300 pixels, must be alongside manifest.json)

Dataset Mapping Structure

{
  "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
    }
  ]
}

Critical points:

  • Use dataSetId (not id) for the dataset identifier
  • fields array is required - must be present even if empty []
  • Omitting fields causes: Cannot read properties of undefined (reading 'map')

Code Engine packagesMapping structure

{
  "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 gotchas:

  • Use packagesMapping (with s), not packageMapping.
  • Include full contract fields on each parameter and output.
  • Ensure parameter names/types/nullability match what app code actually sends.
Weekly Installs
3
GitHub Stars
10
First Seen
1 day ago
Installed on
windsurf3
amp3
cline3
opencode3
cursor3
kimi-cli3