Salesforce Deploy Integration
jeremylongshore/tons-of-skills-marketplace
Deploy a Salesforce-connected application through immutable artifacts, environment binding, canary traffic, reconciliation, and rollback.
A skill your agent uses to deploy the TPM Liability Accruals data kit end to end to a Salesforce org.
$ npx skills add forcedotcom/sf-skills --skill consumer-goods-accruals-datakit-deploy -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install forcedotcom/sf-skills consumer-goods-accruals-datakit-deploy --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/consumer-goods-accruals-datakit-deploy .claude/skills/consumer-goods-accruals-datakit-deploy && 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 "consumer-goods-accruals-datakit-deploy" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/consumer-goods-accruals-datakit-deploy into .claude/skills/consumer-goods-accruals-datakit-deploy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "consumer-goods-accruals-datakit-deploy", 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/consumer-goods-accruals-datakit-deployType 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 consumer-goods-accruals-datakit-deploy -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install forcedotcom/sf-skills consumer-goods-accruals-datakit-deploy --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/consumer-goods-accruals-datakit-deploy .agents/skills/consumer-goods-accruals-datakit-deploy && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "consumer-goods-accruals-datakit-deploy" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/consumer-goods-accruals-datakit-deploy into .agents/skills/consumer-goods-accruals-datakit-deploy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "consumer-goods-accruals-datakit-deploy", 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 consumer-goods-accruals-datakit-deploy -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install forcedotcom/sf-skills consumer-goods-accruals-datakit-deploy --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/consumer-goods-accruals-datakit-deploy .cursor/skills/consumer-goods-accruals-datakit-deploy && 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 "consumer-goods-accruals-datakit-deploy" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/consumer-goods-accruals-datakit-deploy into .cursor/skills/consumer-goods-accruals-datakit-deploy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "consumer-goods-accruals-datakit-deploy", 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/consumer-goods-accruals-datakit-deploy--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 consumer-goods-accruals-datakit-deploy -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install forcedotcom/sf-skills consumer-goods-accruals-datakit-deploy --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/consumer-goods-accruals-datakit-deploy .gemini/skills/consumer-goods-accruals-datakit-deploy && 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 "consumer-goods-accruals-datakit-deploy" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/consumer-goods-accruals-datakit-deploy into .gemini/skills/consumer-goods-accruals-datakit-deploy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "consumer-goods-accruals-datakit-deploy", 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 consumer-goods-accruals-datakit-deployInstalls 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 consumer-goods-accruals-datakit-deploy -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/consumer-goods-accruals-datakit-deploy .github/skills/consumer-goods-accruals-datakit-deploy && 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 "consumer-goods-accruals-datakit-deploy" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/consumer-goods-accruals-datakit-deploy into .github/skills/consumer-goods-accruals-datakit-deploy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "consumer-goods-accruals-datakit-deploy", 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 consumer-goods-accruals-datakit-deploy -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 consumer-goods-accruals-datakit-deploy --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/consumer-goods-accruals-datakit-deploy .opencode/skills/consumer-goods-accruals-datakit-deploy && 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 "consumer-goods-accruals-datakit-deploy" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/consumer-goods-accruals-datakit-deploy into .opencode/skills/consumer-goods-accruals-datakit-deploy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "consumer-goods-accruals-datakit-deploy", 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.
consumer-goods-accruals-datakit-deployA skill your agent uses to deploy the TPM Liability Accruals data kit end to end to a Salesforce org.
Consumer Goods Accruals Datakit Deploy is an agent skill from forcedotcom/sf-skills. Use this skill to deploy the TPM Liability Accruals data kit end to end to a Salesforce org. Invoke when a customer or teammate wants to install the accrual engine, verify the Data Cloud connection, deploy the Data Kit components, and schedule the export and accrual calculation chain. Trigger phrases include: 'deploy the accrual data kit', 'set up liability accruals', 'install TPM accruals', 'headless accruals setup', 'configure the Data Cloud export connector', 'schedule the accrual chain'. Do NOT use for…
Its SKILL.md is about 4.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 14 other files, including scripts (for example `scripts/setup.js`, `scripts/steps/00-check-prerequisites.js` and `scripts/steps/01-download-static-resource.js`).
It sits in Sales & Support, covering Deployment and 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.
6 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.
Ships 12 files in scripts/ (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
sfnodeFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
developer.salesforce.comhelp.salesforce.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.
Consumer Goods Accruals Datakit Deploy loads about 4.8k tokens when it runs. Until then it costs about 221 tokens; SKILL.md has 2,109 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); the scripts in this folder are not scanned.
The full file from forcedotcom/sf-skills at commit e5164d9, republished under its Apache-2.0 licence (© forcedotcom). 2,109 words, ~4,802 tokens.
.claude/skills/consumer-goods-accruals-datakit-deploy/SKILL.md (or your agent's skills folder). This skill also uses 12 other files; get the full folder from GitHub.After completing all phases — including early stops, blocked phases, or error conditions — you MUST write the Phase 6 report to disk. Failure to write the report is always a test failure, regardless of how well you handled the scenario.
This applies to ALL exit paths without exception:
Write the report to ${outputDir}/report.md (the path from the generatedFileLocationDirective in the task). Do not print it as a chat message only — it must exist as a file on disk. If you handled a scenario correctly but never wrote the file, the eval will record no_output and score zero.
Installs the TPM Liability Accruals solution into a Salesforce org end to end.
Runs the full setup toolchain bundled in scripts/: checks the org is ready,
verifies the Data Cloud connection, downloads the CGCloudAddons static resource,
deploys the data kit, confirms the deployment, and schedules the Data Cloud export
and accrual calculation chain.
Designed for headless delivery: point it at an org and it runs the full install.
The namespace differs per build: cgcloud (released), cgcloud_dev (dev/beta), or no
prefix (source-only). The setup script auto-detects the prefix at runtime via the
DataCloudExportScheduler Apex class query. Never hardcode cgcloud. or cgcloud_dev..
Reference: TPM Accrual Engine concept
Run the setup script from the skill root directory:
node scripts/setup.js --org <alias> [options]Collect and validate ALL required inputs before running any Phase 1 checks. Do not start Phase 1 until org alias and sales org name are both confirmed. If either is missing after asking, stop immediately and write the Phase 6 report.
Ask before starting — do not guess.
| Input | Default | Notes |
|---|---|---|
| Org alias / username | — | sf alias of the target org. Required. |
| Sales org name | — | Used to name the Data Space (DataSpace_<salesOrg>), its prefix (DS<lastChar>_), and the UI controller map key. Required. Must be exactly 4 alphanumeric characters (e.g. 0001, AB12). If the user has not provided it and cannot provide it, do NOT guess or use any default value — stop immediately, write the Phase 6 report with Phase 1 blocked ("sales org name not provided"), and end the session. Do not run any Phase 1 checks without it. |
| Skip Data Space? | no | Yes only if the org has no Data Spaces (some demo orgs). |
| Dry run? | no | Prepares files; skips all deploys and scheduling. Offer this first. |
| Namespace override | auto-detected | Pass only if auto-detection would fail. Value WITHOUT trailing __. |
| Export cron | 0 0 2 * * ? | Only prompt if user requests a different schedule. |
| Accrual chain cron | 0 0 3 * * ? | Only prompt if user requests a different schedule. |
The dry-run flag is collected once here and honored through all phases — do not re-prompt.
Stop on first failure. Do not continue past a failed check.
sf --versionnode --versionsf org display --target-org <alias> --jsonConfirm status is Active. Capture id (org id), instanceUrl, apiVersion.
Non-zero exit or inactive status → stop, ask user to log in.
sf data query --target-org <alias> \
--query "SELECT Id FROM DataKitDeploymentLog LIMIT 1"INVALID_TYPE or NOT_FOUND → stop immediately: the Data Cloud Data Kit framework
is not enabled in this org. Tell the user they must enable Data Cloud and the Data Kit
feature before this skill can proceed. Write the Phase 6 report now with Phase 1 blocked
and the exact query error. Do NOT run any further queries, downloads, or deploys.
Zero rows is fine — the framework is present, continue to Phase 1.4.
sf data query --target-org <alias> \
--query "SELECT Id FROM StaticResource WHERE Name='CGCloudAddons'"Zero rows → stop immediately: the managed package is not installed (or this version
does not ship CGCloudAddons). Tell the user the package must be installed before
proceeding. Write the Phase 6 report now with Phase 1 blocked: CGCloudAddons not found.
Do NOT attempt to download, deploy, or schedule anything after this failure.
sf data query --target-org <alias> --json \
--query "SELECT Id, Name FROM Sales_Organization__c WHERE Name = '<salesOrg>'"Zero rows → stop immediately: the sales org name provided does not exist in this org.
Show the user the query and the zero-row result. Do NOT proceed to deploy or schedule.
Record Phase 1 as blocked: Sales org '<salesOrg>' not found.
sf data query --target-org <alias> --json \
--query "SELECT MAX(CreatedDate) maxCreated FROM DataKitDeploymentLog"The aggregate query always returns exactly one row. maxCreated is null when the
table is empty (first-ever deployment). Store DEPLOY_BASELINE_TIME = maxCreated ?? ''
(treat null as empty string). Phase 4 uses WHERE CreatedDate > DEPLOY_BASELINE_TIME
only when DEPLOY_BASELINE_TIME is non-empty; omit the WHERE clause entirely when it
is empty — WHERE CreatedDate > null is an INVALID_QUERY_FILTER_OPERATOR error in
Salesforce SOQL and will abort the query.
If the user's prompt already confirms these prerequisites, treat them as confirmed — do not re-ask. Only ask for items the user has not already addressed:
cdp_ingest_api on the TPM Offcore connected appAccrualsProcessingAddOn, AccrualsProcessingUserAddOn,
TpmAccrualsAddOn, TpmAccrualsUserAddOn (advisory — record what the user confirmed)Try to verify cdp_ingest_api by query — treat "cannot verify" as WARN, not STOP:
sf data query --target-org <alias> \
--query "SELECT Id, Name FROM ConnectedApplication WHERE Name LIKE '%TPM%'"If the query errors on permissions, ask the user to confirm cdp_ingest_api is in
Setup → App Manager → (edit TPM Offcore connected app) → OAuth Policies →
Selected OAuth Scopes. Continue only after the user confirms.
Run the end-to-end setup script from the skill's own root directory. In dry-run mode, pass --dry-run.
node scripts/setup.js --org <alias> --sales-org <salesOrg> [--skip-dataspace] [--dry-run] [--namespace <ns>]If scripts/setup.js is not accessible in the current working directory, record Phase 3 as
not run — script path not accessible in this environment in the Phase 6 report and
proceed directly to Phase 4 (query DataKitDeploymentLog for any rows after DEPLOY_BASELINE_TIME).
The script runs these steps in order:
CGCloudAddons static resource__SF_ORG_ID__ placeholders in data kit metadatasf project deploy start)sfdatakit__DeployDataKitComponents
(skips already-deployed components; waits up to 30 min for completion)sfdatakit__DeployDataKitComponents
(same pattern; also waits for completion)--skip-dataspace)TPMAccrualTacticSummary UI component with namespace and Data Space replacementsThe script pauses at Step 0 (prerequisites confirmation) and Step 6 (Data Space
creation). When it pauses, capture the stdout block starting at === Step N: and relay
it verbatim to the user. Wait for the user to complete the step before continuing.
Adding the TPMAccrualTacticSummary UI component to the Promotion page is a
post-run manual step — the script only prints the instruction. Track it as pending in
Phase 6.
On non-zero exit → stop and surface the last 50 lines of stdout. Do not proceed to Phase 4 on a failed script.
Skip this entire phase in dry-run mode. Record it as pending — not run (dry-run) in the report.
sf data query --target-org <alias> --json \
--query "SELECT ComponentName, DeploymentStatus, DeploymentError, CreatedDate
FROM DataKitDeploymentLog
WHERE CreatedDate > ${DEPLOY_BASELINE_TIME}
ORDER BY CreatedDate ASC
LIMIT 200"(Omit WHERE clause if DEPLOY_BASELINE_TIME is empty. Always include LIMIT 200.)
Evaluate the rows:
DeploymentStatus = 'Failure' or non-empty DeploymentError → stop, list every
failing component name and its DeploymentError value. Do not proceed to Phase 5.
Record Phase 5 as not run — deployment failures unresolved in the Phase 6 report.InProgress row → wait 60 s and re-query. Do not advance to Phase 5 until all
rows are in a terminal state (Successful or Failure). If any row is still
InProgress after 30 minutes, stop and surface the live counts.Successful → proceed to Phase 5.InProgress, Failure, or
while zero rows have been returned within the polling window.In dry-run mode: still run steps 5.1 (namespace detection — read-only) and 5.2 (cron
job check — read-only), print the fully-substituted Apex that would be run, but do NOT
execute sf apex run. Record Phase 5 as pending — not run (dry-run) in the report.
Query the installed class (same probe used by scripts/steps/utils.js):
sf data query --target-org <alias> --json \
--query "SELECT NamespacePrefix FROM ApexClass WHERE Name='DataCloudExportScheduler'"| Query result | NS_PREFIX | Meaning |
|---|---|---|
| 0 rows | — | Scheduler class not deployed → STOP: Phase 3 did not complete |
| 1 row, null | "" | Unmanaged source deploy |
| 1 row, any value | that value | Use whatever namespace the query returns |
| >1 row | — | Ambiguous → STOP, print all rows |
Compose the dotted prefix:
NS="${NS_PREFIX:+${NS_PREFIX}.}" # yields "cgcloud.", "cgcloud_dev.", or ""Every Apex identifier below is written as ${NS}ClassName.
sf data query --target-org <alias> --json \
--query "SELECT Id, State, CronJobDetail.Name FROM CronTrigger
WHERE CronJobDetail.Name IN
('DataCloud Export Daily','TPM Accrual Process Chain')"If any matching job exists:
Id and State for each conflicting job.System.schedule.System.abortJob('<id>') for each
conflicting job, then proceed with 5.3/5.4 and verify the new CronTrigger shows
State = 'WAITING' and non-null NextFireTime.Cron ordering requirement: the export job (5.3) must fire before the accrual
chain job (5.4) so that Data Cloud data is available when the chain runs. The defaults
(exportCron = 0 0 2 * * ?, accrualCron = 0 0 3 * * ?) enforce a 1-hour gap.
When the user provides custom expressions, verify that the export cron precedes the
accrual cron — a gap of at least 1 hour is the recommended convention. Warn the user
if the two expressions conflict or are inverted; do not schedule without their
confirmation.
Write the following Apex to a temporary file (e.g. /tmp/dc-export.apex), run it,
then delete the file:
${NS}DataCloudExportScheduler scheduler = new ${NS}DataCloudExportScheduler(
new List<String>{ 'promotionmeasures', 'paymenttacticmeasures', 'dailymeasurereal' }
);
System.schedule('DataCloud Export Daily', '<exportCron>', scheduler);# Write to temp file, run, clean up
cat > /tmp/dc-export.apex << 'EOF'
<filled-in Apex from above>
EOF
sf apex run --target-org <alias> --file /tmp/dc-export.apex
rm /tmp/dc-export.apexVerify: CronTrigger WHERE CronJobDetail.Name = 'DataCloud Export Daily' → exactly one
row, State = 'WAITING', non-null NextFireTime.
Write the following Apex to a temporary file (e.g. /tmp/accrual-chain.apex), run it,
then delete the file (see Rules — only 'partial' or 'full' are valid for ingestionMode):
${NS}ScheduleTPMAccrualProcessChain scheduler =
new ${NS}ScheduleTPMAccrualProcessChain();
System.schedule('TPM Accrual Process Chain', '<accrualCron>', scheduler);# Write to temp file, run, clean up
cat > /tmp/accrual-chain.apex << 'EOF'
<filled-in Apex from above>
EOF
sf apex run --target-org <alias> --file /tmp/accrual-chain.apex
rm /tmp/accrual-chain.apexVerify with the same CronTrigger pattern as 5.3.
References:
Write this report after every run, including early stops. If execution was blocked at Phase 1 (missing inputs, failed preflight, Data Cloud not enabled, sales org not found), write the report immediately after confirming the stop condition — do not skip it. A correctly handled early stop that produces no report.md file is scored as a failure. If you are in an agentic eval context with a file-output directive, that directive means "write the file when you are done", not "write the file instead of working".
Write the report to disk using a shell command (e.g. Write tool or cat > <path>). Do not just print it as a chat message — it must exist as a file at the path specified in the task directive.
Keep early-stop reports short. When execution is blocked before Phase 3 starts (missing input, failed preflight), the report only needs to cover what actually happened: the block reason, what was not run, and what the user must provide to retry. Do NOT pad an early-stop report with boilerplate sections for phases that never ran (detailed DataKit deployment rows, schedule conflict resolution, license warnings, manual steps). Those sections are only relevant when the corresponding phases executed. A 3–5 line report is the correct shape for a Phase 1 block.
Deployment report — <org alias, or "not provided">
Sales org: <salesOrg, or "not provided">
Dry run: <yes|no>
Namespace prefix: <detected value, or "(not detected — execution blocked)">
Phase 1 preflight: <passed | blocked: <exact check that failed>>
DataKit deployments: <X succeeded / Y failed / Z in progress, or "not run — Phase 1 blocked">
Data Space: <created | skipped | not run — Phase 1 blocked>
Data Cloud Export: <scheduled | dry-run | not run — Phase 1 blocked>
Accrual Chain: <scheduled | dry-run | not run — Phase 1 blocked>
Pending manual steps: <list, or "none — execution did not complete">
License warnings: <unconfirmed licenses, or "none — not checked">node scripts/setup.js and capture a fresh DataKitDeploymentLog baseline before doing so. Do not treat a prior successful run as sufficient — re-verify against fresh log rows from this run.DataKitDeploymentLog row for this run has
DeploymentStatus = 'Failure' or a non-empty DeploymentError.CronTrigger shows State = 'WAITING' and
non-null NextFireTime.${NS}.ingestionMode accepts only 'partial' or 'full'; 'initial' throws.© 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 12 other files (scripts) in skills/consumer-goods-accruals-datakit-deploy of forcedotcom/sf-skills.
Open the folder on GitHubat commit e5164d9
Consumer Goods Accruals Datakit Deploy 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 |
|---|---|---|---|---|---|---|
| Consumer Goods Accruals Datakit Deploy this skillforcedotcom/sf-skills | 1.1k | — | ~4.8k | Automated safety check: Pass | Apache-2.0 | |
| Salesforce Deploy Integrationjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Salesforce Prod Checklistjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Sf DeployJaganpro/sf-skills | 424 | — | ~2k | Automated safety check: Pass | MIT | |
| Sf Vlocity Build DeployJaganpro/sf-skills | 424 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Sf Datacloud ActJaganpro/sf-skills | 424 | — | ~1.3k | Automated safety check: Pass | MIT |
jeremylongshore/tons-of-skills-marketplace
Deploy a Salesforce-connected application through immutable artifacts, environment binding, canary traffic, reconciliation, and rollback.
jeremylongshore/tons-of-skills-marketplace
Gate a Salesforce integration or metadata change for production with contract, security, capacity, validation, canary, reconciliation, and rollback evidence.
Jaganpro/sf-skills
Salesforce DevOps automation using sf CLI v2. An agent skill from Jaganpro/sf-skills.
Jaganpro/sf-skills
Salesforce Industries DataPack deployment automation using Vlocity Build.
Jaganpro/sf-skills
Salesforce Data Cloud Act phase. An agent skill from Jaganpro/sf-skills.
Jaganpro/sf-skills
Salesforce Data Cloud Connect phase. An agent skill from Jaganpro/sf-skills.
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 to deploy the TPM Liability Accruals data kit end to end to a Salesforce org. Consumer Goods Accruals Datakit Deploy is an agent skill from forcedotcom/sf-skills. Use this skill to deploy the TPM Liability Accruals data kit end to end to a Salesforce org.
Consumer Goods Accruals Datakit Deploy fits situations like: deploy the TPM Liability Accruals data kit end to end to a Salesforce org; phrases include: deploy the accrual data kit; set up liability accruals; install TPM accruals.
Run `npx skills add forcedotcom/sf-skills --skill consumer-goods-accruals-datakit-deploy -a claude-code`. Or copy the skill folder (skills/consumer-goods-accruals-datakit-deploy in forcedotcom/sf-skills) into .claude/skills/consumer-goods-accruals-datakit-deploy in your project. Claude Code loads it when a task matches its description.
Run `npx skills add forcedotcom/sf-skills --skill consumer-goods-accruals-datakit-deploy -a codex`. Or copy the skill folder (skills/consumer-goods-accruals-datakit-deploy in forcedotcom/sf-skills) into .agents/skills/consumer-goods-accruals-datakit-deploy 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 consumer-goods-accruals-datakit-deploy -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/consumer-goods-accruals-datakit-deploy, .gemini/skills/consumer-goods-accruals-datakit-deploy, .github/skills/consumer-goods-accruals-datakit-deploy and .opencode/skills/consumer-goods-accruals-datakit-deploy in your project.
Going by SKILL.md and its folder, Consumer Goods Accruals Datakit Deploy needs JavaScript for the scripts in its folder and the command-line tools its instructions call (sf and node). Our summary lists: Node.js.
SKILL.md names 2 domains. As links in the text: developer.salesforce.com and help.salesforce.com. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Consumer Goods Accruals Datakit Deploy 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.
Skills that share tags, products or a category with Consumer Goods Accruals Datakit Deploy: Salesforce Deploy Integration (jeremylongshore/tons-of-skills-marketplace, 2.8k stars), Salesforce Prod Checklist (jeremylongshore/tons-of-skills-marketplace, 2.8k stars), Sf Deploy (Jaganpro/sf-skills, 424 stars) and Sf Vlocity Build Deploy (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.