@salesforce/afv-skills 1.28.0 → 1.30.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 (235) hide show
  1. package/README.md +2 -0
  2. package/package.json +1 -1
  3. package/skills/agentforce-architecture-analyze/README.md +2 -8
  4. package/skills/agentforce-architecture-analyze/SKILL.md +2 -2
  5. package/skills/agentforce-architecture-analyze/references/contract.json +4 -4
  6. package/skills/agentforce-architecture-analyze/references/soql_fields.md +1 -1
  7. package/skills/data360-activate/README.md +0 -1
  8. package/skills/data360-activate/SKILL.md +0 -2
  9. package/skills/data360-connect/README.md +0 -2
  10. package/skills/data360-connect/SKILL.md +0 -2
  11. package/skills/data360-harmonize/SKILL.md +0 -1
  12. package/skills/data360-orchestrate/README.md +0 -7
  13. package/skills/data360-orchestrate/SKILL.md +0 -2
  14. package/skills/data360-prepare/README.md +0 -1
  15. package/skills/data360-prepare/SKILL.md +0 -1
  16. package/skills/data360-query/README.md +0 -1
  17. package/skills/data360-query/SKILL.md +0 -1
  18. package/skills/data360-segment/README.md +0 -1
  19. package/skills/data360-segment/SKILL.md +0 -2
  20. package/skills/dx-code-analyzer-configure/SKILL.md +31 -13
  21. package/skills/dx-code-analyzer-custom-rule-create/SKILL.md +484 -0
  22. package/skills/dx-code-analyzer-custom-rule-create/assets/pmd-ruleset-template.xml +31 -0
  23. package/skills/dx-code-analyzer-custom-rule-create/examples/metadata-xml-example-fields-api.md +87 -0
  24. package/skills/dx-code-analyzer-custom-rule-create/examples/metadata-xml-example-flows.md +105 -0
  25. package/skills/dx-code-analyzer-custom-rule-create/examples/metadata-xml-example-permissions.md +95 -0
  26. package/skills/dx-code-analyzer-custom-rule-create/examples/metadata-xml-examples.md +84 -0
  27. package/skills/dx-code-analyzer-custom-rule-create/examples/regex-examples.md +127 -0
  28. package/skills/dx-code-analyzer-custom-rule-create/examples/xpath-examples.md +227 -0
  29. package/skills/dx-code-analyzer-custom-rule-create/references/advanced-pmd-patterns.md +288 -0
  30. package/skills/dx-code-analyzer-custom-rule-create/references/apex-ast-reference.md +127 -0
  31. package/skills/dx-code-analyzer-custom-rule-create/references/eslint-custom-plugins.md +247 -0
  32. package/skills/dx-code-analyzer-custom-rule-create/references/eslint-rules-discovery.md +188 -0
  33. package/skills/dx-code-analyzer-custom-rule-create/references/eslint-tier2-configurable.md +114 -0
  34. package/skills/dx-code-analyzer-custom-rule-create/references/eslint-tier3-custom-plugins.md +113 -0
  35. package/skills/dx-code-analyzer-custom-rule-create/references/metadata-xml-rules.md +285 -0
  36. package/skills/dx-code-analyzer-custom-rule-create/references/regex-rule-schema.md +174 -0
  37. package/skills/dx-code-analyzer-custom-rule-create/references/troubleshooting.md +141 -0
  38. package/skills/dx-code-analyzer-custom-rule-create/references/xpath-patterns-governor-limits.md +83 -0
  39. package/skills/dx-code-analyzer-custom-rule-create/references/xpath-patterns-method-calls.md +108 -0
  40. package/skills/dx-code-analyzer-custom-rule-create/references/xpath-patterns-security.md +45 -0
  41. package/skills/dx-code-analyzer-custom-rule-create/references/xpath-patterns-structure.md +127 -0
  42. package/skills/dx-code-analyzer-custom-rule-create/references/xpath-patterns.md +131 -0
  43. package/skills/dx-code-analyzer-custom-rule-create/scripts/create-pmd-rule.js +209 -0
  44. package/skills/dx-code-analyzer-custom-rule-create/scripts/create-regex-rule.js +220 -0
  45. package/skills/dx-code-analyzer-run/SKILL.md +41 -8
  46. package/skills/experience-cms-brand-apply/SKILL.md +47 -16
  47. package/skills/experience-lwc-generate/README.md +3 -2
  48. package/skills/experience-lwc-generate/references/async-notification-patterns.md +1 -1
  49. package/skills/experience-lwc-generate/references/component-patterns.md +3 -3
  50. package/skills/experience-lwc-generate/references/flow-integration-guide.md +1 -1
  51. package/skills/experience-lwc-generate/references/lwc-best-practices.md +4 -4
  52. package/skills/experience-lwc-generate/references/scoring-and-testing.md +1 -1
  53. package/skills/experience-lwc-generate/references/state-management.md +2 -2
  54. package/skills/experience-lwc-generate/references/triangle-pattern.md +3 -3
  55. package/skills/experience-lwc-generate/scripts/post-tool-validate.py +2 -2
  56. package/skills/experience-lwc-generate/scripts/template_validator.py +1 -1
  57. package/skills/external-diagram-mermaid-generate/README.md +2 -2
  58. package/skills/external-diagram-mermaid-generate/SKILL.md +1 -3
  59. package/skills/external-diagram-mermaid-generate/assets/agentforce/agent-flow.md +4 -4
  60. package/skills/external-diagram-mermaid-generate/assets/architecture/system-landscape.md +1 -1
  61. package/skills/external-diagram-mermaid-generate/assets/datamodel/b2b-commerce-erd.md +3 -3
  62. package/skills/external-diagram-mermaid-generate/assets/datamodel/campaigns-erd.md +1 -1
  63. package/skills/external-diagram-mermaid-generate/assets/datamodel/consent-erd.md +2 -2
  64. package/skills/external-diagram-mermaid-generate/assets/datamodel/files-erd.md +2 -2
  65. package/skills/external-diagram-mermaid-generate/assets/datamodel/forecasting-erd.md +2 -2
  66. package/skills/external-diagram-mermaid-generate/assets/datamodel/fsl-erd.md +2 -2
  67. package/skills/external-diagram-mermaid-generate/assets/datamodel/party-model-erd.md +1 -1
  68. package/skills/external-diagram-mermaid-generate/assets/datamodel/quote-order-erd.md +3 -3
  69. package/skills/external-diagram-mermaid-generate/assets/datamodel/revenue-cloud-erd.md +2 -2
  70. package/skills/external-diagram-mermaid-generate/assets/datamodel/sales-cloud-erd.md +1 -1
  71. package/skills/external-diagram-mermaid-generate/assets/datamodel/salesforce-erd.md +1 -1
  72. package/skills/external-diagram-mermaid-generate/assets/datamodel/scheduler-erd.md +2 -2
  73. package/skills/external-diagram-mermaid-generate/assets/datamodel/service-cloud-erd.md +3 -3
  74. package/skills/external-diagram-mermaid-generate/assets/datamodel/territory-management-erd.md +1 -1
  75. package/skills/external-diagram-mermaid-generate/assets/integration/api-sequence.md +1 -1
  76. package/skills/external-diagram-mermaid-generate/assets/oauth/authorization-code-pkce.md +1 -1
  77. package/skills/external-diagram-mermaid-generate/assets/oauth/authorization-code.md +1 -1
  78. package/skills/external-diagram-mermaid-generate/assets/oauth/client-credentials.md +1 -1
  79. package/skills/external-diagram-mermaid-generate/assets/oauth/device-authorization.md +2 -2
  80. package/skills/external-diagram-mermaid-generate/assets/oauth/jwt-bearer.md +2 -2
  81. package/skills/external-diagram-mermaid-generate/assets/oauth/refresh-token.md +1 -1
  82. package/skills/external-diagram-mermaid-generate/assets/oauth/user-agent-social-sign-on.md +2 -2
  83. package/skills/external-diagram-mermaid-generate/assets/role-hierarchy/user-hierarchy.md +1 -1
  84. package/skills/external-diagram-mermaid-generate/references/color-palette.md +13 -13
  85. package/skills/external-diagram-mermaid-generate/references/diagram-conventions.md +5 -5
  86. package/skills/external-diagram-mermaid-generate/references/erd-conventions.md +1 -1
  87. package/skills/external-diagram-mermaid-generate/references/mermaid-styling.md +2 -2
  88. package/skills/external-diagram-mermaid-generate/references/preview-guide.md +1 -1
  89. package/skills/external-diagram-mermaid-generate/references/usage-examples.md +9 -9
  90. package/skills/external-diagram-mermaid-generate/scripts/README.md +1 -1
  91. package/skills/integration-connectivity-connected-app-configure/README.md +4 -5
  92. package/skills/integration-connectivity-connected-app-configure/SKILL.md +2 -2
  93. package/skills/integration-connectivity-connected-app-configure/references/example-usage.md +7 -7
  94. package/skills/integration-connectivity-connected-app-configure/references/migration-guide.md +1 -1
  95. package/skills/integration-connectivity-connected-app-configure/references/oauth-flows-reference.md +1 -1
  96. package/skills/integration-connectivity-connected-app-configure/references/testing-validation-guide.md +3 -3
  97. package/skills/integration-connectivity-generate/README.md +1 -1
  98. package/skills/integration-connectivity-generate/SKILL.md +6 -0
  99. package/skills/integration-connectivity-generate/assets/callouts/rest-queueable-callout.cls +1 -1
  100. package/skills/integration-connectivity-generate/assets/external-services/external-service-operations.md +1 -1
  101. package/skills/integration-connectivity-generate/assets/soap/wsdl2apex-guide.md +1 -1
  102. package/skills/integration-connectivity-generate/references/callout-patterns.md +4 -0
  103. package/skills/integration-connectivity-generate/references/cdc-guide.md +2 -2
  104. package/skills/integration-connectivity-generate/references/event-driven-architecture-guide.md +5 -5
  105. package/skills/integration-connectivity-generate/references/event-patterns.md +3 -2
  106. package/skills/integration-connectivity-generate/references/external-services-guide.md +4 -1
  107. package/skills/integration-connectivity-generate/references/messaging-api-v2.md +2 -2
  108. package/skills/integration-connectivity-generate/references/named-credentials-automation.md +1 -1
  109. package/skills/integration-connectivity-generate/references/named-credentials-guide.md +12 -2
  110. package/skills/integration-connectivity-generate/references/platform-events-guide.md +3 -3
  111. package/skills/integration-connectivity-generate/references/rest-callout-patterns.md +1 -1
  112. package/skills/integration-connectivity-generate/references/scoring-rubric.md +1 -1
  113. package/skills/integration-connectivity-generate/references/security-best-practices.md +5 -2
  114. package/skills/integration-connectivity-generate/scripts/configure-named-credential.sh +16 -5
  115. package/skills/integration-connectivity-generate/scripts/set-api-credential.sh +11 -2
  116. package/skills/integration-connectivity-generate/scripts/suggest_credential_setup.py +4 -3
  117. package/skills/integration-connectivity-generate/scripts/validate_integration.py +1 -1
  118. package/skills/mobile-platform-native-capabilities-integrate/SKILL.md +3 -3
  119. package/skills/omnistudio-callable-apex-generate/README.md +1 -5
  120. package/skills/omnistudio-callable-apex-generate/SKILL.md +14 -4
  121. package/skills/omnistudio-callable-apex-generate/assets/pattern_callable_vanilla.cls +8 -1
  122. package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterface2Conversion/TRANSCRIPT.md +1 -1
  123. package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterfaceConversion/TRANSCRIPT.md +1 -1
  124. package/skills/omnistudio-datamapper-generate/SKILL.md +1 -1
  125. package/skills/omnistudio-datamapper-generate/assets/completion-summary-template.md +2 -2
  126. package/skills/omnistudio-datamapper-generate/references/best-practices.md +9 -9
  127. package/skills/omnistudio-datamapper-generate/references/naming-conventions.md +6 -6
  128. package/skills/omnistudio-datapacks-deploy/README.md +1 -1
  129. package/skills/omnistudio-datapacks-deploy/examples/business-internet-plus-bundle/deploy-business-internet-plus-bundle.yaml +1 -1
  130. package/skills/omnistudio-dependencies-analyze/SKILL.md +12 -5
  131. package/skills/omnistudio-dependencies-analyze/references/dependency-patterns.md +9 -9
  132. package/skills/omnistudio-dependencies-analyze/references/namespace-guide.md +1 -1
  133. package/skills/omnistudio-epc-catalog-generate/README.md +1 -1
  134. package/skills/omnistudio-flexcard-generate/SKILL.md +11 -4
  135. package/skills/omnistudio-flexcard-generate/references/best-practices.md +6 -6
  136. package/skills/omnistudio-flexcard-generate/references/data-binding-guide.md +9 -9
  137. package/skills/omnistudio-integration-procedure-generate/SKILL.md +9 -1
  138. package/skills/omnistudio-integration-procedure-generate/references/element-types.md +3 -3
  139. package/skills/omnistudio-omniscript-generate/SKILL.md +2 -2
  140. package/skills/omnistudio-omniscript-generate/references/best-practices.md +1 -1
  141. package/skills/omnistudio-omniscript-generate/scripts/check-duplicate-omniscript.sh +8 -0
  142. package/skills/omnistudio-omniscript-generate/scripts/deploy-omniscript.sh +8 -0
  143. package/skills/platform-apex-logs-debug/README.md +2 -2
  144. package/skills/platform-apex-logs-debug/references/cli-commands.md +2 -2
  145. package/skills/platform-apex-logs-debug/references/debug-log-reference.md +16 -16
  146. package/skills/platform-apex-logs-debug/references/log-analysis-tools.md +2 -2
  147. package/skills/platform-apex-test-run/README.md +1 -1
  148. package/skills/platform-apex-test-run/references/test-fix-loop.md +2 -2
  149. package/skills/platform-apex-test-run/references/testing-best-practices.md +3 -3
  150. package/skills/platform-custom-field-generate/SKILL.md +86 -126
  151. package/skills/platform-custom-field-generate/references/advanced-picklists.md +590 -0
  152. package/skills/platform-data-manage/README.md +4 -4
  153. package/skills/platform-data-manage/references/bulk-testing-example.md +1 -1
  154. package/skills/platform-data-manage/references/crud-workflow-example.md +2 -2
  155. package/skills/platform-data-manage/references/orchestration.md +6 -6
  156. package/skills/platform-flexipage-generate/SKILL.md +281 -346
  157. package/skills/platform-flexipage-generate/references/cli_commands.md +39 -0
  158. package/skills/platform-flexipage-generate/references/flexipage_fieldSection.md +162 -0
  159. package/skills/platform-flexipage-generate/references/flexipage_richText.md +84 -0
  160. package/skills/platform-flexipage-generate/references/identifiers_and_regions.md +167 -0
  161. package/skills/platform-flexipage-generate/references/mcp_action_examples.md +104 -0
  162. package/skills/platform-flexipage-generate/references/record_flexipage_dynamicHighlights.md +119 -0
  163. package/skills/platform-flexipage-generate/references/xml_rules.md +335 -0
  164. package/skills/platform-flexipage-generate/scripts/resolve-component-instructions.sh +42 -0
  165. package/skills/platform-flexipage-generate/scripts/scan-lwc-components.sh +113 -0
  166. package/skills/platform-metadata-deploy/README.md +2 -2
  167. package/skills/platform-metadata-deploy/references/agent-deployment-guide.md +2 -2
  168. package/skills/platform-metadata-deploy/references/deployment-workflows.md +16 -16
  169. package/skills/platform-metadata-deploy/references/orchestration.md +3 -3
  170. package/skills/platform-metadata-deploy/references/trigger-deployment-safety.md +2 -2
  171. package/skills/platform-models-api-configure/SKILL.md +140 -0
  172. package/skills/platform-models-api-configure/scripts/get-orgjwt.sh +48 -0
  173. package/skills/platform-policy-rule-generate/SKILL.md +260 -0
  174. package/skills/platform-policy-rule-generate/references/deploy-errors.md +54 -0
  175. package/skills/platform-policy-rule-generate/references/fixtures-index.md +29 -0
  176. package/skills/platform-policy-rule-generate/references/policy-schema-full.md +250 -0
  177. package/skills/platform-policy-rule-generate/references/templates-access.md +132 -0
  178. package/skills/platform-policy-rule-generate/references/templates-advanced.md +58 -0
  179. package/skills/platform-policy-rule-generate/references/templates-record.md +75 -0
  180. package/skills/platform-policy-rule-generate/references/templates-transform.md +70 -0
  181. package/skills/platform-policy-rule-generate/references/templates.md +10 -0
  182. package/skills/platform-policy-rule-generate/references/ui-compatibility.md +142 -0
  183. package/skills/platform-soql-query/README.md +1 -1
  184. package/skills/platform-soql-query/SKILL.md +1 -1
  185. package/skills/platform-soql-query/references/anti-patterns.md +1 -1
  186. package/skills/platform-soql-query/references/field-coverage-rules.md +1 -1
  187. package/skills/platform-soql-query/references/query-optimization.md +1 -1
  188. package/skills/platform-soql-query/scripts/post-tool-validate.py +3 -3
  189. package/skills/platform-value-set-generate/SKILL.md +305 -0
  190. package/skills/data360-activate/CREDITS.md +0 -5
  191. package/skills/data360-connect/CREDITS.md +0 -5
  192. package/skills/data360-harmonize/CREDITS.md +0 -3
  193. package/skills/data360-orchestrate/CREDITS.md +0 -15
  194. package/skills/data360-orchestrate/UPSTREAM.md +0 -45
  195. package/skills/data360-prepare/CREDITS.md +0 -7
  196. package/skills/data360-query/CREDITS.md +0 -7
  197. package/skills/data360-segment/CREDITS.md +0 -3
  198. package/skills/experience-lwc-generate/CREDITS.md +0 -5
  199. package/skills/external-diagram-mermaid-generate/CREDITS.md +0 -46
  200. package/skills/external-diagram-visual-generate/CREDITS.md +0 -80
  201. package/skills/external-diagram-visual-generate/README.md +0 -83
  202. package/skills/external-diagram-visual-generate/SKILL.md +0 -207
  203. package/skills/external-diagram-visual-generate/assets/architecture/integration-flow.md +0 -55
  204. package/skills/external-diagram-visual-generate/assets/erd/core-objects.md +0 -131
  205. package/skills/external-diagram-visual-generate/assets/erd/custom-objects.md +0 -60
  206. package/skills/external-diagram-visual-generate/assets/lwc/dashboard-card.md +0 -45
  207. package/skills/external-diagram-visual-generate/assets/lwc/data-table.md +0 -57
  208. package/skills/external-diagram-visual-generate/assets/lwc/record-form.md +0 -60
  209. package/skills/external-diagram-visual-generate/assets/review/apex-review.md +0 -57
  210. package/skills/external-diagram-visual-generate/assets/review/lwc-review.md +0 -48
  211. package/skills/external-diagram-visual-generate/references/architect-aesthetic-guide.md +0 -257
  212. package/skills/external-diagram-visual-generate/references/examples-index.md +0 -35
  213. package/skills/external-diagram-visual-generate/references/gemini-cli-setup.md +0 -65
  214. package/skills/external-diagram-visual-generate/references/interview-questions.md +0 -529
  215. package/skills/external-diagram-visual-generate/references/iteration-workflow.md +0 -173
  216. package/skills/external-diagram-visual-generate/scripts/check-prerequisites.sh +0 -101
  217. package/skills/external-diagram-visual-generate/scripts/generate_image.py +0 -243
  218. package/skills/integration-connectivity-connected-app-configure/CREDITS.md +0 -3
  219. package/skills/integration-connectivity-generate/CREDITS.md +0 -5
  220. package/skills/omnistudio-callable-apex-generate/CREDITS.md +0 -9
  221. package/skills/omnistudio-datamapper-generate/CREDITS.md +0 -5
  222. package/skills/omnistudio-datapacks-deploy/CREDITS.md +0 -5
  223. package/skills/omnistudio-dependencies-analyze/CREDITS.md +0 -5
  224. package/skills/omnistudio-epc-catalog-generate/CREDITS.md +0 -14
  225. package/skills/omnistudio-flexcard-generate/CREDITS.md +0 -5
  226. package/skills/omnistudio-integration-procedure-generate/CREDITS.md +0 -5
  227. package/skills/omnistudio-omniscript-generate/CREDITS.md +0 -5
  228. package/skills/platform-apex-generate/CREDITS.md +0 -5
  229. package/skills/platform-apex-logs-debug/CREDITS.md +0 -22
  230. package/skills/platform-apex-test-generate/CREDITS.md +0 -5
  231. package/skills/platform-apex-test-run/CREDITS.md +0 -22
  232. package/skills/platform-data-manage/CREDITS.md +0 -5
  233. package/skills/platform-metadata-deploy/CREDITS.md +0 -25
  234. package/skills/platform-soql-query/CREDITS.md +0 -21
  235. /package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterfaceConversion/{MyCustomVlocityOpenInterface2.cls → MyCustomClass.cls} +0 -0
