code-engine-create
Code Engine Package Create (CLI)
Use this skill for package creation workflows, payload generation, and post-create mapping sync.
Intent
This skill covers lifecycle operations that are out of scope for app-runtime invocation skills:
- create new package shell
- publish first package content payload
- infer and normalize function input/output datatypes
- update app
manifest.jsonpackagesMappingentries after create
For in-app function invocation patterns, use ~/.agents/skills/code-engine/SKILL.md.
Primary Execution Path
Prefer community-domo-cli:
community-domo-cli --instance <instance> code-engine create-package --body-file payload.json
Fallback endpoint when CLI path is unavailable:
POST /api/codeengine/v2/packages
Release Safety Rule
Hard rule: never call any Code Engine release endpoint unless the user explicitly says "release".
- Do not infer release from context.
- Do not release as part of "finish", "publish", or "make it work".
- If release appears necessary, stop and ask for explicit release approval first.
Required Payload Shape
{
"name": "My Package",
"description": "Optional",
"code": "// JS source",
"environment": "LAMBDA",
"language": "JAVASCRIPT",
"manifest": {
"functions": [
{
"name": "myFunction",
"displayName": "My Function",
"description": "",
"inputs": [],
"parameters": [],
"output": {}
}
],
"configuration": {
"accountsMapping": []
}
}
}
Create semantics:
POST /api/codeengine/v2/packagescreates a package or version payload target.- For a new version on an existing package, include
idandversionin the create body and send full code/manifest payload.
Datatype Mapping Rules (Auto-Map)
When generating manifest.functions[].inputs/parameters/output, apply these defaults:
payload,params,config,data,body,options=>object- names indicating counts/limits/offsets =>
decimal - boolean-like names (
is*,has*,enabled,required) =>boolean - identifiers/text fields (
*id,name,query,message) =>text - unknowns =>
text - output default =>
object
Use the same type value for type and dataType when both fields are present.
Post-Create Manifest Follow-up
After successful create, update app manifest.json packagesMapping:
- set
packageIdto created package id - set
versionto returned version (or explicit target version) - ensure each mapped function has matching
parametersandoutput
If package ID/version changes, treat existing mapping as drift and sync immediately unless user requests otherwise.
Post-Create Verification (Required)
After create, verify target package/version before declaring success:
GET /api/codeengine/v2/packages/{packageId}- Confirm target version exists and includes expected function names.
- Confirm function inputs/outputs have expected datatypes and nullability.
If create returns an incomplete version shell (for example missing function contracts), hand off to update flow:
PUT /api/codeengine/v2/packages/{id}/versions/{version}viacode-engine-update- Re-run verification after update
Checklist
- CLI-first create attempted
- Endpoint fallback documented if CLI unavailable
- Payload contains
manifest.functions - Datatype mapping applied to each function input/output
- Release was not called unless user explicitly requested release
- Post-create verification completed on target package/version
- Incomplete create result routed to
code-engine-updateand re-verified -
packagesMappingupdated in manifest after create - Result includes package id/version for downstream steps
More from stahura/domo-ai-vibe-rules
domo-js
Use ryuu.js (domo.js) APIs for env, events, navigation, and data calls.
55appdb
Toolkit-first AppDB document CRUD, query operators, and collection wiring.
54html-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.
54data-api
High-level entry skill for Domo data access. Routes detailed query work to dataset-query.
53jsapi-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).
53ai-service-layer
Toolkit-first AIClient patterns for generation, text-to-sql, and response parsing.
53