jaganpro/sf-skills/sf-industry-commoncore-omniscript
Claude Code and agent skill by jaganpro/sf-skills
- community
Checking that the SKILL.md file is still in the repository.
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).
Install
npx vskill@latest install jaganpro/sf-skills/sf-industry-commoncore-omniscriptSKILL.md
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
- OmniScript Generation: Create well-structured OmniScripts from requirements, selecting appropriate element types for each step
- Element Design: Configure PropertySetConfig JSON for each element with correct data binding, validation, and conditional logic
- Dependency Analysis: Map all references to Integration Procedures, DataRaptors, and embedded OmniScripts before deployment
- 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
Englishunless 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 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
Build the OmniScript:
- Create the OmniProcess record with Type, SubType, Language, and OmniProcessType='OmniScript'
- Create OmniProcessElement child records for each Step (Level=0)
- Create OmniProcessElement child records for each element within Steps (Level=1+, ordered by Order field)
- Configure PropertySetConfig JSON for each element
- Wire action elements to their Integration Procedures / DataRaptors
Validation (STRICT MODE):
- BLOCK: Missing Type/SubType/Language, circular OmniScript embedding, broken IP/DataRaptor references, missing required PropertySetConfig fields
- WARN: Steps with no elements, input elements without validation, missing error handling on actions, unused data paths, deeply nested elements (>4 levels)
Validation Report Format (6-Category Scoring 0-120):
Phase 4: Deployment
- Deploy all dependencies first: DataRaptors, Integration Procedures, referenced OmniScripts
- Retrieve or deploy OmniScript metadata:
``bash sf project retrieve start -m OmniScript:<Name> -o <org> sf project deploy start -m OmniScript:<Name> -o <org> ``
- Activate the OmniScript version after successful deployment
- Verify activation:
``bash sf data query -q "SELECT Id,Name,Type,SubType,Language,IsActive,VersionNumber FROM OmniProcess WHERE Type='<Type>' AND SubType='<SubType>' AND OmniProcessType='OmniScript' AND IsActive=true" -o <org> ``
Phase 5: Testing
Walk through all paths with various data scenarios:
- Happy path: Complete all steps with valid data, verify submission
- Validation testing: Submit invalid data at each input, verify error messages
- Conditional testing: Exercise all conditional blocks and verify show/hide logic
- Data prefill: Verify DataRaptor Extract Actions populate elements correctly
- Save for later: Test resume functionality if enabled
- Navigation: Test back/forward/cancel behavior across all steps
- Error scenarios: Simulate IP/DataRaptor failures, verify error handling
- Embedded OmniScripts: Test data passing between parent and child OmniScripts
- Bulk data: Test with large datasets in Loop Blocks and Type Ahead elements
Generation Guardrails (MANDATORY)
| Anti-Pattern | Impact | Correct Pattern | |
|---|---|---|---|
| Circular OmniScript embedding | Infinite rendering loop | Map dependency tree; never embed A in B if B embeds A | |
| Unbounded DataRaptor Extract | Performance degradation | Add filter conditions; limit returned records | |
| Missing input validation | Bad data entry | Add Validation elements or pattern/required on inputs | |
| Hardcoded Salesforce IDs | Deployment failure across orgs | Use merge fields or Custom Settings/Metadata | |
| IP Action without error handling | Silent failures | Configure showError, errorMessage in PropertySetConfig | |
| Large images in Text Blocks | Slow page load | Use Image elements with optimized URLs | |
| Too many elements per Step | Poor user experience | Limit to 7-10 input elements per Step | |
| Missing conditional visibility | Irrelevant fields shown | Use show expressions to hide inapplicable elements |
DO NOT generate anti-patterns even if explicitly requested.
Scoring: 120 Points Across 6 Categories
Design & Structure (25 points)
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/sf-industry-commoncore-omniscript/SKILL.md
Popularity
- Repository stars
- 409
- Repository forks
- 93
- 7-day trend score
- 30
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 18 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/jaganpro/sf-skills/sf-industry-commoncore-omniscript)