@salesforce/afv-skills 1.38.0 → 1.40.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.
- package/package.json +3 -3
- package/skills/agentforce-architecture-analyze/SKILL.md +1 -0
- package/skills/agentforce-bot-upgrade/SKILL.md +1 -0
- package/skills/agentforce-d360-analyze/README.md +2 -2
- package/skills/agentforce-d360-analyze/SKILL.md +7 -6
- package/skills/agentforce-d360-analyze/references/artifacts.md +1 -1
- package/skills/agentforce-d360-analyze/references/dc_dmo_fields.md +4 -4
- package/skills/agentforce-d360-analyze/references/dc_pipeline_contract.md +2 -2
- package/skills/agentforce-generate/SKILL.md +1 -0
- package/skills/agentforce-observe/SKILL.md +1 -0
- package/skills/agentforce-test/SKILL.md +1 -0
- package/skills/automation-flow-generate/SKILL.md +1 -0
- package/skills/automation-sandbox-post-copy-config-generate/SKILL.md +1 -0
- package/skills/automation-sandbox-post-copy-configure/SKILL.md +1 -0
- package/skills/commerce-b2b-open-code-components-integrate/SKILL.md +11 -10
- package/skills/commerce-b2b-open-code-components-replace/SKILL.md +1 -0
- package/skills/commerce-b2b-store-create/SKILL.md +4 -4
- package/skills/commerce-b2b-store-create/references/store-vs-storefront.md +2 -2
- package/skills/data360-activate/SKILL.md +1 -1
- package/skills/data360-code-extension-generate/SKILL.md +1 -0
- package/skills/data360-connect/SKILL.md +1 -1
- package/skills/data360-harmonize/SKILL.md +1 -1
- package/skills/data360-orchestrate/SKILL.md +1 -1
- package/skills/data360-prepare/SKILL.md +1 -1
- package/skills/data360-query/SKILL.md +1 -1
- package/skills/data360-schema-get/SKILL.md +1 -0
- package/skills/data360-segment/SKILL.md +1 -1
- package/skills/design-systems-slds-apply/SKILL.md +1 -0
- package/skills/design-systems-slds-validate/SKILL.md +1 -0
- package/skills/design-systems-slds-validate/references/quality-checks.md +5 -5
- package/skills/design-systems-slds2-migrate/SKILL.md +5 -4
- package/skills/design-systems-slds2-migrate/references/color-hooks-decision-guide.md +1 -1
- package/skills/design-systems-slds2-migrate/references/examples.md +3 -3
- package/skills/design-systems-slds2-migrate/references/rule-lwc-token-to-slds-hook.md +1 -1
- package/skills/design-systems-slds2-migrate/references/rule-no-deprecated-tokens-slds1.md +2 -2
- package/skills/design-systems-slds2-migrate/references/rule-no-hardcoded-values.md +2 -2
- package/skills/design-systems-slds2-migrate/references/rule-no-slds-class-overrides.md +1 -1
- package/skills/dx-apexguru-scan/SKILL.md +1 -0
- package/skills/dx-app-analytics-query/SKILL.md +1 -0
- package/skills/dx-code-analyzer-configure/SKILL.md +6 -5
- package/skills/dx-code-analyzer-configure/references/ci-cd-templates.md +2 -2
- package/skills/dx-code-analyzer-custom-rule-create/SKILL.md +27 -26
- package/skills/dx-code-analyzer-run/SKILL.md +10 -9
- package/skills/dx-code-analyzer-run/references/post-scan-workflows.md +5 -5
- package/skills/dx-code-analyzer-run/references/vendor-file-handling.md +2 -2
- package/skills/dx-devops-pipeline-manage/SKILL.md +1 -0
- package/skills/dx-devops-promote/SKILL.md +1 -0
- package/skills/dx-devops-test-failures-analyze/SKILL.md +1 -0
- package/skills/dx-devops-test-pipeline-configure/SKILL.md +1 -0
- package/skills/dx-devops-test-suite-assignments-configure/SKILL.md +1 -0
- package/skills/dx-devops-test-suite-run/SKILL.md +1 -0
- package/skills/dx-devops-work-item-manage/SKILL.md +1 -0
- package/skills/dx-org-devhub-configure/SKILL.md +1 -0
- package/skills/dx-org-manage/SKILL.md +1 -0
- package/skills/dx-org-permission-set-assign/SKILL.md +1 -0
- package/skills/dx-org-switch/SKILL.md +1 -1
- package/skills/dx-org-trial-expiration-check/SKILL.md +1 -0
- package/skills/dx-pkg-post-install-configure/SKILL.md +1 -0
- package/skills/experience-aura-lwc-migrate/SKILL.md +1 -0
- package/skills/experience-cms-brand-apply/SKILL.md +1 -1
- package/skills/experience-content-media-search/SKILL.md +18 -18
- package/skills/experience-content-media-stock-image-search/SKILL.md +1 -0
- package/skills/experience-lds-best-practices-apply/SKILL.md +1 -0
- package/skills/experience-lds-data-requirements-generate/SKILL.md +1 -0
- package/skills/experience-lds-graphql-generate/SKILL.md +1 -0
- package/skills/experience-lwc-accessibility-validate/SKILL.md +1 -0
- package/skills/experience-lwc-base-components-integrate/SKILL.md +1 -0
- package/skills/experience-lwc-design-generate/SKILL.md +1 -0
- package/skills/experience-lwc-generate/SKILL.md +1 -0
- package/skills/experience-lwc-rtl-validate/SKILL.md +1 -0
- package/skills/experience-lwc-runtime-observe/SKILL.md +1 -0
- package/skills/experience-lwc-security-validate/SKILL.md +1 -0
- package/skills/experience-lwc-typescript-migrate/SKILL.md +1 -0
- package/skills/experience-lwr-site-generate/SKILL.md +1 -0
- package/skills/experience-ui-bundle-2gp-deploy/SKILL.md +1 -0
- package/skills/experience-ui-bundle-agentforce-client-generate/SKILL.md +1 -0
- package/skills/experience-ui-bundle-app-coordinate/SKILL.md +1 -0
- package/skills/experience-ui-bundle-custom-app-generate/SKILL.md +1 -0
- package/skills/experience-ui-bundle-deploy/SKILL.md +1 -0
- package/skills/experience-ui-bundle-features-generate/SKILL.md +1 -0
- package/skills/experience-ui-bundle-file-upload-generate/SKILL.md +1 -0
- package/skills/experience-ui-bundle-frontend-generate/SKILL.md +1 -0
- package/skills/experience-ui-bundle-localize/SKILL.md +1 -0
- package/skills/experience-ui-bundle-metadata-generate/SKILL.md +1 -0
- package/skills/experience-ui-bundle-mfa-configure/SKILL.md +1 -0
- package/skills/experience-ui-bundle-project-generate/SKILL.md +1 -0
- package/skills/experience-ui-bundle-salesforce-data-access/SKILL.md +1 -0
- package/skills/experience-ui-bundle-site-generate/SKILL.md +1 -0
- package/skills/experience-ui-bundle-site-generate/references/configure-metadata-custom-site.md +1 -1
- package/skills/experience-ui-bundle-site-generate/references/configure-metadata-digital-experience-bundle.md +1 -1
- package/skills/experience-ui-bundle-site-generate/references/configure-metadata-digital-experience-config.md +1 -1
- package/skills/experience-ui-bundle-site-generate/references/configure-metadata-digital-experience.md +1 -1
- package/skills/experience-ui-bundle-site-generate/references/configure-metadata-network.md +1 -1
- package/skills/experience-ui-bundle-site-generate/references/update-site-urls.md +1 -1
- package/skills/external-diagram-mermaid-generate/SKILL.md +1 -1
- package/skills/integration-connectivity-connected-app-configure/SKILL.md +1 -0
- package/skills/integration-connectivity-generate/SKILL.md +1 -0
- package/skills/integration-eventing-cdc-configure/SKILL.md +1 -0
- package/skills/integration-eventing-subscription-configure/SKILL.md +1 -0
- package/skills/integration-eventing-subscription-configure/references/delete-guide.md +1 -1
- package/skills/mobile-apps-create/SKILL.md +1 -0
- package/skills/mobile-platform-native-capabilities-integrate/SKILL.md +1 -0
- package/skills/mobile-platform-offline-validate/SKILL.md +5 -4
- package/skills/omnistudio-callable-apex-generate/SKILL.md +1 -0
- package/skills/omnistudio-datamapper-generate/SKILL.md +1 -0
- package/skills/omnistudio-datapacks-deploy/SKILL.md +1 -0
- package/skills/omnistudio-dependencies-analyze/SKILL.md +1 -0
- package/skills/omnistudio-epc-catalog-generate/SKILL.md +1 -0
- package/skills/omnistudio-flexcard-generate/SKILL.md +1 -0
- package/skills/omnistudio-integration-procedure-generate/SKILL.md +1 -0
- package/skills/omnistudio-omniscript-generate/SKILL.md +1 -0
- package/skills/platform-agentexchange-partner-offers-configure/SKILL.md +1 -0
- package/skills/platform-agentsetup-categories-fetch/SKILL.md +1 -0
- package/skills/platform-apex-generate/SKILL.md +1 -0
- package/skills/platform-apex-logs-debug/SKILL.md +1 -0
- package/skills/platform-apex-test-generate/SKILL.md +1 -0
- package/skills/platform-apex-test-run/SKILL.md +1 -0
- package/skills/platform-custom-application-generate/SKILL.md +1 -0
- package/skills/platform-custom-field-generate/SKILL.md +1 -0
- package/skills/platform-custom-lightning-type-generate/SKILL.md +1 -0
- package/skills/platform-custom-object-generate/SKILL.md +1 -0
- package/skills/platform-custom-report-type-generate/SKILL.md +1 -0
- package/skills/platform-custom-tab-generate/SKILL.md +1 -0
- package/skills/platform-data-and-tooling-api-context-get/SKILL.md +1 -0
- package/skills/platform-data-manage/SKILL.md +1 -0
- package/skills/platform-dataspace-access-configure/SKILL.md +1 -0
- package/skills/platform-docs-get/SKILL.md +1 -0
- package/skills/platform-encryption-configure/SKILL.md +1 -0
- package/skills/platform-flexipage-generate/SKILL.md +1 -0
- package/skills/platform-lightning-app-coordinate/SKILL.md +10 -9
- package/skills/platform-lightning-type-widget-coordinate/SKILL.md +1 -0
- package/skills/platform-list-view-generate/SKILL.md +1 -0
- package/skills/platform-mcp-tool-widget-coordinate/SKILL.md +1 -0
- package/skills/platform-metadata-api-context-get/SKILL.md +1 -0
- package/skills/platform-metadata-deploy/SKILL.md +1 -0
- package/skills/platform-metadata-retrieve/SKILL.md +1 -1
- package/skills/platform-models-api-configure/SKILL.md +1 -0
- package/skills/platform-permission-set-generate/SKILL.md +1 -0
- package/skills/platform-policy-rule-generate/SKILL.md +1 -0
- package/skills/platform-report-generate/SKILL.md +1 -0
- package/skills/platform-sandbox-configure/SKILL.md +1 -0
- package/skills/platform-sharing-owd-configure/SKILL.md +1 -0
- package/skills/platform-sharing-rules-generate/SKILL.md +1 -0
- package/skills/platform-soql-query/SKILL.md +1 -0
- package/skills/platform-tracing-agentforce-configure/SKILL.md +1 -0
- package/skills/platform-tracing-configure/SKILL.md +1 -0
- package/skills/platform-trust-archive-manage/SKILL.md +1 -0
- package/skills/platform-validation-rule-generate/SKILL.md +1 -0
- package/skills/platform-value-set-generate/SKILL.md +1 -0
- package/skills/platform-widget-generate/SKILL.md +1 -0
- package/skills/sales-agentforce-pipeline-management-configure/SKILL.md +1 -0
- package/skills/service-digital-engagement-channel-configure/SKILL.md +1 -0
- package/skills/service-digital-engagement-deployment-configure/SKILL.md +1 -0
- package/skills/service-digital-engagement-messaging-site-integrate/SKILL.md +1 -0
- package/skills/service-helpagent-coordinate/SKILL.md +1 -0
- package/skills/service-itsm-agentic-setup-cmdb-access-assign/SKILL.md +1 -0
- package/skills/service-itsm-agentic-setup-cmdb-bundle-deploy/SKILL.md +1 -0
- package/skills/service-itsm-agentic-setup-cmdb-configure/SKILL.md +1 -0
- package/skills/service-itsm-agentic-setup-cmdb-coordinate/SKILL.md +1 -0
- package/skills/service-itsm-agentic-setup-cmdb-discovery-configure/SKILL.md +1 -0
- package/skills/service-itsm-incident-priority-configure/SKILL.md +1 -0
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
The linter detects hardcoded values and reports them as warnings. Here's real output for an icon component:
|
|
12
12
|
|
|
13
|
-
```
|
|
13
|
+
```text
|
|
14
14
|
3:10 warning Consider replacing the 32px static value with an SLDS 2 styling hook
|
|
15
15
|
that has a similar value: --slds-g-sizing-9. slds/no-hardcoded-values-slds2
|
|
16
16
|
|
|
@@ -72,7 +72,7 @@ The fallback must be the **exact original value** from the source CSS (e.g., `#0
|
|
|
72
72
|
|
|
73
73
|
When examining a hardcoded value or deprecated token, follow this decision tree:
|
|
74
74
|
|
|
75
|
-
```
|
|
75
|
+
```text
|
|
76
76
|
1. SLDS utility class available?
|
|
77
77
|
└─ Yes → Remove CSS, add utility class to HTML
|
|
78
78
|
└─ No ↓
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
The linter detects CSS classes that directly override SLDS classes and reports them as **warnings**. It does **not** auto-fix — all changes require manual work in both CSS and HTML.
|
|
12
12
|
|
|
13
|
-
```
|
|
13
|
+
```text
|
|
14
14
|
1:1 warning Overriding slds-button isn't supported. To differentiate SLDS and
|
|
15
15
|
custom classes, create a CSS class in your namespace.
|
|
16
16
|
Examples: myapp-input, myapp-button. slds/no-slds-class-overrides
|
|
@@ -3,10 +3,13 @@ name: dx-code-analyzer-configure
|
|
|
3
3
|
description: "Set up, configure, and troubleshoot Salesforce Code Analyzer for any project. Handles installation, prerequisite checks, diagnosing broken setups, creating and editing code-analyzer.yml overrides, engine-specific settings, ignore patterns, severity overrides, and CI/CD pipeline setup. TRIGGER when: user says 'set up code analyzer', 'configure code analyzer', 'install code analyzer', 'code analyzer not working', 'fix my setup', 'scan failing', 'check my setup', 'enable/disable engine', 'exclude files', 'change severity', 'set up GitHub Actions', 'set up CI/CD', 'add to pipeline', 'pipeline fail', 'update my workflow', 'quality gate', 'fail on violations', 'scan changed files only', 'add SARIF', 'code-analyzer.yml', 'ESLint config', 'increase SFGE memory', or reports errors running Code Analyzer. DO NOT TRIGGER when: user wants to run a scan (use dx-code-analyzer-run), fix violations, explain rules, create custom rules (use dx-code-analyzer-custom-rule-create), or suppress violations."
|
|
4
4
|
metadata:
|
|
5
5
|
version: "1.0"
|
|
6
|
+
domains: ["Developer Experience"]
|
|
6
7
|
relatedSkills:
|
|
7
|
-
- "dx-code-analyzer-run"
|
|
8
8
|
- "dx-code-analyzer-custom-rule-create"
|
|
9
|
+
- "dx-code-analyzer-run"
|
|
9
10
|
cliTools:
|
|
11
|
+
- tool: ["sf"]
|
|
12
|
+
semver: ">=2.0.0"
|
|
10
13
|
- tool: ["curl"]
|
|
11
14
|
semver: ">=7.0.0"
|
|
12
15
|
- tool: ["java"]
|
|
@@ -17,8 +20,6 @@ metadata:
|
|
|
17
20
|
semver: ">=9.0.0"
|
|
18
21
|
- tool: ["python3"]
|
|
19
22
|
semver: ">=3.10.0"
|
|
20
|
-
- tool: ["sf"]
|
|
21
|
-
semver: ">=2.0.0"
|
|
22
23
|
---
|
|
23
24
|
|
|
24
25
|
# Configuring Code Analyzer Skill
|
|
@@ -51,7 +52,7 @@ This skill manages the `code-analyzer.yml` configuration file — the single sou
|
|
|
51
52
|
|
|
52
53
|
## Tool Usage Rules
|
|
53
54
|
|
|
54
|
-
**Allowed:** Bash (sf, java, node, python3,
|
|
55
|
+
**Allowed:** Bash (sf, java, node, python3, npm), Read, Write, Edit
|
|
55
56
|
**Forbidden:** MCP tools, Agent tool, Web tools, other skills, `which`, `find`, `locate`, searching for binaries
|
|
56
57
|
|
|
57
58
|
---
|
|
@@ -359,7 +360,7 @@ rules:
|
|
|
359
360
|
|
|
360
361
|
### 6.1 Rule Name Resolution (Fuzzy Matching)
|
|
361
362
|
|
|
362
|
-
|
|
363
|
+
**CRITICAL:** A misspelled or partial rule name in `code-analyzer.yml` is SILENTLY IGNORED — no error, the override just won't apply.
|
|
363
364
|
|
|
364
365
|
**When users reference rules by approximate names** (e.g., "the doc rule", "CRUD violation", "hardcoded values"), resolve to exact names BEFORE writing YAML:
|
|
365
366
|
|
|
@@ -316,7 +316,7 @@ For monorepos where Salesforce code lives in a subdirectory, use `--target` to s
|
|
|
316
316
|
```
|
|
317
317
|
|
|
318
318
|
For multiple packages:
|
|
319
|
-
```
|
|
319
|
+
```text
|
|
320
320
|
--target packages/app-a/force-app --target packages/app-b/force-app
|
|
321
321
|
```
|
|
322
322
|
|
|
@@ -601,7 +601,7 @@ Build the `run-arguments` string by combining these independent flags as needed:
|
|
|
601
601
|
|
|
602
602
|
### Decision Tree for Template Selection
|
|
603
603
|
|
|
604
|
-
```
|
|
604
|
+
```text
|
|
605
605
|
User wants CI/CD for Code Analyzer
|
|
606
606
|
├── Platform?
|
|
607
607
|
│ ├── GitHub Actions → Use forcedotcom/run-code-analyzer@v2
|
|
@@ -3,9 +3,10 @@ name: dx-code-analyzer-custom-rule-create
|
|
|
3
3
|
description: "Create custom Code Analyzer rules for Regex (pattern matching), PMD (XPath/AST for Apex and metadata XML), and ESLint (LWC/JavaScript/TypeScript). Use when users want to enforce coding standards, ban patterns, detect hardcoded values, govern metadata, or add rules not in the built-in set. TRIGGER when: user says 'create a rule', 'ban System.debug', 'enforce naming convention', 'detect hardcoded IDs', 'custom rule', 'xpath rule', 'regex rule', 'add a PMD rule', 'enforce a policy', 'create a check for', 'flag this pattern', 'make a rule that catches', 'metadata rule', 'check permissions', 'enforce API version', 'eslint rule', 'lwc rule', 'override rule threshold', 'customize complexity', or describes a pattern to enforce. DO NOT TRIGGER when: user wants to run a scan (use dx-code-analyzer-run), configure engines (use dx-code-analyzer-configure), or explain existing rules (use dx-code-analyzer-run)."
|
|
4
4
|
metadata:
|
|
5
5
|
version: "1.0"
|
|
6
|
+
domains: ["Developer Experience"]
|
|
6
7
|
relatedSkills:
|
|
7
|
-
- "dx-code-analyzer-run"
|
|
8
8
|
- "dx-code-analyzer-configure"
|
|
9
|
+
- "dx-code-analyzer-run"
|
|
9
10
|
cliTools:
|
|
10
11
|
- tool: ["git"]
|
|
11
12
|
semver: ">=2.0.0"
|
|
@@ -102,7 +103,7 @@ These are non-negotiable rules. Violating any of them is a skill failure regardl
|
|
|
102
103
|
|
|
103
104
|
\* **For ESLint:** ALWAYS check Tier 1 (built-in rules) and Tier 2 (configurable rules) BEFORE creating a custom plugin. See `references/eslint-rules-discovery.md`.
|
|
104
105
|
|
|
105
|
-
|
|
106
|
+
**"Both could work → Regex first" NEVER applies to JavaScript/LWC/TypeScript files.** JS/LWC/TS patterns MUST use ESLint — Regex cannot distinguish code from comments/strings in JS and produces false positives. Do NOT rationalize Regex for JS files based on "simplicity" or "no npm dependencies."
|
|
106
107
|
|
|
107
108
|
Tell the user which engine you chose and why. Respect their preference if they disagree.
|
|
108
109
|
|
|
@@ -116,7 +117,7 @@ When a rule should NOT apply to test classes, the approach differs by engine:
|
|
|
116
117
|
| **Regex** | Use `ignores.files` in `code-analyzer.yml` with globs like `**/*Test.cls` | `regex_ignore` is per-LINE, not per-FILE — it CANNOT exclude entire test classes. Only use `regex_ignore` for per-line patterns like `// NOPMD` |
|
|
117
118
|
| **ESLint** | Use `ignores` array in `eslint.config.js` | Standard ESLint file-level ignores |
|
|
118
119
|
|
|
119
|
-
|
|
120
|
+
**`regex_ignore` is NOT file-level exclusion.** It only skips matches on lines that ALSO match the ignore pattern. Example: `regex_ignore: "/@isTest/i"` only suppresses violations on lines containing `@isTest` — a SOQL query on line 50 of a test class still flags because line 50 doesn't contain `@isTest`. To exclude test files from regex rules entirely, use:
|
|
120
121
|
```yaml
|
|
121
122
|
ignores:
|
|
122
123
|
files:
|
|
@@ -124,7 +125,7 @@ ignores:
|
|
|
124
125
|
- "**/*_Test.cls"
|
|
125
126
|
```
|
|
126
127
|
|
|
127
|
-
|
|
128
|
+
**`ignores.files` is GLOBAL** — it affects ALL engines and ALL rules. If you need test-class exclusion for some rules but not others (e.g., exclude tests from SOQL rules but still scan tests for @AuraEnabled), use **PMD with XPath** for the rules that need selective exclusion. PMD's XPath can structurally check `@Test = true()` per-method or per-class — Regex cannot.
|
|
128
129
|
|
|
129
130
|
**Decision guide for Apex rules that should skip test classes:**
|
|
130
131
|
- If the pattern is structural (method calls, annotations, nesting) → use PMD. XPath handles test-class exclusion natively.
|
|
@@ -180,7 +181,7 @@ When the user highlights a code block in their editor and asks to "catch this",
|
|
|
180
181
|
--name "<RuleName>" --regex "<pattern>" --description "<desc>" \
|
|
181
182
|
--severity <1-5> --file-extensions ".cls,.trigger"
|
|
182
183
|
```
|
|
183
|
-
|
|
184
|
+
**ALWAYS use the script.** Do NOT manually write regex patterns into `code-analyzer.yml` — regex characters (quotes, backslashes, braces) inside YAML cause parsing failures. The script handles serialization correctly.
|
|
184
185
|
4. **Validate** — `sf code-analyzer rules --rule-selector regex:<RuleName>`
|
|
185
186
|
5. **Test positive** — `sf code-analyzer run --rule-selector regex:<RuleName> --target <violation-sample>` — must find violations
|
|
186
187
|
6. **Test negative** — `sf code-analyzer run --rule-selector regex:<RuleName> --target <clean-sample>` — must find 0 violations. If it flags clean code, your regex is too broad — go back and tighten the pattern.
|
|
@@ -190,10 +191,10 @@ When the user highlights a code block in their editor and asks to "catch this",
|
|
|
190
191
|
### For PMD/XPath Rules (Apex)
|
|
191
192
|
|
|
192
193
|
1. **Write a minimal sample** (5-10 lines) demonstrating the violation. Write sample files inside the project workspace (e.g., a temporary `samples/` directory at the project root) so Code Analyzer can target them. **After both positive and negative tests pass, delete ALL sample files you created** — both the original samples and any copies made during testing. Do not leave temporary test fixtures in the user's project. For loop-based rules, the positive sample MUST include all 3 Apex loop types (`for-each`, traditional `for`, and `while`) — omitting any loop type means the XPath won't be validated against it and may silently miss violations.
|
|
193
|
-
2.
|
|
194
|
+
2. **MANDATORY: Dump the AST** — `sf code-analyzer ast-dump --file <sample.cls> --output-file <ast.xml>` — this step is NOT optional. Do NOT skip it even if you "already know" the node names. Run it, read the output, confirm the exact node names and attributes.
|
|
194
195
|
3. **Read the AST output** — identify the target node and its attributes from the ACTUAL ast-dump output (not from memory). Use `references/apex-ast-reference.md` and `references/xpath-patterns.md` as supplementary context only.
|
|
195
196
|
4. **Write XPath** — target the smallest stable node with discriminating attributes. Every node name in your XPath MUST appear verbatim in the ast-dump output you just read. Use `/Child` (direct child) vs `//Descendant` deliberately — check the ast-dump to understand which nodes are siblings vs nested.
|
|
196
|
-
5.
|
|
197
|
+
5. **BEFORE creating the rule: Write a SEPARATE negative sample file** (5-10 lines) showing code that is CORRECT and must NOT be flagged. This MUST be a distinct file from the positive sample — do NOT combine positive and negative cases into one file. For loop-based rules, include `for (x : [SELECT...])` idiom. Run `sf code-analyzer ast-dump` on this negative sample file too. Read the output and trace your XPath against it — confirm it does NOT match any node in the negative AST. If it would match, go back to step 4 and tighten the XPath BEFORE proceeding. Do NOT skip this step or defer it until after rule creation. The negative file will be used again in step 9 for an explicit zero-violation confirmation.
|
|
197
198
|
6. **Create the rule** — run the script:
|
|
198
199
|
```bash
|
|
199
200
|
node "<skill_dir>/scripts/create-pmd-rule.js" \
|
|
@@ -224,7 +225,7 @@ When the user highlights a code block in their editor and asks to "catch this",
|
|
|
224
225
|
file_extensions:
|
|
225
226
|
xml: [".xml"]
|
|
226
227
|
```
|
|
227
|
-
|
|
228
|
+
Do NOT add compound extensions like `.permissionset-meta.xml` — Code Analyzer's validator rejects them (`/^[.][a-zA-Z0-9]+$/` pattern). Just `.xml` covers all Salesforce metadata files automatically.
|
|
228
229
|
6. **Write a SEPARATE negative sample file** — same as Apex rules: create a metadata file that is correct and must NOT be flagged. Verify the XPath does not match it BEFORE creating the rule. Both positive and negative samples should be `.xml` extension files in the workspace so PMD can scan them directly.
|
|
229
230
|
7. **Create the rule** — run the script:
|
|
230
231
|
```bash
|
|
@@ -265,7 +266,7 @@ ESLint has 200+ built-in rules plus thousands more from plugins. DO NOT attempt
|
|
|
265
266
|
|
|
266
267
|
---
|
|
267
268
|
|
|
268
|
-
0.
|
|
269
|
+
0. **MANDATORY: Run the ESLint discovery workflow FIRST.** 90% of ESLint requests are solved by built-in rules (Tier 1) or configurable rules like `no-restricted-syntax` (Tier 2). Creating a custom plugin (Tier 3) is a LAST RESORT. Before proceeding:
|
|
269
270
|
|
|
270
271
|
a) **Run:** `sf code-analyzer rules --rule-selector eslint`
|
|
271
272
|
b) **Search** the output for keywords from the user's request (e.g., "console", "equal", "unused")
|
|
@@ -276,9 +277,9 @@ ESLint has 200+ built-in rules plus thousands more from plugins. DO NOT attempt
|
|
|
276
277
|
|
|
277
278
|
**Validation:** After configuration, run `sf code-analyzer rules --rule-selector eslint:<ruleName>` to confirm it appears. If it doesn't, the config is wrong.
|
|
278
279
|
|
|
279
|
-
|
|
280
|
+
**Skipping this discovery workflow and creating a custom plugin when a built-in rule exists is a skill failure**, regardless of whether the custom plugin works.
|
|
280
281
|
|
|
281
|
-
|
|
282
|
+
**Built-in ESLint rules vs. configurable ESLint rules:** Code Analyzer bundles a SUBSET of ESLint rules in its base config. Rules like `no-restricted-globals`, `no-restricted-syntax`, and `no-restricted-properties` are core ESLint rules but are NOT active until you enable them in an `eslint.config.js`. They WILL appear in `sf code-analyzer rules` output ONLY after you configure them. **Always validate** (step 4) to confirm the rule actually loaded — do NOT assume a rule exists just because it's a core ESLint rule.
|
|
282
283
|
|
|
283
284
|
1. **Install the ESLint plugin** (skip if using a built-in/core ESLint rule) — `npm install --save-dev eslint-plugin-<name>`
|
|
284
285
|
2. **Create/update `eslint.config.js`** — add plugin and rule configuration (or just enable the built-in rule with `"error"` severity). **The file MUST exist** before configuring `engines.eslint.eslint_config_file` in `code-analyzer.yml` — Code Analyzer validates the path and fails if the file is missing.
|
|
@@ -300,26 +301,26 @@ For `no-restricted-globals`, `no-restricted-syntax`, and `no-restricted-properti
|
|
|
300
301
|
- User: "Ban console.log in LWC"
|
|
301
302
|
- Discovery: `sf code-analyzer rules --rule-selector eslint | grep console` → finds `no-console`
|
|
302
303
|
- Action: Enable `no-console` in eslint.config.js
|
|
303
|
-
- Result:
|
|
304
|
+
- Result: Done in 2 minutes (no custom plugin needed)
|
|
304
305
|
|
|
305
306
|
**Example 2: Configurable rule (Tier 2)**
|
|
306
307
|
- User: "Ban setTimeout in LWC"
|
|
307
308
|
- Discovery: No built-in `no-setTimeout` rule
|
|
308
309
|
- Action: Use `no-restricted-globals` with custom message
|
|
309
|
-
- Result:
|
|
310
|
+
- Result: Done in 5 minutes (no custom plugin needed)
|
|
310
311
|
|
|
311
312
|
**Example 3: LWC plugin rule (Tier 1)**
|
|
312
313
|
- User: "Ban innerHTML for XSS prevention"
|
|
313
314
|
- Discovery: `@lwc/lwc/no-inner-html` already exists
|
|
314
315
|
- Action: Enable `@lwc/lwc/no-inner-html` in config
|
|
315
|
-
- Result:
|
|
316
|
+
- Result: Done in 2 minutes (no custom plugin needed)
|
|
316
317
|
|
|
317
318
|
**Example 4: Custom plugin justified (Tier 3)**
|
|
318
319
|
- User: "Flag imperative Apex calls without error handling"
|
|
319
320
|
- Discovery: No built-in rule for this pattern
|
|
320
321
|
- Analysis: Pattern requires checking `import` + `.then()` without `.catch()` — multi-node traversal
|
|
321
322
|
- Action: Create custom plugin with visitor pattern
|
|
322
|
-
- Result:
|
|
323
|
+
- Result: Custom plugin is justified (20+ minutes effort)
|
|
323
324
|
|
|
324
325
|
See `references/eslint-rules-discovery.md` for complete discovery workflow.
|
|
325
326
|
|
|
@@ -375,11 +376,11 @@ When creating multiple PMD rules, use the `create-pmd-rule.js` script for the fi
|
|
|
375
376
|
|
|
376
377
|
### What NOT to do
|
|
377
378
|
|
|
378
|
-
-
|
|
379
|
-
-
|
|
380
|
-
-
|
|
381
|
-
-
|
|
382
|
-
-
|
|
379
|
+
- Do NOT rewrite the entire `code-analyzer.yml` to reorganize it
|
|
380
|
+
- Do NOT create all rules in parallel then validate all at once
|
|
381
|
+
- Do NOT create a PMD rule with an unverified XPath from the reference docs — ast-dump each pattern
|
|
382
|
+
- Do NOT mix engine types in one creation step (e.g., creating regex + PMD rules simultaneously)
|
|
383
|
+
- Do NOT add `engines.eslint.eslint_config_file` to `code-analyzer.yml` before the file exists
|
|
383
384
|
|
|
384
385
|
---
|
|
385
386
|
|
|
@@ -393,7 +394,7 @@ When creating multiple PMD rules, use the `create-pmd-rule.js` script for the fi
|
|
|
393
394
|
| Always validate after creation | `sf code-analyzer rules --rule-selector <engine>:<name>` catches config errors |
|
|
394
395
|
| Always test against sample code | Catches XPath/regex mismatches before full scan |
|
|
395
396
|
| Use `@FullMethodName` for method calls in XPath | More reliable than `@Image` or `@MethodName` alone |
|
|
396
|
-
|
|
|
397
|
+
| **NEVER skip `ast-dump`** | Run `ast-dump`, read output, THEN write XPath. No exceptions — even for "obvious" patterns. Using node names from memory without ast-dump verification is a skill failure. |
|
|
397
398
|
| **PMD 7 boolean attributes: use `= false()` XPath function** | In PMD 7, boolean attributes like `@WithSharing`, `@Abstract`, `@Final` are ALWAYS present on the node (never absent). Compare with `= false()` (XPath boolean function), NOT string `'false'`. `@WithSharing = false()` works. `@WithSharing='false'` (string) does NOT. `not(@WithSharing)` does NOT (attribute is always present). |
|
|
398
399
|
| `code-analyzer.yml` at project root | Auto-discovered by CLI — placing it elsewhere causes silent failures for rule authors |
|
|
399
400
|
| **XML rules MUST use `local-name()`** | Salesforce metadata namespace breaks bare element names |
|
|
@@ -451,11 +452,11 @@ node "<skill_dir>/scripts/create-regex-rule.js" \
|
|
|
451
452
|
--name "RuleName" --regex "/pattern/flags" ...
|
|
452
453
|
```
|
|
453
454
|
|
|
454
|
-
|
|
455
|
-
-
|
|
456
|
-
-
|
|
457
|
-
-
|
|
458
|
-
-
|
|
455
|
+
**DO NOT:**
|
|
456
|
+
- Invent or generate script code yourself
|
|
457
|
+
- Use bare relative paths like `node scripts/create-regex-rule.js` (won't resolve from user's CWD)
|
|
458
|
+
- Use heredocs or inline script content
|
|
459
|
+
- Skip resolving `<skill_dir>` — find the absolute path first
|
|
459
460
|
|
|
460
461
|
---
|
|
461
462
|
|
|
@@ -3,6 +3,7 @@ name: dx-code-analyzer-run
|
|
|
3
3
|
description: "Run Salesforce Code Analyzer to scan code for security, performance, best practice, and code style violations. Supports all engines (PMD, ESLint, CPD, RetireJS, Flow, SFGE, ApexGuru), targets (files, folders, git diff), categories, and severities. Also handles post-scan exploration: filtering results by engine/severity/category/file, and explaining what rules mean. TRIGGER when: user says 'scan my code', 'check security issues', 'run PMD/ESLint', 'find duplicates', 'analyze Flows', 'check vulnerable libraries', 'AppExchange review', 'lint my LWC', 'static analysis', 'code quality', 'show security violations', 'what is this rule', 'explain ApexCRUDViolation', 'filter results', or mentions engines/file types (.cls, .trigger, .js, .flow-meta.xml). Use this skill for scanning, exploring results, and listing rules. DO NOT TRIGGER when: user asks only about installation/configuration (use dx-code-analyzer-configure), or wants to create a custom rule (use dx-code-analyzer-custom-rule-create)."
|
|
4
4
|
metadata:
|
|
5
5
|
version: "1.0"
|
|
6
|
+
domains: ["Developer Experience"]
|
|
6
7
|
relatedSkills:
|
|
7
8
|
- "dx-code-analyzer-configure"
|
|
8
9
|
- "dx-code-analyzer-custom-rule-create"
|
|
@@ -160,7 +161,7 @@ security/OWASP → `Security` · performance → `Performance` · best practices
|
|
|
160
161
|
### 1.4 SPECIFIC RULE
|
|
161
162
|
If the user names a rule (e.g., "ApexCRUDViolation", "no-unused-vars"): `--rule-selector <engine>:<ruleName>`, or just `<ruleName>` if engine is ambiguous.
|
|
162
163
|
|
|
163
|
-
|
|
164
|
+
**Partial names:** `--rule-selector` requires the **exact full** rule name (e.g., `@salesforce-ux/slds/no-hardcoded-values-slds2`, not `no-hardcoded-values`). No wildcards. If you are not 100% certain, look it up first — **do not guess**:
|
|
164
165
|
```bash
|
|
165
166
|
sf code-analyzer rules --rule-selector all 2>&1 | grep -i "USER_KEYWORD"
|
|
166
167
|
```
|
|
@@ -246,12 +247,12 @@ Run the parse script straight after the scan — do not pause to ask:
|
|
|
246
247
|
node "<skill_dir>/scripts/parse-results.js" "./code-analyzer-results-TIMESTAMP.json"
|
|
247
248
|
```
|
|
248
249
|
|
|
249
|
-
|
|
250
|
-
-
|
|
251
|
-
-
|
|
252
|
-
-
|
|
253
|
-
-
|
|
254
|
-
-
|
|
250
|
+
**DO NOT:**
|
|
251
|
+
- Invent or generate script code yourself
|
|
252
|
+
- Use bare relative paths like `node scripts/parse-results.js` (won't resolve from user's CWD)
|
|
253
|
+
- Use heredocs or inline script content
|
|
254
|
+
- Use `jq` as a substitute for the parse script (shell quoting will break)
|
|
255
|
+
- Read the JSON file directly
|
|
255
256
|
|
|
256
257
|
### Presentation template
|
|
257
258
|
|
|
@@ -328,7 +329,7 @@ These are safe, deterministic fixes generated by the engines (not AI-generated).
|
|
|
328
329
|
Would you like me to apply these fixes? (yes / no / select specific rules)
|
|
329
330
|
```
|
|
330
331
|
|
|
331
|
-
|
|
332
|
+
**Stop and wait for the user's reply, even if they originally said "scan and fix everything".** Apply only on a fresh "yes" / "apply" / "go ahead" in the next turn.
|
|
332
333
|
|
|
333
334
|
### 6.4 Apply
|
|
334
335
|
|
|
@@ -346,7 +347,7 @@ node "<skill_dir>/scripts/summarize-fixes.js" "./code-analyzer-results-TIMESTAMP
|
|
|
346
347
|
Then present:
|
|
347
348
|
|
|
348
349
|
```text
|
|
349
|
-
### Engine-Provided Fixes Applied Successfully
|
|
350
|
+
### Engine-Provided Fixes Applied Successfully
|
|
350
351
|
**Applied X auto-fixes across Y files.**
|
|
351
352
|
|
|
352
353
|
| Severity | Fixes Applied |
|
|
@@ -82,7 +82,7 @@ When `--summary` is used, the `violations` array is omitted.
|
|
|
82
82
|
|
|
83
83
|
Present query results using the same format as Step 5, but with a header indicating the active filter:
|
|
84
84
|
|
|
85
|
-
```
|
|
85
|
+
```text
|
|
86
86
|
## Filtered Results: [description of filter]
|
|
87
87
|
|
|
88
88
|
**X matches** out of Y total violations.
|
|
@@ -192,7 +192,7 @@ node "<skill_dir>/scripts/describe-rule.js" "OperationWithLimitsInLoop"
|
|
|
192
192
|
|
|
193
193
|
**For a successful lookup**, present:
|
|
194
194
|
|
|
195
|
-
```
|
|
195
|
+
```text
|
|
196
196
|
## Rule: ApexCRUDViolation
|
|
197
197
|
|
|
198
198
|
| Property | Value |
|
|
@@ -219,7 +219,7 @@ Want me to show all violations of this rule in your scan results?
|
|
|
219
219
|
|
|
220
220
|
**For multiple matches**, present:
|
|
221
221
|
|
|
222
|
-
```
|
|
222
|
+
```text
|
|
223
223
|
I found multiple rules matching "CRUD":
|
|
224
224
|
|
|
225
225
|
| # | Rule | Engine | Severity |
|
|
@@ -232,7 +232,7 @@ Which rule would you like details on?
|
|
|
232
232
|
|
|
233
233
|
**For not found**, present:
|
|
234
234
|
|
|
235
|
-
```
|
|
235
|
+
```text
|
|
236
236
|
I couldn't find a rule named "FakeRule". Would you like me to:
|
|
237
237
|
- Search for similar rules? (I'll grep the full rule list)
|
|
238
238
|
- List all rules for a specific engine or category?
|
|
@@ -253,7 +253,7 @@ Offer next steps:
|
|
|
253
253
|
|
|
254
254
|
Present available rules in this format:
|
|
255
255
|
|
|
256
|
-
```
|
|
256
|
+
```text
|
|
257
257
|
## Available Rules: Security
|
|
258
258
|
|
|
259
259
|
**Found X rules** across Y engines.
|
|
@@ -123,7 +123,7 @@ UMD/AMD/CommonJS wrapper → 70% vendor
|
|
|
123
123
|
|
|
124
124
|
### Final Score
|
|
125
125
|
|
|
126
|
-
```
|
|
126
|
+
```text
|
|
127
127
|
Weighted Score = (PathScore × 0.3) + (NameScore × 0.3) + (ContentScore × 0.4)
|
|
128
128
|
|
|
129
129
|
> 70% = Vendor file
|
|
@@ -133,7 +133,7 @@ Weighted Score = (PathScore × 0.3) + (NameScore × 0.3) + (ContentScore × 0.4)
|
|
|
133
133
|
|
|
134
134
|
## Example Output
|
|
135
135
|
|
|
136
|
-
```
|
|
136
|
+
```text
|
|
137
137
|
=== INTELLIGENT VENDOR FILE DETECTION ===
|
|
138
138
|
|
|
139
139
|
Original violations: 9714
|
|
@@ -3,6 +3,7 @@ name: dx-devops-pipeline-manage
|
|
|
3
3
|
description: "Use this skill to manage the full lifecycle of a DevOps Center pipeline — list all pipelines, get a single pipeline's details, create a new pipeline linked to a Git repository, add or remove stages, rename a stage, add or remove Salesforce environments on stages, attach or detach projects, and activate or deactivate the pipeline. Invoke when the user wants to set up a release pipeline, wire promotion stages across integration, UAT, staging, and production orgs, connect environments to stages, attach a project, or activate a continuous delivery pipeline. Uses sf devops pipeline and sf devops stage commands with --json output. DO NOT TRIGGER for work-item lifecycle, promotion or deployment execution, conflict detection, or standalone project creation (separate skills)."
|
|
4
4
|
metadata:
|
|
5
5
|
version: "1.0"
|
|
6
|
+
domains: ["Developer Experience"]
|
|
6
7
|
minApiVersion: "58.0"
|
|
7
8
|
relatedSkills:
|
|
8
9
|
- "dx-devops-work-item-manage"
|
|
@@ -3,6 +3,7 @@ name: dx-devops-promote
|
|
|
3
3
|
description: "Use this skill to drive the full DevOps Center promotion workflow for work items and pipeline stages — validate preconditions, prepare work items, optionally combine work items that share metadata, promote one or more work items or an entire stage to a target pipeline stage, and complete the promotion to finalize the deployment. TRIGGER when the user wants to promote a work item, advance changes to the next environment or stage, combine work items for a single promotion, or move metadata through the release pipeline. The mandatory validate step runs automatically at the start. DO NOT TRIGGER for work item creation or status updates (use dx-devops-work-item-manage), for conflict detection, or for polling an existing promotion's status."
|
|
4
4
|
metadata:
|
|
5
5
|
version: "1.0"
|
|
6
|
+
domains: ["Developer Experience"]
|
|
6
7
|
minApiVersion: "58.0"
|
|
7
8
|
relatedSkills:
|
|
8
9
|
- "dx-devops-work-item-manage"
|
|
@@ -3,6 +3,7 @@ name: dx-devops-work-item-manage
|
|
|
3
3
|
description: "Use this skill to manage the full lifecycle of DevOps Center work items — list, create, update, commit changes, perform status transitions, and create pull requests. Update fields like subject, description, and status. Commit and push code changes to work item branches. Create pull requests for work item branches via DevOps Center API. Invoke when the user wants to track, find, create, or update a work item, commit changes to a work item branch, advance a work item's status through the pipeline, or create a pull request for code review. Consolidates sf devops work-item and review operations. DO NOT TRIGGER for promotion or deployment operations, or conflict detection."
|
|
4
4
|
metadata:
|
|
5
5
|
version: "1.0"
|
|
6
|
+
domains: ["Developer Experience"]
|
|
6
7
|
minApiVersion: "58.0"
|
|
7
8
|
cliTools:
|
|
8
9
|
- tool: ["sf"]
|
|
@@ -4,6 +4,7 @@ description: "Enable Dev Hub on a Salesforce org and view its scratch org alloca
|
|
|
4
4
|
allowed-tools: Read, Bash(bash), Bash(sf api request rest), Bash(sf data query), Bash(sf org list), Bash(sf org login web), Bash(sf org login device), Bash(sf project deploy), Bash(sf config get), Bash(sf org display), Bash(sf org open), Bash(jq)
|
|
5
5
|
metadata:
|
|
6
6
|
version: "1.0"
|
|
7
|
+
domains: ["Developer Experience"]
|
|
7
8
|
# DevHubSettings metadata + the Tooling API DevHubSettings endpoint require
|
|
8
9
|
# API 47.0 or later (see scripts/devhub.sh SETTINGS_API_VERSION).
|
|
9
10
|
minApiVersion: "47.0"
|
|
@@ -3,6 +3,7 @@ name: dx-org-manage
|
|
|
3
3
|
description: "INVOKE this skill to execute Salesforce org operations: create scratch orgs, list/display/resume/delete scratch orgs, create org snapshots, open orgs in browser. This skill EXECUTES operations immediately - it does NOT generate scripts or code files. ALWAYS invoke this skill (do not execute SF CLI commands directly) when user requests to: create a scratch org (from edition, definition file (.json), snapshot, or org shape), list/display/resume/delete scratch orgs, create an org snapshot, or open a Salesforce org. Trigger phrases include: 'create a snapshot', 'take a snapshot', 'create scratch org', 'new scratch org', 'spin up an org', 'create 5 scratch orgs', 'create org from snapshot', 'scratch-def.json', 'project-scratch-def.json', 'list scratch orgs', 'display org', 'delete scratch org', 'resume scratch org', 'open my Salesforce org', 'open org in browser'. Do NOT use for switching default org (use dx-org-switch) or deploying metadata (use platform-metadata-deploy)."
|
|
4
4
|
metadata:
|
|
5
5
|
version: "1.2"
|
|
6
|
+
domains: ["Developer Experience"]
|
|
6
7
|
minApiVersion: "60.0"
|
|
7
8
|
relatedSkills:
|
|
8
9
|
- "dx-org-switch"
|
|
@@ -3,6 +3,7 @@ name: dx-org-permission-set-assign
|
|
|
3
3
|
description: "ALWAYS USE THIS SKILL to assign permission sets to org users. Assign one or more permission sets to org users using the sf org assign permset command. TRIGGER when the user asks to assign, grant, give, add, or apply permission sets to users, admins, specific orgs, or specific users. Supports granting permissions, giving access, and adding permission sets to default admin or specific users via --on-behalf-of. DO NOT TRIGGER for listing permission sets or checking user permissions."
|
|
4
4
|
metadata:
|
|
5
5
|
version: "1.0"
|
|
6
|
+
domains: ["Developer Experience"]
|
|
6
7
|
relatedSkills:
|
|
7
8
|
- "platform-permission-set-generate"
|
|
8
9
|
cliTools:
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: dx-org-switch
|
|
3
3
|
description: "Switches the active Salesforce org (default target-org) using the Salesforce CLI. Use whenever someone wants to change which org CLI commands run against — whether they say \"switch org\", \"change default org\", \"set my org to\", \"use alias\", \"point to\", or describe wanting to work against a specific org, scratch org, sandbox, or production."
|
|
4
|
-
compatibility: Salesforce CLI (sf) v2+
|
|
5
4
|
metadata:
|
|
6
5
|
cliTools:
|
|
7
6
|
- tool: ["sf"]
|
|
8
7
|
semver: ">=2.0.0"
|
|
9
8
|
version: "1.0"
|
|
9
|
+
domains: ["Developer Experience"]
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
## Steps
|
|
@@ -4,6 +4,7 @@ description: "Check when Salesforce orgs expire (or already expired) and what to
|
|
|
4
4
|
allowed-tools: Read, Bash(bash), Bash(sf data query), Bash(sf org list), Bash(sf config get), Bash(jq), Bash(date)
|
|
5
5
|
metadata:
|
|
6
6
|
version: "2.0"
|
|
7
|
+
domains: ["Developer Experience"]
|
|
7
8
|
cliTools:
|
|
8
9
|
- tool: ["jq"]
|
|
9
10
|
semver: ">=1.6.0"
|
|
@@ -3,6 +3,7 @@ name: dx-pkg-post-install-configure
|
|
|
3
3
|
description: "Use this skill to automate managed package post-install configuration. Package-agnostic — works with any managed package (LMA, FMA, work.com, Certinia, etc.). TRIGGER when: user installs a managed package and needs post-install configuration, mentions LMA/FMA/work.com post-install setup, asks to configure permission sets/FLS/page layouts for an installed package, says 'post-install', 'package setup', 'configure LMA', 'set up FMA', 'post-install steps'. DO NOT TRIGGER for: standalone permission set assignment (use dx-org-permission-set-assign), generating permission set metadata XML (use platform-permission-set-generate), package installation, or org switching."
|
|
4
4
|
metadata:
|
|
5
5
|
version: "2.2"
|
|
6
|
+
domains: ["Developer Experience"]
|
|
6
7
|
minApiVersion: "67.0"
|
|
7
8
|
cliTools:
|
|
8
9
|
- tool: ["sf"]
|
|
@@ -3,6 +3,7 @@ name: experience-aura-lwc-migrate
|
|
|
3
3
|
description: "Use this skill to analyze a Salesforce Aura component bundle (.cmp, .app, .evt, .intf, Controller.js, Helper.js, Renderer.js) and produce a framework-agnostic migration blueprint (PRD.yaml / PRD.md / PRD.json) capturing public API, data requirements, slots, events, states, accessibility, styling, localization, and security posture. This is Phase 1 (analysis + PRD) only — it does NOT author or edit component code, wire adapters, or Jest tests, and does not write .html/.js/.css/.js-meta.xml. TRIGGER when the user says \"analyze this Aura component\", \"migrate Aura\", \"convert .cmp\", \"produce a migration blueprint\", \"generate a PRD for this Aura component\", or mentions aura:attribute, aura:handler, force:recordData, $Label, $Resource, component.get, cmp.find, or an input directory containing .cmp files. DO NOT TRIGGER when there is no Aura source (delegate downstream LWC authoring to experience-lwc-generate), for post-migration scoring, or for refactoring an existing modern component."
|
|
4
4
|
metadata:
|
|
5
5
|
version: "1.0"
|
|
6
|
+
domains: ["Experience"]
|
|
6
7
|
relatedSkills:
|
|
7
8
|
- experience-lwc-generate
|
|
8
9
|
---
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: experience-cms-brand-apply
|
|
3
3
|
description: "Extracts, retrieves, and applies CMS brand guidelines (voice, tone, style, colors, typography) to generated content. Use this skill ANY TIME a user request involves branding, brand voice, brand tone, brand guidelines, brand identity, brand styling, or applying a brand to content. Triggers for requests like \"apply my brand\", \"use our brand voice\", \"match our brand guidelines\", \"find my brand\", \"search for brand\", \"get brand instructions\", \"apply brand tone\". Handles the full workflow: searching for brands in Salesforce CMS, extracting brand instructions, and applying brand voice/tone/guidelines to generated content. Does not apply to media/image search (use experience-content-media-search skill), logo search, or creating new brand definitions."
|
|
4
|
-
compatibility: "Requires get_brand_instructions and/or search_media_cms_channels MCP tools"
|
|
5
4
|
metadata:
|
|
6
5
|
version: "1.0"
|
|
6
|
+
domains: ["Experience"]
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Applying CMS Brand
|