scc-universal 1.1.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.
Files changed (271) hide show
  1. package/.claude-plugin/plugin.json +44 -0
  2. package/.cursor/agents/deep-researcher.md +142 -0
  3. package/.cursor/agents/doc-updater.md +219 -0
  4. package/.cursor/agents/eval-runner.md +335 -0
  5. package/.cursor/agents/learning-engine.md +210 -0
  6. package/.cursor/agents/loop-operator.md +245 -0
  7. package/.cursor/agents/refactor-cleaner.md +119 -0
  8. package/.cursor/agents/sf-admin-agent.md +127 -0
  9. package/.cursor/agents/sf-agentforce-agent.md +126 -0
  10. package/.cursor/agents/sf-apex-agent.md +117 -0
  11. package/.cursor/agents/sf-architect.md +426 -0
  12. package/.cursor/agents/sf-aura-reviewer.md +369 -0
  13. package/.cursor/agents/sf-bugfix-agent.md +101 -0
  14. package/.cursor/agents/sf-flow-agent.md +155 -0
  15. package/.cursor/agents/sf-integration-agent.md +141 -0
  16. package/.cursor/agents/sf-lwc-agent.md +123 -0
  17. package/.cursor/agents/sf-review-agent.md +357 -0
  18. package/.cursor/agents/sf-visualforce-reviewer.md +465 -0
  19. package/.cursor/hooks/adapter.js +81 -0
  20. package/.cursor/hooks/after-file-edit.js +26 -0
  21. package/.cursor/hooks/after-mcp-execution.js +12 -0
  22. package/.cursor/hooks/after-shell-execution.js +30 -0
  23. package/.cursor/hooks/after-tab-file-edit.js +12 -0
  24. package/.cursor/hooks/before-mcp-execution.js +11 -0
  25. package/.cursor/hooks/before-read-file.js +13 -0
  26. package/.cursor/hooks/before-shell-execution.js +29 -0
  27. package/.cursor/hooks/before-submit-prompt.js +23 -0
  28. package/.cursor/hooks/pre-compact.js +7 -0
  29. package/.cursor/hooks/session-end.js +10 -0
  30. package/.cursor/hooks/session-start.js +10 -0
  31. package/.cursor/hooks/stop.js +18 -0
  32. package/.cursor/hooks/subagent-start.js +10 -0
  33. package/.cursor/hooks/subagent-stop.js +10 -0
  34. package/.cursor/hooks.json +107 -0
  35. package/.cursor/skills/aside/SKILL.md +115 -0
  36. package/.cursor/skills/checkpoint/SKILL.md +50 -0
  37. package/.cursor/skills/configure-scc/SKILL.md +160 -0
  38. package/.cursor/skills/continuous-agent-loop/SKILL.md +260 -0
  39. package/.cursor/skills/mcp-server-patterns/SKILL.md +142 -0
  40. package/.cursor/skills/model-route/SKILL.md +81 -0
  41. package/.cursor/skills/prompt-optimizer/SKILL.md +366 -0
  42. package/.cursor/skills/refactor-clean/SKILL.md +133 -0
  43. package/.cursor/skills/resume-session/SKILL.md +111 -0
  44. package/.cursor/skills/save-session/SKILL.md +183 -0
  45. package/.cursor/skills/search-first/SKILL.md +140 -0
  46. package/.cursor/skills/security-scan/SKILL.md +142 -0
  47. package/.cursor/skills/sessions/SKILL.md +124 -0
  48. package/.cursor/skills/sf-agentforce-development/SKILL.md +449 -0
  49. package/.cursor/skills/sf-apex-async-patterns/SKILL.md +324 -0
  50. package/.cursor/skills/sf-apex-best-practices/SKILL.md +421 -0
  51. package/.cursor/skills/sf-apex-constraints/SKILL.md +79 -0
  52. package/.cursor/skills/sf-apex-cursor/SKILL.md +336 -0
  53. package/.cursor/skills/sf-apex-enterprise-patterns/SKILL.md +344 -0
  54. package/.cursor/skills/sf-apex-testing/SKILL.md +407 -0
  55. package/.cursor/skills/sf-api-design/SKILL.md +237 -0
  56. package/.cursor/skills/sf-approval-processes/SKILL.md +312 -0
  57. package/.cursor/skills/sf-aura-development/SKILL.md +260 -0
  58. package/.cursor/skills/sf-build-fix/SKILL.md +120 -0
  59. package/.cursor/skills/sf-data-modeling/SKILL.md +274 -0
  60. package/.cursor/skills/sf-debugging/SKILL.md +362 -0
  61. package/.cursor/skills/sf-deployment/SKILL.md +291 -0
  62. package/.cursor/skills/sf-deployment-constraints/SKILL.md +153 -0
  63. package/.cursor/skills/sf-devops-ci-cd/SKILL.md +322 -0
  64. package/.cursor/skills/sf-docs-lookup/SKILL.md +100 -0
  65. package/.cursor/skills/sf-e2e-testing/SKILL.md +321 -0
  66. package/.cursor/skills/sf-experience-cloud/SKILL.md +248 -0
  67. package/.cursor/skills/sf-flow-development/SKILL.md +376 -0
  68. package/.cursor/skills/sf-governor-limits/SKILL.md +319 -0
  69. package/.cursor/skills/sf-harness-audit/SKILL.md +139 -0
  70. package/.cursor/skills/sf-help/SKILL.md +156 -0
  71. package/.cursor/skills/sf-integration/SKILL.md +479 -0
  72. package/.cursor/skills/sf-lwc-constraints/SKILL.md +128 -0
  73. package/.cursor/skills/sf-lwc-development/SKILL.md +302 -0
  74. package/.cursor/skills/sf-lwc-testing/SKILL.md +387 -0
  75. package/.cursor/skills/sf-metadata-management/SKILL.md +285 -0
  76. package/.cursor/skills/sf-platform-events-cdc/SKILL.md +372 -0
  77. package/.cursor/skills/sf-quickstart/SKILL.md +170 -0
  78. package/.cursor/skills/sf-security/SKILL.md +330 -0
  79. package/.cursor/skills/sf-security-constraints/SKILL.md +125 -0
  80. package/.cursor/skills/sf-soql-constraints/SKILL.md +129 -0
  81. package/.cursor/skills/sf-soql-optimization/SKILL.md +353 -0
  82. package/.cursor/skills/sf-tdd-workflow/SKILL.md +332 -0
  83. package/.cursor/skills/sf-testing-constraints/SKILL.md +198 -0
  84. package/.cursor/skills/sf-trigger-constraints/SKILL.md +88 -0
  85. package/.cursor/skills/sf-trigger-frameworks/SKILL.md +343 -0
  86. package/.cursor/skills/sf-visualforce-development/SKILL.md +259 -0
  87. package/.cursor/skills/strategic-compact/SKILL.md +205 -0
  88. package/.cursor/skills/update-docs/SKILL.md +162 -0
  89. package/.cursor/skills/update-platform-docs/SKILL.md +86 -0
  90. package/.cursor-plugin/plugin.json +26 -0
  91. package/LICENSE +21 -0
  92. package/README.md +522 -0
  93. package/agents/deep-researcher.md +145 -0
  94. package/agents/doc-updater.md +222 -0
  95. package/agents/eval-runner.md +340 -0
  96. package/agents/learning-engine.md +211 -0
  97. package/agents/loop-operator.md +247 -0
  98. package/agents/refactor-cleaner.md +122 -0
  99. package/agents/sf-admin-agent.md +131 -0
  100. package/agents/sf-agentforce-agent.md +132 -0
  101. package/agents/sf-apex-agent.md +124 -0
  102. package/agents/sf-architect.md +435 -0
  103. package/agents/sf-aura-reviewer.md +372 -0
  104. package/agents/sf-bugfix-agent.md +105 -0
  105. package/agents/sf-flow-agent.md +159 -0
  106. package/agents/sf-integration-agent.md +146 -0
  107. package/agents/sf-lwc-agent.md +127 -0
  108. package/agents/sf-review-agent.md +366 -0
  109. package/agents/sf-visualforce-reviewer.md +468 -0
  110. package/assets/logo.svg +18 -0
  111. package/docs/ARCHITECTURE.md +133 -0
  112. package/docs/authoring-guide.md +373 -0
  113. package/docs/hook-development.md +578 -0
  114. package/docs/token-optimization.md +139 -0
  115. package/docs/workflow-examples.md +645 -0
  116. package/examples/agentforce-action/README.md +227 -0
  117. package/examples/apex-trigger-handler/README.md +114 -0
  118. package/examples/devops-pipeline/README.md +325 -0
  119. package/examples/flow-automation/README.md +188 -0
  120. package/examples/integration-pattern/README.md +416 -0
  121. package/examples/lwc-component/README.md +180 -0
  122. package/examples/platform-events/README.md +492 -0
  123. package/examples/scratch-org-setup/README.md +138 -0
  124. package/examples/security-audit/README.md +244 -0
  125. package/examples/visualforce-migration/README.md +314 -0
  126. package/hooks/hooks.json +338 -0
  127. package/hooks/memory-persistence/README.md +73 -0
  128. package/manifests/install-modules.json +217 -0
  129. package/manifests/install-profiles.json +17 -0
  130. package/mcp-configs/mcp-servers.json +19 -0
  131. package/package.json +89 -0
  132. package/schemas/hooks.schema.json +123 -0
  133. package/schemas/install-modules.schema.json +76 -0
  134. package/schemas/install-profiles.schema.json +28 -0
  135. package/schemas/install-state.schema.json +73 -0
  136. package/schemas/package-manager.schema.json +18 -0
  137. package/schemas/plugin.schema.json +112 -0
  138. package/schemas/scc-install-config.schema.json +29 -0
  139. package/schemas/state-store.schema.json +111 -0
  140. package/scripts/cli/install-apply.js +170 -0
  141. package/scripts/cli/uninstall.js +193 -0
  142. package/scripts/hooks/check-console-log.js +101 -0
  143. package/scripts/hooks/check-hook-enabled.js +17 -0
  144. package/scripts/hooks/check-platform-docs-age.js +48 -0
  145. package/scripts/hooks/cost-tracker.js +78 -0
  146. package/scripts/hooks/doc-file-warning.js +63 -0
  147. package/scripts/hooks/evaluate-session.js +98 -0
  148. package/scripts/hooks/governor-check.js +220 -0
  149. package/scripts/hooks/learning-observe.sh +206 -0
  150. package/scripts/hooks/mcp-health-check.js +588 -0
  151. package/scripts/hooks/post-bash-build-complete.js +34 -0
  152. package/scripts/hooks/post-bash-pr-created.js +43 -0
  153. package/scripts/hooks/post-edit-console-warn.js +61 -0
  154. package/scripts/hooks/post-edit-format.js +79 -0
  155. package/scripts/hooks/post-edit-typecheck.js +98 -0
  156. package/scripts/hooks/post-write.js +168 -0
  157. package/scripts/hooks/pre-bash-git-push-reminder.js +35 -0
  158. package/scripts/hooks/pre-bash-tmux-reminder.js +47 -0
  159. package/scripts/hooks/pre-compact.js +51 -0
  160. package/scripts/hooks/pre-tool-use.js +163 -0
  161. package/scripts/hooks/pre-write-doc-warn.js +9 -0
  162. package/scripts/hooks/quality-gate.js +251 -0
  163. package/scripts/hooks/run-with-flags-shell.sh +32 -0
  164. package/scripts/hooks/run-with-flags.js +135 -0
  165. package/scripts/hooks/session-end-marker.js +29 -0
  166. package/scripts/hooks/session-end.js +311 -0
  167. package/scripts/hooks/session-start.js +202 -0
  168. package/scripts/hooks/sfdx-scanner-check.js +142 -0
  169. package/scripts/hooks/sfdx-validate.js +119 -0
  170. package/scripts/hooks/stop-hook.js +170 -0
  171. package/scripts/hooks/suggest-compact.js +67 -0
  172. package/scripts/lib/agent-adapter.js +82 -0
  173. package/scripts/lib/apex-analysis.js +194 -0
  174. package/scripts/lib/hook-flags.js +74 -0
  175. package/scripts/lib/install-config.js +73 -0
  176. package/scripts/lib/install-executor.js +363 -0
  177. package/scripts/lib/install-state.js +121 -0
  178. package/scripts/lib/orchestration-session.js +299 -0
  179. package/scripts/lib/package-manager.js +124 -0
  180. package/scripts/lib/project-detect.js +228 -0
  181. package/scripts/lib/schema-validator.js +190 -0
  182. package/scripts/lib/skill-adapter.js +100 -0
  183. package/scripts/lib/state-store.js +376 -0
  184. package/scripts/lib/tmux-worktree-orchestrator.js +598 -0
  185. package/scripts/lib/utils.js +313 -0
  186. package/scripts/scc.js +164 -0
  187. package/skills/_reference/AGENTFORCE_PATTERNS.md +112 -0
  188. package/skills/_reference/APEX_CURSOR.md +159 -0
  189. package/skills/_reference/API_VERSIONS.md +78 -0
  190. package/skills/_reference/APPROVAL_PROCESSES.md +105 -0
  191. package/skills/_reference/ASYNC_PATTERNS.md +163 -0
  192. package/skills/_reference/AURA_COMPONENTS.md +146 -0
  193. package/skills/_reference/DATA_MIGRATION_PATTERNS.md +151 -0
  194. package/skills/_reference/DATA_MODELING.md +124 -0
  195. package/skills/_reference/DEBUGGING_TOOLS.md +140 -0
  196. package/skills/_reference/DEPLOYMENT_CHECKLIST.md +87 -0
  197. package/skills/_reference/DEPRECATIONS.md +79 -0
  198. package/skills/_reference/DOCKER_CI_PATTERNS.md +138 -0
  199. package/skills/_reference/ENTERPRISE_PATTERNS.md +122 -0
  200. package/skills/_reference/EXPERIENCE_CLOUD.md +143 -0
  201. package/skills/_reference/FLOW_PATTERNS.md +113 -0
  202. package/skills/_reference/GOVERNOR_LIMITS.md +77 -0
  203. package/skills/_reference/INTEGRATION_PATTERNS.md +105 -0
  204. package/skills/_reference/LWC_PATTERNS.md +79 -0
  205. package/skills/_reference/METADATA_TYPES.md +115 -0
  206. package/skills/_reference/NAMING_CONVENTIONS.md +84 -0
  207. package/skills/_reference/PACKAGE_DEVELOPMENT.md +150 -0
  208. package/skills/_reference/PLATFORM_EVENTS.md +121 -0
  209. package/skills/_reference/REPORTING_API.md +143 -0
  210. package/skills/_reference/SCRATCH_ORG_PATTERNS.md +126 -0
  211. package/skills/_reference/SECURITY_PATTERNS.md +127 -0
  212. package/skills/_reference/SHARING_MODEL.md +120 -0
  213. package/skills/_reference/SOQL_PATTERNS.md +119 -0
  214. package/skills/_reference/TESTING_STANDARDS.md +96 -0
  215. package/skills/_reference/TRIGGER_PATTERNS.md +114 -0
  216. package/skills/_reference/VISUALFORCE_PATTERNS.md +121 -0
  217. package/skills/aside/SKILL.md +118 -0
  218. package/skills/checkpoint/SKILL.md +53 -0
  219. package/skills/configure-scc/SKILL.md +163 -0
  220. package/skills/continuous-agent-loop/SKILL.md +264 -0
  221. package/skills/mcp-server-patterns/SKILL.md +146 -0
  222. package/skills/model-route/SKILL.md +84 -0
  223. package/skills/prompt-optimizer/SKILL.md +369 -0
  224. package/skills/refactor-clean/SKILL.md +136 -0
  225. package/skills/resume-session/SKILL.md +114 -0
  226. package/skills/save-session/SKILL.md +186 -0
  227. package/skills/search-first/SKILL.md +144 -0
  228. package/skills/security-scan/SKILL.md +146 -0
  229. package/skills/sessions/SKILL.md +127 -0
  230. package/skills/sf-agentforce-development/SKILL.md +450 -0
  231. package/skills/sf-apex-async-patterns/SKILL.md +326 -0
  232. package/skills/sf-apex-best-practices/SKILL.md +425 -0
  233. package/skills/sf-apex-constraints/SKILL.md +81 -0
  234. package/skills/sf-apex-cursor/SKILL.md +338 -0
  235. package/skills/sf-apex-enterprise-patterns/SKILL.md +348 -0
  236. package/skills/sf-apex-testing/SKILL.md +409 -0
  237. package/skills/sf-api-design/SKILL.md +238 -0
  238. package/skills/sf-approval-processes/SKILL.md +315 -0
  239. package/skills/sf-aura-development/SKILL.md +263 -0
  240. package/skills/sf-build-fix/SKILL.md +121 -0
  241. package/skills/sf-data-modeling/SKILL.md +278 -0
  242. package/skills/sf-debugging/SKILL.md +363 -0
  243. package/skills/sf-deployment/SKILL.md +295 -0
  244. package/skills/sf-deployment-constraints/SKILL.md +155 -0
  245. package/skills/sf-devops-ci-cd/SKILL.md +325 -0
  246. package/skills/sf-docs-lookup/SKILL.md +103 -0
  247. package/skills/sf-e2e-testing/SKILL.md +324 -0
  248. package/skills/sf-experience-cloud/SKILL.md +249 -0
  249. package/skills/sf-flow-development/SKILL.md +377 -0
  250. package/skills/sf-governor-limits/SKILL.md +323 -0
  251. package/skills/sf-harness-audit/SKILL.md +142 -0
  252. package/skills/sf-help/SKILL.md +159 -0
  253. package/skills/sf-integration/SKILL.md +483 -0
  254. package/skills/sf-lwc-constraints/SKILL.md +130 -0
  255. package/skills/sf-lwc-development/SKILL.md +303 -0
  256. package/skills/sf-lwc-testing/SKILL.md +388 -0
  257. package/skills/sf-metadata-management/SKILL.md +288 -0
  258. package/skills/sf-platform-events-cdc/SKILL.md +375 -0
  259. package/skills/sf-quickstart/SKILL.md +173 -0
  260. package/skills/sf-security/SKILL.md +334 -0
  261. package/skills/sf-security-constraints/SKILL.md +127 -0
  262. package/skills/sf-soql-constraints/SKILL.md +131 -0
  263. package/skills/sf-soql-optimization/SKILL.md +354 -0
  264. package/skills/sf-tdd-workflow/SKILL.md +336 -0
  265. package/skills/sf-testing-constraints/SKILL.md +200 -0
  266. package/skills/sf-trigger-constraints/SKILL.md +90 -0
  267. package/skills/sf-trigger-frameworks/SKILL.md +347 -0
  268. package/skills/sf-visualforce-development/SKILL.md +260 -0
  269. package/skills/strategic-compact/SKILL.md +208 -0
  270. package/skills/update-docs/SKILL.md +165 -0
  271. package/skills/update-platform-docs/SKILL.md +90 -0
