Salesforce Data Operations Expert (platform-data-manage)
Use this skill when the user needs Salesforce data work: record CRUD, bulk import/export, test data generation, cleanup scripts, or data factory patterns for validating Apex, Flow, or integration behavior.
When This Skill Owns the Task
Use platform-data-manage when the work involves:
sf data CLI commands
- record creation, update, delete, upsert, export, or tree import/export
- realistic test data generation
- bulk data operations and cleanup
- Apex anonymous scripts for data seeding / rollback
Delegate elsewhere when the user is:
Important Mode Decision
Confirm which mode the user wants:
| Mode |
Use when |
| Script generation |
they want reusable .apex, CSV, or JSON assets without touching an org yet |
| Remote execution |
they want records created / changed in a real org now |
Do not assume remote execution if the user may only want scripts.
Required Context to Gather First
Ask for or infer:
- target object(s)
- org alias, if remote execution is required
- operation type: query, create, update, delete, upsert, import, export, cleanup
- expected volume
- whether this is test data, migration data, or one-off troubleshooting data
- any parent-child relationships that must exist first
Core Operating Rules
platform-data-manage acts on remote org data unless the user explicitly wants local script generation.
- Objects and fields must already exist before data creation.
- For automation testing, prefer 251+ records when bulk behavior matters.
- Plan cleanup before creating large or noisy datasets — untracked records accumulate across runs and pollute org state.
- Use synthetic, non-identifying data in test records — real PII creates compliance risk and cannot be safely removed after bulk import.
- Prefer CLI-first for straightforward CRUD; use anonymous Apex when the operation truly needs server-side orchestration.
If metadata is missing, stop and hand off to:
Recommended Workflow
1. Verify prerequisites
Confirm object / field availability, org auth, and required parent records.
2. Run describe-first pre-flight validation when schema is uncertain
Before creating or updating records, use object describe data to validate:
- required fields
- createable vs non-createable fields
- picklist values
- relationship fields and parent requirements
See references/sf-cli-data-commands.md for the sf sobject describe command and jq filter patterns for inspecting fields, picklist values, and createable constraints.
3. Choose the smallest correct mechanism
| Need |
Default approach |
| small one-off CRUD |
sf data single-record commands |
| large import/export |
Bulk API 2.0 via sf data ... bulk |
| parent-child seed set |
tree import/export |
| reusable test dataset |
factory / anonymous Apex script |
| reversible experiment |
cleanup script or savepoint-based approach |
4. Execute or generate assets
Use the built-in templates under assets/ when they fit:
assets/factories/
assets/bulk/
assets/cleanup/
assets/soql/
assets/csv/
assets/json/
5. Verify results
Check counts, relationships, and record IDs after creation or update.
6. Apply a bounded retry strategy
If creation fails:
- try the primary CLI shape once
- retry once with corrected parameters
- re-run describe / validate assumptions
- pivot to a different mechanism or provide a manual workaround
Do not repeat the same failing command indefinitely.
7. Leave cleanup guidance
Provide exact cleanup commands or rollback assets whenever data was created.
High-Signal Rules
Bulk safety
- use bulk operations for large volumes
- test automation-sensitive behavior with 251+ records where appropriate
- avoid one-record-at-a-time patterns for bulk scenarios
Data integrity
- include required fields
- validate picklist values before creation
- verify parent IDs and relationship integrity
- account for validation rules and duplicate constraints
- exclude non-createable fields from input payloads
Cleanup discipline
Prefer one of:
- delete-by-ID
- delete-by-pattern
- delete-by-created-date window
- rollback / savepoint patterns for script-based test runs
Common Failure Patterns
| Error |
Likely cause |
Default fix direction |
INVALID_FIELD |
wrong field API name or FLS issue |
verify schema and access |
REQUIRED_FIELD_MISSING |
mandatory field omitted |
include required values from describe data |
INVALID_CROSS_REFERENCE_KEY |
bad parent ID |
create / verify parent first |
FIELD_CUSTOM_VALIDATION_EXCEPTION |
validation rule blocked the record |
use valid test data or adjust setup |
| invalid picklist value |
guessed value instead of describe-backed value |
inspect picklist values first |
| non-writeable field error |
field is not createable / updateable |
remove it from the payload |
| bulk limits / timeouts |
wrong tool for the volume |
switch to bulk / staged import |
Output Format
When finishing, report in this order:
- Operation performed
- Objects and counts
- Target org or local artifact path
- Record IDs / output files
- Verification result
- Cleanup instructions
Suggested shape:
Data operation: <create / update / delete / export / seed>
Objects: <object + counts>
Target: <org alias or local path>
Artifacts: <record ids / csv / apex / json files>
Verification: <passed / partial / failed>
Cleanup: <exact delete or rollback guidance>
Cross-Skill Integration
Reference Map
Start here
- references/sf-cli-data-commands.md
- references/test-data-best-practices.md
- references/orchestration.md
- references/test-data-patterns.md
- references/test-data-factory-usage.md
Query / bulk / cleanup
- references/soql-relationship-guide.md
- references/relationship-query-examples.md
- references/bulk-operations-guide.md
- references/cleanup-rollback-guide.md
- references/cleanup-rollback-example.md
Examples / limits
- references/crud-workflow-example.md
- references/bulk-testing-example.md
- references/anonymous-apex-guide.md
- references/governor-limits-reference.md
Validation scripts
- scripts/soql_validator.py — validate SOQL queries before execution
- scripts/validate_data_operation.py — pre-flight check for data operations (required fields, picklist values, createable fields)
Asset templates
assets/factories/ — Apex test data factory scripts (account, contact, opportunity, lead, user, etc.)
assets/bulk/ — Bulk API 2.0 Apex templates (insert 200, 500, 10000 records; upsert by external ID)
assets/cleanup/ — Cleanup and rollback scripts (delete by name, date, pattern; transaction rollback)
assets/soql/ — SOQL query templates (aggregate, subquery, parent-to-child, child-to-parent, polymorphic)
assets/csv/ — CSV import templates for Account, Contact, Opportunity, custom objects
assets/json/ — JSON tree import templates (account-contact, account-opportunity, full hierarchy)
Score Guide
| Score |
Meaning |
| 117+ |
strong production-safe data workflow |
| 104–116 |
good operation with minor improvements possible |
| 91–103 |
acceptable but review advised |
| 78–90 |
partial / risky patterns present |
| < 78 |
blocked until corrected |
1---
2name: platform-data-manage
3description: "Salesforce data operations with 130-point scoring. Use this skill to create, update, delete, bulk import/export, generate test data, and clean up org records using sf CLI and anonymous Apex. TRIGGER when: user creates test data, performs bulk import/export, uses sf data CLI commands, needs data factory patterns for Apex tests, or needs to seed/clean records in a Salesforce org. DO NOT TRIGGER when: SOQL query writing only (use platform-soql-query), Apex test execution (use platform-apex-test-run), or metadata deployment (use platform-metadata-deploy)."
4metadata:
5 cliTools:
6 - tool: ["jq"]
7 semver: ">=1.6.0"
8 - tool: ["python3"]
9 semver: ">=3.8.0"
10 - tool: ["sf"]
11 semver: ">=2.0.0"
12 relatedSkills:
13 - "automation-flow-generate"
14 - "platform-apex-generate"
15 - "platform-apex-test-run"
16 - "platform-custom-field-generate"
17 - "platform-custom-object-generate"
18 - "platform-metadata-deploy"
19 - "platform-soql-query"
20 version: "1.1"
21 domains: ["Platform"]
22---
23
24# Salesforce Data Operations Expert (platform-data-manage)
25
26Use this skill when the user needs **Salesforce data work**: record CRUD, bulk import/export, test data generation, cleanup scripts, or data factory patterns for validating Apex, Flow, or integration behavior.
27
28## When This Skill Owns the Task
29
30Use `platform-data-manage` when the work involves:
31- `sf data` CLI commands
32- record creation, update, delete, upsert, export, or tree import/export
33- realistic test data generation
34- bulk data operations and cleanup
35- Apex anonymous scripts for data seeding / rollback
36
37Delegate elsewhere when the user is:
38- writing SOQL only → [platform-soql-query](../platform-soql-query/SKILL.md)
39- running or repairing Apex tests → [platform-apex-test-run](../platform-apex-test-run/SKILL.md)
40- deploying metadata first → [platform-metadata-deploy](../platform-metadata-deploy/SKILL.md)
41- creating or modifying custom objects / fields → [platform-custom-object-generate](../platform-custom-object-generate/SKILL.md) or [platform-custom-field-generate](../platform-custom-field-generate/SKILL.md)
42
43---
44
45## Important Mode Decision
46
47Confirm which mode the user wants:
48
49| Mode | Use when |
50|---|---|
51| Script generation | they want reusable `.apex`, CSV, or JSON assets without touching an org yet |
52| Remote execution | they want records created / changed in a real org now |
53
54Do not assume remote execution if the user may only want scripts.
55
56---
57
58## Required Context to Gather First
59
60Ask for or infer:
61- target object(s)
62- org alias, if remote execution is required
63- operation type: query, create, update, delete, upsert, import, export, cleanup
64- expected volume
65- whether this is test data, migration data, or one-off troubleshooting data
66- any parent-child relationships that must exist first
67
68---
69
70## Core Operating Rules
71
72- `platform-data-manage` acts on **remote org data** unless the user explicitly wants local script generation.
73- Objects and fields must already exist before data creation.
74- For automation testing, prefer **251+ records** when bulk behavior matters.
75- Plan cleanup before creating large or noisy datasets — untracked records accumulate across runs and pollute org state.
76- Use synthetic, non-identifying data in test records — real PII creates compliance risk and cannot be safely removed after bulk import.
77- Prefer **CLI-first** for straightforward CRUD; use anonymous Apex when the operation truly needs server-side orchestration.
78
79If metadata is missing, stop and hand off to:
80- [platform-custom-object-generate](../platform-custom-object-generate/SKILL.md) or [platform-custom-field-generate](../platform-custom-field-generate/SKILL.md) to create the missing schema, then [platform-metadata-deploy](../platform-metadata-deploy/SKILL.md) to deploy it before retrying the data operation
81
82---
83
84## Recommended Workflow
85
86### 1. Verify prerequisites
87Confirm object / field availability, org auth, and required parent records.
88
89### 2. Run describe-first pre-flight validation when schema is uncertain
90Before creating or updating records, use object describe data to validate:
91- required fields
92- createable vs non-createable fields
93- picklist values
94- relationship fields and parent requirements
95
96See [references/sf-cli-data-commands.md](references/sf-cli-data-commands.md) for the `sf sobject describe` command and jq filter patterns for inspecting fields, picklist values, and createable constraints.
97
98### 3. Choose the smallest correct mechanism
99| Need | Default approach |
100|---|---|
101| small one-off CRUD | `sf data` single-record commands |
102| large import/export | Bulk API 2.0 via `sf data ... bulk` |
103| parent-child seed set | tree import/export |
104| reusable test dataset | factory / anonymous Apex script |
105| reversible experiment | cleanup script or savepoint-based approach |
106
107### 4. Execute or generate assets
108Use the built-in templates under `assets/` when they fit:
109- `assets/factories/`
110- `assets/bulk/`
111- `assets/cleanup/`
112- `assets/soql/`
113- `assets/csv/`
114- `assets/json/`
115
116### 5. Verify results
117Check counts, relationships, and record IDs after creation or update.
118
119### 6. Apply a bounded retry strategy
120If creation fails:
1211. try the primary CLI shape once
1222. retry once with corrected parameters
1233. re-run describe / validate assumptions
1244. pivot to a different mechanism or provide a manual workaround
125
126Do **not** repeat the same failing command indefinitely.
127
128### 7. Leave cleanup guidance
129Provide exact cleanup commands or rollback assets whenever data was created.
130
131---
132
133## High-Signal Rules
134
135### Bulk safety
136- use bulk operations for large volumes
137- test automation-sensitive behavior with 251+ records where appropriate
138- avoid one-record-at-a-time patterns for bulk scenarios
139
140### Data integrity
141- include required fields
142- validate picklist values before creation
143- verify parent IDs and relationship integrity
144- account for validation rules and duplicate constraints
145- exclude non-createable fields from input payloads
146
147### Cleanup discipline
148Prefer one of:
149- delete-by-ID
150- delete-by-pattern
151- delete-by-created-date window
152- rollback / savepoint patterns for script-based test runs
153
154---
155
156## Common Failure Patterns
157
158| Error | Likely cause | Default fix direction |
159|---|---|---|
160| `INVALID_FIELD` | wrong field API name or FLS issue | verify schema and access |
161| `REQUIRED_FIELD_MISSING` | mandatory field omitted | include required values from describe data |
162| `INVALID_CROSS_REFERENCE_KEY` | bad parent ID | create / verify parent first |
163| `FIELD_CUSTOM_VALIDATION_EXCEPTION` | validation rule blocked the record | use valid test data or adjust setup |
164| invalid picklist value | guessed value instead of describe-backed value | inspect picklist values first |
165| non-writeable field error | field is not createable / updateable | remove it from the payload |
166| bulk limits / timeouts | wrong tool for the volume | switch to bulk / staged import |
167
168---
169
170## Output Format
171
172When finishing, report in this order:
1731. **Operation performed**
1742. **Objects and counts**
1753. **Target org or local artifact path**
1764. **Record IDs / output files**
1775. **Verification result**
1786. **Cleanup instructions**
179
180Suggested shape:
181
182```text
183Data operation: <create / update / delete / export / seed>
184Objects: <object + counts>
185Target: <org alias or local path>
186Artifacts: <record ids / csv / apex / json files>
187Verification: <passed / partial / failed>
188Cleanup: <exact delete or rollback guidance>
189```
190
191---
192
193## Cross-Skill Integration
194
195| Need | Delegate to | Reason |
196|---|---|---|
197| create missing custom objects | [platform-custom-object-generate](../platform-custom-object-generate/SKILL.md) | schema must exist before data operations |
198| create missing custom fields | [platform-custom-field-generate](../platform-custom-field-generate/SKILL.md) | field-level schema must exist before data creation |
199| run bulk-sensitive Apex validation | [platform-apex-test-run](../platform-apex-test-run/SKILL.md) | test execution and coverage |
200| deploy missing schema first | [platform-metadata-deploy](../platform-metadata-deploy/SKILL.md) | metadata readiness |
201| implement production Apex logic consuming the data | [platform-apex-generate](../platform-apex-generate/SKILL.md) | Apex class / trigger authoring |
202| implement Flow logic consuming the data | [automation-flow-generate](../automation-flow-generate/SKILL.md) | Flow authoring and automation |
203
204---
205
206## Reference Map
207
208### Start here
209- [references/sf-cli-data-commands.md](references/sf-cli-data-commands.md)
210- [references/test-data-best-practices.md](references/test-data-best-practices.md)
211- [references/orchestration.md](references/orchestration.md)
212- [references/test-data-patterns.md](references/test-data-patterns.md)
213- [references/test-data-factory-usage.md](references/test-data-factory-usage.md)
214
215### Query / bulk / cleanup
216- [references/soql-relationship-guide.md](references/soql-relationship-guide.md)
217- [references/relationship-query-examples.md](references/relationship-query-examples.md)
218- [references/bulk-operations-guide.md](references/bulk-operations-guide.md)
219- [references/cleanup-rollback-guide.md](references/cleanup-rollback-guide.md)
220- [references/cleanup-rollback-example.md](references/cleanup-rollback-example.md)
221
222### Examples / limits
223- [references/crud-workflow-example.md](references/crud-workflow-example.md)
224- [references/bulk-testing-example.md](references/bulk-testing-example.md)
225- [references/anonymous-apex-guide.md](references/anonymous-apex-guide.md)
226- [references/governor-limits-reference.md](references/governor-limits-reference.md)
227
228### Validation scripts
229- [scripts/soql_validator.py](scripts/soql_validator.py) — validate SOQL queries before execution
230- [scripts/validate_data_operation.py](scripts/validate_data_operation.py) — pre-flight check for data operations (required fields, picklist values, createable fields)
231
232### Asset templates
233- `assets/factories/` — Apex test data factory scripts (account, contact, opportunity, lead, user, etc.)
234- `assets/bulk/` — Bulk API 2.0 Apex templates (insert 200, 500, 10000 records; upsert by external ID)
235- `assets/cleanup/` — Cleanup and rollback scripts (delete by name, date, pattern; transaction rollback)
236- `assets/soql/` — SOQL query templates (aggregate, subquery, parent-to-child, child-to-parent, polymorphic)
237- `assets/csv/` — CSV import templates for Account, Contact, Opportunity, custom objects
238- `assets/json/` — JSON tree import templates (account-contact, account-opportunity, full hierarchy)
239
240---
241
242## Score Guide
243
244| Score | Meaning |
245|---|---|
246| 117+ | strong production-safe data workflow |
247| 104–116 | good operation with minor improvements possible |
248| 91–103 | acceptable but review advised |
249| 78–90 | partial / risky patterns present |
250| < 78 | blocked until corrected |