building-omnistudio-datamapper
OmniStudio Data Mapper (formerly DataRaptor) creation and validation with 100-point scoring. Use when building Extract, Transform, Load, or Turbo Extract Data Mappers, mapping Salesforce object fields, or reviewing existing Data Mapper configurations. TRIGGER when: user creates Data Mappers, configures field mappings, works with OmniDataTransform metadata, or asks about DataRaptor/Data Mapper patterns. DO NOT TRIGGER when: building Integration Procedures (use building-omnistudio-integration-procedure), authoring OmniScripts (use building-omnistudio-omniscript), or analyzing cross-component dependencies (use analyzing-omnistudio-dependencies).
What this skill does
# building-omnistudio-datamapper: OmniStudio Data Mapper Creation and Validation Expert OmniStudio Data Mapper developer specializing in Extract, Transform, Load, and Turbo Extract configurations. Generate production-ready, performant, and maintainable Data Mapper definitions with proper field mappings, query optimization, and data integrity safeguards. --- ## Scope - **In scope**: Creating and validating OmniStudio Data Mapper configurations (Extract, Transform, Load, Turbo Extract); field mapping design; query optimization; FLS (Field-Level Security) validation; deployment via deploying-metadata skill - **Out of scope**: Building Integration Procedures (use `building-omnistudio-integration-procedure`), authoring OmniScripts (use `building-omnistudio-omniscript`), designing FlexCards (use `building-omnistudio-flexcard`), analyzing cross-component dependencies (use `analyzing-omnistudio-dependencies`) --- ## Core Responsibilities 1. **Generation**: Create Data Mapper configurations (Extract, Transform, Load, Turbo Extract) from requirements 2. **Field Mapping**: Design object-to-output field mappings with proper type handling, lookup resolution, and null safety 3. **Dependency Tracking**: Identify related OmniStudio components (Integration Procedures, OmniScripts, FlexCards) that consume or feed Data Mappers 4. **Validation & Scoring**: Score Data Mapper configurations against 5 categories (0-100 points) --- ## CRITICAL: Orchestration Order **analyzing-omnistudio-dependencies -> building-omnistudio-datamapper -> building-omnistudio-integration-procedure -> building-omnistudio-omniscript -> building-omnistudio-flexcard** (you are here: building-omnistudio-datamapper) Data Mappers are the data access layer of the OmniStudio stack. They must be created and deployed before Integration Procedures or OmniScripts that reference them. Use analyzing-omnistudio-dependencies FIRST to understand existing component dependencies. --- ## Key Insights | Insight | Details | |---------|---------| | **Extract vs Turbo Extract** | Extract uses standard SOQL with relationship queries. Turbo Extract uses server-side compiled queries for read-heavy, high-volume scenarios (10x+ faster). Turbo Extract does not support formula fields, related lists, or write operations. | | **Transform is in-memory** | Transform Data Mappers operate entirely in memory with no DML or SOQL. They reshape data structures between steps in an Integration Procedure. Use for JSON-to-JSON transformations, field renaming, and data flattening. | | **Load = DML** | Load Data Mappers perform insert, update, upsert, or delete operations. They require proper FLS checks and error handling. Always validate field-level security before deploying Load Data Mappers to production. | | **OmniDataTransform metadata** | Data Mappers are stored as OmniDataTransform and OmniDataTransformItem records. Retrieve and deploy using these metadata type names, not the legacy DataRaptor API names. | --- ## Workflow (5-Phase Pattern) ### Phase 1: Requirements Gathering **Ask the user** to gather: - Data Mapper type (Extract, Transform, Load, Turbo Extract) - Target Salesforce object(s) and fields - Target org alias - Consuming component (Integration Procedure, OmniScript, or FlexCard name) - Data volume expectations (record counts, frequency) **Then**: 1. Check existing Data Mappers: `Glob: **/OmniDataTransform*` 2. Check existing OmniStudio metadata: `Glob: **/omnistudio/**` 3. Create a task list --- ### Phase 2: Design & Type Selection | Type | Use Case | Naming Prefix | Supports DML | Supports SOQL | |------|----------|---------------|--------------|---------------| | **Extract** | Read data from one or more objects with relationship queries | `DR_Extract_` | No | Yes | | **Turbo Extract** | High-volume read-only queries, server-side compiled | `DR_TurboExtract_` | No | Yes (compiled) | | **Transform** | In-memory data reshaping between procedure steps | `DR_Transform_` | No | No | | **Load** | Write data (insert, update, upsert, delete) | `DR_Load_` | Yes | No | **Naming Format**: `[Prefix][Object]_[Purpose]` using PascalCase **Examples**: - `DR_Extract_Account_Details` -- Extract Account with related Contacts - `DR_TurboExtract_Case_List` -- High-volume Case list for FlexCard - `DR_Transform_Lead_Flatten` -- Flatten nested Lead data structure - `DR_Load_Opportunity_Create` -- Insert Opportunity records --- ### Phase 3: Generation & Validation **For Generation**: 1. Read `assets/omni-data-transform-extract.json` (Extract), `assets/omni-data-transform-transform.json` (Transform), or `assets/omni-data-transform-load.json` (Load) for the OmniDataTransform record template 2. Read `assets/omni-data-transform-item.json` for each field mapping (OmniDataTransformItem) template 3. Configure query filters, sort order, and limits for Extract types 4. Set up lookup mappings and default values for Load types 5. Validate field-level security for all mapped fields **For Review**: 1. Read existing Data Mapper configuration 2. Run validation against best practices 3. Generate improvement report with specific fixes **Run Validation**: Read `assets/completion-summary-template.md` for the scoring output format and thresholds. --- ### Generation Guardrails (MANDATORY) **BEFORE generating ANY Data Mapper configuration, Claude MUST verify no anti-patterns are introduced.** If ANY of these patterns would be generated, **STOP and ask the user**: > "I noticed [pattern]. This will cause [problem]. Should I: > A) Refactor to use [correct pattern] > B) Proceed anyway (not recommended)" | Anti-Pattern | Detection | Impact | |--------------|-----------|--------| | Extracting all fields | No field list specified, wildcard selection | Performance degradation, excessive data transfer | | Missing lookup mappings | Load references lookup field without resolution | DML failure, null foreign key | | Writing without FLS check | Load Data Mapper with no security validation | Security violation, data corruption in restricted profiles | | Unbounded Extract query | No LIMIT or filter on Extract | Governor limit failure, timeout on large objects | | Transform with side effects | Transform attempting DML or callout | Runtime error, Transform is in-memory only | | Hardcoded record IDs | 15/18-char ID literal in filter or mapping | Deployment failure across environments | | Nested relationship depth >3 | Extract with deeply nested parent traversal | Query performance degradation, SOQL complexity limits | | Load without error handling | No upsert key or duplicate rule consideration | Silent data corruption, duplicate records | **DO NOT generate anti-patterns even if explicitly requested.** Ask user to confirm the exception with documented justification. **See**: [references/best-practices.md](references/best-practices.md) for detailed patterns **See**: [references/naming-conventions.md](references/naming-conventions.md) for naming rules --- ### Phase 4: Deployment **Step 1: Validation** Use the **deploying-metadata** skill: "Deploy OmniDataTransform [Name] to [target-org] with --dry-run" **Step 2: Deploy** (only if validation succeeds) Use the **deploying-metadata** skill: "Proceed with actual deployment to [target-org]" **Post-Deploy**: Activate the Data Mapper in the target org. Verify it appears in OmniStudio Designer. **If deploy fails**: Check error for specific cause — common issues: `Entity cannot be found` (Data Mapper is in Draft status; activate first), namespace prefix mismatch (check `sfdx-project.json`), or missing parent `OmniDataTransform` record for item deployments. **If Load DM fails at runtime**: Check debug logs via `sf apex log list -o <org>`; verify FLS and object permissions for the running user profile; confirm the upsert key field is populated and unique; Salesforce Load DMs follow `allOrNone=false` by default — partial successes are possible, check for `isSuccess=false` rows in the response. --- ###
Related in Design
contribute
IncludedLocal-only OSS contribution command center. Auto-refreshes the user's in-flight PR and issue state on invoke so conversations start with full context — no need to brief Claude on what's in flight. Helps the user find issues to contribute to on GitHub, builds per-repo dossiers of what each upstream expects (CLA, DCO, branch convention, AI policy, draft-first, review bots, issue templates), runs deterministic gates before any external action so AI-assisted contributions don't reach maintainers as slop. State is markdown-only: candidate files at ~/.contribute-system/candidates/, repo dossiers at ~/.contribute-system/research/, append-only event log at ~/.contribute-system/log.jsonl. No database, no cloud calls. Use when the user asks about their PRs / issues / contributions, wants to find new work to take on, claim an issue, build/refresh a repo's dossier, or draft a Design Issue or PR. Trigger with "/contribute", "what's my PR status", "find a contribution", "claim issue X", "draft a Design Issue for Y", "refresh dossier for Z".
architectural-analysis
IncludedUser-triggered deep architectural analysis of a codebase or scoped subtree across eight modes — information architecture, data flow, integration points, UI surfaces, interaction patterns, data model, control flow, and failure modes. This skill should be used when the user asks to "diagram this codebase," "map the architecture," "show the data flow," "give me an ERD," "trace control flow," "find the integration points," "verify the layout pattern," "audit the UX architecture," or any similar request whose primary deliverable is mermaid diagrams plus cited reports under docs/architecture/. Dispatches haiku/sonnet sub-agents in parallel for per-mode exploration, then verifies every citation mechanically before any node lands in a diagram. Not for one-off prose explanations of code (use code-explanation) or for high-level system design from scratch (use system-design).
mcp
IncludedModel Context Protocol (MCP) server development and tool management. Languages: Python, TypeScript. Capabilities: build MCP servers, integrate external APIs, discover/execute MCP tools, manage multi-server configs, design agent-centric tools. Actions: create, build, integrate, discover, execute, configure MCP servers/tools. Keywords: MCP, Model Context Protocol, MCP server, MCP tool, stdio transport, SSE transport, tool discovery, resource provider, prompt template, external API integration, Gemini CLI MCP, Claude MCP, agent tools, tool execution, server config. Use when: building MCP servers, integrating external APIs as MCP tools, discovering available MCP tools, executing MCP capabilities, configuring multi-server setups, designing tools for AI agents.
react-native-skia
IncludedDesign, build, debug, and optimise high-polish animated graphics in React Native or Expo using @shopify/react-native-skia, Reanimated, and Gesture Handler. Use when the user wants canvas-driven UI, shaders, paths, rich text, image filters, sprite fields, Skottie, video frames, snapshots, web CanvasKit setup, or performance tuning for custom motion-heavy elements such as loaders, hero art, cards, charts, progress indicators, particle systems, or gesture-driven surfaces. Also use when the user asks for fluid, glow, glass, blob, parallax, 60fps/120fps, or GPU-friendly animated effects in React Native, even if they do not explicitly say "Skia". Do not use for ordinary form/layout work with standard views.
plaid
IncludedProduct Led AI Development — guides founders from idea to launched product. Six capabilities: Idea (discover a product idea), Validate (pressure-test the idea against fatal flaws, problem reality, competition, and 2-week MVP feasibility), Plan (vision intake + document generation), Design (translate image references into a design.md spec), Launch (go-to-market strategy), and Build (roadmap execution). Use when someone says "PLAID", "plaid idea", "help me find an idea", "product idea", "idea from my business", "idea from my expertise", "plaid validate", "validate my idea", "pressure-test", "is this idea good", "find fatal flaws", "validate the problem", "plan a product", "define my vision", "generate a PRD", "product strategy", "plaid design", "design from image", "translate image to design", "create design.md", "extract design tokens", "plaid launch", "go-to-market", "launch plan", "GTM strategy", "launch playbook", "plaid build", "build the app", "start building", or "execute the roadmap".
nextjs-framer-motion-animations
IncludedAdds production-safe Motion for React or Framer Motion animations to Next.js apps, including reveal, hover and tap micro-interactions, whileInView, stagger, AnimatePresence, layout and layoutId transitions, reorder, scroll-linked UI, and lightweight route-content transitions. Use when the user asks to add, refactor, or debug Motion or Framer Motion in App Router or Pages Router codebases, especially around server/client boundaries, reduced motion, LazyMotion, bundle size, hydration, or route transitions. Avoid for GSAP-style timelines, WebGL or 3D scenes, heavy scroll storytelling, or CSS-only effects unless Motion is explicitly requested.