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