acek-skills 1.0.2 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +90 -39
- package/bin/cli.js +93 -5
- package/commands/sf-init.md +165 -0
- package/package.json +3 -2
- package/skills/sf-admin/SKILL.md +100 -61
- package/skills/sf-architect/SKILL.md +409 -0
- package/skills/sf-ba/SKILL.md +102 -42
- package/skills/sf-data-migration/SKILL.md +95 -22
- package/skills/sf-dev/SKILL.md +215 -98
- package/skills/sf-devops/SKILL.md +93 -27
- package/skills/sf-ideation/SKILL.md +90 -45
- package/skills/sf-security-review/SKILL.md +183 -21
- package/skills/sf-testing/SKILL.md +60 -37
package/skills/sf-admin/SKILL.md
CHANGED
|
@@ -13,7 +13,8 @@ description: >
|
|
|
13
13
|
# Salesforce Administrator Skill
|
|
14
14
|
|
|
15
15
|
## Environment Context
|
|
16
|
-
|
|
16
|
+
|
|
17
|
+
- API Version: **67.0** (Summer '26)
|
|
17
18
|
- Org Type: Enterprise (single org: sandbox + production)
|
|
18
19
|
- Tooling: **SF CLI** for metadata retrieval; most admin tasks done declaratively in Setup UI
|
|
19
20
|
- Any metadata changes intended for production must go through the DevOps deployment process
|
|
@@ -22,21 +23,22 @@ description: >
|
|
|
22
23
|
|
|
23
24
|
## Naming Conventions
|
|
24
25
|
|
|
25
|
-
| Artifact
|
|
26
|
-
|
|
27
|
-
| Custom Object
|
|
28
|
-
| Custom Field
|
|
29
|
-
| Custom Tab
|
|
30
|
-
| Permission Set
|
|
31
|
-
| Flow
|
|
32
|
-
| Validation Rule
|
|
33
|
-
| Report/Dashboard | Descriptive, audience-first | `Sales Team — Pipeline by Stage Q3`
|
|
26
|
+
| Artifact | Convention | Example |
|
|
27
|
+
| ---------------- | --------------------------- | --------------------------------------------------- |
|
|
28
|
+
| Custom Object | PascalCase, singular | `Project__c`, `WorkOrder__c` |
|
|
29
|
+
| Custom Field | PascalCase\_\_c | `ProjectStatus__c`, `DueDate__c` |
|
|
30
|
+
| Custom Tab | Match object label | — |
|
|
31
|
+
| Permission Set | Descriptive, Title Case | `Project Manager Access` |
|
|
32
|
+
| Flow | Action + Object, Title Case | `Create Project Record`, `Update Opportunity Stage` |
|
|
33
|
+
| Validation Rule | OBJECT_DescriptionOfRule | `ACCOUNT_RequireIndustry` |
|
|
34
|
+
| Report/Dashboard | Descriptive, audience-first | `Sales Team — Pipeline by Stage Q3` |
|
|
34
35
|
|
|
35
36
|
---
|
|
36
37
|
|
|
37
38
|
## Custom Objects
|
|
38
39
|
|
|
39
40
|
### Checklist when creating a Custom Object
|
|
41
|
+
|
|
40
42
|
- [ ] **Label**: singular (e.g. `Project`), plural auto-generated
|
|
41
43
|
- [ ] **API Name**: PascalCase + `__c` (e.g. `Project__c`)
|
|
42
44
|
- [ ] **Record Name field**: meaningful (not just "Project Name" — be specific)
|
|
@@ -49,36 +51,46 @@ description: >
|
|
|
49
51
|
- [ ] Add to relevant **App** via App Manager after creation
|
|
50
52
|
|
|
51
53
|
### Relationships
|
|
52
|
-
|
|
53
|
-
|
|
54
|
+
|
|
55
|
+
| Type | Use When |
|
|
56
|
+
| ------------- | ------------------------------------------------------------------ |
|
|
54
57
|
| Master-Detail | Child cannot exist without parent; sharing & rollup summary needed |
|
|
55
|
-
| Lookup
|
|
56
|
-
| Many-to-Many
|
|
57
|
-
| Hierarchical
|
|
58
|
+
| Lookup | Loose coupling; child can exist independently |
|
|
59
|
+
| Many-to-Many | Use Junction Object with two Master-Detail fields |
|
|
60
|
+
| Hierarchical | Self-referential (User only) |
|
|
58
61
|
|
|
59
62
|
---
|
|
60
63
|
|
|
61
64
|
## Custom Fields
|
|
62
65
|
|
|
63
66
|
### Field Type Selection Guide
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
|
73
|
-
|
|
|
74
|
-
| Date
|
|
75
|
-
|
|
|
76
|
-
|
|
|
67
|
+
|
|
68
|
+
| Data | Recommended Type |
|
|
69
|
+
| --------------------------- | --------------------------------------------- |
|
|
70
|
+
| Short text (<255 chars) | Text |
|
|
71
|
+
| Long text / notes | Long Text Area (set char limit intentionally) |
|
|
72
|
+
| Controlled list of values | Picklist |
|
|
73
|
+
| Currency amounts | Currency (respects org currency settings) |
|
|
74
|
+
| Calculated value | Formula |
|
|
75
|
+
| Running total from child | Roll-Up Summary (Master-Detail only) |
|
|
76
|
+
| True/False | Checkbox |
|
|
77
|
+
| Date only | Date |
|
|
78
|
+
| Date + Time | Date/Time |
|
|
79
|
+
| External system ID | Text, mark as External ID + Unique |
|
|
80
|
+
| Reference to another record | Lookup or Master-Detail |
|
|
77
81
|
|
|
78
82
|
### Field Creation Checklist
|
|
79
|
-
|
|
83
|
+
|
|
84
|
+
- [ ] API Name: PascalCase\_\_c — **no spaces, no special characters**
|
|
80
85
|
- [ ] Help Text: always fill — explain purpose and expected format
|
|
81
|
-
- [ ]
|
|
86
|
+
- [ ] **Data classification**: for fields on person-related objects (Contact, Lead, Person
|
|
87
|
+
Account, custom objects tied to an identified individual), classify as Public / Internal /
|
|
88
|
+
Confidential / Restricted — see `sf-security-review`'s PII & Data Privacy section
|
|
89
|
+
- [ ] Field-Level Security (FLS): set explicitly per profile/permission set after creation —
|
|
90
|
+
Confidential/Restricted fields get the narrowest access that still works
|
|
91
|
+
- [ ] **Encryption**: for Restricted fields (NIK, health data, financial identifiers), evaluate
|
|
92
|
+
Shield Platform Encryption at creation time — encryption type can't always be changed later
|
|
93
|
+
without data loss
|
|
82
94
|
- [ ] Add to **Page Layout** after creation
|
|
83
95
|
- [ ] Add to relevant **List View** if needed
|
|
84
96
|
- [ ] Consider **Required** at field level vs. at Validation Rule level (VR gives better error messages)
|
|
@@ -88,6 +100,7 @@ description: >
|
|
|
88
100
|
## Security Model
|
|
89
101
|
|
|
90
102
|
### Layers (top to bottom)
|
|
103
|
+
|
|
91
104
|
1. **OWD** — baseline access for all users (most restrictive)
|
|
92
105
|
2. **Role Hierarchy** — opens access up the hierarchy
|
|
93
106
|
3. **Sharing Rules** — criteria-based or ownership-based exceptions to OWD
|
|
@@ -97,12 +110,29 @@ description: >
|
|
|
97
110
|
7. **Permission Set Groups** — bundle multiple Permission Sets
|
|
98
111
|
|
|
99
112
|
### Best Practice
|
|
113
|
+
|
|
100
114
|
- Keep Profiles minimal (baseline access only)
|
|
101
115
|
- Use **Permission Sets** for feature/role-based access
|
|
102
116
|
- Group Permission Sets into **Permission Set Groups** for easy assignment
|
|
103
117
|
- Never grant "Modify All" or "View All" without documented business justification
|
|
104
118
|
|
|
119
|
+
### ⚠️ Before creating a new Permission Set — scan first
|
|
120
|
+
|
|
121
|
+
Whenever a new feature grants access to an object, field, Apex class, or LWC, **scan existing
|
|
122
|
+
Permission Sets and Permission Set Groups first** — never default to creating a new one without
|
|
123
|
+
checking. Ask the user (with the real names found, never invented) whether to:
|
|
124
|
+
|
|
125
|
+
- Extend an existing Permission Set that already covers similar access, or
|
|
126
|
+
- Create a new one scoped to this feature, or
|
|
127
|
+
- Add it to an existing Permission Set Group
|
|
128
|
+
|
|
129
|
+
This applies even to small, single-object changes handled directly by this skill without going
|
|
130
|
+
through `sf-architect` — `sf-architect` covers this formally in its Decisions phase for larger
|
|
131
|
+
features, but this skill shouldn't skip the check just because the change is simple.
|
|
132
|
+
|
|
105
133
|
### Permission Set Creation Checklist
|
|
134
|
+
|
|
135
|
+
- [ ] Confirmed no existing Permission Set already fits (see scan step above)
|
|
106
136
|
- [ ] Name: descriptive, audience-clear (`Project Manager Access`)
|
|
107
137
|
- [ ] Object permissions: only what role needs (CRUD individually)
|
|
108
138
|
- [ ] FLS: explicitly set for each relevant field
|
|
@@ -114,15 +144,17 @@ description: >
|
|
|
114
144
|
## Flows
|
|
115
145
|
|
|
116
146
|
### Flow Type Selection
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
|
120
|
-
|
|
|
121
|
-
|
|
|
122
|
-
|
|
|
123
|
-
|
|
|
147
|
+
|
|
148
|
+
| Scenario | Flow Type |
|
|
149
|
+
| -------------------------------------- | ------------------------------ |
|
|
150
|
+
| User-facing guided process | Screen Flow |
|
|
151
|
+
| Trigger on record create/update/delete | Record-Triggered Flow |
|
|
152
|
+
| Run on a schedule | Schedule-Triggered Flow |
|
|
153
|
+
| Called from another flow or Apex | Autolaunched Flow (No Trigger) |
|
|
154
|
+
| Triggered by platform event | Platform Event-Triggered Flow |
|
|
124
155
|
|
|
125
156
|
### Flow Best Practices
|
|
157
|
+
|
|
126
158
|
- **Bulkification**: avoid SOQL/DML elements inside loops — use Collection variables + Loop
|
|
127
159
|
- **Error handling**: add Fault paths on every DML element; log or notify on failure
|
|
128
160
|
- **Governor limits**: one Flow can do max 150 DML + 100 SOQL per transaction
|
|
@@ -131,6 +163,7 @@ description: >
|
|
|
131
163
|
- **Test before activating**: use Flow's built-in debug tool + write test coverage if invoked from Apex
|
|
132
164
|
|
|
133
165
|
### Record-Triggered Flow — Run Order Awareness
|
|
166
|
+
|
|
134
167
|
- Fast Field Updates run before triggers
|
|
135
168
|
- Actions and Related Records run after triggers (same transaction)
|
|
136
169
|
- Async paths run in new transaction — cannot roll back
|
|
@@ -140,6 +173,7 @@ description: >
|
|
|
140
173
|
## Validation Rules
|
|
141
174
|
|
|
142
175
|
### Pattern
|
|
176
|
+
|
|
143
177
|
```
|
|
144
178
|
/* Rule Name: OBJECT_DescriptionOfRule */
|
|
145
179
|
/* Error Message: user-friendly, actionable */
|
|
@@ -162,14 +196,16 @@ AND(
|
|
|
162
196
|
## Reports & Dashboards
|
|
163
197
|
|
|
164
198
|
### Report Types to Know
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
|
168
|
-
|
|
|
169
|
-
|
|
|
170
|
-
|
|
|
199
|
+
|
|
200
|
+
| Type | Use |
|
|
201
|
+
| ------- | ------------------------------------------ |
|
|
202
|
+
| Tabular | Simple lists, exports |
|
|
203
|
+
| Summary | Grouped data with subtotals |
|
|
204
|
+
| Matrix | Cross-tabulation (rows + columns grouping) |
|
|
205
|
+
| Joined | Multiple report blocks in one |
|
|
171
206
|
|
|
172
207
|
### Dashboard Checklist
|
|
208
|
+
|
|
173
209
|
- [ ] Meaningful title that says what decision it helps make
|
|
174
210
|
- [ ] Running User set appropriately (dynamic dashboards for self-service)
|
|
175
211
|
- [ ] Refresh schedule configured
|
|
@@ -181,13 +217,15 @@ AND(
|
|
|
181
217
|
## Data Management
|
|
182
218
|
|
|
183
219
|
### Import Options
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
|
187
|
-
| Data
|
|
188
|
-
|
|
|
220
|
+
|
|
221
|
+
| Tool | Best For |
|
|
222
|
+
| --------------------- | ---------------------------------------------------- |
|
|
223
|
+
| Data Import Wizard | Standard objects, <50K records, no relationships |
|
|
224
|
+
| Data Loader | Any object, large volumes, automation, relationships |
|
|
225
|
+
| `sf data import tree` | Dev/test JSON datasets |
|
|
189
226
|
|
|
190
227
|
### SOQL via CLI (for admin queries)
|
|
228
|
+
|
|
191
229
|
```bash
|
|
192
230
|
# Query via SF CLI
|
|
193
231
|
sf data query --query "SELECT Id, Name, CreatedDate FROM Account LIMIT 10" --target-org <alias>
|
|
@@ -213,18 +251,19 @@ sf project retrieve start \
|
|
|
213
251
|
```
|
|
214
252
|
|
|
215
253
|
### Common Metadata Type Names
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
|
219
|
-
| Custom
|
|
220
|
-
|
|
|
221
|
-
|
|
|
222
|
-
|
|
|
223
|
-
|
|
|
224
|
-
|
|
|
225
|
-
|
|
|
226
|
-
|
|
|
227
|
-
|
|
|
254
|
+
|
|
255
|
+
| Artifact | Metadata Type |
|
|
256
|
+
| --------------- | ------------------- |
|
|
257
|
+
| Custom Object | `CustomObject` |
|
|
258
|
+
| Custom Field | `CustomField` |
|
|
259
|
+
| Permission Set | `PermissionSet` |
|
|
260
|
+
| Profile | `Profile` |
|
|
261
|
+
| Flow | `Flow` |
|
|
262
|
+
| Validation Rule | `ValidationRule` |
|
|
263
|
+
| Page Layout | `Layout` |
|
|
264
|
+
| Compact Layout | `CompactLayout` |
|
|
265
|
+
| Custom Tab | `CustomTab` |
|
|
266
|
+
| App | `CustomApplication` |
|
|
228
267
|
|
|
229
268
|
---
|
|
230
269
|
|
|
@@ -242,4 +281,4 @@ sf project retrieve start --metadata Flow:Create_Project_Record --target-org <al
|
|
|
242
281
|
|
|
243
282
|
# Retrieve full object (all fields, layouts, etc.)
|
|
244
283
|
sf project retrieve start --metadata CustomObject:Project__c --target-org <alias>
|
|
245
|
-
```
|
|
284
|
+
```
|