sf-industry-commoncore-omniscript
OmniStudio OmniScript creation and validation with 120-point scoring. Use when building guided digital experiences, multi-step forms, or interactive processes that orchestrate Integration Procedures and Data Mappers. TRIGGER when: user creates OmniScripts, designs step flows, configures element types, or reviews existing OmniScript configurations. DO NOT TRIGGER when: building FlexCards (use sf-industry-commoncore-flexcard), creating Integration Procedures directly (use sf-industry-commoncore-integration-procedure), or analyzing dependencies (use sf-industry-commoncore-omnistudio-analyze).
What this skill does
# sf-industry-commoncore-omniscript: OmniStudio OmniScript Creation and Validation Expert OmniStudio OmniScript builder for declarative, step-based guided digital experiences. OmniScripts are the OmniStudio analog of Screen Flows: multi-step, interactive processes that collect input, orchestrate server-side logic (Integration Procedures, DataRaptors), and present results to the user — all without code. ## Quick Reference **Scoring**: 120 points across 6 categories. **Thresholds**: ✅ 90+ (Deploy) | ⚠️ 67-89 (Review) | ❌ <67 (Block - fix required) --- ## Core Responsibilities 1. **OmniScript Generation**: Create well-structured OmniScripts from requirements, selecting appropriate element types for each step 2. **Element Design**: Configure PropertySetConfig JSON for each element with correct data binding, validation, and conditional logic 3. **Dependency Analysis**: Map all references to Integration Procedures, DataRaptors, and embedded OmniScripts before deployment 4. **Data Flow Analysis**: Trace data through the OmniScript JSON structure — from prefill through user input to final save actions --- ## CRITICAL: Orchestration Order **sf-industry-commoncore-omnistudio-analyze → sf-industry-commoncore-datamapper → sf-industry-commoncore-integration-procedure → sf-industry-commoncore-omniscript → sf-industry-commoncore-flexcard** (you are here: sf-industry-commoncore-omniscript) OmniScripts consume Integration Procedures and DataRaptors. Build those FIRST. FlexCards may launch OmniScripts — build FlexCards AFTER. Use sf-industry-commoncore-omnistudio-analyze to map the full dependency tree before starting. --- ## Key Insights | Insight | Details | |---------|---------| | **Type/SubType/Language triplet** | Uniquely identifies an OmniScript. All three values are required and form the composite key. Example: Type=`ServiceRequest`, SubType=`NewCase`, Language=`English` | | **PropertySetConfig** | JSON blob containing all element configuration — layout, data binding, validation rules, conditional visibility. This is where the real logic lives | | **Core namespace** | OmniProcess with `IsIntegrationProcedure = false` (equivalently `OmniProcessType='OmniScript'`). Elements are child OmniProcessElement records | | **Element hierarchy** | Elements use Level/Order fields for tree structure. Level 0 = Steps, Level 1+ = elements within steps. Order determines sequence within a level | | **Version management** | Multiple versions can exist; only one can be active per Type/SubType/Language triplet. Activate via the `IsActive` field | | **Data JSON** | OmniScripts pass a single JSON data structure through all steps. Elements read from and write to this shared JSON via merge field syntax | --- ## Workflow Design (5-Phase Pattern) ### Phase 1: Requirements Gathering **Before building, evaluate alternatives**: OmniScripts are best for complex, multi-step guided processes. For simple single-screen data entry, consider Screen Flows. For data display without interaction, consider FlexCards. **Ask the user** to gather: - **Type**: The process category (e.g., `ServiceRequest`, `Enrollment`, `ClaimSubmission`) - **SubType**: The specific variation (e.g., `NewCase`, `UpdateAddress`, `FileAppeal`) - **Language**: Typically `English` unless multi-language support is required - **Purpose**: What business process this OmniScript guides the user through - **Target org**: Org alias for deployment - **Data sources**: Which objects/APIs need to be queried or updated **Then**: Check existing OmniScripts to avoid duplication, identify reusable Integration Procedures or DataRaptors, and map the dependency chain. ### Phase 2: Design & Element Selection Design each step and select element types appropriate to the interaction pattern. #### Container Elements | Element Type | Purpose | Key Config | |-------------|---------|------------| | **Step** | Top-level container for a group of UI elements; each Step is a page in the wizard | `chartLabel`, `knowledgeOptions`, `show` (conditional visibility) | | **Conditional Block** | Show/hide a group of elements based on conditions | `conditionType`, `show` expression | | **Loop Block** | Iterate over a data list and render elements for each item | `loopData` (JSON path to array) | | **Edit Block** | Inline editing container for tabular data | `editFields`, `dataSource` | #### Input Elements | Element Type | Purpose | Key Config | |-------------|---------|------------| | **Text** | Single-line text input | `label`, `placeholder`, `pattern` (regex validation) | | **Text Area** | Multi-line text input | `label`, `maxLength`, `rows` | | **Number** | Numeric input with optional formatting | `label`, `min`, `max`, `step`, `format` | | **Date** | Date picker | `label`, `dateFormat`, `minDate`, `maxDate` | | **Date/Time** | Date and time picker | `label`, `dateFormat`, `timeFormat` | | **Checkbox** | Boolean toggle | `label`, `defaultValue` | | **Radio** | Radio button group for single selection | `label`, `options` (static or data-driven) | | **Select** | Dropdown selection | `label`, `options`, `optionSource` (static/data) | | **Multi-select** | Multiple item selection | `label`, `options`, `maxSelections` | | **Type Ahead** | Search/autocomplete input | `label`, `dataSource`, `searchField`, `minCharacters` | | **Signature** | Signature capture pad | `label`, `penColor`, `backgroundColor` | | **File** | File upload | `label`, `maxFileSize`, `allowedExtensions` | | **Currency** | Currency input with locale formatting | `label`, `currencyCode`, `min`, `max` | | **Email** | Email input with format validation | `label`, `placeholder` | | **Telephone** | Phone number input with masking | `label`, `mask`, `placeholder` | | **URL** | URL input with format validation | `label`, `placeholder` | | **Password** | Masked text input | `label`, `minLength` | | **Range** | Slider input | `label`, `min`, `max`, `step` | | **Time** | Time picker | `label`, `timeFormat` | #### Display Elements | Element Type | Purpose | Key Config | |-------------|---------|------------| | **Text Block** | Static content display (HTML supported) | `textContent`, `HTMLTemplateId` | | **Headline** | Section heading | `text`, `level` (h1-h6) | | **Aggregate** | Calculated summary display | `aggregateExpression`, `format` | | **Disclosure** | Expandable/collapsible content | `label`, `defaultExpanded` | | **Image** | Image display | `imageURL`, `altText` | | **Chart** | Data visualization | `chartType`, `dataSource` | #### Action Elements | Element Type | Purpose | Key Config | |-------------|---------|------------| | **DataRaptor Extract Action** | Pull data from Salesforce | `bundle`, `inputMap`, `outputMap` | | **DataRaptor Load Action** | Push data to Salesforce | `bundle`, `inputMap` | | **Integration Procedure Action** | Call server-side Integration Procedure | `ipMethod` (Type_SubType), `inputMap`, `outputMap`, `remoteOptions` | | **Remote Action** | Call Apex @RemoteAction or REST | `remoteClass`, `remoteMethod`, `inputMap` | | **Navigate Action** | Page navigation or redirection | `targetType`, `targetId`, `URL` | | **DocuSign Envelope Action** | Trigger DocuSign envelope | `templateId`, `recipientMap` | | **Email Action** | Send email | `emailTemplateId`, `recipientMap` | #### Logic Elements | Element Type | Purpose | Key Config | |-------------|---------|------------| | **Set Values** | Variable assignment and data transformation | `elementValueMap` (key-value pairs) | | **Validation** | Input validation rules with custom messages | `validationFormula`, `errorMessage` | | **Formula** | Calculate values using formula expressions | `expression`, `dataType` | | **Submit Action** | Final submission of collected data | `postMessage`, `preTransformBundle`, `postTransformBundle` | ### Phase 3: Generation & Validation ```bash # Verify no duplicate Type/SubType/Language exists sf data query -q "SELECT Id,Name,Type,SubType,Language,IsActive,VersionNumber FROM
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.