
Building Omnistudio Omniscript
Generate OmniStudio OmniScript process JSON—steps, text blocks, and property sets—when you extend Salesforce guided flows without hand-editing every element.
Overview
Building OmniStudio OmniScript is an agent skill for the Build phase that drafts OmniScript and OmniProcess JSON element definitions for Salesforce OmniStudio.
Install
npx skills add https://github.com/forcedotcom/sf-skills --skill building-omnistudio-omniscriptWhat is this skill?
- JSON templates for OmniProcess steps, text blocks, and element hierarchy (Level, SequenceNumber, ParentElementId)
- PropertySetConfig patterns for labels, validation, remote class/method hooks, and LWC runtime flags
- Placeholder-driven authoring ({{StepName}}, {{ParentProcessId}}) for repeatable OmniScript scaffolding
- Supports Type/SubType process shells with VersionNumber and integration-procedure toggles
Adoption & trust: 571 installs on skills.sh; 513 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You know the OmniScript you need but repeating step and PropertySetConfig JSON in OmniStudio is slow and error-prone.
Who is it for?
Salesforce builders extending OmniStudio flows who want template-driven JSON instead of manual Studio clicks for every element.
Skip if: Teams not on Salesforce OmniStudio, or anyone who needs full business analysis and UAT without hands-on org deployment.
When should I use this skill?
You are authoring or extending Salesforce OmniStudio OmniScripts and need JSON templates for steps, elements, or process shells.
What do I get? / Deliverables
You get consistent OmniProcess element JSON—steps, text blocks, and process shells—ready to adapt, validate, and deploy in your org.
- OmniProcess element JSON (steps, text blocks, property sets)
- Draft OmniScript process shell with Type, SubType, and runtime flags
Recommended Skills
Journey fit
OmniScript authoring is core product configuration on Salesforce, which solo builders and admins do during the build phase before go-live. OmniStudio sits on CRM integrations and low-code UI orchestration, so integrations is the canonical shelf—not generic frontend polish.
How it compares
Template skill for OmniStudio metadata shapes—not a generic React form builder or a non-Salesforce wizard framework.
Common Questions / FAQ
Who is building-omnistudio-omniscript for?
Salesforce admins, consultants, and indie builders shipping Experience or Service flows who use OmniStudio and want agent help drafting OmniScript JSON.
When should I use building-omnistudio-omniscript?
During build when you scaffold new OmniScripts, add steps and text blocks, or standardize PropertySetConfig for validation and remote calls before deploy and test.
Is building-omnistudio-omniscript safe to install?
Review the Security Audits panel on this Prism page and treat generated JSON like any org metadata—validate in a sandbox before production promotion.
SKILL.md
READMESKILL.md - Building Omnistudio Omniscript
{ "OmniProcessId": "{{ParentProcessId}}", "Name": "{{StepName}}", "Type": "Step", "Description": "{{Description}}", "IsActive": true, "Level": 0, "SequenceNumber": {{SequenceNumber}}, "PropertySetConfig": "{\"label\":\"{{StepLabel}}\",\"chartLabel\":\"\",\"errorMessage\":{\"custom\":[],\"default\":null},\"instructionKey\":\"\",\"knowledgeOptions\":{\"dataCategoryCriteria\":\"\",\"keyword\":\"\",\"publishStatus\":\"Online\",\"typeFilter\":\"\"},\"conditionType\":\"Hide if True\",\"show\":null,\"HTMLTemplateId\":\"\",\"remoteClass\":\"\",\"remoteMethod\":\"\",\"remoteOptions\":{},\"remoteTimeout\":30000,\"validationRequired\":\"Submit\"}" } { "OmniProcessId": "{{ParentProcessId}}", "Name": "{{ElementName}}", "Type": "Text Block", "Description": "{{Description}}", "IsActive": true, "Level": 1, "SequenceNumber": {{SequenceNumber}}, "ParentElementId": "{{ParentStepId}}", "PropertySetConfig": "{\"HTMLTemplateId\":\"\",\"dataJSON\":false,\"hide\":false,\"label\":\"{{Label}}\",\"readOnly\":false,\"show\":null,\"textBlock\":\"{{HTMLContent}}\"}" } { "Name": "{{Type}}_{{SubType}}", "Type": "{{Type}}", "SubType": "{{SubType}}", "Language": "English", "VersionNumber": 1, "IsActive": false, "IsIntegrationProcedure": false, "Description": "{{Description}}", "PropertySetConfig": "{\"persistentComponent\":true,\"trackingCustomData\":{},\"enableLWCRuntime\":true,\"autoSaveOnStepNext\":false,\"autoFocus\":false,\"showConfirmation\":true,\"allowCancel\":true,\"cancelRedirectPageName\":\"\",\"cancelRedirectTemplateUrl\":\"\",\"cancelSource\":\"\",\"consoleTabLabel\":\"\",\"elementTypeToHTMLTemplateList\":[],\"knowledgeArticleTypeQueryFieldsMap\":{},\"lpiLayout\":\"\",\"message\":{},\"pubsub\":false,\"rtpSeed\":false,\"seedDataJSON\":{},\"sessionTimeout\":120,\"ssm\":false,\"timeTracking\":false}", "WebComponentKey": "{{Type}}/{{SubType}}/English/1" } # Credits & Acknowledgments This skill reflects patterns and conventions established within the Salesforce OmniStudio platform and its practitioner community. --- <!-- Parent: building-omnistudio-omniscript/SKILL.md --> # OmniScript Best Practices > **Applies to**: OmniStudio OmniScripts (OmniProcessType='OmniScript') > **Companion**: See `element-types.md` for PropertySetConfig reference per element type --- ## Table of Contents 1. [Step Design Patterns](#1-step-design-patterns) 2. [Data Prefill Strategies](#2-data-prefill-strategies) 3. [Validation Patterns](#3-validation-patterns) 4. [Navigation Patterns](#4-navigation-patterns) 5. [Performance Optimization](#5-performance-optimization) 6. [Embedding vs Linking OmniScripts](#6-embedding-vs-linking-omniscripts) 7. [Naming Conventions](#7-naming-conventions) 8. [Error Handling](#8-error-handling) 9. [Testing Strategies](#9-testing-strategies) 10. [Security Considerations](#10-security-considerations) --- ## 1. Step Design Patterns ### Wizard-Style (Multi-Step Sequential) The default and most common pattern. Each Step represents a phase of the process, with linear forward progression. **When to use:** - Guided intake forms (service requests, applications, enrollments) - Multi-phase data collection where later steps depend on earlier inputs - Processes that benefit from chunking to reduce cognitive load **Design rules:** - Limit each Step to 7-10 input elements (cognitive load threshold) - Group related fields together within a Step - Place data-fetching actions (DataRaptor Extract, IP Action) at the beginning of the Step they serve - Use descriptive Step labels that orient the user (e.g., "Contact Information", "Review & Submit") - The final Step should be a review/confirmation screen **Example structure:** ``` Step 1: "Account Selection" -> Type Ahead (account search) + DataRaptor Extract (prefill) Step 2: "Service Details" -> Select, Text, Date inputs for the request Step 3: "Attachments" -> File upload + Text Area for notes Step 4: "Review & Submit" -