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.
@@ -13,7 +13,8 @@ description: >
13
13
  # Salesforce Administrator Skill
14
14
 
15
15
  ## Environment Context
16
- - API Version: **61.0**
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 | Convention | Example |
26
- |---|---|---|
27
- | Custom Object | PascalCase, singular | `Project__c`, `WorkOrder__c` |
28
- | Custom Field | PascalCase__c | `ProjectStatus__c`, `DueDate__c` |
29
- | Custom Tab | Match object label | — |
30
- | Permission Set | Descriptive, Title Case | `Project Manager Access` |
31
- | Flow | Action + Object, Title Case | `Create Project Record`, `Update Opportunity Stage` |
32
- | Validation Rule | OBJECT_DescriptionOfRule | `ACCOUNT_RequireIndustry` |
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
- | Type | Use When |
53
- |---|---|
54
+
55
+ | Type | Use When |
56
+ | ------------- | ------------------------------------------------------------------ |
54
57
  | Master-Detail | Child cannot exist without parent; sharing & rollup summary needed |
55
- | Lookup | Loose coupling; child can exist independently |
56
- | Many-to-Many | Use Junction Object with two Master-Detail fields |
57
- | Hierarchical | Self-referential (User only) |
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
- | Data | Recommended Type |
65
- |---|---|
66
- | Short text (<255 chars) | Text |
67
- | Long text / notes | Long Text Area (set char limit intentionally) |
68
- | Controlled list of values | Picklist |
69
- | Currency amounts | Currency (respects org currency settings) |
70
- | Calculated value | Formula |
71
- | Running total from child | Roll-Up Summary (Master-Detail only) |
72
- | True/False | Checkbox |
73
- | Date only | Date |
74
- | Date + Time | Date/Time |
75
- | External system ID | Text, mark as External ID + Unique |
76
- | Reference to another record | Lookup or Master-Detail |
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
- - [ ] API Name: PascalCase__c — **no spaces, no special characters**
83
+
84
+ - [ ] API Name: PascalCase\_\_c — **no spaces, no special characters**
80
85
  - [ ] Help Text: always fill — explain purpose and expected format
81
- - [ ] Field-Level Security (FLS): set explicitly per profile/permission set after creation
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
- | Scenario | Flow Type |
118
- |---|---|
119
- | User-facing guided process | Screen Flow |
120
- | Trigger on record create/update/delete | Record-Triggered Flow |
121
- | Run on a schedule | Schedule-Triggered Flow |
122
- | Called from another flow or Apex | Autolaunched Flow (No Trigger) |
123
- | Triggered by platform event | Platform Event-Triggered Flow |
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
- | Type | Use |
166
- |---|---|
167
- | Tabular | Simple lists, exports |
168
- | Summary | Grouped data with subtotals |
169
- | Matrix | Cross-tabulation (rows + columns grouping) |
170
- | Joined | Multiple report blocks in one |
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
- | Tool | Best For |
185
- |---|---|
186
- | Data Import Wizard | Standard objects, <50K records, no relationships |
187
- | Data Loader | Any object, large volumes, automation, relationships |
188
- | `sf data import tree` | Dev/test JSON datasets |
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
- | Artifact | Metadata Type |
217
- |---|---|
218
- | Custom Object | `CustomObject` |
219
- | Custom Field | `CustomField` |
220
- | Permission Set | `PermissionSet` |
221
- | Profile | `Profile` |
222
- | Flow | `Flow` |
223
- | Validation Rule | `ValidationRule` |
224
- | Page Layout | `Layout` |
225
- | Compact Layout | `CompactLayout` |
226
- | Custom Tab | `CustomTab` |
227
- | App | `CustomApplication` |
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
+ ```