acek-skills 1.0.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.
@@ -0,0 +1,372 @@
1
+ ---
2
+ name: sf-devops
3
+ description: >
4
+ Use this skill for Salesforce DevOps tasks: code review, generating deployment manifests
5
+ (package.xml), running dry-run validations, deploying from sandbox to production, writing
6
+ Change Requests (CR), managing Git workflow, and creating deploy documentation. Trigger when
7
+ the user mentions deployment, deploy to production, package.xml, manifest, code review, PR review,
8
+ dry-run, quick deploy, Change Request, deploy doc, git push, or anything related to the
9
+ sandbox-to-production pipeline. Also use for SF CLI deployment commands and GitHub workflow
10
+ steps. Target org alias for production: {{PROD_ORG_ALIAS}}.
11
+ ---
12
+
13
+ # Salesforce DevOps Skill
14
+
15
+ ## Environment Context
16
+ - API Version: **61.0**
17
+ - Branching: `main → staging → develop → feature/*`
18
+ - Production org alias: **`{{PROD_ORG_ALIAS}}`**
19
+ - Sandbox/dev org alias: **`{{DEV_ORG_ALIAS}}`**
20
+ - Tooling: **SF CLI** (`sf` commands)
21
+ - CI/CD: GitHub (static analysis: PMD + ESLint before every PR)
22
+ - Org type: Single org (1 sandbox + 1 production)
23
+
24
+ ---
25
+
26
+ ## Deployment Workflow — Standard Order
27
+
28
+ ```
29
+ 1. Code Review
30
+ 2. Generate scoped manifest (package-deploy-<feature>.xml)
31
+ 3. Dry-run validation
32
+ 4. Create Change Request (CR)
33
+ 5. Actual deploy
34
+ 6. Push to GitHub + update CR with Deploy ID
35
+ ```
36
+
37
+ Never skip steps. Never deploy to `{{PROD_ORG_ALIAS}}` without a CR.
38
+
39
+ ---
40
+
41
+ ## Code Review
42
+
43
+ ### Apex Review Checklist
44
+ - [ ] No SOQL inside loops (governor limit violation)
45
+ - [ ] No DML inside loops
46
+ - [ ] Test coverage ≥ 85% (check with: `sf apex run test ...`)
47
+ - [ ] All public methods have ApexDoc (`@description`, `@param`, `@return`)
48
+ - [ ] No hardcoded IDs, org-specific values, or credentials
49
+ - [ ] `with sharing` declared on all classes
50
+ - [ ] CRUD check uses `Schema.getGlobalDescribe()` (not compile-time SObject reference)
51
+ - [ ] All `@AuraEnabled` methods wrapped in try-catch → `AuraHandledException`
52
+ - [ ] Helper methods throw `CalloutException` (not `AuraHandledException`)
53
+
54
+ ### LWC Review Checklist
55
+ - [ ] Component folder: camelCase (not PascalCase)
56
+ - [ ] No `@wire` adapter inside a loop
57
+ - [ ] All public `@api` properties have JSDoc
58
+ - [ ] CSS includes `:host` brand token block (see Developer skill)
59
+ - [ ] CSS uses `var(--brand)`, `var(--r-*)`, `var(--t)` — no hardcoded hex colors
60
+ - [ ] Version badge present in HTML + CSS
61
+
62
+ ### Git / General Checklist
63
+ - [ ] No `Co-Authored-By` trailers in commit messages
64
+ - [ ] No Salesforce Deploy IDs, Record IDs, API keys, or session tokens in commits
65
+ - [ ] Commit message: lowercase type prefix + imperative sentence (`feat:`, `fix:`, `refactor:`, `docs:`, `chore:`)
66
+ - [ ] No unnecessary `package.xml` changes — use scoped manifest only
67
+
68
+ ---
69
+
70
+ ## Manifest Generation
71
+
72
+ ### Rule: Always use scoped manifests
73
+ - **Never** deploy with `manifest/package.xml` (global) unless explicitly instructed
74
+ - Create a new file: `manifest/package-deploy-<feature>.xml` for each deployment
75
+ - Include only components relevant to the feature being deployed
76
+
77
+ ### package.xml Template
78
+ ```xml
79
+ <?xml version="1.0" encoding="UTF-8"?>
80
+ <Package xmlns="http://soap.sforce.com/2006/04/metadata">
81
+
82
+ <!-- Apex Classes -->
83
+ <types>
84
+ <members>MyApexClass</members>
85
+ <members>MyApexClassTest</members>
86
+ <name>ApexClass</name>
87
+ </types>
88
+
89
+ <!-- Apex Triggers -->
90
+ <types>
91
+ <members>MyTrigger</members>
92
+ <name>ApexTrigger</name>
93
+ </types>
94
+
95
+ <!-- LWC -->
96
+ <types>
97
+ <members>myComponent</members>
98
+ <name>LightningComponentBundle</name>
99
+ </types>
100
+
101
+ <!-- Custom Objects -->
102
+ <types>
103
+ <members>Project__c</members>
104
+ <name>CustomObject</name>
105
+ </types>
106
+
107
+ <!-- Custom Fields -->
108
+ <types>
109
+ <members>Project__c.ProjectStatus__c</members>
110
+ <name>CustomField</name>
111
+ </types>
112
+
113
+ <!-- Flows -->
114
+ <types>
115
+ <members>Create_Project_Record</members>
116
+ <name>Flow</name>
117
+ </types>
118
+
119
+ <!-- Permission Sets -->
120
+ <types>
121
+ <members>Project_Manager_Access</members>
122
+ <name>PermissionSet</name>
123
+ </types>
124
+
125
+ <version>61.0</version>
126
+ </Package>
127
+ ```
128
+
129
+ ### Common Metadata Type Names (quick reference)
130
+ | Artifact | Metadata Type Name |
131
+ |---|---|
132
+ | Apex Class | `ApexClass` |
133
+ | Apex Trigger | `ApexTrigger` |
134
+ | LWC | `LightningComponentBundle` |
135
+ | Aura Component | `AuraDefinitionBundle` |
136
+ | Custom Object | `CustomObject` |
137
+ | Custom Field | `CustomField` |
138
+ | Permission Set | `PermissionSet` |
139
+ | Profile | `Profile` |
140
+ | Flow | `Flow` |
141
+ | Validation Rule | `ValidationRule` |
142
+ | Page Layout | `Layout` |
143
+ | Custom Tab | `CustomTab` |
144
+ | Custom App | `CustomApplication` |
145
+ | Static Resource | `StaticResource` |
146
+ | Named Credential | `NamedCredential` |
147
+
148
+ ---
149
+
150
+ ## Deployment Commands
151
+
152
+ ### Dry-Run (always first)
153
+ ```bash
154
+ sf project deploy start \
155
+ --dry-run \
156
+ --manifest manifest/package-deploy-<feature>.xml \
157
+ --test-level RunSpecifiedTests \
158
+ --tests MyApexClassTest \
159
+ --target-org {{PROD_ORG_ALIAS}}
160
+ ```
161
+
162
+ - Review dry-run output carefully before proceeding
163
+ - If test failures: fix before actual deploy — never bypass
164
+
165
+ ### Actual Deploy
166
+ ```bash
167
+ sf project deploy start \
168
+ --manifest manifest/package-deploy-<feature>.xml \
169
+ --test-level RunSpecifiedTests \
170
+ --tests MyApexClassTest \
171
+ --target-org {{PROD_ORG_ALIAS}}
172
+ ```
173
+
174
+ - Same command, without `--dry-run`
175
+ - **Record the Deploy ID** from the output — required for CR and deploy doc
176
+
177
+ ### Quick Deploy (72-hour window only)
178
+ ```bash
179
+ sf project deploy quick \
180
+ --job-id <ValidationJobId> \
181
+ --target-org {{PROD_ORG_ALIAS}}
182
+ ```
183
+ - Only valid within 72 hours of successful validation
184
+ - Use the Job ID from the dry-run validation, not from a previous deploy
185
+
186
+ ### Check Deployment Status
187
+ ```bash
188
+ sf project deploy report --job-id <DeployId> --target-org {{PROD_ORG_ALIAS}}
189
+ ```
190
+
191
+ ### Retrieve Metadata (before deploying admin changes)
192
+ ```bash
193
+ sf project retrieve start \
194
+ --manifest manifest/package-deploy-<feature>.xml \
195
+ --target-org {{DEV_ORG_ALIAS}}
196
+ ```
197
+
198
+ ---
199
+
200
+ ## Change Request (CR)
201
+
202
+ ### When: Required before EVERY production deploy
203
+ File: `instructions/change-request/YYYYMMDD-<feature>-cr.md`
204
+ Language: **English**
205
+
206
+ ### CR Template
207
+ ```markdown
208
+ # Change Request: [Feature Name]
209
+
210
+ **Date:** YYYY-MM-DD
211
+ **Feature:** [short feature name]
212
+ **Deploy Manifest:** `manifest/package-deploy-<feature>.xml`
213
+ **Deploy ID:** [filled after successful deploy]
214
+
215
+ ---
216
+
217
+ ## Purpose
218
+ [1 sentence: what this change does]
219
+
220
+ ## Change Tasks
221
+ - [Component name] — [what was changed and why]
222
+ - [Component name] — [what was changed and why]
223
+
224
+ ## Impact
225
+ [1 paragraph or bullet points: what changes for users and the system after this deploy]
226
+
227
+ ## Rollback
228
+ If the deployment causes issues, perform the following:
229
+
230
+ 1. [Step 1 — e.g. Deactivate the new Flow]
231
+ 2. [Step 2 — e.g. Redeploy previous version of Apex class from `main` branch]
232
+ 3. [Step 3 — e.g. Notify affected users]
233
+
234
+ Rollback timeline estimate: [X minutes/hours]
235
+ ```
236
+
237
+ ---
238
+
239
+ ## Deploy Documentation
240
+
241
+ File: `instructions/deploy-doc/YYYYMMDD-<feature>-deploy.md`
242
+
243
+ ```markdown
244
+ # Deploy Doc: [Feature Name]
245
+
246
+ **Date:** YYYY-MM-DD
247
+ **Manifest:** `manifest/package-deploy-<feature>.xml`
248
+ **Target Org:** {{PROD_ORG_ALIAS}}
249
+ **Test Classes:** [list all test classes included]
250
+
251
+ ---
252
+
253
+ ## Pre-Deploy Checklist
254
+ - [ ] Dry-run completed successfully
255
+ - [ ] All specified tests passed (≥85% coverage)
256
+ - [ ] CR created at `instructions/change-request/`
257
+ - [ ] Code review approved on GitHub PR
258
+
259
+ ## Deploy Steps
260
+ 1. Run dry-run → confirm success
261
+ 2. Create CR
262
+ 3. Run actual deploy
263
+ 4. Verify in production (spot-check key components)
264
+ 5. Update CR with Deploy ID
265
+ 6. Push to GitHub + merge PR
266
+
267
+ ## Post-Deploy Verification
268
+ - [ ] [Specific thing to verify in production, e.g. "Open projectCard LWC on a Project record — confirm version badge displays"]
269
+ - [ ] [Another verification step]
270
+
271
+ ## Result
272
+ **Deploy ID:** [filled after deploy]
273
+ **Status:** Success / Partial / Failed
274
+ **Notes:** [any issues encountered]
275
+ ```
276
+
277
+ ---
278
+
279
+ ## Order of Work (full cycle)
280
+
281
+ ```
282
+ 1. Create deploy doc → instructions/deploy-doc/YYYYMMDD-<feature>-deploy.md
283
+ 2. Create CR → instructions/change-request/YYYYMMDD-<feature>-cr.md
284
+ 3. Run /deploy pipeline:
285
+ a. Dry-run
286
+ b. Confirm output
287
+ c. Actual deploy
288
+ d. Record Deploy ID
289
+ 4. Update deploy doc + CR with Deploy ID
290
+ 5. Push to GitHub
291
+ ```
292
+
293
+ ---
294
+
295
+ ## Git Workflow
296
+
297
+ ### Commit Message Format
298
+ ```
299
+ <type>: <short imperative description>
300
+
301
+ Types: feat | fix | refactor | docs | chore
302
+ ```
303
+
304
+ Examples:
305
+ ```
306
+ feat: add project status field to Project__c
307
+ fix: handle null owner in ProjectHelper getProjects
308
+ refactor: extract SOQL to helper method in OpportunityService
309
+ docs: update deploy doc for case-ai-assistant v2.1.0
310
+ chore: update package-deploy manifest for summer release
311
+ ```
312
+
313
+ ### Rules
314
+ - ❌ Never add `Co-Authored-By` trailers
315
+ - ❌ Never commit Deploy IDs, Record IDs, API keys, session tokens
316
+ - ❌ Never commit org credentials or Named Credential values
317
+ - ✅ One logical change per commit
318
+ - ✅ Reference the feature/ticket in commit body if relevant (not subject line)
319
+
320
+ ### Commands Reference
321
+ ```bash
322
+ # Stage and commit
323
+ git add .
324
+ git commit -m "feat: add projectCard lwc with brand token support"
325
+
326
+ # Push to feature branch
327
+ git push origin feature/my-feature
328
+
329
+ # Open PR (GitHub CLI)
330
+ gh pr create --base develop --title "feat: project card component" --body "..."
331
+ ```
332
+
333
+ ---
334
+
335
+ ## Static Analysis (pre-PR)
336
+
337
+ ### PMD (Apex)
338
+ ```bash
339
+ # Run PMD — must pass before PR
340
+ pmd check --dir force-app --ruleset rulesets/apex/ruleset.xml --format text
341
+ ```
342
+
343
+ Key rules enforced:
344
+ - `AvoidSoqlInLoops`
345
+ - `AvoidDmlStatementsInLoops`
346
+ - `ApexUnitTestClassShouldHaveAsserts`
347
+ - `NcssMethodCount` (method complexity)
348
+
349
+ ### ESLint (LWC)
350
+ ```bash
351
+ # Run ESLint
352
+ npx eslint force-app/main/default/lwc --ext .js
353
+ ```
354
+
355
+ Both must pass cleanly before a PR can be merged.
356
+
357
+ ---
358
+
359
+ ## Quick Reference — Org Aliases
360
+
361
+ | Environment | Alias |
362
+ |---|---|
363
+ | Production | `{{PROD_ORG_ALIAS}}` |
364
+ | Sandbox | `{{DEV_ORG_ALIAS}}` |
365
+
366
+ ```bash
367
+ # List all configured orgs
368
+ sf org list
369
+
370
+ # Check current default org
371
+ sf config get target-org
372
+ ```
@@ -0,0 +1,132 @@
1
+ ---
2
+ name: sf-ideation
3
+ description: >
4
+ Use this skill when the user wants to brainstorm, explore, or generate enhancement ideas for
5
+ existing Salesforce components/features OR new feature concepts. Trigger when the user says
6
+ "ide enhancement", "ada ide baru?", "kira-kira bisa ditambah apa?", "what can we improve?",
7
+ "fitur baru", "improve this component", "enhancement ideas", or asks for creative suggestions
8
+ about LWC components, Apex classes, flows, or the overall platform. Also use when reviewing
9
+ a component and proactively spotting improvement opportunities.
10
+ ---
11
+
12
+ # Salesforce Ideation Skill
13
+
14
+ ## Purpose
15
+ Generate actionable, prioritized enhancement ideas — either for existing components/features
16
+ or as proposals for new features — grounded in the project's current codebase and tech stack.
17
+
18
+ ---
19
+
20
+ ## Existing Components in This Project
21
+
22
+ ### LWC
23
+ | Component | Purpose |
24
+ |---|---|
25
+ | `caseAIAssistant` | AI chat interface for Case — async response via Platform Event |
26
+ | `projectAssetImport` | Form/modal UI for importing project assets |
27
+ | `activityHistoryEnhanced` | Enhanced activity timeline display |
28
+
29
+ ### Apex
30
+ | Class | Purpose |
31
+ |---|---|
32
+ | `CaseAssistantController` | Backend for caseAIAssistant — handles AI callout, TXT attach |
33
+ | `AIAssistantWrapper` | Wrapper/model for AI response data |
34
+ | `AssetImportController` | Backend for projectAssetImport |
35
+
36
+ ---
37
+
38
+ ## Ideation Framework
39
+
40
+ ### For Existing Components — 5 Lenses
41
+ When exploring enhancements for an existing component, evaluate through these lenses:
42
+
43
+ 1. **UX / Interaction** — Is the user flow intuitive? Can loading states, empty states, or error
44
+ messages be improved? Can interactions be made faster or more delightful?
45
+
46
+ 2. **Performance** — Are there unnecessary re-renders, redundant wire calls, or heavy SOQL that
47
+ could be optimized? Can we lazy-load data or paginate?
48
+
49
+ 3. **Functionality Gap** — What can users NOT do today that they logically would want to? What
50
+ edge cases are unhandled?
51
+
52
+ 4. **Integration Opportunity** — Can this component connect to another object, system, or
53
+ Salesforce feature (e.g. Einstein, Flows, Platform Events) to add value?
54
+
55
+ 5. **Observability / Admin Control** — Can admins configure behavior without code? Are there
56
+ useful metrics or logs missing?
57
+
58
+ ### For New Features — Discovery Questions
59
+ Before generating ideas for net-new features, consider:
60
+ - What pain point does this solve for the end user?
61
+ - Does Salesforce have a native feature that partially solves this? (avoid reinventing)
62
+ - Which existing components/objects would this touch?
63
+ - Is this declarative (Flow/admin) or requires custom code?
64
+ - What is the rough build complexity: S / M / L / XL?
65
+
66
+ ---
67
+
68
+ ## Output Format
69
+
70
+ ### Enhancement Ideas Output
71
+ Always structure ideas in a prioritized table:
72
+
73
+ ```
74
+ ## Enhancement Ideas — [Component/Feature Name]
75
+
76
+ ### Quick Wins (Low effort, High impact)
77
+ | # | Idea | Why | Effort | Impact |
78
+ |---|------|-----|--------|--------|
79
+ | 1 | ... | ... | S | High |
80
+
81
+ ### Medium Term
82
+ | # | Idea | Why | Effort | Impact |
83
+ |---|------|-----|--------|--------|
84
+
85
+ ### Big Bets (High effort, transformative)
86
+ | # | Idea | Why | Effort | Impact |
87
+ |---|------|-----|--------|--------|
88
+
89
+ ### Effort Scale: S=hours, M=days, L=week+, XL=sprint+
90
+ ```
91
+
92
+ After the table, pick the **top 1-2 ideas** and write a short paragraph on how to implement them
93
+ using the project's stack (LWC + Apex + SF CLI).
94
+
95
+ ### New Feature Proposal Output
96
+ ```
97
+ ## Feature Proposal — [Feature Name]
98
+
99
+ **Problem:** one sentence
100
+ **Solution:** one sentence
101
+ **Target Users:** who benefits
102
+ **Key Capabilities:** 3-5 bullet points
103
+ **Tech Approach:** LWC / Apex / Flow / Platform Event / etc.
104
+ **Complexity:** S / M / L / XL
105
+ **Dependencies:** existing components or objects it touches
106
+ ```
107
+
108
+ ---
109
+
110
+ ## Ideation Rules
111
+
112
+ - **Always ground ideas in the existing stack** — LWC + Apex + Salesforce declarative tools.
113
+ Do not suggest third-party tools unless explicitly asked.
114
+ - **Reference existing components** where relevant — e.g. "extend `caseAIAssistant` to also..."
115
+ - **Follow project standards** — any LWC idea must include `:host` brand tokens + version badge.
116
+ Any Apex idea must follow bulkification + try-catch + CRUD check patterns.
117
+ - **No gold-plating** — ideas should solve a real need, not add complexity for its own sake.
118
+ - **Be opinionated** — don't just list options, recommend the best one and explain why.
119
+ - **Think Salesforce seasons** — flag if an idea aligns with an upcoming Salesforce release
120
+ feature (Summer '26, Winter '27) that could reduce build effort.
121
+
122
+ ---
123
+
124
+ ## Quick Triggers
125
+
126
+ | User says... | What to do |
127
+ |---|---|
128
+ | "ide untuk [component]" | Run all 5 lenses on that component, output enhancement table |
129
+ | "fitur baru apa yang bisa kita buat?" | Ask 2-3 discovery questions, then propose 3 feature ideas |
130
+ | "kira-kira [component] bisa ditambah apa?" | Focus on Functionality Gap + UX lenses first |
131
+ | "prioritas enhancement mana yang paling worth it?" | Rank by impact/effort ratio, recommend top 1 |
132
+ | "ada yang bisa diimprove dari sisi performance?" | Focus on Performance lens across all components |