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,183 @@
1
+ ---
2
+ name: save-session
3
+ description: >-
4
+ Use when saving current Salesforce development session state. Persist org context, Apex progress, and pending work to a dated file for future session resumption.
5
+ disable-model-invocation: true
6
+ ---
7
+
8
+ # Save Session — Capture and Persist Session Context
9
+
10
+ Capture everything that happened in this session — what was built, what worked, what failed, what's left — and write it to a dated file so the next session can pick up exactly where this one left off.
11
+
12
+ ## When to Use
13
+
14
+ - End of a work session before closing Claude Code
15
+ - Before hitting context limits (run this first, then start a fresh session)
16
+ - After solving a complex Salesforce problem you want to remember
17
+ - Any time you need to hand off context to a future session
18
+
19
+ ## Process
20
+
21
+ ### Step 1: Gather context
22
+
23
+ Before writing the file, collect:
24
+
25
+ - Read all files modified during this session (use git diff or recall from conversation)
26
+ - Review what was discussed, attempted, and decided
27
+ - Note any errors encountered and how they were resolved (or not)
28
+ - Check current test/sf-deployment status if relevant
29
+ - Note org-specific details (scratch org alias, connected org, CLI version)
30
+
31
+ ### Step 2: Create the sessions folder if it doesn't exist
32
+
33
+ ```bash
34
+ mkdir -p ~/.claude/sessions
35
+ ```
36
+
37
+ ### Step 3: Write the session file
38
+
39
+ Create `~/.claude/sessions/YYYY-MM-DD-<short-id>-session.md`, using today's actual date and a short-id:
40
+
41
+ - Allowed characters: lowercase `a-z`, digits `0-9`, hyphens `-`
42
+ - Minimum length: 8 characters
43
+ - No uppercase letters, no underscores, no spaces
44
+
45
+ Full valid filename example: `2026-03-18-apex-trig-session.md`
46
+
47
+ The short-id should include the project name to enable cross-project isolation (e.g., `myapp-apex-trig` instead of just `apex-trig`). This prevents session file collisions when working across multiple Salesforce projects that share the same `~/.claude/sessions/` directory.
48
+
49
+ ### Step 4: Populate the file with all sections below
50
+
51
+ Keep session files under ~500 lines. Focus on decisions, blockers, and next steps — not full code dumps. If you need to reference large code blocks, point to file paths instead.
52
+
53
+ Write every section honestly. Do not skip sections — write "Nothing yet" or "N/A" if a section genuinely has no content.
54
+
55
+ ### Step 5: Show the file to the user
56
+
57
+ After writing, display the full contents and ask:
58
+
59
+ ```
60
+ Session saved to [actual resolved path to the session file]
61
+
62
+ Does this look accurate? Anything to correct or add before we close?
63
+ ```
64
+
65
+ Wait for confirmation. Make edits if requested.
66
+
67
+ ---
68
+
69
+ ## Session File Format
70
+
71
+ ```markdown
72
+ # Session: YYYY-MM-DD
73
+
74
+ **Started:** [approximate time if known]
75
+ **Last Updated:** [current time]
76
+ **Project:** [project name or path]
77
+ **Topic:** [one-line summary of what this session was about]
78
+
79
+ ---
80
+
81
+ ## What We Are Building
82
+
83
+ [1-3 paragraphs describing the feature, bug fix, or task. Include enough
84
+ context that someone with zero memory of this session can understand the goal.
85
+ Include: what it does, why it's needed, how it fits into the Salesforce org.]
86
+
87
+ ---
88
+
89
+ ## What WORKED (with evidence)
90
+
91
+ [List only things that are confirmed working. For each item include WHY you
92
+ know it works — test passed, deployment succeeded, scratch org validated, etc.
93
+ Without evidence, move it to "Not Tried Yet" instead.]
94
+
95
+ - **[thing that works]** — confirmed by: [specific evidence]
96
+
97
+ If nothing is confirmed working yet: "Nothing confirmed working yet."
98
+
99
+ ---
100
+
101
+ ## What Did NOT Work (and why)
102
+
103
+ [This is the most important section. List every approach tried that failed.
104
+ For each failure write the EXACT reason so the next session doesn't retry it.
105
+ Be specific: "threw X error because Y" is useful. "didn't work" is not.]
106
+
107
+ - **[approach tried]** — failed because: [exact reason / error message]
108
+
109
+ If nothing failed: "No failed approaches yet."
110
+
111
+ ---
112
+
113
+ ## What Has NOT Been Tried Yet
114
+
115
+ [Approaches that seem promising but haven't been attempted.]
116
+
117
+ - [approach / idea]
118
+
119
+ If nothing is queued: "No specific untried approaches identified."
120
+
121
+ ---
122
+
123
+ ## Current State of Files
124
+
125
+ [Every file touched this session. Be precise about what state each file is in.]
126
+
127
+ | File | Status | Notes |
128
+ | ----------------- | -------------- | -------------------------- |
129
+ | `path/to/file.cls` | Complete | [what it does] |
130
+ | `path/to/file.cls` | In Progress | [what's done, what's left] |
131
+ | `path/to/file.js` | Broken | [what's wrong] |
132
+
133
+ If no files were touched: "No files modified this session."
134
+
135
+ ---
136
+
137
+ ## Decisions Made
138
+
139
+ [Architecture choices, tradeoffs accepted, approaches chosen and why.]
140
+
141
+ - **[decision]** — reason: [why this was chosen over alternatives]
142
+
143
+ If no significant decisions: "No major decisions made this session."
144
+
145
+ ---
146
+
147
+ ## Blockers & Open Questions
148
+
149
+ [Anything unresolved that the next session needs to address.]
150
+
151
+ - [blocker / open question]
152
+
153
+ If none: "No active blockers."
154
+
155
+ ---
156
+
157
+ ## Exact Next Step
158
+
159
+ [The single most important thing to do when resuming.]
160
+
161
+ ---
162
+
163
+ ## Environment & Setup Notes
164
+
165
+ [Only fill if relevant — scratch org alias, connected org, SF CLI version, etc.]
166
+ ```
167
+
168
+ ---
169
+
170
+ ## Notes
171
+
172
+ - Each session gets its own file — never append to a previous session's file
173
+ - The "What Did NOT Work" section is the most critical — future sessions will blindly retry failed approaches without it
174
+ - The file is meant to be read by Claude at the start of the next session via the resume-session skill
175
+ - Use the canonical global session store: `~/.claude/sessions/`
176
+
177
+ ## Examples
178
+
179
+ ```
180
+ /save-session
181
+ /save-session Save progress on the AccountManagement feature refactor
182
+ /save-session Checkpoint before switching to the hotfix branch
183
+ ```
@@ -0,0 +1,140 @@
1
+ ---
2
+ name: search-first
3
+ description: >-
4
+ Use when researching existing Salesforce tools, Apex libraries, or metadata patterns before writing custom code. Search-first workflow with agent. Do NOT use for implementing code — only for discovery and evaluation.
5
+ ---
6
+
7
+ # /search-first — Research Before You Code
8
+
9
+ Systematizes the "search for existing solutions before implementing" workflow.
10
+
11
+ ## When to Use
12
+
13
+ - Before writing any custom utility, library, or integration code
14
+ - When evaluating whether to use npm, AppExchange, or MCP packages for a requirement
15
+ - When starting a new feature that likely has existing open-source or platform solutions
16
+ - When deciding between adopting, extending, composing, or building custom code
17
+ - When the user asks to "add X functionality" and you're about to write net-new code
18
+
19
+ ## Workflow
20
+
21
+ ```
22
+ +---------------------------------------------+
23
+ | 1. NEED ANALYSIS |
24
+ | Define what functionality is needed |
25
+ | Identify language/framework constraints |
26
+ +---------------------------------------------+
27
+ | 2. PARALLEL SEARCH (general-purpose agent) |
28
+ | +----------+ +----------+ +----------+ |
29
+ | | npm / | | MCP / | | GitHub / | |
30
+ | | AppExch | | Skills | | Web | |
31
+ | +----------+ +----------+ +----------+ |
32
+ +---------------------------------------------+
33
+ | 3. EVALUATE |
34
+ | Score candidates (functionality, maint, |
35
+ | community, docs, license, deps) |
36
+ +---------------------------------------------+
37
+ | 4. DECIDE |
38
+ | +---------+ +----------+ +---------+ |
39
+ | | Adopt | | Extend | | Build | |
40
+ | | as-is | | /Wrap | | Custom | |
41
+ | +---------+ +----------+ +---------+ |
42
+ +---------------------------------------------+
43
+ | 5. IMPLEMENT |
44
+ | Install package / Configure MCP / |
45
+ | Write minimal custom code |
46
+ +---------------------------------------------+
47
+ ```
48
+
49
+ ## Decision Matrix
50
+
51
+ | Signal | Action |
52
+ |--------|--------|
53
+ | Exact match, well-maintained, MIT/Apache | **Adopt** — install and use directly |
54
+ | Partial match, good foundation | **Extend** — install + write thin wrapper |
55
+ | Multiple weak matches | **Compose** — combine 2-3 small packages |
56
+ | Nothing suitable found | **Build** — write custom, but informed by research |
57
+
58
+ ## How to Use
59
+
60
+ ### Quick Mode (inline)
61
+
62
+ Before writing a utility or adding functionality, mentally run through:
63
+
64
+ 0. Does this already exist in the repo? -> `rg` through relevant modules/tests first
65
+ 1. Is this a common problem? -> Search npm/AppExchange
66
+ 2. Is there an MCP for this? -> Check `~/.claude/settings.json` and search
67
+ 3. Is there a skill for this? -> Check `~/.claude/skills/`
68
+ 4. Is there a GitHub implementation/template? -> Run GitHub code search
69
+
70
+ ### Full Mode (agent)
71
+
72
+ For non-trivial functionality, launch a general-purpose agent:
73
+
74
+ ```
75
+ Task(subagent_type="general-purpose", prompt="
76
+ Research existing tools for: [DESCRIPTION]
77
+ Language/framework: [LANG]
78
+ Constraints: [ANY]
79
+
80
+ Search: npm/AppExchange, MCP servers, Claude Code skills, GitHub
81
+ Return: Structured comparison with recommendation
82
+ ")
83
+ ```
84
+
85
+ ## Salesforce-Specific Tool Discovery
86
+
87
+ | Category | Tools to Check | Notes |
88
+ |----------|---------------|-------|
89
+ | **Testing** | ApexMocks, FFLib, at4dx, Apex Replay Debugger | FFLib is the industry standard |
90
+ | **CI/CD** | CumulusCI, sfdx-git-delta, sf scanner, GitHub Actions | sfdx-git-delta for delta deployments |
91
+ | **Data** | SFDX Data Loader, DLRS (Declarative Lookup Rollup Summary), DataWeave | DLRS replaces rollup trigger code |
92
+ | **Security** | Shield Platform Encryption, Event Monitoring, SF Code Analyzer | Scanner catches PMD violations |
93
+ | **Documentation** | ApexDox, SfApexDoc | Auto-generate Apex docs |
94
+ | **MCP** | @salesforce/mcp (official), community MCP servers | Check official first |
95
+ | **Package Mgmt** | CumulusCI, SFDX Package commands | For managed/unlocked packages |
96
+
97
+ ### MCP Server Evaluation
98
+
99
+ Before building custom tooling, check if an MCP server handles it:
100
+
101
+ 1. **@salesforce/mcp** (official) — orgs, metadata, data, testing, code-analysis, LWC, DevOps
102
+ 2. **Community MCP servers** — search npm for `mcp` + your domain
103
+ 3. **Build custom only if** — no existing server covers your specific business logic
104
+
105
+ ### Salesforce Decision Examples
106
+
107
+ **Scenario 1: "We need rollup summary fields on lookup relationships"**
108
+
109
+ ```
110
+ Search: AppExchange "rollup summary lookup"
111
+ Found: DLRS (Declarative Lookup Rollup Summaries) — 4.8★, 5000+ installs
112
+ Decision: ADOPT — install DLRS, configure declaratively
113
+ Result: Zero custom Apex code for rollup calculations
114
+ ```
115
+
116
+ **Scenario 2: "We need delta deployments in CI"**
117
+
118
+ ```
119
+ Search: npm "salesforce delta deployment"
120
+ Found: sfdx-git-delta — actively maintained, 1000+ stars
121
+ Decision: ADOPT — add as sf plugin, configure in GitHub Actions
122
+ Result: Deploy only changed metadata, 10x faster CI
123
+ ```
124
+
125
+ **Scenario 3: "We need custom approval routing based on territory"**
126
+
127
+ ```
128
+ Search: AppExchange "dynamic approval routing territory"
129
+ Found: Several packages but none match exact business rules
130
+ Decision: BUILD — custom Apex approval process with territory-based routing
131
+ Result: Custom code, but informed by research (knew no package fit)
132
+ ```
133
+
134
+ ## Anti-Patterns
135
+
136
+ - **Jumping to code**: Writing a utility without checking if one exists
137
+ - **Ignoring MCP**: Not checking if an MCP server already provides the capability
138
+ - **Over-customizing**: Wrapping a library so heavily it loses its benefits
139
+ - **Not checking AppExchange**: Many common patterns have managed packages with support
140
+ - **Reinventing DLRS**: Writing rollup trigger code when DLRS handles it declaratively
@@ -0,0 +1,142 @@
1
+ ---
2
+ name: security-scan
3
+ description: >-
4
+ Use when scanning Salesforce org Claude Code configuration for security vulnerabilities, deploy misconfigurations, and injection risks in CLAUDE.md, hooks, and MCP servers. Do NOT use for Apex code review — use sf-security.
5
+ ---
6
+
7
+ > **External tool:** AgentShield is published as `ecc-agentshield` on npm by affaan-m.
8
+ > It is a third-party security scanner, not part of SCC itself.
9
+ > **Maintenance risk:** This package has no SLA or maintenance guarantee. If it becomes unavailable, use the manual scanning section below as a fallback.
10
+
11
+ # Security Scan Skill
12
+
13
+ Audit your Claude Code configuration for security issues using [AgentShield](https://github.com/affaan-m/agentshield).
14
+
15
+ ## When to Use
16
+
17
+ - Before submitting an AppExchange managed package for security review
18
+ - When running a pre-deployment security gate in CI/CD pipelines
19
+ - When auditing a new codebase for SOQL injection, XSS, or FLS violations
20
+ - When a PMD or Checkmarx scan surfaces violations that need triaging
21
+ - When validating that new Apex contributors follow secure coding patterns
22
+
23
+ ## What It Scans
24
+
25
+ | File | Checks |
26
+ |------|--------|
27
+ | `CLAUDE.md` | Hardcoded secrets, auto-run instructions, prompt injection patterns |
28
+ | `settings.json` | Overly permissive allow lists, missing deny lists, dangerous bypass flags |
29
+ | `mcp.json` | Risky MCP servers, hardcoded env secrets, npx supply chain risks |
30
+ | `hooks/` | Command injection via interpolation, data exfiltration, silent error suppression |
31
+ | `agents/*.md` | Unrestricted tool access, prompt injection surface, missing model specs |
32
+
33
+ ## Salesforce-Specific Security Checks
34
+
35
+ Beyond configuration scanning, watch for these Salesforce vulnerability patterns:
36
+
37
+ ### SOQL Injection
38
+
39
+ ```apex
40
+ // VULNERABLE — user input concatenated into query
41
+ String query = 'SELECT Id FROM Account WHERE Name = \'' + userInput + '\'';
42
+
43
+ // SAFE — bind variables
44
+ List<Account> results = [SELECT Id FROM Account WHERE Name = :userInput];
45
+
46
+ // SAFE — Database.queryWithBinds for dynamic SOQL
47
+ Map<String, Object> binds = new Map<String, Object>{ 'userInput' => userInput };
48
+ List<Account> results = Database.queryWithBinds(
49
+ 'SELECT Id FROM Account WHERE Name = :userInput',
50
+ binds, AccessLevel.USER_MODE
51
+ );
52
+ ```
53
+
54
+ ### FLS/CRUD Bypass
55
+
56
+ | Pattern | Risk | Fix |
57
+ |---------|------|-----|
58
+ | SOQL without `WITH USER_MODE` | Reads fields user can't see | Add `WITH USER_MODE` |
59
+ | `Database.insert(records)` without AccessLevel | Skips FLS on write | Use `AccessLevel.USER_MODE` |
60
+ | `WITH SECURITY_ENFORCED` | Throws on inaccessible fields, no sharing enforcement | Prefer `WITH USER_MODE` |
61
+
62
+ ### Sharing Model Violations
63
+
64
+ - `without sharing` on class with `@AuraEnabled` methods — privilege escalation
65
+ - `without sharing` on class with `@RemoteAction` — same risk via Visualforce
66
+ - Missing sharing declaration — inherits calling class context
67
+
68
+ ### XSS Patterns
69
+
70
+ - **Visualforce:** `{!userInput}` without `JSENCODE`, `HTMLENCODE`, or `URLENCODE`
71
+ - **LWC:** `lwc:dom="manual"` with `innerHTML` from user data
72
+ - **Aura:** `$A.util.isEmpty()` doesn't sanitize — validate before DOM insertion
73
+
74
+ ## Usage
75
+
76
+ ### AgentShield Scan
77
+
78
+ ```bash
79
+ # Install and scan
80
+ npm install -g ecc-agentshield
81
+ npx ecc-agentshield scan
82
+
83
+ # With severity filter and JSON output for CI
84
+ npx ecc-agentshield scan --min-severity medium --format json
85
+
86
+ # Auto-fix safe issues
87
+ npx ecc-agentshield scan --fix
88
+ ```
89
+
90
+ ### Severity Levels
91
+
92
+ | Grade | Score | Meaning |
93
+ |-------|-------|---------|
94
+ | A | 90-100 | Secure configuration |
95
+ | B | 75-89 | Minor issues |
96
+ | C | 60-74 | Needs attention |
97
+ | D | 40-59 | Significant risks |
98
+ | F | 0-39 | Critical vulnerabilities |
99
+
100
+ ## Manual Scanning (Without AgentShield)
101
+
102
+ ```bash
103
+ # SOQL Injection — string concatenation in queries
104
+ grep -rn "Database.query" force-app/ --include="*.cls" | grep -v "bind"
105
+
106
+ # Missing sharing declaration
107
+ grep -rEL "with sharing|without sharing|inherited sharing" force-app/main/default/classes/*.cls
108
+
109
+ # Hardcoded Salesforce IDs (15 or 18 char)
110
+ grep -rnE "'00[0-9a-zA-Z]{12,15}'" force-app/ --include="*.cls"
111
+
112
+ # Missing CRUD/FLS on DML
113
+ grep -rn "insert \|update \|delete \|upsert " force-app/ --include="*.cls" | grep -v "stripInaccessible\|USER_MODE\|SECURITY_ENFORCED\|isAccessible\|@IsTest"
114
+
115
+ # Hardcoded endpoints
116
+ grep -rn "https://\|http://" force-app/ --include="*.cls" | grep -v "Named\|test\|mock\|example.com"
117
+ ```
118
+
119
+ ## SF Code Analyzer Integration
120
+
121
+ ```bash
122
+ # Full PMD scan
123
+ sf code-analyzer run --target force-app --format table
124
+
125
+ # Security-focused scan
126
+ sf code-analyzer run --target force-app --category "Security" --format table
127
+ ```
128
+
129
+ ## Remediation Patterns
130
+
131
+ | Finding | Vulnerable Code | Fixed Code |
132
+ |---------|----------------|------------|
133
+ | **SOQL Injection** | `Database.query('...WHERE Name=\'' + name + '\'')` | `[SELECT Id FROM Account WHERE Name = :name]` |
134
+ | **Missing Sharing** | `public class MyService {` | `public with sharing class MyService {` |
135
+ | **FLS Bypass** | `insert records;` | `Database.insert(records, AccessLevel.USER_MODE);` |
136
+ | **Hardcoded ID** | `'012000000000ABC'` | `Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('Customer').getRecordTypeId()` |
137
+ | **XSS (VF)** | `{!userInput}` | `{!HTMLENCODE(userInput)}` |
138
+
139
+ ## Related
140
+
141
+ - Constraint: sf-security-constraints (co-activates for enforcement rules)
142
+ - Action: sf-security (CRUD/FLS implementation procedures)
@@ -0,0 +1,124 @@
1
+ ---
2
+ name: sessions
3
+ description: >-
4
+ Use when managing Salesforce Claude Code session history. List, load, alias, and inspect saved Apex and org development sessions stored in ~/.claude/sessions/.
5
+ ---
6
+
7
+ # Sessions — Session History Management
8
+
9
+ Manage Claude Code session history - list, load, alias, and inspect sessions stored in `~/.claude/sessions/`.
10
+
11
+ ## When to Use
12
+
13
+ - Listing all saved sessions to find a specific one
14
+ - Loading a previous session by ID, date, or alias
15
+ - Creating memorable aliases for frequently referenced sessions
16
+ - Inspecting session metadata and statistics
17
+ - Managing session aliases (create, remove, list)
18
+
19
+ ## Usage
20
+
21
+ `/sessions [list|load|alias|info|aliases|help] [options]`
22
+
23
+ `/sessions help` shows this usage guide.
24
+
25
+ ## Actions
26
+
27
+ ### List Sessions
28
+
29
+ Display all sessions with metadata, filtering, and pagination.
30
+
31
+ ```bash
32
+ /sessions # List all sessions (default)
33
+ /sessions list # Same as above
34
+ /sessions list --limit 10 # Show 10 sessions
35
+ /sessions list --date 2026-03-18 # Filter by date
36
+ /sessions list --search apex # Search by session ID
37
+ ```
38
+
39
+ ### Load Session
40
+
41
+ Load and display a session's content (by ID or alias).
42
+
43
+ ```bash
44
+ /sessions load <id|alias> # Load session
45
+ /sessions load 2026-03-18 # By date
46
+ /sessions load apex-trig # By short ID
47
+ /sessions load my-alias # By alias name
48
+ ```
49
+
50
+ ### Create Alias
51
+
52
+ Create a memorable alias for a session.
53
+
54
+ ```bash
55
+ /sessions alias <id> <name> # Create alias
56
+ /sessions alias 2026-03-18 trigger-work
57
+ ```
58
+
59
+ ### Remove Alias
60
+
61
+ Delete an existing alias.
62
+
63
+ ```bash
64
+ /sessions alias --remove <name> # Remove alias
65
+ /sessions unalias <name> # Same as above
66
+ ```
67
+
68
+ ### Session Info
69
+
70
+ Show detailed information about a session.
71
+
72
+ ```bash
73
+ /sessions info <id|alias> # Show session details
74
+ ```
75
+
76
+ ### List Aliases
77
+
78
+ Show all session aliases.
79
+
80
+ ```bash
81
+ /sessions aliases # List all aliases
82
+ ```
83
+
84
+ ## Arguments
85
+
86
+ - `list [options]` - List sessions
87
+ - `--limit <n>` - Max sessions to show (default: 50)
88
+ - `--date <YYYY-MM-DD>` - Filter by date
89
+ - `--search <pattern>` - Search in session ID
90
+ - `load <id|alias>` - Load session content
91
+ - `alias <id> <name>` - Create alias for session
92
+ - `alias --remove <name>` - Remove alias
93
+ - `unalias <name>` - Same as `--remove`
94
+ - `info <id|alias>` - Show session statistics
95
+ - `aliases` - List all aliases
96
+ - `help` - Show this help
97
+
98
+ ## Examples
99
+
100
+ ```bash
101
+ # List all sessions
102
+ /sessions list
103
+
104
+ # Create an alias for today's session
105
+ /sessions alias 2026-03-18 trigger-work
106
+
107
+ # Load session by alias
108
+ /sessions load trigger-work
109
+
110
+ # Show session info
111
+ /sessions info trigger-work
112
+
113
+ # Remove alias
114
+ /sessions alias --remove trigger-work
115
+
116
+ # List all aliases
117
+ /sessions aliases
118
+ ```
119
+
120
+ ## Notes
121
+
122
+ - Sessions are stored as markdown files in `~/.claude/sessions/`
123
+ - Session IDs can be shortened (first 4-8 characters usually unique enough)
124
+ - Use aliases for frequently referenced sessions