@@ -0,0 +1,325 @@
1
+ ---
2
+ name: sf-devops-ci-cd
3
+ description: >-
4
+ Use when setting up Salesforce CI/CD pipelines. GitHub Actions, JWT auth,
5
+ scratch org workflows, sandbox promotion, and deployment automation.
6
+ origin: SCC
7
+ user-invocable: false
8
+ disable-model-invocation: true
9
+ ---
10
+
11
+ # Salesforce DevOps and CI/CD
12
+
13
+ Reference: @../_reference/DEPLOYMENT_CHECKLIST.md, @../_reference/DOCKER_CI_PATTERNS.md
14
+
15
+ ## When to Use
16
+
17
+ - Setting up GitHub Actions CI/CD pipelines for Salesforce projects
18
+ - Configuring JWT authentication for non-interactive CI/CD deployments
19
+ - Implementing scratch-org-per-branch development workflows
20
+ - Automating deployments across sandbox, staging, and production environments
21
+ - Troubleshooting SF CLI v2 deploy, retrieve, or test commands
22
+
23
+ ---
24
+
25
+ ## SF CLI v2 Key Commands Reference
26
+
27
+ ### Org Management
28
+
29
+ ```bash
30
+ sf org login web --alias myOrg # Browser-based login
31
+ sf org login jwt --client-id <id> --jwt-key-file server.key --username user@org.com --alias ci-org
32
+ sf org list # List all authenticated orgs
33
+ sf org open --target-org myOrg # Open org in browser
34
+ sf org create scratch --definition-file config/project-scratch-def.json --alias myScratch --duration-days 7
35
+ sf org delete scratch --target-org myScratch --no-prompt
36
+ sf org display --target-org myOrg # Show org details including access token
37
+ ```
38
+
39
+ ### Source Deploy and Retrieve
40
+
41
+ ```bash
42
+ sf project deploy start --source-dir force-app --target-org myOrg
43
+ sf project deploy start --manifest manifest/package.xml --target-org myOrg
44
+ sf project deploy validate --manifest manifest/package.xml --target-org myOrg
45
+ sf project deploy quick --job-id <id> --target-org myOrg
46
+ sf project retrieve start --source-dir force-app --target-org myOrg
47
+ sf project deploy start --source-dir force-app --test-level RunLocalTests --target-org myOrg
48
+ ```
49
+
50
+ ### Apex Execution and Testing
51
+
52
+ ```bash
53
+ sf apex run --file scripts/apex/setup.apex --target-org myOrg
54
+ sf apex run test --test-level RunLocalTests --result-format human --target-org myOrg
55
+ sf apex run test --class-names AccountServiceTest --result-format json --target-org myOrg
56
+ sf apex run test --test-level RunAllTestsInOrg --code-coverage --result-format json --output-dir results/
57
+ sf apex tail log --target-org myOrg # Stream live debug logs
58
+ ```
59
+
60
+ ---
61
+
62
+ ## JWT Authentication Setup
63
+
64
+ JWT auth enables non-interactive CI/CD authentication without browser prompts.
65
+
66
+ ### Step 1: Create Connected App in Salesforce
67
+
68
+ 1. Setup > App Manager > New Connected App
69
+ 2. Enable OAuth Settings
70
+ 3. Callback URL: `http://localhost:1717/OauthRedirect`
71
+ 4. Selected OAuth Scopes: `api`, `refresh_token`, `offline_access`
72
+ 5. Enable "Use digital signatures"
73
+ 6. Upload your certificate (.crt file)
74
+ 7. Manage > Edit Policies > IP Relaxation: Relax IP restrictions
75
+ 8. Note the Consumer Key (Client ID)
76
+
77
+ ### Step 2: Generate Certificate and Private Key
78
+
79
+ ```bash
80
+ openssl genrsa -out server.key 2048
81
+ openssl req -new -key server.key -out server.csr
82
+ openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
83
+ base64 -i server.key | tr -d '\n' # Encode for GitHub Secrets storage
84
+ ```
85
+
86
+ ### Step 3: Configure GitHub Secrets
87
+
88
+ - `SALESFORCE_JWT_SECRET_KEY` -- base64-encoded server.key content
89
+ - `SALESFORCE_CONSUMER_KEY` -- Connected App Consumer Key
90
+ - `SALESFORCE_USERNAME` -- target org username
91
+
92
+ ---
93
+
94
+ ## Complete GitHub Actions CI/CD Workflow
95
+
96
+ ```yaml
97
+ # .github/workflows/ci.yml
98
+ name: Salesforce CI/CD
99
+
100
+ on:
101
+ push:
102
+ branches: [develop, staging, main]
103
+ pull_request:
104
+ branches: [develop, staging, main]
105
+
106
+ jobs:
107
+ validate-pr:
108
+ name: Validate Pull Request
109
+ runs-on: ubuntu-latest
110
+ if: github.event_name == 'pull_request'
111
+ steps:
112
+ - uses: actions/checkout@v4
113
+ with:
114
+ fetch-depth: 0
115
+
116
+ - name: Install SF CLI
117
+ run: npm install -g @salesforce/cli
118
+
119
+ - name: Authenticate to sandbox
120
+ env:
121
+ JWT_SECRET_KEY: ${{ secrets.SALESFORCE_JWT_SECRET_KEY }}
122
+ CONSUMER_KEY: ${{ secrets.SALESFORCE_CONSUMER_KEY }}
123
+ USERNAME: ${{ secrets.SALESFORCE_USERNAME_SANDBOX }}
124
+ run: |
125
+ echo "$JWT_SECRET_KEY" | base64 --decode > server.key
126
+ sf org login jwt \
127
+ --client-id "$CONSUMER_KEY" \
128
+ --jwt-key-file server.key \
129
+ --username "$USERNAME" \
130
+ --alias validation-org \
131
+ --set-default
132
+ rm server.key
133
+
134
+ - name: Validate deployment
135
+ run: |
136
+ sf project deploy validate \
137
+ --source-dir force-app \
138
+ --test-level RunLocalTests \
139
+ --target-org validation-org \
140
+ --wait 30
141
+
142
+ deploy-production:
143
+ name: Deploy to Production
144
+ runs-on: ubuntu-latest
145
+ if: github.ref == 'refs/heads/main' && github.event_name == 'push'
146
+ environment: production
147
+ steps:
148
+ - uses: actions/checkout@v4
149
+
150
+ - name: Install SF CLI
151
+ run: npm install -g @salesforce/cli
152
+
153
+ - name: Authenticate to Production
154
+ env:
155
+ JWT_SECRET_KEY: ${{ secrets.SALESFORCE_PROD_JWT_SECRET_KEY }}
156
+ CONSUMER_KEY: ${{ secrets.SALESFORCE_PROD_CONSUMER_KEY }}
157
+ USERNAME: ${{ secrets.SALESFORCE_PROD_USERNAME }}
158
+ run: |
159
+ echo "$JWT_SECRET_KEY" | base64 --decode > server.key
160
+ sf org login jwt \
161
+ --client-id "$CONSUMER_KEY" \
162
+ --jwt-key-file server.key \
163
+ --username "$USERNAME" \
164
+ --instance-url https://login.salesforce.com \
165
+ --alias prod \
166
+ --set-default
167
+ rm server.key
168
+
169
+ - name: Validate deployment
170
+ id: validate
171
+ run: |
172
+ VALIDATION_RESULT=$(sf project deploy validate \
173
+ --source-dir force-app \
174
+ --test-level RunLocalTests \
175
+ --target-org prod \
176
+ --wait 60 \
177
+ --json)
178
+ echo "VALIDATION_JOB_ID=$(echo "$VALIDATION_RESULT" | jq -r '.result.id')" >> "$GITHUB_ENV"
179
+
180
+ - name: Quick deploy
181
+ run: |
182
+ sf project deploy quick \
183
+ --job-id "$VALIDATION_JOB_ID" \
184
+ --target-org prod \
185
+ --wait 10
186
+ ```
187
+
188
+ > Do not use `--use-most-recent` for quick deploy in multi-team orgs. Another team's deployment between validate and quick-deploy invalidates the job. Always pass `--job-id` explicitly.
189
+
190
+ ---
191
+
192
+ ## Branch Strategy
193
+
194
+ ```
195
+ feature/ABC-123-account-service
196
+ |
197
+ v
198
+ develop ---- CI: validate + deploy to dev sandbox
199
+ |
200
+ v
201
+ staging ---- CI: validate + deploy to staging sandbox (RunLocalTests)
202
+ |
203
+ v
204
+ main ---- CI: deploy to production (RunLocalTests)
205
+ ```
206
+
207
+ - `feature/*` -- individual work, scratch org per developer
208
+ - `develop` -- integration branch, auto-deploys to dev sandbox
209
+ - `staging` -- pre-production, mirrors production as closely as possible
210
+ - `main` -- production. Requires pull request review + CI green
211
+
212
+ ---
213
+
214
+ ## Scratch Org Per-Branch Workflow (CI)
215
+
216
+ ```yaml
217
+ test-in-scratch-org:
218
+ name: Test in Scratch Org
219
+ runs-on: ubuntu-latest
220
+ if: startsWith(github.ref, 'refs/heads/feature/')
221
+ steps:
222
+ - uses: actions/checkout@v4
223
+
224
+ - name: Install SF CLI and authenticate Dev Hub
225
+ env:
226
+ JWT_SECRET_KEY: ${{ secrets.DEVHUB_JWT_SECRET_KEY }}
227
+ CONSUMER_KEY: ${{ secrets.DEVHUB_CONSUMER_KEY }}
228
+ USERNAME: ${{ secrets.DEVHUB_USERNAME }}
229
+ run: |
230
+ npm install -g @salesforce/cli
231
+ echo "$JWT_SECRET_KEY" | base64 --decode > server.key
232
+ sf org login jwt \
233
+ --client-id "$CONSUMER_KEY" \
234
+ --jwt-key-file server.key \
235
+ --username "$USERNAME" \
236
+ --alias devhub \
237
+ --set-default-dev-hub
238
+ rm server.key
239
+
240
+ - name: Create scratch org
241
+ run: |
242
+ sf org create scratch \
243
+ --definition-file config/project-scratch-def.json \
244
+ --alias ci-scratch \
245
+ --set-default \
246
+ --duration-days 1 \
247
+ --no-ancestors
248
+
249
+ - name: Push source and run tests
250
+ run: |
251
+ sf project deploy start --source-dir force-app --target-org ci-scratch
252
+ sf apex run test \
253
+ --test-level RunLocalTests \
254
+ --result-format human \
255
+ --code-coverage \
256
+ --target-org ci-scratch
257
+
258
+ - name: Delete scratch org
259
+ if: always()
260
+ run: sf org delete scratch --target-org ci-scratch --no-prompt
261
+ ```
262
+
263
+ ---
264
+
265
+ ## Deployment Test Level Strategy
266
+
267
+ | Environment | Test Level | Rationale |
268
+ |-------------|------------------------|-------------------------------------|
269
+ | Feature CI | RunLocalTests | Fast feedback, catches regressions |
270
+ | Dev Sandbox | RunLocalTests | Full local test suite |
271
+ | Staging | RunLocalTests | Near-production confidence |
272
+ | Production | RunLocalTests | Required by Salesforce (75% min) |
273
+ | Full release | RunAllTestsInOrg | Complete org-wide regression |
274
+
275
+ ---
276
+
277
+ ## Change Detection: Deploy Only Changed Metadata
278
+
279
+ ```bash
280
+ #!/bin/bash
281
+ # scripts/get-changed-metadata.sh
282
+ BASE_BRANCH=${1:-main}
283
+ CHANGED_FILES=$(git diff --name-only origin/$BASE_BRANCH...HEAD)
284
+
285
+ SF_CHANGED=$(echo "$CHANGED_FILES" | grep "^force-app/")
286
+ if [ -z "$SF_CHANGED" ]; then
287
+ echo "No Salesforce metadata changes detected"
288
+ exit 0
289
+ fi
290
+
291
+ # Use sfdx-git-delta plugin
292
+ # Verify command syntax with: sf sgd --help
293
+ sf sgd:source:delta \
294
+ --to HEAD \
295
+ --from origin/$BASE_BRANCH \
296
+ --output-dir changed-sources \
297
+ --generate-delta
298
+
299
+ # Deploy only changed sources
300
+ TEST_CLASSES=$(cat changed-sources/test-classes.txt 2>/dev/null | tr '\n' ',' | sed 's/,$//')
301
+ if [ -n "$TEST_CLASSES" ]; then
302
+ sf project deploy start \
303
+ --source-dir changed-sources/force-app \
304
+ --test-level RunSpecifiedTests \
305
+ --tests "$TEST_CLASSES" \
306
+ --target-org $TARGET_ORG
307
+ else
308
+ sf project deploy start \
309
+ --source-dir changed-sources/force-app \
310
+ --test-level RunLocalTests \
311
+ --target-org $TARGET_ORG
312
+ fi
313
+ ```
314
+
315
+ Install sfdx-git-delta plugin:
316
+
317
+ ```bash
318
+ sf plugins install sfdx-git-delta
319
+ ```
320
+
321
+ ---
322
+
323
+ ## Related
324
+
325
+ - **Constraints**: `sf-deployment-constraints` -- deployment safety rules
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: sf-docs-lookup
3
+ description: >-
4
+ Use when looking up official Salesforce documentation. Apex reference, LWC docs,
5
+ platform guides, API references, and SF CLI commands via WebSearch.
6
+ origin: SCC
7
+ user-invocable: true
8
+ ---
9
+
10
+ # Salesforce Documentation Lookup
11
+
12
+ Query Salesforce developer documentation for current, accurate answers. Uses WebSearch to find official documentation, then extracts and summarizes the relevant content.
13
+
14
+ ## When to Use
15
+
16
+ - When you need to look up Apex class, method, or interface documentation
17
+ - When checking LWC component API, wire service, or lifecycle documentation
18
+ - When verifying SOQL/SOSL syntax, functions, or query limits
19
+ - When researching REST API, Metadata API, Tooling API, or Bulk API endpoints
20
+ - When looking up governor limits, security features, or platform event details
21
+ - When checking `sf` CLI command flags and usage
22
+ - When verifying whether a feature is deprecated or version-gated
23
+
24
+ ## Usage
25
+
26
+ ```text
27
+ sf-docs-lookup <query>
28
+ ```
29
+
30
+ ## Workflow
31
+
32
+ ### Step 1 — Identify Topic Category
33
+
34
+ Classify the query into the correct Salesforce documentation area:
35
+
36
+ | Category | Documentation Source | Search Strategy |
37
+ |----------|---------------------|-----------------|
38
+ | Apex Classes/Interfaces | Apex Developer Guide | `site:developer.salesforce.com apex <class>` |
39
+ | Apex System Methods | Apex Reference | `site:developer.salesforce.com "System.<method>"` |
40
+ | LWC Components | LWC Dev Guide | `site:developer.salesforce.com lwc <topic>` |
41
+ | SOQL/SOSL | SOQL and SOSL Reference | `site:developer.salesforce.com soql <topic>` |
42
+ | REST API | REST API Developer Guide | `site:developer.salesforce.com rest api <endpoint>` |
43
+ | Metadata API | Metadata API Developer Guide | `site:developer.salesforce.com metadata api <type>` |
44
+ | Tooling API | Tooling API Reference | `site:developer.salesforce.com tooling api <resource>` |
45
+ | Bulk API | Bulk API 2.0 Developer Guide | `site:developer.salesforce.com bulk api <topic>` |
46
+ | Platform Events | Platform Events Developer Guide | `site:developer.salesforce.com platform events <topic>` |
47
+ | Flows | Flow Builder Guide | `site:help.salesforce.com flow <topic>` |
48
+ | Agentforce | Einstein/Agentforce Docs | `site:developer.salesforce.com agentforce <topic>` |
49
+ | Governor Limits | Apex Developer Guide | `site:developer.salesforce.com "execution governors" limits` |
50
+ | Security | Security Implementation Guide | `site:developer.salesforce.com security <topic>` |
51
+ | CLI (sf) | Salesforce CLI Reference | `site:developer.salesforce.com sf <command>` |
52
+
53
+ ### Step 2 — Search Documentation
54
+
55
+ Use WebSearch with targeted site-scoped queries:
56
+
57
+ ```
58
+ site:developer.salesforce.com <category-specific terms>
59
+ ```
60
+
61
+ For admin/configuration topics, also check:
62
+
63
+ ```
64
+ site:help.salesforce.com <topic>
65
+ ```
66
+
67
+ ### Step 3 — Extract and Format Answer
68
+
69
+ When presenting documentation results:
70
+
71
+ 1. **Lead with the answer** -- do not make the user read through preamble
72
+ 2. **Include code examples** -- Apex, LWC, or SOQL snippets when relevant
73
+ 3. **Note API version** -- Salesforce features are version-gated; specify the minimum API version
74
+ 4. **Link to source** -- provide the URL so the user can read more
75
+ 5. **Flag deprecations** -- if the queried feature is deprecated, say so and recommend the replacement
76
+
77
+ ### Step 4 — Cross-Reference with SCC Knowledge
78
+
79
+ After finding the official docs, check if SCC has relevant skills:
80
+
81
+ - Skills in `skills/` or `skills2/` that cover the topic in depth
82
+ - Mention relevant SCC resources: "For best practices on this, see the `sf-soql-optimization` skill."
83
+
84
+ ## Complex Documentation Queries
85
+
86
+ For complex documentation queries spanning multiple topics, delegate to the `deep-researcher` agent which can perform multi-step research across documentation sources.
87
+
88
+ ## Examples
89
+
90
+ ```text
91
+ sf-docs-lookup Wire service in LWC
92
+ sf-docs-lookup Database.Batchable interface
93
+ sf-docs-lookup Platform Events best practices
94
+ sf-docs-lookup SOQL aggregate functions
95
+ sf-docs-lookup WITH USER_MODE vs WITH SECURITY_ENFORCED
96
+ sf-docs-lookup sf project deploy start flags
97
+ sf-docs-lookup Trigger.operationType enum values
98
+ ```
99
+
100
+ ## Related
101
+
102
+ - **Agent**: `sf-docs-lookup` -- for multi-step documentation research
103
+ - **Constraints**: (none -- this is a search tool, no domain constraints apply)