@@ -1,101 +0,0 @@
1
- #!/bin/bash
2
- # check-prerequisites.sh - Verify external-diagram-visual-generate requirements before use
3
- # Returns 0 if all required checks pass, 1 if any required fail
4
-
5
- RED='\033[0;31m'
6
- GREEN='\033[0;32m'
7
- YELLOW='\033[1;33m'
8
- BLUE='\033[0;34m'
9
- GRAY='\033[0;90m'
10
- NC='\033[0m'
11
-
12
- ERRORS=0
13
- WARNINGS=0
14
-
15
- echo ""
16
- echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
17
- echo -e "${BLUE} 📸 SF-IMAGEN PREREQUISITES CHECK${NC}"
18
- echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
19
- echo ""
20
- echo -e "${GRAY} REQUIRED:${NC}"
21
-
22
- # Check 1: macOS (required for Preview app)
23
- echo -n " Checking macOS (for Preview app)... "
24
- if [[ "$OSTYPE" == "darwin"* ]]; then
25
- echo -e "${GREEN}✓ macOS detected${NC}"
26
- else
27
- echo -e "${RED}✗ Not macOS${NC}"
28
- echo -e " ${YELLOW}→ external-diagram-visual-generate uses macOS Preview app for image display${NC}"
29
- echo -e " ${YELLOW}→ Current OS: $OSTYPE${NC}"
30
- ERRORS=$((ERRORS + 1))
31
- fi
32
-
33
- # Check 2: Gemini API Key
34
- echo -n " Checking GEMINI_API_KEY... "
35
- if [[ -n "$GEMINI_API_KEY" ]]; then
36
- # Mask the key for display
37
- MASKED_KEY="${GEMINI_API_KEY:0:10}...${GEMINI_API_KEY: -4}"
38
- echo -e "${GREEN}✓ Set ($MASKED_KEY)${NC}"
39
- else
40
- echo -e "${RED}✗ Not set${NC}"
41
- echo -e " ${YELLOW}→ Nano Banana Pro requires a personal API key${NC}"
42
- echo -e " ${YELLOW}→ Get one at: https://aistudio.google.com/apikey${NC}"
43
- echo -e " ${YELLOW}→ Add to ~/.zshrc: export GEMINI_API_KEY=\"your-key\"${NC}"
44
- ERRORS=$((ERRORS + 1))
45
- fi
46
-
47
- # Check 3: Gemini CLI
48
- echo -n " Checking Gemini CLI... "
49
- if command -v gemini &> /dev/null; then
50
- GEMINI_VERSION=$(gemini --version 2>/dev/null | head -1 || echo "installed")
51
- echo -e "${GREEN}✓ $GEMINI_VERSION${NC}"
52
- else
53
- echo -e "${RED}✗ Not installed${NC}"
54
- echo -e " ${YELLOW}→ Install: npm install -g @google/gemini-cli${NC}"
55
- ERRORS=$((ERRORS + 1))
56
- fi
57
-
58
- # Check 4: Nano Banana Extension
59
- echo -n " Checking Nano Banana extension... "
60
- if gemini extensions list 2>/dev/null | grep -q "nanobanana"; then
61
- echo -e "${GREEN}✓ Installed${NC}"
62
- else
63
- echo -e "${RED}✗ Not installed${NC}"
64
- echo -e " ${YELLOW}→ Install: gemini extensions install nanobanana${NC}"
65
- ERRORS=$((ERRORS + 1))
66
- fi
67
-
68
- echo ""
69
- echo -e "${GRAY} OPTIONAL (for 4K/editing via Python script):${NC}"
70
-
71
- # Check 5: uv (optional, for Python script)
72
- echo -n " Checking uv (Python runner)... "
73
- if command -v uv &> /dev/null; then
74
- UV_VERSION=$(uv --version 2>&1 | head -1)
75
- echo -e "${GREEN}✓ $UV_VERSION${NC}"
76
- else
77
- echo -e "${YELLOW}○ Not installed (optional)${NC}"
78
- echo -e " ${GRAY}→ For 4K resolution/editing: curl -LsSf https://astral.sh/uv/install.sh | sh${NC}"
79
- WARNINGS=$((WARNINGS + 1))
80
- fi
81
-
82
- echo ""
83
- echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
84
-
85
- if [[ $ERRORS -eq 0 ]]; then
86
- if [[ $WARNINGS -gt 0 ]]; then
87
- echo -e " ${GREEN}✅ All required prerequisites met!${NC}"
88
- echo -e " ${YELLOW}⚠️ $WARNINGS optional feature(s) unavailable${NC}"
89
- else
90
- echo -e " ${GREEN}✅ All prerequisites met! external-diagram-visual-generate is ready to use.${NC}"
91
- fi
92
- echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
93
- echo ""
94
- exit 0
95
- else
96
- echo -e " ${RED}❌ $ERRORS required prerequisite(s) missing.${NC}"
97
- echo -e " ${RED} Please fix before using external-diagram-visual-generate.${NC}"
98
- echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
99
- echo ""
100
- exit 1
101
- fi
@@ -1,243 +0,0 @@
1
- #!/usr/bin/env python3
2
- # /// script
3
- # requires-python = ">=3.10"
4
- # dependencies = ["google-genai>=1.0.0", "pillow>=10.0.0"]
5
- # ///
6
- """
7
- Direct Gemini API image generation with resolution control.
8
-
9
- This script complements the CLI extension for power features:
10
- - Resolution control: 1K (draft), 2K (medium), 4K (production)
11
- - Image editing: Modify existing images with natural language
12
- - Timestamp filenames: Automatic versioning for iteration tracking
13
-
14
- Usage:
15
- # Generate new image at 1K (draft)
16
- uv run scripts/generate_image.py -p "Salesforce ERD diagram..." -f "account-erd.png"
17
-
18
- # Generate at 4K (production)
19
- uv run scripts/generate_image.py -p "Salesforce ERD diagram..." -f "account-erd.png" -r 4K
20
-
21
- # Edit existing image
22
- uv run scripts/generate_image.py -p "Add a legend in bottom right" -i input.png -f "output.png"
23
-
24
- Workflow: Draft → Iterate → Final
25
- 1. Generate at 1K for quick feedback (~3s)
26
- 2. Refine prompt until layout/content is correct
27
- 3. Generate final at 4K for production quality (~10s)
28
-
29
- License: MIT
30
- """
31
-
32
- import argparse
33
- import os
34
- import subprocess
35
- import sys
36
- from datetime import datetime
37
- from io import BytesIO
38
- from pathlib import Path
39
-
40
- try:
41
- from google import genai
42
- from google.genai import types
43
- from PIL import Image
44
- except ImportError as e:
45
- print(f"Error: Missing dependency - {e}")
46
- print("Run with: uv run scripts/generate_image.py ...")
47
- sys.exit(1)
48
-
49
-
50
- # Resolution mapping (uppercase K required by API!)
51
- RESOLUTIONS = {
52
- "1K": "1K", # ~1024px - drafts, fast iteration
53
- "2K": "2K", # ~2048px - medium quality
54
- "4K": "4K", # ~4096px - production quality
55
- }
56
-
57
- # Default output directory (matches CLI extension)
58
- OUTPUT_DIR = Path.home() / "nanobanana-output"
59
-
60
-
61
- def get_auto_resolution(image_path: str) -> str:
62
- """Auto-detect resolution based on input image dimensions."""
63
- try:
64
- with Image.open(image_path) as img:
65
- max_dim = max(img.width, img.height)
66
- if max_dim < 1500:
67
- return "1K"
68
- elif max_dim < 3000:
69
- return "2K"
70
- else:
71
- return "4K"
72
- except Exception:
73
- return "1K"
74
-
75
-
76
- def generate_image(
77
- prompt: str,
78
- filename: str,
79
- resolution: str = "1K",
80
- input_image: str | None = None,
81
- api_key: str | None = None,
82
- aspect_ratio: str | None = None,
83
- ) -> str:
84
- """Generate or edit an image using Gemini 3 Pro Image API.
85
-
86
- Args:
87
- prompt: Text description for generation or editing instruction
88
- filename: Output filename (timestamp will be prepended)
89
- resolution: Output resolution - 1K, 2K, or 4K (uppercase required!)
90
- input_image: Path to existing image for editing (optional)
91
- api_key: Gemini API key (falls back to GEMINI_API_KEY env var)
92
- aspect_ratio: Aspect ratio like "16:9", "1:1", "4:3" (optional)
93
-
94
- Returns:
95
- Path to saved image file
96
- """
97
- # Get API key
98
- api_key = api_key or os.environ.get("GEMINI_API_KEY")
99
- if not api_key:
100
- raise ValueError(
101
- "GEMINI_API_KEY not found. Set it in ~/.zshrc or pass via --api-key"
102
- )
103
-
104
- # Initialize client
105
- client = genai.Client(api_key=api_key)
106
-
107
- # Build contents (image first if editing, then prompt)
108
- contents = []
109
- if input_image:
110
- img = Image.open(input_image)
111
- # Convert RGBA to RGB if needed
112
- if img.mode == "RGBA":
113
- background = Image.new("RGB", img.size, (255, 255, 255))
114
- background.paste(img, mask=img.split()[3])
115
- img = background
116
- contents.append(img)
117
-
118
- # Auto-detect resolution for editing if not specified
119
- if resolution == "1K":
120
- resolution = get_auto_resolution(input_image)
121
- print(f"Auto-detected resolution: {resolution}")
122
-
123
- contents.append(prompt)
124
-
125
- # Build image config
126
- image_config_kwargs = {"image_size": RESOLUTIONS[resolution]}
127
- if aspect_ratio:
128
- image_config_kwargs["aspect_ratio"] = aspect_ratio
129
-
130
- # Generate with resolution config
131
- print(f"Generating at {resolution} resolution...")
132
- response = client.models.generate_content(
133
- model="gemini-3-pro-image-preview",
134
- contents=contents,
135
- config=types.GenerateContentConfig(
136
- response_modalities=["IMAGE", "TEXT"],
137
- image_config=types.ImageConfig(**image_config_kwargs),
138
- ),
139
- )
140
-
141
- # Save output with timestamp filename
142
- OUTPUT_DIR.mkdir(exist_ok=True)
143
- timestamp = datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
144
-
145
- # Clean filename (remove extension if present, we'll add .png)
146
- clean_name = Path(filename).stem
147
- output_filename = f"{timestamp}-{clean_name}.png"
148
- output_path = OUTPUT_DIR / output_filename
149
-
150
- # Extract and save image from response
151
- for part in response.candidates[0].content.parts:
152
- if hasattr(part, "inline_data") and part.inline_data:
153
- img = Image.open(BytesIO(part.inline_data.data))
154
- # Convert to RGB if needed
155
- if img.mode == "RGBA":
156
- background = Image.new("RGB", img.size, (255, 255, 255))
157
- background.paste(img, mask=img.split()[3])
158
- img = background
159
- img.save(output_path, "PNG")
160
- return str(output_path)
161
-
162
- raise RuntimeError("No image data in response")
163
-
164
-
165
- def main():
166
- parser = argparse.ArgumentParser(
167
- description="Generate images with Gemini 3 Pro Image API",
168
- formatter_class=argparse.RawDescriptionHelpFormatter,
169
- epilog="""
170
- Examples:
171
- # Draft (fast, cheap)
172
- uv run generate_image.py -p "Account ERD diagram" -f "account-erd.png"
173
-
174
- # Production (4K)
175
- uv run generate_image.py -p "Account ERD diagram" -f "account-erd.png" -r 4K
176
-
177
- # Edit existing image
178
- uv run generate_image.py -p "Add legend" -i prev.png -f "updated.png"
179
-
180
- # With aspect ratio
181
- uv run generate_image.py -p "Dashboard mockup" -f "dash.png" -a "16:9"
182
- """,
183
- )
184
- parser.add_argument(
185
- "-p", "--prompt",
186
- required=True,
187
- help="Image description or editing instruction",
188
- )
189
- parser.add_argument(
190
- "-f", "--filename",
191
- required=True,
192
- help="Output filename (timestamp auto-prepended)",
193
- )
194
- parser.add_argument(
195
- "-r", "--resolution",
196
- choices=["1K", "2K", "4K"],
197
- default="1K",
198
- help="Output resolution (default: 1K for drafts)",
199
- )
200
- parser.add_argument(
201
- "-i", "--input-image",
202
- help="Path to existing image for editing",
203
- )
204
- parser.add_argument(
205
- "-k", "--api-key",
206
- help="Gemini API key (defaults to GEMINI_API_KEY env var)",
207
- )
208
- parser.add_argument(
209
- "-a", "--aspect-ratio",
210
- help="Aspect ratio (e.g., '16:9', '1:1', '4:3')",
211
- )
212
- parser.add_argument(
213
- "--no-open",
214
- action="store_true",
215
- help="Don't auto-open the image in Preview after generation",
216
- )
217
-
218
- args = parser.parse_args()
219
-
220
- try:
221
- output_path = generate_image(
222
- prompt=args.prompt,
223
- filename=args.filename,
224
- resolution=args.resolution,
225
- input_image=args.input_image,
226
- api_key=args.api_key,
227
- aspect_ratio=args.aspect_ratio,
228
- )
229
- print(f"✅ Saved: {output_path}")
230
-
231
- # Auto-open in macOS Preview unless --no-open is specified
232
- if not args.no_open:
233
- subprocess.run(["open", output_path], check=False)
234
- print(f" 📸 Opened in Preview")
235
- else:
236
- print(f" Open with: open {output_path}")
237
- except Exception as e:
238
- print(f"❌ Error: {e}")
239
- sys.exit(1)
240
-
241
-
242
- if __name__ == "__main__":
243
- main()
@@ -1,3 +0,0 @@
1
- # Credits & Acknowledgments
2
-
3
- This skill is built on established Salesforce OAuth and identity platform patterns, incorporating security best practices and architectural guidance from the Salesforce platform ecosystem.
@@ -1,5 +0,0 @@
1
- # Credits & Acknowledgments
2
-
3
- This skill is built on Salesforce integration platform patterns, incorporating security best practices and architectural guidance from the Salesforce platform ecosystem.
4
-
5
- ---
@@ -1,9 +0,0 @@
1
- # Credits
2
-
3
- This skill draws on established Salesforce Industries patterns for callable Apex implementations,
4
- including the `System.Callable` interface, `VlocityOpenInterface`, and `VlocityOpenInterface2`
5
- extension points used in OmniStudio and Industries integrations.
6
-
7
- The guidance, migration patterns, and bundled examples reflect best practices for secure,
8
- deterministic callable implementations across Industries extension points such as OmniScripts,
9
- Integration Procedures, and DataRaptors.
@@ -1,5 +0,0 @@
1
- # Credits & Acknowledgments
2
-
3
- This skill reflects the collective knowledge and conventions of the Salesforce OmniStudio ecosystem.
4
-
5
- ---
@@ -1,5 +0,0 @@
1
- # Credits & Acknowledgments
2
-
3
- This skill is based on practical OmniStudio/Vlocity DataPack deployment workflows and the Vlocity Build command model.
4
-
5
- ---
@@ -1,5 +0,0 @@
1
- # Credits & Acknowledgments
2
-
3
- This skill draws on established patterns and platform knowledge from the broader OmniStudio ecosystem.
4
-
5
- ---
@@ -1,14 +0,0 @@
1
- # Credits & Acknowledgments
2
-
3
- This skill was created from practical Salesforce Industries CME EPC implementation patterns and DataPack examples in this repository.
4
-
5
- ## Repository Example Sources
6
-
7
- The example packs in this skill are curated, reusable sample payloads for documentation and template authoring.
8
-
9
- - `assets/` (canonical EPC bundle template set)
10
- - `assets/examples/samsung-galaxy-s22-bundle/` (bundle offer example)
11
- - `assets/examples/business-internet-premium-fttc-simple-offer/` (simple offer example)
12
- - `assets/examples/business-internet-pro-vpl-simple-offer/` (simple offer example)
13
- - `assets/examples/static-ip-simple-offer/` (simple offer example)
14
- - `examples/business-internet-plus-bundle/` (generated example with transcript)
@@ -1,5 +0,0 @@
1
- # Credits
2
-
3
- Official Salesforce OmniStudio tooling for FlexCard metadata authoring and validation. Primary inspiration for the skill's data source binding patterns and definition structure.
4
-
5
- ---
@@ -1,5 +0,0 @@
1
- # Credits & Acknowledgments
2
-
3
- This skill was built upon the collective wisdom of the Salesforce OmniStudio community. We gratefully acknowledge the following resources whose ideas, patterns, and best practices have shaped this skill.
4
-
5
- ---
@@ -1,5 +0,0 @@
1
- # Credits & Acknowledgments
2
-
3
- This skill reflects patterns and conventions established within the Salesforce OmniStudio platform and its practitioner community.
4
-
5
- ---
@@ -1,5 +0,0 @@
1
- # Credits & Acknowledgments
2
-
3
- This skill is built on established Salesforce Apex development patterns and the collective knowledge of the Salesforce developer community.
4
-
5
- ---
@@ -1,22 +0,0 @@
1
- # Credits & Acknowledgments
2
-
3
- This skill is built on Salesforce's official Apex debugging documentation and established Apex performance patterns. The benchmarking techniques, governor limit patterns, and optimization approaches incorporated here reflect current Apex development best practices.
4
-
5
- ---
6
-
7
- ## Key Patterns
8
-
9
- ### Governor Limit Awareness
10
- Governor limit values, debug log event types, and the Apex execution model are defined by the Salesforce platform and reflected in `references/debug-log-reference.md`.
11
-
12
- ### Debug Log Specifications
13
- Log event specifications, log level definitions, and format documentation are based on official Apex debug log behavior and integrated into `references/debug-log-reference.md`.
14
-
15
- ### Benchmarking Patterns
16
- String-building performance characteristics, loop iteration comparisons, and data structure lookup benchmarks reflect well-established Apex optimization techniques adapted into the reusable templates in this skill.
17
-
18
- ---
19
-
20
- ## License
21
-
22
- MIT licensed. See the LICENSE file for complete terms.
@@ -1,5 +0,0 @@
1
- # Credits & Acknowledgments
2
-
3
- This skill is built on established Salesforce Apex development patterns and the collective knowledge of the Salesforce developer community.
4
-
5
- ---
@@ -1,22 +0,0 @@
1
- # Credits & Acknowledgments
2
-
3
- This skill integrates concepts and patterns from Salesforce documentation and the broader Salesforce developer community. The goal is to move beyond minimum coverage targets toward true unit testing with proper isolation, mocking, and disciplined test-fix workflows.
4
-
5
- ---
6
-
7
- ## Key Patterns Integrated
8
-
9
- | Pattern | Integration |
10
- |---------|-------------|
11
- | DML Mocking | `assets/dml-mock.cls` |
12
- | Mocking vs Stubbing | `references/mocking-patterns.md` |
13
- | Test Data Factory | `assets/test-data-factory.cls` |
14
- | HttpCalloutMock | `assets/mock-callout-test.cls` |
15
- | StubProvider | `assets/stub-provider-example.cls` |
16
- | Performant Tests | `references/performance-optimization.md` |
17
-
18
- ---
19
-
20
- ## Philosophy
21
-
22
- This skill teaches Apex developers how to write fast, reliable, maintainable tests using vanilla Apex patterns — no external packages or libraries required. All patterns work in any Salesforce org out of the box.
@@ -1,5 +0,0 @@
1
- # Credits & Acknowledgments
2
-
3
- This skill is built on established Salesforce data, SOQL, and bulk operation patterns from the Salesforce platform ecosystem.
4
-
5
- ---
@@ -1,25 +0,0 @@
1
- # Credits & Acknowledgments
2
-
3
- This skill is built on established Salesforce DevOps practices, official platform tooling, and the collective knowledge embedded in Salesforce's documentation and developer ecosystem.
4
-
5
- ---
6
-
7
- ## Key Concepts
8
-
9
- ### Two-Phase Deployment Pattern
10
- The `--dry-run` validation before actual deployment is a community-established best practice to prevent production failures, widely promoted across official Salesforce documentation.
11
-
12
- ### Quick Deploy Strategy
13
- The workflow of validating with tests, then using quick deploy for actual deployment, originates from Salesforce release management best practices.
14
-
15
- ### Test Level Recommendations
16
- The guidance on appropriate test levels (RunLocalTests vs RunAllTests vs RunSpecifiedTests) comes from official Salesforce deployment documentation.
17
-
18
- ### Incremental Deployment Strategy
19
- The recommendation for small, frequent deployments over large batches is a DevOps industry best practice adapted for Salesforce.
20
-
21
- ---
22
-
23
- ## Special Thanks
24
-
25
- To the entire Salesforce DevOps community — release managers, architects, developers, and CI/CD engineers — for continuously improving deployment practices and making Salesforce deployments more reliable.
@@ -1,21 +0,0 @@
1
- # Credits & Acknowledgments
2
-
3
- This skill integrates concepts and patterns from the Salesforce developer community and official Salesforce documentation. The goal is to teach Apex developers how to write efficient, maintainable SOQL using vanilla Apex patterns that don't require external package installation.
4
-
5
- ---
6
-
7
- ## Key Patterns Integrated
8
-
9
- | Pattern | Integration |
10
- |---------|-------------|
11
- | Selector Layer architecture | `references/selector-patterns.md` |
12
- | Bulkification and Map-based lookup | `assets/bulkified-query-pattern.cls` |
13
- | SOQL anti-patterns catalog | `references/anti-patterns.md` |
14
- | Query Plan analysis | `SKILL.md`, `assets/optimization-patterns.soql` |
15
- | Field coverage validation | `references/field-coverage-rules.md` |
16
-
17
- ---
18
-
19
- ## Philosophy
20
-
21
- This skill integrates **concepts and patterns** from community resources, not specific libraries as dependencies. All patterns produce vanilla Apex code that works in any Salesforce org without additional package installation.