skills/custom-apps/manifest/SKILL.md
Configure manifest mappings for datasets, workflows, collections, and Code Engine packagesMapping contracts.
npx skillsauth add stahura/domo-ai-vibe-rules manifestInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
The manifest.json file is critical - it declares all external resources your app needs. Domo uses this to:
For package create/update lifecycle details that feed packagesMapping, use:
~/.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 - App metadataid - Generated on first publish (see deployment section)fullpage - Set true for full-page appssize - Card dimensions (width/height in grid units)datasetsMapping - Datasets the app can querycollections - AppDB collections for storageworkflowMapping - Workflows the app can triggerpackagesMapping - Code Engine function mappings and contractsmanifest.json - App configuration (required)thumbnail.png - App thumbnail image (required, must be 300x300 pixels, must be alongside 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
}
]
}
Critical points:
dataSetId (not id) for the dataset identifierfields array is required - must be present even if empty []fields causes: Cannot read properties of undefined (reading 'map')^[A-Za-z][A-Za-z0-9]*$)Applies to dataset aliases, Code Engine aliases, workflow aliases, and any alias your app code references.
✅ Good: storeSales, Sales2026, RevenuePulse
❌ Bad: store-sales, store sales, store.sales, store@sales
If an alias includes special characters, runtime calls can fail or mappings can be hard to resolve consistently.
{
"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:
packagesMapping (with s), not packageMapping.packagesMapping[].version (for example "1.0.0") when you want deterministic behavior.version: null is treated as unpinned/latest behavior and will usually remain/display as null after publish.collectionsMapping)When wiring an app to an existing AppDB collection in published manifests, use collectionsMapping entries with id + name.
{
"collectionsMapping": [
{
"id": "47bd2c9e-b22d-4436-8265-4798be8b218e",
"name": "RandomFunIdeas",
"syncEnabled": false
}
]
}
Collection mapping gotchas:
alias + collectionId in collectionsMapping; this can fail manifest parsing.name is required for mapped collection objects.syncEnabled to false unless app requirements explicitly call for synchronized dataset behavior.FileSets are the exception to the "declare everything in manifest" pattern. There is no filesetsMapping or equivalent key. Reference the fileset ID directly as a constant in your service code:
// src/services/filesetApi.js
const FILESET_ID = 'b6ebf7e9-64ae-4e6d-b8ca-b356fe62923f';
The fileset ID is a UUID you get from the Domo UI or via community-domo-cli filesets search. See the fileset-api skill for the full API pattern.
tools
Step-by-step orchestrator for building Domo App Studio apps with native KPI cards via community-domo-cli. Sequences app creation, pages, theme, hero metrics, native charts, filter cards, layout assembly, and navigation. CLI-first — no raw API calls.
tools
Create, update, and execute Magic ETL dataflows programmatically via API and CLI. Covers DAG-based JSON dataflow definitions, input/transform/output node wiring, join operations, and execution lifecycle.
tools
Magic ETL dataflows via community-domo-cli — list, get-definition, create, update, run, execution status; JSON DAG actions, transforms, joins. Use when automating dataflows with the community Domo CLI end-to-end. For REST/Java-CLI–first flows or mixed API patterns, use magic-etl instead.
development
Clean, professional dashboard theme for Domo custom apps. CSS custom properties, layout patterns, typography, and design polish that feel native to the Domo platform. Includes OKLCH color palette, layered shadows, concentric border radius, tabular numbers, and micro-interaction patterns.