Salesforce Enterprise Rbac
jeremylongshore/tons-of-skills-marketplace
Review and govern Salesforce enterprise access across profiles, permission sets and groups, sharing, field access, OAuth apps, SSO, and privileged roles.
A skill your agent uses when authoring PolicyRuleDefinition and PolicyRuleDefinitionSet metadata XML for Salesforce Data Cloud governance policies, or when editing .policyRuleDefinition /…
$ npx skills add forcedotcom/sf-skills --skill platform-policy-rule-generate -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install forcedotcom/sf-skills platform-policy-rule-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/platform-policy-rule-generate .claude/skills/platform-policy-rule-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 "platform-policy-rule-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/platform-policy-rule-generate into .claude/skills/platform-policy-rule-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "platform-policy-rule-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/platform-policy-rule-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 platform-policy-rule-generate -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install forcedotcom/sf-skills platform-policy-rule-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/platform-policy-rule-generate .agents/skills/platform-policy-rule-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 "platform-policy-rule-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/platform-policy-rule-generate into .agents/skills/platform-policy-rule-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "platform-policy-rule-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 platform-policy-rule-generate -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install forcedotcom/sf-skills platform-policy-rule-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/platform-policy-rule-generate .cursor/skills/platform-policy-rule-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 "platform-policy-rule-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/platform-policy-rule-generate into .cursor/skills/platform-policy-rule-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "platform-policy-rule-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/platform-policy-rule-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 platform-policy-rule-generate -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install forcedotcom/sf-skills platform-policy-rule-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/platform-policy-rule-generate .gemini/skills/platform-policy-rule-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 "platform-policy-rule-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/platform-policy-rule-generate into .gemini/skills/platform-policy-rule-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "platform-policy-rule-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 platform-policy-rule-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 platform-policy-rule-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/platform-policy-rule-generate .github/skills/platform-policy-rule-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 "platform-policy-rule-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/platform-policy-rule-generate into .github/skills/platform-policy-rule-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "platform-policy-rule-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 platform-policy-rule-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 platform-policy-rule-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/platform-policy-rule-generate .opencode/skills/platform-policy-rule-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 "platform-policy-rule-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/platform-policy-rule-generate into .opencode/skills/platform-policy-rule-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "platform-policy-rule-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.
platform-policy-rule-generateA skill your agent uses when authoring PolicyRuleDefinition and PolicyRuleDefinitionSet metadata XML for Salesforce Data Cloud governance policies, or when editing .policyRuleDefinition /…
Platform Policy Rule Generate is an agent skill from forcedotcom/sf-skills. Use this skill when authoring PolicyRuleDefinition and PolicyRuleDefinitionSet metadata XML for Salesforce Data Cloud governance policies, or when editing .policyRuleDefinition / .policyRuleDefinitionSet files. Covers the category decision tree, full schema for all policy variants (ACCESS, GOVERNANCE, RECORD, TRANSFORM), UI-compatibility rules for the Data Governance Policy Builder, output hygiene for user-facing agent responses, and validation guardrails. Do NOT use this skill for UserAccessPolicy, AccessPolicy…
Its SKILL.md is about 4.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 9 other files, including reference files (for example `references/deploy-errors.md`, `references/policy-schema-full.md` and `references/templates-access.md`).
It sits in Sales & Support, covering CRM management, Authorization and RBAC and Data governance. 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.
9 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are xml).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
soap.sforce.comFrom 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.
Platform Policy Rule Generate loads about 4.8k tokens when it runs, and up to ~14k if it reads all its reference files. Until then it costs about 175 tokens; SKILL.md has 1,749 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,749 words, ~4,839 tokens.
.claude/skills/platform-policy-rule-generate/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.Gating: requires the EnforceOMatic and PolicyRuleMDAPI org permissions.
Min API version: 64.0 (66.0 for conditions using PolicyJsonExpression).
This skill covers the on-disk metadata XML format for authoring policies. Use it whenever a task asks to write a *.policyRuleDefinition or *.policyRuleDefinitionSet file, or ship a metadata package containing them. The runtime side (RuleProvider, hooks) is out of scope.
Eval coverage: This skill is exercised by the team's ADK eval framework, not by
tests/evals/under the skill directory. Five datasets covering the ACCESS / GOVERNANCE / RECORD / TRANSFORM variants live inpackages/adk-eval/eval/domains/platform-policy-rule-generate/datasets/.
A deployable package always contains:
<fixture>/
package.xml
policyRuleDefinitionSets/<setName>.policyRuleDefinitionSet
policyRuleDefinitions/<ruleName>.policyRuleDefinitionpackage.xml template (use <version>[ftest]</version> for ftests, 64.0 or higher for real orgs):
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>Rule0</members>
<name>PolicyRuleDefinition</name>
</types>
<types>
<members>Set1</members>
<name>PolicyRuleDefinitionSet</name>
</types>
<version>64.0</version>
</Package><PolicyRuleDefinitionSet xmlns="http://soap.sforce.com/2006/04/metadata">
<label>Set1</label>
<description>Optional free text</description>
<replicated>false</replicated> <!-- MinAppVersion 260 -->
<builderCompatible>true</builderCompatible> <!-- MinAppVersion 262, author-settable -->
<!-- builderValidated: server-managed — do not set in authored XML -->
</PolicyRuleDefinitionSet>| Element | Req | Notes |
|---|---|---|
<label> | yes | Master label. File basename (devName) is the MDAPI identifier, not the label. |
<description> | no | Free text. |
<replicated> | no | true triggers placeholder transformation across companion orgs. Omit for null/false. |
<builderCompatible> | no | true = rules audited per §7 checklist. false = API-only. Omit = unaudited. Informational only — no deploy/runtime effect. |
<builderValidated> | no | Server-managed. Never set in authored XML. Server overwrites on validation. |
| Element | Req | Notes |
|---|---|---|
<label> | yes | MasterLabel. |
<category> | yes | See §4. Drives resourceScopeType and whether policyRuleResourceDomains/resourceTransform are required. Does NOT constrain effect outside of TRANSFORM. |
<effect> | yes | Permit, Forbid, or Transform. The only category-coupling enforced by core: effect=Transform ↔ category=TRANSFORM_POLICY_RULE_DEFINITION (bidirectional). All other categories accept Permit and Forbid freely. |
<action> | yes (≥1) | Read, TupleRead, Create, etc. Multiple elements OR-combine. |
<policyRuleDefinitionSetName> | yes | Developer name of parent set. |
<principalScopeType> | yes | Always ANY. |
<resourceScopeType> | yes | ANY, FIELD, RECORD, DATASPACE, or SPAN. Must match category (§4). |
<principalAuthenticationLevel> | no | INTERNAL, AUTHENTICATED, UNIDENTIFIED, IDENTIFIED. |
<ruleConsumer> | no | ALL, DATACLOUD, MULESOFT, TABLEAU, CORE. |
<policyRuleResourceDomains> | no | Required for RECORD (RLS) and FIELD-scope TRANSFORM rules only. Forbidden on ACCESS/GOVERNANCE. |
<resourceTransform> | no | Required (and only valid) when category=TRANSFORM. |
<whenPolicyRuleDefinitionClauseConjunction> | no | WHEN conditions. |
<unlessPolicyRuleDefinitionClauseConjunction> | no | UNLESS conditions. Not UI-editable — prefer WHEN + negated operator. |
Category names a domain (where in the platform's enforcement layers the rule applies). Effect names the action (allow / deny / transform). They are independent except for TRANSFORM.
The only Category × Effect rule the platform validates:
effect=Transform ⇔ category=TRANSFORM_POLICY_RULE_DEFINITION (bidirectional; mismatched throws INVALIDFORCATEGORY).ACCESS, GOVERNANCE, RECORD, IDENTIFIED_RECORD) accept either Permit or Forbid.Note on the platform's auto-fill default: When
<category>is omitted from authored XML, the server fills it in fromeffect:Permit→ACCESS,Forbid→GOVERNANCE,Transform→TRANSFORM. This is a default-fill, not a validation. If you author an explicit category that contradicts this default, it is accepted and persisted as-is.
What kind of policy?
│
├── OLS/FLS allow/deny on tagged or classified resources
│ category = ACCESS_POLICY_RULE_DEFINITION (allow/deny attestation in the access plane)
│ | GOVERNANCE_POLICY_RULE_DEFINITION (governance-audited)
│ effect = Permit | Forbid (chosen independently from category)
│ resourceScopeType = ANY | FIELD | DATASPACE
│ NO <policyRuleResourceDomains>
│ condition: resourcePath=TAG|CLASSIFICATION CONTAINS_ANY <ref>
│ For "objects AND all their fields" → action=TupleRead + OR-of-ENTITYTYPE clause (§7)
│ Note: "Block access to Foo object" → tag Foo with <yourTag>, write rule on tag
│ Do NOT use <resourceDomain>Foo</resourceDomain> — forbidden for ACCESS/GOVERNANCE
│
├── Row-level filter on a DMO/DLO
│ category = RECORD_POLICY_RULE_DEFINITION
│ effect = Permit | Forbid
│ resourceScopeType = RECORD
│ <policyRuleResourceDomains> = the DMO/DLO API name ← entity targeting allowed here
│
├── Identified-Guest record access
│ NOT authorable via MDAPI — SESSION_CONSUMER_ID is not in RuleContextPathType
│ Must be implemented as a runtime RuleProvider.
│
└── Field masking
category = TRANSFORM_POLICY_RULE_DEFINITION ← required by RuleBuilder validator
effect = Transform ← required by RuleBuilder validator
resourceScopeType = FIELD (structured) or SPAN (unstructured)
<policyRuleResourceDomains> = the DMO whose field is masked
<resourceTransform> required (e.g. NULL_RESOURCE_TRANSFORM, LAST_N_CHARS_RESOURCE_TRANSFORM)Both legally accept Permit and Forbid. Pick by which enforcement layer should record/audit the rule and what the prompt literally asks for:
| Use case | Pick | Reason |
|---|---|---|
| The prompt names "ACCESS policy rule" / "access rule" / "OLS/FLS" explicitly | ACCESS_POLICY_RULE_DEFINITION | Matches the prompt's vocabulary; sits in the data-access enforcement layer. |
| The prompt names "governance" / "audit" / "policy framework" / data-residency or compliance language | GOVERNANCE_POLICY_RULE_DEFINITION | Matches the prompt's vocabulary; rules surface in governance reporting. |
| Prompt is ambiguous and only describes allow/deny semantics | Default to ACCESS for Permit, GOVERNANCE for Forbid (mirrors the platform's auto-fill default; safe and deployable, but not required) |
Important — honor the explicit category in the prompt. If the prompt says "ACCESS policy rule that denies …" or "GOVERNANCE policy rule that permits …", emit exactly that category. Do not silently swap to the auto-fill default just because effect is Forbid (or Permit). The platform accepts both. The agent must not override the user's stated intent.
Scope × category compatibility — any combination outside this matrix throws INVALIDFORCATEGORY:
ACCESS | GOVERNANCE | TRANSFORM | RECORD | |
|---|---|---|---|---|
ANY | Yes | Yes | No | No |
DATASPACE | Yes | Yes | No | No |
FIELD | Yes | Yes | Yes | No |
RECORD | No | No | No | Yes |
SPAN | No | No | Yes | No |
Every <conditions> block needs all four: <clause>, <operator>, one path element, and the value.
| Goal | path element | operator | value |
|---|---|---|---|
| Resource has tag | <resourcePath>TAG</resourcePath> | CONTAINS_ANY | <valueReferenceType>CUSTOM_TAG | STANDARD_TAG</valueReferenceType> |
| Resource has classification | <resourcePath>CLASSIFICATION</resourcePath> | CONTAINS_ANY | CUSTOM_CLASSIFICATION | STANDARD_CLASSIFICATION |
| Principal has permission | <principalPath>ASSIGNED_PERMISSIONS_PATH</principalPath> | CONTAINS_ANY | CONTAINS_NONE | <valueReferenceType>CUSTOM_PERMISSION</valueReferenceType> |
| Session in dataspace | <contextPath>SESSION_DATASPACE</contextPath> | CONTAINS_ANY | <valueReferenceType>DATASPACE</valueReferenceType> |
| Record field = user attribute | <resourcePath>RECORDFIELD</resourcePath> + <valueDomain>Schema:field</valueDomain> | EQUALS | <valuePrincipalPath>USER_ID | ORGANIZATION_ID | USER_ROLE_ID</valuePrincipalPath> |
| Entity type check | <resourcePath>ENTITYTYPE</resourcePath> | IS | <valueString>{"t":"Text","v":"FIELD"}</valueString> |
<conjunctionExpression> is 1-indexed prefix notation: 1, (AND 1 2), (OR 1 2), (AND (OR 1 2) (AND 3)). A bare top-level index like 1 is valid for deploy but crashes the Data Governance Policy Builder UI — see §7 if UI editability matters.
For full path enums (RulePrincipalPathType, RuleResourcePathType, RuleContextPathType), operators, and JSON expressions (PROJECTION / ARGLIST / SOQLTARGETLISTEXPR), see references/policy-schema-full.md.
For copy-paste templates for all policy variants, see references/templates.md.
<conditions> needs an <operator>. Missing operator → reject.<conditions> needs at least one path element (<resourcePath>, <principalPath>, <contextPath>, or <valueDomain>).<contextPath> is exclusively SESSION_DATASPACE. Never put a resource path value there.<resourceTransform> and effect=Transform are coupled. Transform effect needs a resourceTransform. Permit/Forbid must not have one.<policyRuleResourceDomains> is required for RECORD (RLS) and FIELD-scope TRANSFORM; forbidden on ACCESS/GOVERNANCE.<conjunctionExpression> indices must match actual <conditions> count. Off-by-one → reject.<clause> inside <conditions> must match the wrapper (WHEN inside <when…>, UNLESS inside <unless…>).<valueString> must escape " to ". Wrong escaping silently corrupts the literal.<valueReference>, <resourceDomain>) must exist in the target org at deploy time.SCALAR_ATTRIBUTE / PLURAL_ATTRIBUTE are not in RulePrincipalPathType — not in MDAPI contract. Use a runtime RuleProvider for those shapes.IDENTIFIED_RECORD is not authorable via MDAPI — SESSION_CONSUMER_ID not in RuleContextPathType.DataGovernanceTags.ExternalData.Visibility.Public). Retrieve an existing rule to get the exact string before authoring.PolicyRuleDefinition = 64.0; PolicyJsonExpression conditions = 66.0; <replicated> = 260+; <builderCompatible> / <builderValidated> = 262+.Note on
<conjunctionExpression>shape: A bare top-level index (e.g.<conjunctionExpression>1</conjunctionExpression>) deploys cleanly — the server-side parser accepts bare tokens at the top level. It is not a deploy-time validation error. It does, however, crash the Data Governance Policy Builder UI on load — see §7.
The Data Governance Policy Builder edits a strict subset of the MDAPI. Default goal: produce UI-compatible policies. Always confirm with the operator before producing API-only XML.
Hard blockers — any of these make the policy uneditable (and several crash the builder on load):
Cannot use 'in' operator to search for 'Permit' in undefined. Required even when paired with TupleRead (where it's functionally redundant at runtime). Must include IS conditions for {"t":"Text","v":"OBJECT"} and {"t":"Text","v":"FIELD"}.<conjunctionExpression> (e.g. 1, or (AND (OR 1 2) 3)) → crash on builder load in buildCriteria. Deploy is unaffected, but the policy is uneditable in the UI. Always wrap: (AND 1) for a single condition; (AND (OR 1 2) (AND 3)) instead of (AND (OR 1 2) 3).category = ACCESS_POLICY_RULE_DEFINITION + effect = Forbid → the Data Governance Policy Builder UI (not MDAPI) collapses it to GOVERNANCE on save; round-trip via the builder will rewrite the category. MDAPI deploy is unaffected — the original ACCESS+Forbid combination is valid and deploys without modification. If your goal is UI round-trippability, prefer GOVERNANCE for Forbid; if the source of truth is MDAPI, ACCESS+Forbid is fine.<unlessPolicyRuleDefinitionClauseConjunction> block → silently dropped on first UI save.<action> → only the first is kept.ruleConsumer ≠ DATACLOUD → UI hardcodes DATACLOUD on save.(OR 1 2) conjunction → triggers // ERROR: Unsupported rule! path, rule silently dropped.UI-compatible "unless" rewrite:
| Author intent | UI-compatible shape |
|---|---|
unless principal has permission X | WHEN ASSIGNED_PERMISSIONS_PATH CONTAINS_NONE X |
unless resource has tag X | WHEN TAG CONTAINS_NONE X |
unless record field = value | WHEN RECORDFIELD NOT_EQUALS value |
For the full UI-compatibility checklist, round-trip rules, and operator support matrix, see references/ui-compatibility.md.
references/templates.md — modify from there, don't start blank.references/templates.md.<clause>, <operator>, one path element, and the value.<conjunctionExpression> — 1-indexed prefix notation. Bare top-level index (e.g. 1) deploys but breaks the UI; wrap as (AND 1) if UI editability matters (§7).references/ui-compatibility.md). If any item trips, attempt the "unless" rewrite first; if not possible, get explicit operator confirmation before continuing.package.xml — list each <members> for both types.<builderCompatible> on the set to true if §7 checklist passes; false if intentionally API-only.references/deploy-errors.md.Three-layer correctness check before done:
The agent's user-facing chat response accompanies every generated file. Customers should never see internal engine or implementation details.
Cedar, policy engine, AuthZ engine, evaluation engine, Rego, OPA, or similar. The customer-facing surface is Data Governance, Policy Builder, Data Cloud Governance — use those terms only.If the user needs more context, they'll ask — respond then, in product language.
| Detail | File |
|---|---|
| Full path enums, operators, value sets, JSON expressions (PROJECTION / ARGLIST / SOQLTARGETLISTEXPR) | references/policy-schema-full.md |
Copy-paste templates — index at references/templates.md; per-variant: templates-access.md, templates-record.md, templates-transform.md, templates-advanced.md | |
| Full UI-compatibility checklist, round-trip rules, operator/path support matrix | references/ui-compatibility.md |
© 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 8 other files (references) in skills/platform-policy-rule-generate of forcedotcom/sf-skills.
Open the folder on GitHubat commit e5164d9
Platform Policy Rule 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 |
|---|---|---|---|---|---|---|
| Platform Policy Rule Generate this skillforcedotcom/sf-skills | 1.1k | — | ~4.8k | Automated safety check: Pass | Apache-2.0 | |
| Salesforce Enterprise Rbacjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Salesforce Policy Guardrailsjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.1k | Automated safety check: Pass | MIT | |
| 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 |
jeremylongshore/tons-of-skills-marketplace
Review and govern Salesforce enterprise access across profiles, permission sets and groups, sharing, field access, OAuth apps, SSO, and privileged roles.
jeremylongshore/tons-of-skills-marketplace
Gate Salesforce code and configuration for SOQL injection, secret exposure, unsafe API versions, missing access checks, destructive writes, and unreviewed org changes.
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.
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
A skill your agent uses when authoring PolicyRuleDefinition and PolicyRuleDefinitionSet metadata XML for Salesforce Data Cloud governance policies, or when editing .policyRuleDefinition /…. Platform Policy Rule Generate is an agent skill from forcedotcom/sf-skills.policyRuleDefinitionSet files.
Platform Policy Rule Generate fits situations like: authoring PolicyRuleDefinition and PolicyRuleDefinitionSet metadata XML for Salesforce Data Cloud governance policies; editing .policyRuleDefinition / .policyRuleDefinitionSet files; userAccessPolicy; any other access-control metadata type — those have their own types and live outside the PolicyRuleDefinition schema.
Run `npx skills add forcedotcom/sf-skills --skill platform-policy-rule-generate -a claude-code`. Or copy the skill folder (skills/platform-policy-rule-generate in forcedotcom/sf-skills) into .claude/skills/platform-policy-rule-generate in your project. Claude Code loads it when a task matches its description.
Run `npx skills add forcedotcom/sf-skills --skill platform-policy-rule-generate -a codex`. Or copy the skill folder (skills/platform-policy-rule-generate in forcedotcom/sf-skills) into .agents/skills/platform-policy-rule-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 platform-policy-rule-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/platform-policy-rule-generate, .gemini/skills/platform-policy-rule-generate, .github/skills/platform-policy-rule-generate and .opencode/skills/platform-policy-rule-generate in your project.
SKILL.md names no scripts, command-line tools or credentials: Platform Policy Rule Generate is instructions for the agent only.
SKILL.md names 1 domain. In commands or code: soap.sforce.com; the agent is likely to contact it when it follows the instructions. 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.
Platform Policy Rule 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 4.8k tokens (SKILL.md is roughly 19k 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 8.9k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Platform Policy Rule Generate: Salesforce Enterprise Rbac (jeremylongshore/tons-of-skills-marketplace, 2.8k stars), Salesforce Policy Guardrails (jeremylongshore/tons-of-skills-marketplace, 2.8k stars), Soql Lib Query Builder (beyond-the-cloud-dev/soql-lib, 154 stars) and Sf Datacloud (Jaganpro/sf-skills, 424 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.