Soql Lib Query Builder
beyond-the-cloud-dev/soql-lib
Builds Salesforce SOQL queries using the SOQL Lib fluent builder API (SOQL.cls).
OmniStudio Data Mapper (formerly DataRaptor) creation and validation with 100-point scoring.
$ npx skills add forcedotcom/sf-skills --skill omnistudio-datamapper-generate -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install forcedotcom/sf-skills omnistudio-datamapper-generate --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/omnistudio-datamapper-generate .claude/skills/omnistudio-datamapper-generate && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "omnistudio-datamapper-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/omnistudio-datamapper-generate into .claude/skills/omnistudio-datamapper-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omnistudio-datamapper-generate", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/forcedotcom/sf-skills/tree/main/skills/omnistudio-datamapper-generateType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add forcedotcom/sf-skills --skill omnistudio-datamapper-generate -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install forcedotcom/sf-skills omnistudio-datamapper-generate --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/omnistudio-datamapper-generate .agents/skills/omnistudio-datamapper-generate && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "omnistudio-datamapper-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/omnistudio-datamapper-generate into .agents/skills/omnistudio-datamapper-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omnistudio-datamapper-generate", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add forcedotcom/sf-skills --skill omnistudio-datamapper-generate -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install forcedotcom/sf-skills omnistudio-datamapper-generate --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/omnistudio-datamapper-generate .cursor/skills/omnistudio-datamapper-generate && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "omnistudio-datamapper-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/omnistudio-datamapper-generate into .cursor/skills/omnistudio-datamapper-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omnistudio-datamapper-generate", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/forcedotcom/sf-skills.git --path skills/omnistudio-datamapper-generate--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add forcedotcom/sf-skills --skill omnistudio-datamapper-generate -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install forcedotcom/sf-skills omnistudio-datamapper-generate --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/omnistudio-datamapper-generate .gemini/skills/omnistudio-datamapper-generate && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "omnistudio-datamapper-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/omnistudio-datamapper-generate into .gemini/skills/omnistudio-datamapper-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omnistudio-datamapper-generate", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install forcedotcom/sf-skills omnistudio-datamapper-generateInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add forcedotcom/sf-skills --skill omnistudio-datamapper-generate -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/omnistudio-datamapper-generate .github/skills/omnistudio-datamapper-generate && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "omnistudio-datamapper-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/omnistudio-datamapper-generate into .github/skills/omnistudio-datamapper-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omnistudio-datamapper-generate", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add forcedotcom/sf-skills --skill omnistudio-datamapper-generate -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install forcedotcom/sf-skills omnistudio-datamapper-generate --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/omnistudio-datamapper-generate .opencode/skills/omnistudio-datamapper-generate && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "omnistudio-datamapper-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/omnistudio-datamapper-generate into .opencode/skills/omnistudio-datamapper-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omnistudio-datamapper-generate", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
omnistudio-datamapper-generateOmniStudio Data Mapper (formerly DataRaptor) creation and validation with 100-point scoring.
Omnistudio Datamapper Generate is an agent skill from forcedotcom/sf-skills. 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 omnistudio-integration-procedure-generate), authoring…
Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 9 other files, including reference files and assets (for example `assets/completion-summary-template.md`, `assets/omni-data-transform-extract.json` and `assets/omni-data-transform-item.json`).
It sits in Sales & Support, covering CRM management. It works with Salesforce. The repository describes itself as: Salesforce's curated collection of agent skills for building applications. Optimized for Agentforce Vibes, compatible with all AI tools. The licence is Apache-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e5164d9. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
sfFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Omnistudio Datamapper Generate loads about 4k tokens when it runs, and up to ~7.1k if it reads all its reference files. Until then it costs about 170 tokens; SKILL.md has 1,538 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from forcedotcom/sf-skills at commit e5164d9, republished under its Apache-2.0 licence (© forcedotcom). 1,538 words, ~3,956 tokens.
.claude/skills/omnistudio-datamapper-generate/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.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.
omnistudio-integration-procedure-generate), authoring OmniScripts (use omnistudio-omniscript-generate), designing FlexCards (use omnistudio-flexcard-generate), analyzing cross-component dependencies (use omnistudio-dependencies-analyze)omnistudio-dependencies-analyze -> omnistudio-datamapper-generate -> omnistudio-integration-procedure-generate -> omnistudio-omniscript-generate -> omnistudio-flexcard-generate (you are here: omnistudio-datamapper-generate)
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 omnistudio-dependencies-analyze FIRST to understand existing component dependencies.
| 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. |
Ask the user to gather:
Then:
Glob: **/OmniDataTransform*Glob: **/omnistudio/**| 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 ContactsDR_TurboExtract_Case_List -- High-volume Case list for FlexCardDR_Transform_Lead_Flatten -- Flatten nested Lead data structureDR_Load_Opportunity_Create -- Insert Opportunity recordsFor Generation:
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 templateassets/omni-data-transform-item.json for each field mapping (OmniDataTransformItem) templateFor Review:
Run Validation: Read assets/completion-summary-template.md for the scoring output format and thresholds.
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 for detailed patterns See: references/naming-conventions.md for naming rules
Step 1: Validation Use the platform-metadata-deploy skill: "Deploy OmniDataTransform [Name] to [target-org] with --dry-run"
Step 2: Deploy (only if validation succeeds) Use the platform-metadata-deploy 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.
Completion Summary: Read assets/completion-summary-template.md for the completion summary format.
Testing Checklist:
| Category | Points | Key Rules |
|---|---|---|
| Design & Naming | 20 | Correct type selection; naming follows DR_[Type]_[Object]_[Purpose] convention; single responsibility per Data Mapper |
| Field Mapping | 25 | Explicit field list (no wildcards); correct input/output paths; proper type conversions; null-safe default values |
| Data Integrity | 25 | FLS validation on all fields; lookup resolution for Load types; upsert keys defined; duplicate handling configured |
| Performance | 15 | Bounded queries with LIMIT/filters; Turbo Extract for read-heavy scenarios; minimal relationship depth; indexed filter fields |
| Documentation | 15 | Description on OmniDataTransform record; field mapping rationale documented; consuming components identified |
Thresholds: [PASS] 90+ (Deploy) | [REVIEW] 67-89 (Review) | [BLOCK] <67 (Block - fix required)
sf data query -q "SELECT Id,Name,Type FROM OmniDataTransform LIMIT 200" -o <org>sf data query -q "SELECT Id,Name,InputObjectName,OutputObjectName,LookupObjectName FROM OmniDataTransformItem WHERE OmniDataTransformationId='<id>' LIMIT 200" -o <org>sf project retrieve start -m OmniDataTransform:<Name> -o <org>sf project deploy start -m OmniDataTransform:<Name> -o <org>Deliverables produced by this skill:
assets/omni-data-transform-*.json templateassets/omni-data-transform-item.json templateassets/completion-summary-template.md)| From Skill | To omnistudio-datamapper-generate | When |
|---|---|---|
| omnistudio-dependencies-analyze | -> omnistudio-datamapper-generate | "Analyze dependencies before creating Data Mapper" |
| platform-custom-object-generate / platform-custom-field-generate | -> omnistudio-datamapper-generate | "Describe target object fields before mapping" |
| platform-soql-query | -> omnistudio-datamapper-generate | "Validate Extract query logic" |
| From omnistudio-datamapper-generate | To Skill | When |
|---|---|---|
| omnistudio-datamapper-generate | -> omnistudio-integration-procedure-generate | "Create Integration Procedure that calls this Data Mapper" |
| omnistudio-datamapper-generate | -> platform-metadata-deploy | "Deploy Data Mapper to target org" |
| omnistudio-datamapper-generate | -> omnistudio-omniscript-generate | "Wire Data Mapper output into OmniScript" |
| omnistudio-datamapper-generate | -> omnistudio-flexcard-generate | "Display Data Mapper Extract results in FlexCard" |
| Issue | Resolution |
|---|---|
| Large data volume (>10K records) | Use Turbo Extract; add pagination via Integration Procedure; warn about heap limits |
| Polymorphic lookup fields | Specify the concrete object type in the mapping; test each type separately |
| Formula fields in Extract | Standard Extract supports formula fields; Turbo Extract does not — fall back to standard Extract |
| Cross-object Load (master-detail) | Insert parent records first, then child records in a separate Load step; use Integration Procedure to orchestrate sequence |
| Namespace-prefixed fields | Include namespace prefix in field paths (e.g., ns__Field__c); verify prefix matches target org |
| Multi-currency orgs | Map CurrencyIsoCode explicitly; do not rely on default currency assumption |
| RecordType-dependent mappings | Filter by RecordType in Extract; set RecordTypeId in Load; document which RecordTypes are supported |
| Draft Data Mapper not retrievable | sf project retrieve start -m OmniDataTransform:<Name> only works for active DMs; activate before retrieving |
| Foreign key field name wrong | The parent lookup on OmniDataTransformItem is OmniDataTransformationId (full word "Transformation"), not OmniDataTransformId |
assets/completion-summary-template.md for score formatsf api request rest --method POST --body @file.json to create OmniDataTransform and OmniDataTransformItem records. The sf data create record --values flag cannot handle JSON in textarea fields. Write the JSON body to a temp file first.| File | When to Read |
|---|---|
assets/omni-data-transform-extract.json | Phase 3 Generation — template for Extract type OmniDataTransform records |
assets/omni-data-transform-transform.json | Phase 3 Generation — template for Transform type OmniDataTransform records |
assets/omni-data-transform-load.json | Phase 3 Generation — template for Load type OmniDataTransform records |
assets/omni-data-transform-item.json | Phase 3 Generation — template for each OmniDataTransformItem field mapping |
assets/completion-summary-template.md | Phase 3 & 5 — scoring output format and completion summary template |
references/best-practices.md | Phase 3 Guardrails — detailed patterns for field mapping, query optimization, null handling, and performance |
references/naming-conventions.md | Phase 2 Design — full naming rules for all Data Mapper types and field mapping conventions |
© forcedotcom, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 7 other files (references, assets) in skills/omnistudio-datamapper-generate of forcedotcom/sf-skills.
Open the folder on GitHubat commit e5164d9
Omnistudio Datamapper Generate next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Omnistudio Datamapper Generate this skillforcedotcom/sf-skills | 1.1k | — | ~4k | Automated safety check: Pass | Apache-2.0 | |
| Soql Lib Query Builderbeyond-the-cloud-dev/soql-lib | 154 | — | ~4.3k | Automated safety check: Pass | MIT | |
| Sf DatacloudJaganpro/sf-skills | 424 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Soql Lib Selectorbeyond-the-cloud-dev/soql-lib | 154 | — | ~2k | Automated safety check: Pass | MIT | |
| Dev SetupPortwood-Global-Solutions/Portwood | 126 | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Sf FlowJaganpro/sf-skills | 424 | — | ~1.8k | Automated safety check: Pass | MIT |
beyond-the-cloud-dev/soql-lib
Builds Salesforce SOQL queries using the SOQL Lib fluent builder API (SOQL.cls).
Jaganpro/sf-skills
Salesforce Data Cloud product orchestrator for connect→prepare→harmonize→segment→act workflows.
beyond-the-cloud-dev/soql-lib
Creates Salesforce Apex selector classes using the SOQL Lib selector pattern.
Portwood-Global-Solutions/Portwood
Get from a fresh clone of Portwood to a working, fully-tested Salesforce org.
Jaganpro/sf-skills
Creates and validates Salesforce Flows with 110-point scoring.
gmapsscraper/google-maps-agent-skills
Export Google Maps business data to CSV, JSON, or CRM format (HubSpot, Pipedrive, Salesforce).
forcedotcom/sf-skills
Declared architecture snapshot for one Agentforce agent: planner, topics, actions, flows, Apex, prompt templates, and NGA plugins.
forcedotcom/sf-skills
Data Cloud 360° view of a single Agentforce session. An agent skill from forcedotcom/sf-skills.
forcedotcom/sf-skills
Apply a Salesforce sandbox post-copy automation JSON config against a target org.
forcedotcom/sf-skills
Apply a Salesforce sandbox post-copy automation JSON config against a target org.
forcedotcom/sf-skills
Apply SLDS-compliant UI using the correct blueprints, styling hooks, utility classes, and icons.
forcedotcom/sf-skills
Lightning Web Components with PICKLES methodology and 165-point scoring.
Works with
Categories
OmniStudio Data Mapper (formerly DataRaptor) creation and validation with 100-point scoring. Omnistudio Datamapper Generate is an agent skill from forcedotcom/sf-skills. OmniStudio Data Mapper (formerly DataRaptor) creation and validation with 100-point scoring.
Omnistudio Datamapper Generate fits situations like: building Extract; turbo Extract Data Mappers; mapping Salesforce object fields; reviewing existing Data Mapper configurations.
Run `npx skills add forcedotcom/sf-skills --skill omnistudio-datamapper-generate -a claude-code`. Or copy the skill folder (skills/omnistudio-datamapper-generate in forcedotcom/sf-skills) into .claude/skills/omnistudio-datamapper-generate in your project. Claude Code loads it when a task matches its description.
Run `npx skills add forcedotcom/sf-skills --skill omnistudio-datamapper-generate -a codex`. Or copy the skill folder (skills/omnistudio-datamapper-generate in forcedotcom/sf-skills) into .agents/skills/omnistudio-datamapper-generate in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add forcedotcom/sf-skills --skill omnistudio-datamapper-generate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/omnistudio-datamapper-generate, .gemini/skills/omnistudio-datamapper-generate, .github/skills/omnistudio-datamapper-generate and .opencode/skills/omnistudio-datamapper-generate in your project.
Going by SKILL.md and its folder, Omnistudio Datamapper Generate needs the command-line tools its instructions call (sf).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Omnistudio Datamapper Generate is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.2k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Omnistudio Datamapper Generate: Soql Lib Query Builder (beyond-the-cloud-dev/soql-lib, 154 stars), Sf Datacloud (Jaganpro/sf-skills, 424 stars), Soql Lib Selector (beyond-the-cloud-dev/soql-lib, 154 stars) and Dev Setup (Portwood-Global-Solutions/Portwood, 126 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
forcedotcom (a GitHub organization) maintains it in forcedotcom/sf-skills, which has 1,065 GitHub stars. The repository holds 251 skills in this directory. The repository was last updated on October 7, 2026.
Source: forcedotcom/sf-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.