publish
Build & Deploy Workflow
Prerequisites
- Node.js installed
- Domo CLI installed (
npm install -g @domoinc/ryuu)
Local development
npm install # Install dependencies
npm run dev # Start dev server (usually Vite)
For API calls to work locally, you need ryuu-proxy configured and domo login authenticated.
Build for production
npm run build # Outputs to dist/ (Vite) or build/ (CRA)
Domo CLI Authentication
domo login # Authenticate with your Domo instance
You'll be prompted for your Domo instance URL and credentials.
Publishing
cd dist # Change to build output directory
domo publish # Publish to Domo
If publish includes new/updated Code Engine packages, run package lifecycle steps first via:
~/.agents/skills/code-engine-create/SKILL.md~/.agents/skills/code-engine-update/SKILL.md
Important - First publish:
- On first publish, Domo generates a new
idfor your app - This ID appears in the published
manifest.jsonin your dist folder - You must copy this ID back to your source
manifest.json(e.g.,public/manifest.json) - If you don't, every publish creates a NEW app instead of updating the existing one
# After first publish, copy the generated ID:
# dist/manifest.json → public/manifest.json (just the "id" field)
Subsequent publishes
Once the ID is in your source manifest:
npm run build && cd dist && domo publish
Build Checklist
Before publishing, ensure:
-
manifest.jsonhas correctdataSetId(notid) for datasets -
manifest.jsonhasfields: []in each dataset mapping -
thumbnail.pngexists and is 300x300 pixels - All queries use
.select()with specific columns (never fetch all columns) - Each visualization has its own optimized query
- No
.aggregate()calls (use.groupBy()or client-side aggregation) -
.groupBy()calls have a grouping column (not just aggregations)
More from stahura/domo-ai-vibe-rules
domo-js
Use ryuu.js (domo.js) APIs for env, events, navigation, and data calls.
57appdb
Toolkit-first AppDB document CRUD, query operators, and collection wiring.
56html-deck
Build a professional HTML slide deck from source content and convert it to a pixel-perfect PDF. Covers slide architecture, layout patterns, print-safe CSS, Puppeteer PDF conversion, and quality verification. Use when creating presentation decks, converting documents to slide format, or generating PDF decks from HTML.
56migrate-lovable
Convert SSR-heavy Lovable/v0 apps into client-only Domo apps.
56data-api
High-level entry skill for Domo data access. Routes detailed query work to dataset-query.
55jsapi-filters
Apply runtime filters to embedded Domo dashboards/cards from the host page via the JS API (MessagePort). Covers dynamic filtering, drill events, filter change listeners, iframe resize, pfilter URL params, overrideFilters, and App Studio appData. Use for any client-side Domo embed interaction. Not for server-side programmatic filters (use programmatic-filters).
55