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,295 @@
1
+ ---
2
+ name: sf-deployment
3
+ description: >-
4
+ Use when deploying to a Salesforce org. SF CLI source deploy, metadata API,
5
+ package deployment, validation-then-quick-deploy, rollback planning,
6
+ and production deployment best practices.
7
+ origin: SCC
8
+ user-invocable: false
9
+ disable-model-invocation: true
10
+ ---
11
+
12
+ # Salesforce Deployment Strategies
13
+
14
+ Reference: @../_reference/DEPLOYMENT_CHECKLIST.md
15
+
16
+ ## When to Use
17
+
18
+ - Deploying Apex, LWC, or metadata changes to a sandbox or production org
19
+ - Planning deployment order for metadata with dependencies
20
+ - Setting up validation-then-quick-deploy workflows for zero-downtime production releases
21
+ - Troubleshooting deployment errors, coverage failures, or metadata conflicts
22
+ - Choosing between Change Sets, SF CLI source deploy, or Unlocked Packages
23
+
24
+ ---
25
+
26
+ ## Deployment Method Comparison
27
+
28
+ | Method | Speed | Rollback | Best For | Tracking |
29
+ |-------------------|--------|----------|---------------------------------------|-----------|
30
+ | Change Sets | Slow | Manual | Admin-managed, simple orgs | None |
31
+ | SF CLI (Source) | Fast | Manual | Developer workflow, CI/CD | Git |
32
+ | Metadata API | Medium | Manual | Automated scripts, complex manifests | External |
33
+ | Unlocked Package | Fast | Version | Modular orgs, ISV, internal products | Version |
34
+ | Managed Package | Slow | Version | AppExchange ISV, protected IP | Version |
35
+
36
+ ---
37
+
38
+ ## SF CLI Deploy Commands
39
+
40
+ ### Basic Deployments
41
+
42
+ ```bash
43
+ # Deploy entire source directory
44
+ sf project deploy start \
45
+ --source-dir force-app \
46
+ --target-org myOrg \
47
+ --wait 30
48
+
49
+ # Deploy specific metadata types
50
+ sf project deploy start \
51
+ --metadata ApexClass \
52
+ --target-org myOrg
53
+
54
+ # Deploy specific components
55
+ sf project deploy start \
56
+ --metadata "ApexClass:AccountService,ApexClass:AccountServiceTest" \
57
+ --target-org myOrg
58
+
59
+ # Deploy using package.xml manifest
60
+ sf project deploy start \
61
+ --manifest manifest/package.xml \
62
+ --target-org myOrg \
63
+ --wait 60
64
+
65
+ # Deploy with test execution
66
+ sf project deploy start \
67
+ --source-dir force-app \
68
+ --test-level RunLocalTests \
69
+ --target-org myOrg \
70
+ --wait 60
71
+
72
+ # Deploy specific tests
73
+ sf project deploy start \
74
+ --source-dir force-app \
75
+ --test-level RunSpecifiedTests \
76
+ --tests AccountServiceTest,OpportunityServiceTest \
77
+ --target-org myOrg
78
+ ```
79
+
80
+ ### Deploy Flags Reference
81
+
82
+ | Flag | Description |
83
+ |------------------------|-------------------------------------------------------|
84
+ | `--source-dir` | Local source directory to deploy |
85
+ | `--manifest` | package.xml manifest file path |
86
+ | `--metadata` | Specific metadata types or components |
87
+ | `--test-level` | Test level: NoTestRun/RunSpecifiedTests/RunLocalTests/RunAllTestsInOrg |
88
+ | `--tests` | Comma-separated test class names (with RunSpecifiedTests) |
89
+ | `--wait` | Minutes to wait for async deploy (default: 33) |
90
+ | `--ignore-errors` | Ignore deploy errors (use with caution) |
91
+ | `--ignore-conflicts` | Ignore source tracking conflicts |
92
+ | `--async` | Run deploy asynchronously, return job ID |
93
+ | `--verbose` | Show detailed output |
94
+
95
+ > **Note:** There is no `--dry-run` on `deploy start`. Use `sf project deploy validate` instead.
96
+
97
+ ---
98
+
99
+ ## Test Level Guide
100
+
101
+ ### NoTestRun
102
+
103
+ ```bash
104
+ sf project deploy start --test-level NoTestRun --source-dir force-app --target-org sandbox
105
+ ```
106
+
107
+ Use for sandbox deployments of non-Apex metadata. Allowed for production only when the deployment contains no Apex code.
108
+
109
+ ### RunSpecifiedTests
110
+
111
+ ```bash
112
+ sf project deploy start \
113
+ --test-level RunSpecifiedTests \
114
+ --tests AccountServiceTest,ContactTriggerTest \
115
+ --source-dir force-app \
116
+ --target-org myOrg
117
+ ```
118
+
119
+ Runs only the named test classes. Sufficient for production if coverage >= 75% for deployed classes.
120
+
121
+ ### RunLocalTests (Recommended for most deployments)
122
+
123
+ ```bash
124
+ sf project deploy start \
125
+ --test-level RunLocalTests \
126
+ --source-dir force-app \
127
+ --target-org myOrg
128
+ ```
129
+
130
+ Runs all tests in the org except managed package tests. Required standard for production deployments.
131
+
132
+ ### RunAllTestsInOrg
133
+
134
+ ```bash
135
+ sf project deploy start \
136
+ --test-level RunAllTestsInOrg \
137
+ --source-dir force-app \
138
+ --target-org myOrg
139
+ ```
140
+
141
+ Runs every test including managed package tests. Use for major releases or full org validation.
142
+
143
+ ---
144
+
145
+ ## package.xml (Manifest) Format
146
+
147
+ ### Targeted Component Deployment
148
+
149
+ ```xml
150
+ <?xml version="1.0" encoding="UTF-8"?>
151
+ <Package xmlns="http://soap.sforce.com/2006/04/metadata">
152
+ <types>
153
+ <members>AccountService</members>
154
+ <members>AccountServiceTest</members>
155
+ <name>ApexClass</name>
156
+ </types>
157
+ <types>
158
+ <members>AccountTrigger</members>
159
+ <name>ApexTrigger</name>
160
+ </types>
161
+ <types>
162
+ <members>accountCard</members>
163
+ <name>LightningComponentBundle</name>
164
+ </types>
165
+ <types>
166
+ <members>Account.Status__c</members>
167
+ <name>CustomField</name>
168
+ </types>
169
+ <version>66.0</version>
170
+ </Package>
171
+ ```
172
+
173
+ > `<members>*</members>` deploys ALL components of that type, including test classes. For production, prefer listing specific members when you need to exclude certain components.
174
+
175
+ ---
176
+
177
+ ## Validation-Then-Quick-Deploy Workflow
178
+
179
+ Validation separates test execution from the actual deployment. Use this for production to minimise downtime.
180
+
181
+ ### Step 1: Validate (runs tests, does not deploy)
182
+
183
+ ```bash
184
+ sf project deploy validate \
185
+ --source-dir force-app \
186
+ --test-level RunLocalTests \
187
+ --target-org prod \
188
+ --wait 60
189
+
190
+ # Capture the Job ID from output
191
+ JOB_ID=0Af5e00000BnXXX
192
+ ```
193
+
194
+ ### Step 2: Wait for Tests to Pass
195
+
196
+ ```bash
197
+ sf project deploy report --job-id $JOB_ID --target-org prod
198
+ sf project deploy resume --job-id $JOB_ID --target-org prod --wait 60
199
+ ```
200
+
201
+ ### Step 3: Quick Deploy (no tests re-run)
202
+
203
+ ```bash
204
+ sf project deploy quick \
205
+ --job-id $JOB_ID \
206
+ --target-org prod \
207
+ --wait 10
208
+ ```
209
+
210
+ Quick deploy window: 10 days after successful validation, but only if no Apex code modifications have been made to the org since the validation.
211
+
212
+ ---
213
+
214
+ ## Destructive Changes (Removing Metadata)
215
+
216
+ Deploy a `destructiveChanges.xml` alongside an empty `package.xml`.
217
+
218
+ ```xml
219
+ <!-- destructiveChanges.xml -->
220
+ <?xml version="1.0" encoding="UTF-8"?>
221
+ <Package xmlns="http://soap.sforce.com/2006/04/metadata">
222
+ <types>
223
+ <members>OldAccountService</members>
224
+ <name>ApexClass</name>
225
+ </types>
226
+ <types>
227
+ <members>Account.LegacyField__c</members>
228
+ <name>CustomField</name>
229
+ </types>
230
+ <version>66.0</version>
231
+ </Package>
232
+ ```
233
+
234
+ ```bash
235
+ sf project deploy start \
236
+ --manifest deploy-package/package.xml \
237
+ --post-destructive-changes deploy-package/destructiveChanges.xml \
238
+ --test-level RunLocalTests \
239
+ --target-org myOrg
240
+ ```
241
+
242
+ `--pre-destructive-changes` runs before deployment; `--post-destructive-changes` after. Use post for removing replaced components.
243
+
244
+ ---
245
+
246
+ ## Rollback Strategies
247
+
248
+ Salesforce does not have native one-click rollback. Plan ahead.
249
+
250
+ ### Full Commit Revert (Preferred)
251
+
252
+ ```bash
253
+ git revert HEAD
254
+ sf project deploy start --source-dir force-app --test-level RunLocalTests --target-org prod
255
+ ```
256
+
257
+ > Single-file rollback is only safe for isolated, dependency-free components. For coupled changes, revert the full git commit and deploy the complete set of changed files.
258
+
259
+ ### Pre-Deployment Snapshot
260
+
261
+ ```bash
262
+ sf project retrieve start \
263
+ --manifest manifest/package.xml \
264
+ --target-org prod \
265
+ --output-dir backup/pre-deploy-$(date +%Y%m%d)
266
+ ```
267
+
268
+ ### Package Version Rollback (Unlocked Packages)
269
+
270
+ ```bash
271
+ sf package install \
272
+ --package "04t5e000000XXXXX" \
273
+ --target-org prod \
274
+ --wait 30
275
+ ```
276
+
277
+ ---
278
+
279
+ ## Common Deployment Errors and Fixes
280
+
281
+ | Error | Cause | Fix |
282
+ |---|---|---|
283
+ | "Test coverage of selected Apex Trigger is 0%" | Trigger has no test class | Write and include a test class |
284
+ | "Average test coverage below 75%" | Org-wide coverage insufficient | Add tests for uncovered classes |
285
+ | "Entity of type X not found" | Component missing in target org | Deploy dependency first or check name |
286
+ | "CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY" | Trigger or validation rule blocking deploy | Check error details for the specific rule |
287
+ | "duplicate value found" | Unique field constraint violation | Check for existing records or duplicate picklist values |
288
+ | "Object X not available in this org" | Feature not enabled in target org | Enable the feature flag or include org setting |
289
+
290
+ ---
291
+
292
+ ## Related
293
+
294
+ - **Constraints**: `sf-deployment-constraints` -- deployment safety rules
295
+ - **Agent**: `sf-architect` -- interactive, in-depth guidance
@@ -0,0 +1,155 @@
1
+ ---
2
+ name: sf-deployment-constraints
3
+ description: "Enforce deployment safety — validation-only first, test coverage gates, metadata ordering, rollback readiness. Use when deploying or packaging ANY Salesforce metadata. Do NOT use for local dev or scratch org pushes."
4
+ origin: SCC
5
+ user-invocable: false
6
+ disable-model-invocation: true
7
+ allowed-tools: Read, Grep, Glob
8
+ ---
9
+
10
+ # Salesforce Deployment Constraints
11
+
12
+ ## When to Use
13
+
14
+ This skill auto-activates when deploying, promoting, or packaging Salesforce metadata. It enforces validation-only-first, test coverage gates, dependency ordering, and rollback readiness for all deployment artifacts.
15
+
16
+ Hard rules that MUST be followed when deploying, promoting, or packaging
17
+ Salesforce metadata to any sandbox or production org. Violations are blocking.
18
+
19
+ Reference: @../_reference/DEPLOYMENT_CHECKLIST.md
20
+ @../_reference/DEPRECATIONS.md
21
+
22
+ ---
23
+
24
+ ## Never
25
+
26
+ 1. **Never deploy without validation-only first.**
27
+ Run `sf project deploy validate` before every real deployment to production.
28
+ Quick-deploy (`sf project deploy quick --job-id <ID>`) is only valid within
29
+ 10 days and only if no Apex has been deployed to the org since validation.
30
+
31
+ 2. **Never skip the test level flag.**
32
+ Every `sf project deploy start` to a shared org MUST include `--test-level`.
33
+ Omitting it lets the platform pick a default that may be `NoTestRun`,
34
+ which silently passes with zero coverage.
35
+
36
+ 3. **Never deploy Profiles alongside other metadata.**
37
+ Profiles depend on every other metadata type (objects, fields, record types,
38
+ Apex, permission sets). Deploy Profiles in a separate, final deployment step
39
+ after all dependencies are confirmed in the target org.
40
+
41
+ 4. **Never force-push to production.**
42
+ Do not use `--ignore-errors` or `--ignore-conflicts` against a production
43
+ org. If the deployment fails, fix the root cause rather than suppressing
44
+ errors. Force flags are acceptable only in developer sandboxes during
45
+ active prototyping.
46
+
47
+ 5. **Never deploy destructive changes without a pre-deploy snapshot.**
48
+ Before any `--post-destructive-changes` or `--pre-destructive-changes`
49
+ deployment, retrieve the current state of affected components:
50
+
51
+ ```bash
52
+ sf project retrieve start \
53
+ --manifest manifest/package.xml \
54
+ --target-org prod \
55
+ --output-dir backup/pre-deploy-$(date +%Y%m%d)
56
+ ```
57
+
58
+ 6. **Never use `--use-most-recent` for quick deploy in multi-team orgs.**
59
+ Another team's deployment between your validate and quick-deploy
60
+ invalidates the job. Always pass `--job-id` explicitly.
61
+
62
+ ---
63
+
64
+ ## Always
65
+
66
+ 1. **Always validate before deploy.**
67
+
68
+ ```bash
69
+ sf project deploy validate \
70
+ --source-dir force-app \
71
+ --test-level RunLocalTests \
72
+ --target-org <org> \
73
+ --wait 60
74
+ ```
75
+
76
+ Then quick-deploy using the returned job ID.
77
+
78
+ 2. **Always specify an appropriate test level.**
79
+
80
+ | Target Environment | Required Test Level |
81
+ |---|---|
82
+ | Developer sandbox (no Apex) | `NoTestRun` acceptable |
83
+ | Developer sandbox (with Apex) | `RunLocalTests` |
84
+ | Staging / UAT sandbox | `RunLocalTests` |
85
+ | Production | `RunLocalTests` (minimum) |
86
+ | Major release / full regression | `RunAllTestsInOrg` |
87
+ | CI/CD PR validation (v66.0+) | `RunRelevantTests` with `@testFor` |
88
+
89
+ 3. **Always check metadata dependency order.**
90
+ Deploy in this sequence; never deploy a later type before its dependency:
91
+ 1. CustomObject
92
+ 2. CustomField
93
+ 3. RecordType
94
+ 4. ValidationRule
95
+ 5. Layout
96
+ 6. ApexClass
97
+ 7. ApexTrigger
98
+ 8. LightningComponentBundle
99
+ 9. FlexiPage / App Page
100
+ 10. PermissionSet
101
+ 11. Profile (always last)
102
+
103
+ 4. **Always have a rollback plan before production deploy.**
104
+
105
+ | Strategy | When |
106
+ |---|---|
107
+ | `git revert` + full redeploy | Coupled multi-file changes |
108
+ | Single-file restore from git | Isolated, dependency-free component |
109
+ | Pre-deploy snapshot retrieve | Any production deployment |
110
+ | Package version rollback | Unlocked/managed package orgs |
111
+
112
+ 5. **Always confirm 75%+ org-wide code coverage before production.**
113
+ Run `sf apex run test --test-level RunLocalTests --code-coverage` locally
114
+ and verify aggregate coverage meets the threshold. Individual deployed
115
+ triggers must have > 0% coverage.
116
+
117
+ 6. **Always include test classes in the deployment package.**
118
+ If deploying Apex classes or triggers, include their corresponding test
119
+ classes in the same `package.xml` or `--source-dir`. Deploying production
120
+ code without its tests causes coverage drift.
121
+
122
+ ---
123
+
124
+ ## Anti-Pattern Table
125
+
126
+ | Anti-Pattern | Why It Fails | Correct Approach |
127
+ |---|---|---|
128
+ | Deploy directly to production without validation | Test failures discovered mid-deploy; partial state | Validate first, then quick-deploy |
129
+ | Use `NoTestRun` for production Apex deployments | Salesforce rejects or silently drops coverage | Use `RunLocalTests` or `RunRelevantTests` |
130
+ | Deploy Profiles in the same package as objects/fields | Profile references fail if dependencies missing | Deploy Profiles separately after all dependencies |
131
+ | Use `--ignore-errors` on production | Partial metadata deployed; org left in broken state | Fix errors, re-validate, re-deploy |
132
+ | Skip pre-deploy snapshot for destructive changes | No way to restore deleted metadata | Always `sf project retrieve start` first |
133
+ | Rely on `--use-most-recent` for quick deploy | Another team's deploy invalidates your validation | Use explicit `--job-id` |
134
+ | Deploy test classes separately from production code | Coverage numbers drift; tests may reference stale code | Co-deploy test and production classes together |
135
+ | Omit `--test-level` flag entirely | Platform default may be `NoTestRun` | Always specify `--test-level` explicitly |
136
+ | Deploy dependent metadata out of order | "Entity not found" errors | Follow the 11-step dependency order above |
137
+ | Single-file rollback for coupled changes | Breaks dependencies between related classes | `git revert` the full commit and redeploy all affected files |
138
+ | Deploy Custom Labels after referencing Apex/LWC | Components fail to compile if label not yet in target org | Include Custom Labels in same package or deploy them first |
139
+ | Deploy Report Types without underlying objects | Report Type references fail on missing custom objects/fields | Deploy objects and fields before Report Types |
140
+ | Deploy Connected App with hardcoded consumer secret | Secrets exposed in source control; revoked secrets break auth | Use Named Credentials or environment-specific Connected App config |
141
+ | Deploy Flow without testing in sandbox first | Flows fire on existing data immediately; no rollback for record changes | Always test Record-Triggered Flows in sandbox with representative data |
142
+ | Use `sf project deploy start` without `--wait` | Detached deploy with no feedback; failures discovered late | Always use `--wait` to monitor deployment progress inline |
143
+
144
+ ---
145
+
146
+ ## Quick Reference: Production Deploy Sequence
147
+
148
+ ```
149
+ 1. Pre-deploy snapshot sf project retrieve start --manifest ... --output-dir backup/
150
+ 2. Validate sf project deploy validate --test-level RunLocalTests --wait 60
151
+ 3. Confirm tests pass sf project deploy report --job-id <ID>
152
+ 4. Quick deploy sf project deploy quick --job-id <ID> --wait 10
153
+ 5. Smoke test Execute post-deploy verification plan
154
+ 6. Confirm or rollback If issues found: git revert + redeploy from backup
155
+ ```