@raishin/vanguard-frontier-agentic 2.3.0 → 2.5.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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +31 -1
- package/.cursor-plugin/plugin.json +31 -1
- package/.github/plugin/marketplace.json +1 -1
- package/README.md +15 -12
- package/agents/dotnet/dotnet-aspnetcore-api-review-agent/AGENT.md +1 -1
- package/agents/dotnet/dotnet-aspnetcore-api-review-agent/harnesses/claude-code.agent.md +1 -1
- package/agents/dotnet/dotnet-aspnetcore-api-review-agent/harnesses/copilot.agent.md +1 -1
- package/agents/dotnet/dotnet-aspnetcore-api-review-agent/harnesses/cursor.agent.md +1 -1
- package/agents/dotnet/dotnet-aspnetcore-api-review-agent/harnesses/gemini.agent.md +1 -1
- package/agents/dotnet/dotnet-aspnetcore-api-review-agent/harnesses/kiro-ide.agent.md +1 -1
- package/agents/dotnet/dotnet-csharp-runtime-review-agent/AGENT.md +2 -2
- package/agents/dotnet/dotnet-csharp-runtime-review-agent/harnesses/claude-code.agent.md +2 -2
- package/agents/dotnet/dotnet-csharp-runtime-review-agent/harnesses/copilot.agent.md +2 -2
- package/agents/dotnet/dotnet-csharp-runtime-review-agent/harnesses/cursor.agent.md +2 -2
- package/agents/dotnet/dotnet-csharp-runtime-review-agent/harnesses/gemini.agent.md +2 -2
- package/agents/dotnet/dotnet-csharp-runtime-review-agent/harnesses/kiro-ide.agent.md +2 -2
- package/agents/dotnet/dotnet-efcore-data-access-review-agent/AGENT.md +3 -3
- package/agents/dotnet/dotnet-efcore-data-access-review-agent/harnesses/claude-code.agent.md +3 -3
- package/agents/dotnet/dotnet-efcore-data-access-review-agent/harnesses/copilot.agent.md +3 -3
- package/agents/dotnet/dotnet-efcore-data-access-review-agent/harnesses/cursor.agent.md +3 -3
- package/agents/dotnet/dotnet-efcore-data-access-review-agent/harnesses/gemini.agent.md +3 -3
- package/agents/dotnet/dotnet-efcore-data-access-review-agent/harnesses/kiro-ide.agent.md +3 -3
- package/agents/hetzner/README.md +1 -1
- package/agents/oci/oci-devops-container-platform-engineer-agent/AGENT.md +1 -1
- package/agents/oci/oci-exadata-platform-architect-agent/AGENT.md +1 -1
- package/agents/oci/oci-multi-cloud-architect-agent/AGENT.md +1 -1
- package/agents/prometheus/README.md +1 -1
- package/agents/qa/playwright-e2e-suite-review-agent/AGENT.md +3 -3
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/claude-code.agent.md +3 -3
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/copilot.agent.md +3 -3
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/cursor.agent.md +3 -3
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/gemini.agent.md +3 -3
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/kiro-ide.agent.md +3 -3
- package/agents/salesforce/AGENTS.md +31 -0
- package/agents/salesforce/README.md +135 -0
- package/agents/salesforce/salesforce-adaptive-access-agent/AGENT.md +117 -0
- package/agents/salesforce/salesforce-adaptive-access-agent/LEAST-PRIVILEGES.md +91 -0
- package/agents/salesforce/salesforce-adaptive-access-agent/harnesses/claude-code.agent.md +69 -0
- package/agents/salesforce/salesforce-adaptive-access-agent/harnesses/codex.toml +30 -0
- package/agents/salesforce/salesforce-adaptive-access-agent/harnesses/copilot.agent.md +69 -0
- package/agents/salesforce/salesforce-adaptive-access-agent/harnesses/cursor.agent.md +69 -0
- package/agents/salesforce/salesforce-adaptive-access-agent/harnesses/gemini.agent.md +69 -0
- package/agents/salesforce/salesforce-adaptive-access-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-adaptive-access-agent/harnesses/kiro-ide.agent.md +69 -0
- package/agents/salesforce/salesforce-adaptive-access-agent/metadata.json +30 -0
- package/agents/salesforce/salesforce-agentforce-ai-agent/AGENT.md +126 -0
- package/agents/salesforce/salesforce-agentforce-ai-agent/LEAST-PRIVILEGES.md +92 -0
- package/agents/salesforce/salesforce-agentforce-ai-agent/harnesses/claude-code.agent.md +81 -0
- package/agents/salesforce/salesforce-agentforce-ai-agent/harnesses/codex.toml +36 -0
- package/agents/salesforce/salesforce-agentforce-ai-agent/harnesses/copilot.agent.md +81 -0
- package/agents/salesforce/salesforce-agentforce-ai-agent/harnesses/cursor.agent.md +81 -0
- package/agents/salesforce/salesforce-agentforce-ai-agent/harnesses/gemini.agent.md +81 -0
- package/agents/salesforce/salesforce-agentforce-ai-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-agentforce-ai-agent/harnesses/kiro-ide.agent.md +49 -0
- package/agents/salesforce/salesforce-agentforce-ai-agent/metadata.json +41 -0
- package/agents/salesforce/salesforce-analytics-tableau-agent/AGENT.md +119 -0
- package/agents/salesforce/salesforce-analytics-tableau-agent/LEAST-PRIVILEGES.md +81 -0
- package/agents/salesforce/salesforce-analytics-tableau-agent/harnesses/claude-code.agent.md +75 -0
- package/agents/salesforce/salesforce-analytics-tableau-agent/harnesses/codex.toml +35 -0
- package/agents/salesforce/salesforce-analytics-tableau-agent/harnesses/copilot.agent.md +75 -0
- package/agents/salesforce/salesforce-analytics-tableau-agent/harnesses/cursor.agent.md +75 -0
- package/agents/salesforce/salesforce-analytics-tableau-agent/harnesses/gemini.agent.md +75 -0
- package/agents/salesforce/salesforce-analytics-tableau-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-analytics-tableau-agent/harnesses/kiro-ide.agent.md +45 -0
- package/agents/salesforce/salesforce-analytics-tableau-agent/metadata.json +41 -0
- package/agents/salesforce/salesforce-app-builder-automation-agent/AGENT.md +112 -0
- package/agents/salesforce/salesforce-app-builder-automation-agent/LEAST-PRIVILEGES.md +86 -0
- package/agents/salesforce/salesforce-app-builder-automation-agent/harnesses/claude-code.agent.md +50 -0
- package/agents/salesforce/salesforce-app-builder-automation-agent/harnesses/codex.toml +35 -0
- package/agents/salesforce/salesforce-app-builder-automation-agent/harnesses/copilot.agent.md +50 -0
- package/agents/salesforce/salesforce-app-builder-automation-agent/harnesses/cursor.agent.md +50 -0
- package/agents/salesforce/salesforce-app-builder-automation-agent/harnesses/gemini.agent.md +50 -0
- package/agents/salesforce/salesforce-app-builder-automation-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-app-builder-automation-agent/harnesses/kiro-ide.agent.md +50 -0
- package/agents/salesforce/salesforce-app-builder-automation-agent/metadata.json +40 -0
- package/agents/salesforce/salesforce-business-analyst-agent/AGENT.md +110 -0
- package/agents/salesforce/salesforce-business-analyst-agent/LEAST-PRIVILEGES.md +89 -0
- package/agents/salesforce/salesforce-business-analyst-agent/harnesses/claude-code.agent.md +48 -0
- package/agents/salesforce/salesforce-business-analyst-agent/harnesses/codex.toml +35 -0
- package/agents/salesforce/salesforce-business-analyst-agent/harnesses/copilot.agent.md +48 -0
- package/agents/salesforce/salesforce-business-analyst-agent/harnesses/cursor.agent.md +48 -0
- package/agents/salesforce/salesforce-business-analyst-agent/harnesses/gemini.agent.md +48 -0
- package/agents/salesforce/salesforce-business-analyst-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-business-analyst-agent/harnesses/kiro-ide.agent.md +48 -0
- package/agents/salesforce/salesforce-business-analyst-agent/metadata.json +40 -0
- package/agents/salesforce/salesforce-certificate-lifecycle-agent/AGENT.md +112 -0
- package/agents/salesforce/salesforce-certificate-lifecycle-agent/LEAST-PRIVILEGES.md +81 -0
- package/agents/salesforce/salesforce-certificate-lifecycle-agent/harnesses/claude-code.agent.md +66 -0
- package/agents/salesforce/salesforce-certificate-lifecycle-agent/harnesses/codex.toml +30 -0
- package/agents/salesforce/salesforce-certificate-lifecycle-agent/harnesses/copilot.agent.md +66 -0
- package/agents/salesforce/salesforce-certificate-lifecycle-agent/harnesses/cursor.agent.md +66 -0
- package/agents/salesforce/salesforce-certificate-lifecycle-agent/harnesses/gemini.agent.md +66 -0
- package/agents/salesforce/salesforce-certificate-lifecycle-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-certificate-lifecycle-agent/harnesses/kiro-ide.agent.md +66 -0
- package/agents/salesforce/salesforce-certificate-lifecycle-agent/metadata.json +30 -0
- package/agents/salesforce/salesforce-change-impact-analyst-agent/AGENT.md +121 -0
- package/agents/salesforce/salesforce-change-impact-analyst-agent/LEAST-PRIVILEGES.md +87 -0
- package/agents/salesforce/salesforce-change-impact-analyst-agent/harnesses/claude-code.agent.md +74 -0
- package/agents/salesforce/salesforce-change-impact-analyst-agent/harnesses/codex.toml +30 -0
- package/agents/salesforce/salesforce-change-impact-analyst-agent/harnesses/copilot.agent.md +74 -0
- package/agents/salesforce/salesforce-change-impact-analyst-agent/harnesses/cursor.agent.md +74 -0
- package/agents/salesforce/salesforce-change-impact-analyst-agent/harnesses/gemini.agent.md +74 -0
- package/agents/salesforce/salesforce-change-impact-analyst-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-change-impact-analyst-agent/harnesses/kiro-ide.agent.md +74 -0
- package/agents/salesforce/salesforce-change-impact-analyst-agent/metadata.json +30 -0
- package/agents/salesforce/salesforce-code-analyzer-orchestrator-agent/AGENT.md +119 -0
- package/agents/salesforce/salesforce-code-analyzer-orchestrator-agent/LEAST-PRIVILEGES.md +88 -0
- package/agents/salesforce/salesforce-code-analyzer-orchestrator-agent/harnesses/claude-code.agent.md +67 -0
- package/agents/salesforce/salesforce-code-analyzer-orchestrator-agent/harnesses/codex.toml +30 -0
- package/agents/salesforce/salesforce-code-analyzer-orchestrator-agent/harnesses/copilot.agent.md +67 -0
- package/agents/salesforce/salesforce-code-analyzer-orchestrator-agent/harnesses/cursor.agent.md +67 -0
- package/agents/salesforce/salesforce-code-analyzer-orchestrator-agent/harnesses/gemini.agent.md +67 -0
- package/agents/salesforce/salesforce-code-analyzer-orchestrator-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-code-analyzer-orchestrator-agent/harnesses/kiro-ide.agent.md +67 -0
- package/agents/salesforce/salesforce-code-analyzer-orchestrator-agent/metadata.json +31 -0
- package/agents/salesforce/salesforce-compliance-privacy-agent/AGENT.md +130 -0
- package/agents/salesforce/salesforce-compliance-privacy-agent/LEAST-PRIVILEGES.md +85 -0
- package/agents/salesforce/salesforce-compliance-privacy-agent/harnesses/claude-code.agent.md +84 -0
- package/agents/salesforce/salesforce-compliance-privacy-agent/harnesses/codex.toml +36 -0
- package/agents/salesforce/salesforce-compliance-privacy-agent/harnesses/copilot.agent.md +84 -0
- package/agents/salesforce/salesforce-compliance-privacy-agent/harnesses/cursor.agent.md +84 -0
- package/agents/salesforce/salesforce-compliance-privacy-agent/harnesses/gemini.agent.md +84 -0
- package/agents/salesforce/salesforce-compliance-privacy-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-compliance-privacy-agent/harnesses/kiro-ide.agent.md +49 -0
- package/agents/salesforce/salesforce-compliance-privacy-agent/metadata.json +41 -0
- package/agents/salesforce/salesforce-continuous-verification-agent/AGENT.md +113 -0
- package/agents/salesforce/salesforce-continuous-verification-agent/LEAST-PRIVILEGES.md +90 -0
- package/agents/salesforce/salesforce-continuous-verification-agent/harnesses/claude-code.agent.md +64 -0
- package/agents/salesforce/salesforce-continuous-verification-agent/harnesses/codex.toml +30 -0
- package/agents/salesforce/salesforce-continuous-verification-agent/harnesses/copilot.agent.md +64 -0
- package/agents/salesforce/salesforce-continuous-verification-agent/harnesses/cursor.agent.md +64 -0
- package/agents/salesforce/salesforce-continuous-verification-agent/harnesses/gemini.agent.md +64 -0
- package/agents/salesforce/salesforce-continuous-verification-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-continuous-verification-agent/harnesses/kiro-ide.agent.md +64 -0
- package/agents/salesforce/salesforce-continuous-verification-agent/metadata.json +31 -0
- package/agents/salesforce/salesforce-data-architecture-agent/AGENT.md +113 -0
- package/agents/salesforce/salesforce-data-architecture-agent/LEAST-PRIVILEGES.md +92 -0
- package/agents/salesforce/salesforce-data-architecture-agent/harnesses/claude-code.agent.md +49 -0
- package/agents/salesforce/salesforce-data-architecture-agent/harnesses/codex.toml +35 -0
- package/agents/salesforce/salesforce-data-architecture-agent/harnesses/copilot.agent.md +49 -0
- package/agents/salesforce/salesforce-data-architecture-agent/harnesses/cursor.agent.md +49 -0
- package/agents/salesforce/salesforce-data-architecture-agent/harnesses/gemini.agent.md +49 -0
- package/agents/salesforce/salesforce-data-architecture-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-data-architecture-agent/harnesses/kiro-ide.agent.md +49 -0
- package/agents/salesforce/salesforce-data-architecture-agent/metadata.json +40 -0
- package/agents/salesforce/salesforce-development-agent/AGENT.md +114 -0
- package/agents/salesforce/salesforce-development-agent/LEAST-PRIVILEGES.md +89 -0
- package/agents/salesforce/salesforce-development-agent/harnesses/claude-code.agent.md +50 -0
- package/agents/salesforce/salesforce-development-agent/harnesses/codex.toml +36 -0
- package/agents/salesforce/salesforce-development-agent/harnesses/copilot.agent.md +50 -0
- package/agents/salesforce/salesforce-development-agent/harnesses/cursor.agent.md +50 -0
- package/agents/salesforce/salesforce-development-agent/harnesses/gemini.agent.md +50 -0
- package/agents/salesforce/salesforce-development-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-development-agent/harnesses/kiro-ide.agent.md +50 -0
- package/agents/salesforce/salesforce-development-agent/metadata.json +40 -0
- package/agents/salesforce/salesforce-devops-release-agent/AGENT.md +115 -0
- package/agents/salesforce/salesforce-devops-release-agent/LEAST-PRIVILEGES.md +90 -0
- package/agents/salesforce/salesforce-devops-release-agent/harnesses/claude-code.agent.md +51 -0
- package/agents/salesforce/salesforce-devops-release-agent/harnesses/codex.toml +35 -0
- package/agents/salesforce/salesforce-devops-release-agent/harnesses/copilot.agent.md +51 -0
- package/agents/salesforce/salesforce-devops-release-agent/harnesses/cursor.agent.md +51 -0
- package/agents/salesforce/salesforce-devops-release-agent/harnesses/gemini.agent.md +51 -0
- package/agents/salesforce/salesforce-devops-release-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-devops-release-agent/harnesses/kiro-ide.agent.md +51 -0
- package/agents/salesforce/salesforce-devops-release-agent/metadata.json +40 -0
- package/agents/salesforce/salesforce-enterprise-architect-agent/AGENT.md +128 -0
- package/agents/salesforce/salesforce-enterprise-architect-agent/LEAST-PRIVILEGES.md +92 -0
- package/agents/salesforce/salesforce-enterprise-architect-agent/harnesses/claude-code.agent.md +81 -0
- package/agents/salesforce/salesforce-enterprise-architect-agent/harnesses/codex.toml +36 -0
- package/agents/salesforce/salesforce-enterprise-architect-agent/harnesses/copilot.agent.md +81 -0
- package/agents/salesforce/salesforce-enterprise-architect-agent/harnesses/cursor.agent.md +81 -0
- package/agents/salesforce/salesforce-enterprise-architect-agent/harnesses/gemini.agent.md +81 -0
- package/agents/salesforce/salesforce-enterprise-architect-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-enterprise-architect-agent/harnesses/kiro-ide.agent.md +49 -0
- package/agents/salesforce/salesforce-enterprise-architect-agent/metadata.json +41 -0
- package/agents/salesforce/salesforce-experience-cloud-agent/AGENT.md +124 -0
- package/agents/salesforce/salesforce-experience-cloud-agent/LEAST-PRIVILEGES.md +80 -0
- package/agents/salesforce/salesforce-experience-cloud-agent/harnesses/claude-code.agent.md +79 -0
- package/agents/salesforce/salesforce-experience-cloud-agent/harnesses/codex.toml +35 -0
- package/agents/salesforce/salesforce-experience-cloud-agent/harnesses/copilot.agent.md +79 -0
- package/agents/salesforce/salesforce-experience-cloud-agent/harnesses/cursor.agent.md +79 -0
- package/agents/salesforce/salesforce-experience-cloud-agent/harnesses/gemini.agent.md +79 -0
- package/agents/salesforce/salesforce-experience-cloud-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-experience-cloud-agent/harnesses/kiro-ide.agent.md +59 -0
- package/agents/salesforce/salesforce-experience-cloud-agent/metadata.json +40 -0
- package/agents/salesforce/salesforce-hyperforce-security-agent/AGENT.md +113 -0
- package/agents/salesforce/salesforce-hyperforce-security-agent/LEAST-PRIVILEGES.md +80 -0
- package/agents/salesforce/salesforce-hyperforce-security-agent/harnesses/claude-code.agent.md +72 -0
- package/agents/salesforce/salesforce-hyperforce-security-agent/harnesses/codex.toml +28 -0
- package/agents/salesforce/salesforce-hyperforce-security-agent/harnesses/copilot.agent.md +72 -0
- package/agents/salesforce/salesforce-hyperforce-security-agent/harnesses/cursor.agent.md +72 -0
- package/agents/salesforce/salesforce-hyperforce-security-agent/harnesses/gemini.agent.md +72 -0
- package/agents/salesforce/salesforce-hyperforce-security-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-hyperforce-security-agent/harnesses/kiro-ide.agent.md +72 -0
- package/agents/salesforce/salesforce-hyperforce-security-agent/metadata.json +30 -0
- package/agents/salesforce/salesforce-industry-cloud-agent/AGENT.md +125 -0
- package/agents/salesforce/salesforce-industry-cloud-agent/LEAST-PRIVILEGES.md +88 -0
- package/agents/salesforce/salesforce-industry-cloud-agent/harnesses/claude-code.agent.md +80 -0
- package/agents/salesforce/salesforce-industry-cloud-agent/harnesses/codex.toml +41 -0
- package/agents/salesforce/salesforce-industry-cloud-agent/harnesses/copilot.agent.md +80 -0
- package/agents/salesforce/salesforce-industry-cloud-agent/harnesses/cursor.agent.md +80 -0
- package/agents/salesforce/salesforce-industry-cloud-agent/harnesses/gemini.agent.md +80 -0
- package/agents/salesforce/salesforce-industry-cloud-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-industry-cloud-agent/harnesses/kiro-ide.agent.md +48 -0
- package/agents/salesforce/salesforce-industry-cloud-agent/metadata.json +42 -0
- package/agents/salesforce/salesforce-integration-mulesoft-agent/AGENT.md +115 -0
- package/agents/salesforce/salesforce-integration-mulesoft-agent/LEAST-PRIVILEGES.md +91 -0
- package/agents/salesforce/salesforce-integration-mulesoft-agent/harnesses/claude-code.agent.md +50 -0
- package/agents/salesforce/salesforce-integration-mulesoft-agent/harnesses/codex.toml +35 -0
- package/agents/salesforce/salesforce-integration-mulesoft-agent/harnesses/copilot.agent.md +50 -0
- package/agents/salesforce/salesforce-integration-mulesoft-agent/harnesses/cursor.agent.md +50 -0
- package/agents/salesforce/salesforce-integration-mulesoft-agent/harnesses/gemini.agent.md +50 -0
- package/agents/salesforce/salesforce-integration-mulesoft-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-integration-mulesoft-agent/harnesses/kiro-ide.agent.md +50 -0
- package/agents/salesforce/salesforce-integration-mulesoft-agent/metadata.json +40 -0
- package/agents/salesforce/salesforce-live-guard-agent/AGENT.md +126 -0
- package/agents/salesforce/salesforce-live-guard-agent/LEAST-PRIVILEGES.md +100 -0
- package/agents/salesforce/salesforce-live-guard-agent/harnesses/claude-code.agent.md +85 -0
- package/agents/salesforce/salesforce-live-guard-agent/harnesses/codex.toml +50 -0
- package/agents/salesforce/salesforce-live-guard-agent/harnesses/copilot.agent.md +85 -0
- package/agents/salesforce/salesforce-live-guard-agent/harnesses/cursor.agent.md +85 -0
- package/agents/salesforce/salesforce-live-guard-agent/harnesses/gemini.agent.md +85 -0
- package/agents/salesforce/salesforce-live-guard-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-live-guard-agent/harnesses/kiro-ide.agent.md +58 -0
- package/agents/salesforce/salesforce-live-guard-agent/metadata.json +39 -0
- package/agents/salesforce/salesforce-maestro-agent/AGENT.md +77 -0
- package/agents/salesforce/salesforce-maestro-agent/LEAST-PRIVILEGES.md +93 -0
- package/agents/salesforce/salesforce-maestro-agent/README.md +593 -0
- package/agents/salesforce/salesforce-maestro-agent/harnesses/claude-code.agent.md +65 -0
- package/agents/salesforce/salesforce-maestro-agent/harnesses/codex.toml +66 -0
- package/agents/salesforce/salesforce-maestro-agent/harnesses/copilot.agent.md +65 -0
- package/agents/salesforce/salesforce-maestro-agent/harnesses/cursor.agent.md +65 -0
- package/agents/salesforce/salesforce-maestro-agent/harnesses/gemini.agent.md +65 -0
- package/agents/salesforce/salesforce-maestro-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-maestro-agent/harnesses/kiro-ide.agent.md +65 -0
- package/agents/salesforce/salesforce-maestro-agent/metadata.json +38 -0
- package/agents/salesforce/salesforce-marketing-cloud-agent/AGENT.md +124 -0
- package/agents/salesforce/salesforce-marketing-cloud-agent/LEAST-PRIVILEGES.md +86 -0
- package/agents/salesforce/salesforce-marketing-cloud-agent/harnesses/claude-code.agent.md +78 -0
- package/agents/salesforce/salesforce-marketing-cloud-agent/harnesses/codex.toml +34 -0
- package/agents/salesforce/salesforce-marketing-cloud-agent/harnesses/copilot.agent.md +78 -0
- package/agents/salesforce/salesforce-marketing-cloud-agent/harnesses/cursor.agent.md +78 -0
- package/agents/salesforce/salesforce-marketing-cloud-agent/harnesses/gemini.agent.md +78 -0
- package/agents/salesforce/salesforce-marketing-cloud-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-marketing-cloud-agent/harnesses/kiro-ide.agent.md +48 -0
- package/agents/salesforce/salesforce-marketing-cloud-agent/metadata.json +41 -0
- package/agents/salesforce/salesforce-network-policy-architect-agent/AGENT.md +113 -0
- package/agents/salesforce/salesforce-network-policy-architect-agent/LEAST-PRIVILEGES.md +87 -0
- package/agents/salesforce/salesforce-network-policy-architect-agent/harnesses/claude-code.agent.md +72 -0
- package/agents/salesforce/salesforce-network-policy-architect-agent/harnesses/codex.toml +28 -0
- package/agents/salesforce/salesforce-network-policy-architect-agent/harnesses/copilot.agent.md +72 -0
- package/agents/salesforce/salesforce-network-policy-architect-agent/harnesses/cursor.agent.md +72 -0
- package/agents/salesforce/salesforce-network-policy-architect-agent/harnesses/gemini.agent.md +72 -0
- package/agents/salesforce/salesforce-network-policy-architect-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-network-policy-architect-agent/harnesses/kiro-ide.agent.md +72 -0
- package/agents/salesforce/salesforce-network-policy-architect-agent/metadata.json +31 -0
- package/agents/salesforce/salesforce-platform-admin-review-agent/AGENT.md +113 -0
- package/agents/salesforce/salesforce-platform-admin-review-agent/LEAST-PRIVILEGES.md +88 -0
- package/agents/salesforce/salesforce-platform-admin-review-agent/harnesses/claude-code.agent.md +49 -0
- package/agents/salesforce/salesforce-platform-admin-review-agent/harnesses/codex.toml +36 -0
- package/agents/salesforce/salesforce-platform-admin-review-agent/harnesses/copilot.agent.md +49 -0
- package/agents/salesforce/salesforce-platform-admin-review-agent/harnesses/cursor.agent.md +49 -0
- package/agents/salesforce/salesforce-platform-admin-review-agent/harnesses/gemini.agent.md +49 -0
- package/agents/salesforce/salesforce-platform-admin-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-platform-admin-review-agent/harnesses/kiro-ide.agent.md +49 -0
- package/agents/salesforce/salesforce-platform-admin-review-agent/metadata.json +40 -0
- package/agents/salesforce/salesforce-sales-cloud-revenue-agent/AGENT.md +115 -0
- package/agents/salesforce/salesforce-sales-cloud-revenue-agent/LEAST-PRIVILEGES.md +83 -0
- package/agents/salesforce/salesforce-sales-cloud-revenue-agent/harnesses/claude-code.agent.md +50 -0
- package/agents/salesforce/salesforce-sales-cloud-revenue-agent/harnesses/codex.toml +35 -0
- package/agents/salesforce/salesforce-sales-cloud-revenue-agent/harnesses/copilot.agent.md +50 -0
- package/agents/salesforce/salesforce-sales-cloud-revenue-agent/harnesses/cursor.agent.md +50 -0
- package/agents/salesforce/salesforce-sales-cloud-revenue-agent/harnesses/gemini.agent.md +50 -0
- package/agents/salesforce/salesforce-sales-cloud-revenue-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-sales-cloud-revenue-agent/harnesses/kiro-ide.agent.md +50 -0
- package/agents/salesforce/salesforce-sales-cloud-revenue-agent/metadata.json +40 -0
- package/agents/salesforce/salesforce-sandbox-governance-agent/AGENT.md +120 -0
- package/agents/salesforce/salesforce-sandbox-governance-agent/LEAST-PRIVILEGES.md +80 -0
- package/agents/salesforce/salesforce-sandbox-governance-agent/harnesses/claude-code.agent.md +72 -0
- package/agents/salesforce/salesforce-sandbox-governance-agent/harnesses/codex.toml +30 -0
- package/agents/salesforce/salesforce-sandbox-governance-agent/harnesses/copilot.agent.md +72 -0
- package/agents/salesforce/salesforce-sandbox-governance-agent/harnesses/cursor.agent.md +72 -0
- package/agents/salesforce/salesforce-sandbox-governance-agent/harnesses/gemini.agent.md +72 -0
- package/agents/salesforce/salesforce-sandbox-governance-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-sandbox-governance-agent/harnesses/kiro-ide.agent.md +72 -0
- package/agents/salesforce/salesforce-sandbox-governance-agent/metadata.json +30 -0
- package/agents/salesforce/salesforce-sandbox-isolation-agent/AGENT.md +113 -0
- package/agents/salesforce/salesforce-sandbox-isolation-agent/LEAST-PRIVILEGES.md +90 -0
- package/agents/salesforce/salesforce-sandbox-isolation-agent/harnesses/claude-code.agent.md +71 -0
- package/agents/salesforce/salesforce-sandbox-isolation-agent/harnesses/codex.toml +28 -0
- package/agents/salesforce/salesforce-sandbox-isolation-agent/harnesses/copilot.agent.md +71 -0
- package/agents/salesforce/salesforce-sandbox-isolation-agent/harnesses/cursor.agent.md +71 -0
- package/agents/salesforce/salesforce-sandbox-isolation-agent/harnesses/gemini.agent.md +71 -0
- package/agents/salesforce/salesforce-sandbox-isolation-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-sandbox-isolation-agent/harnesses/kiro-ide.agent.md +71 -0
- package/agents/salesforce/salesforce-sandbox-isolation-agent/metadata.json +30 -0
- package/agents/salesforce/salesforce-security-identity-access-agent/AGENT.md +118 -0
- package/agents/salesforce/salesforce-security-identity-access-agent/LEAST-PRIVILEGES.md +85 -0
- package/agents/salesforce/salesforce-security-identity-access-agent/harnesses/claude-code.agent.md +52 -0
- package/agents/salesforce/salesforce-security-identity-access-agent/harnesses/codex.toml +36 -0
- package/agents/salesforce/salesforce-security-identity-access-agent/harnesses/copilot.agent.md +52 -0
- package/agents/salesforce/salesforce-security-identity-access-agent/harnesses/cursor.agent.md +52 -0
- package/agents/salesforce/salesforce-security-identity-access-agent/harnesses/gemini.agent.md +52 -0
- package/agents/salesforce/salesforce-security-identity-access-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-security-identity-access-agent/harnesses/kiro-ide.agent.md +52 -0
- package/agents/salesforce/salesforce-security-identity-access-agent/metadata.json +40 -0
- package/agents/salesforce/salesforce-service-field-service-agent/AGENT.md +115 -0
- package/agents/salesforce/salesforce-service-field-service-agent/LEAST-PRIVILEGES.md +82 -0
- package/agents/salesforce/salesforce-service-field-service-agent/harnesses/claude-code.agent.md +50 -0
- package/agents/salesforce/salesforce-service-field-service-agent/harnesses/codex.toml +35 -0
- package/agents/salesforce/salesforce-service-field-service-agent/harnesses/copilot.agent.md +50 -0
- package/agents/salesforce/salesforce-service-field-service-agent/harnesses/cursor.agent.md +50 -0
- package/agents/salesforce/salesforce-service-field-service-agent/harnesses/gemini.agent.md +50 -0
- package/agents/salesforce/salesforce-service-field-service-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-service-field-service-agent/harnesses/kiro-ide.agent.md +50 -0
- package/agents/salesforce/salesforce-service-field-service-agent/metadata.json +40 -0
- package/agents/salesforce/salesforce-session-governance-agent/AGENT.md +116 -0
- package/agents/salesforce/salesforce-session-governance-agent/LEAST-PRIVILEGES.md +91 -0
- package/agents/salesforce/salesforce-session-governance-agent/harnesses/claude-code.agent.md +74 -0
- package/agents/salesforce/salesforce-session-governance-agent/harnesses/codex.toml +28 -0
- package/agents/salesforce/salesforce-session-governance-agent/harnesses/copilot.agent.md +74 -0
- package/agents/salesforce/salesforce-session-governance-agent/harnesses/cursor.agent.md +74 -0
- package/agents/salesforce/salesforce-session-governance-agent/harnesses/gemini.agent.md +74 -0
- package/agents/salesforce/salesforce-session-governance-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-session-governance-agent/harnesses/kiro-ide.agent.md +74 -0
- package/agents/salesforce/salesforce-session-governance-agent/metadata.json +30 -0
- package/agents/salesforce/salesforce-slack-collaboration-agent/AGENT.md +123 -0
- package/agents/salesforce/salesforce-slack-collaboration-agent/LEAST-PRIVILEGES.md +86 -0
- package/agents/salesforce/salesforce-slack-collaboration-agent/harnesses/claude-code.agent.md +79 -0
- package/agents/salesforce/salesforce-slack-collaboration-agent/harnesses/codex.toml +35 -0
- package/agents/salesforce/salesforce-slack-collaboration-agent/harnesses/copilot.agent.md +79 -0
- package/agents/salesforce/salesforce-slack-collaboration-agent/harnesses/cursor.agent.md +79 -0
- package/agents/salesforce/salesforce-slack-collaboration-agent/harnesses/gemini.agent.md +79 -0
- package/agents/salesforce/salesforce-slack-collaboration-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/salesforce/salesforce-slack-collaboration-agent/harnesses/kiro-ide.agent.md +48 -0
- package/agents/salesforce/salesforce-slack-collaboration-agent/metadata.json +41 -0
- package/assets/logos/cloud/salesforce/salesforce.svg +34 -0
- package/catalog/agents.json +1451 -283
- package/catalog/asset-integrity.json +2152 -327
- package/catalog/install-roles.json +68 -0
- package/catalog/skill-manifest.json +1040 -155
- package/catalog/skills.json +1242 -262
- package/package.json +3 -2
- package/plugins/vanguard-frontier-agentic/.codex-plugin/plugin.json +1 -1
- package/powers/vanguard-salesforce/POWER.md +42 -0
- package/schemas/agent.schema.json +2 -1
- package/schemas/skill.frontmatter.schema.json +33 -3
- package/schemas/skill.schema.json +2 -1
- package/scripts/export-marketplace-agents.mjs +17 -1
- package/scripts/generate-kiro-powers.mjs +12 -0
- package/scripts/release-prepare.mjs +35 -0
- package/skills/aws/aws-agentcore/references/official-sources.md +19 -19
- package/skills/aws/aws-generative-ai-developer/references/official-sources.md +10 -10
- package/skills/azure/azure-ai-foundry-ops-governor/references/workflow-and-output.md +2 -2
- package/skills/azure/azure-aks-platform-operator/references/workflow-and-output.md +1 -1
- package/skills/azure/azure-app-service-production-readiness/references/workflow-and-output.md +1 -1
- package/skills/azure/azure-cosmosdb-application-developer/references/official-sources.md +11 -11
- package/skills/azure/azure-cosmosdb-performance-investigator/references/official-sources.md +11 -11
- package/skills/azure/azure-cosmosdb-platform-operator/references/official-sources.md +10 -10
- package/skills/azure/azure-cost-estimation-review/references/workflow-and-output.md +1 -1
- package/skills/azure/azure-cost-optimization-governor/references/workflow-and-output.md +1 -1
- package/skills/azure/azure-entra-id-specialist/references/official-sources.md +28 -28
- package/skills/azure/azure-identity-governance-review/references/official-sources.md +11 -11
- package/skills/azure/azure-identity-governance-review/references/workflow-and-output.md +1 -1
- package/skills/azure/azure-key-vault-secret-lifecycle-auditor/references/workflow-and-output.md +1 -1
- package/skills/azure/azure-migrate-landing-zone-cutover/references/workflow-and-output.md +1 -1
- package/skills/azure/azure-platform-automation-devops/references/workflow-and-output.md +1 -1
- package/skills/azure/azure-private-endpoint-adoption-planner/references/workflow-and-output.md +1 -1
- package/skills/azure/azure-resource-health-incident-triage/references/workflow-and-output.md +6 -6
- package/skills/azure/azure-subscription-resource-organization/references/workflow-and-output.md +1 -1
- package/skills/cross-functional/salesforce-case-capsule/SKILL.md +164 -0
- package/skills/cross-functional/salesforce-case-capsule/metadata.json +19 -0
- package/skills/cross-functional/salesforce-data-exposure-escalation-protocol/SKILL.md +165 -0
- package/skills/cross-functional/salesforce-data-exposure-escalation-protocol/metadata.json +19 -0
- package/skills/cross-functional/salesforce-live-change-approval-protocol/SKILL.md +118 -0
- package/skills/cross-functional/salesforce-live-change-approval-protocol/metadata.json +19 -0
- package/skills/cross-functional/salesforce-risk-taxonomy/SKILL.md +162 -0
- package/skills/cross-functional/salesforce-risk-taxonomy/metadata.json +19 -0
- package/skills/cross-functional/salesforce-routing-protocol/SKILL.md +159 -0
- package/skills/cross-functional/salesforce-routing-protocol/metadata.json +19 -0
- package/skills/dotnet/dotnet-aspnetcore-api-review/SKILL.md +1 -1
- package/skills/dotnet/dotnet-aspnetcore-api-review/references/workflow-and-output.md +2 -2
- package/skills/dotnet/dotnet-csharp-runtime-review/SKILL.md +2 -2
- package/skills/dotnet/dotnet-csharp-runtime-review/references/workflow-and-output.md +7 -7
- package/skills/dotnet/dotnet-efcore-data-access-review/SKILL.md +4 -4
- package/skills/dotnet/dotnet-efcore-data-access-review/references/workflow-and-output.md +3 -3
- package/skills/dotnet/dotnet-performance-aot-review/references/workflow-and-output.md +1 -1
- package/skills/dotnet/dotnet-testing-quality-review/SKILL.md +1 -1
- package/skills/dotnet/dotnet-testing-quality-review/references/workflow-and-output.md +2 -2
- package/skills/finops/focus-spec-normalizer/references/focus-columns.md +2 -2
- package/skills/gcp/gcp-alloydb-ai-developer/SKILL.md +1 -1
- package/skills/gcp/gcp-gemini-api-developer/SKILL.md +2 -2
- package/skills/nvidia/nvidia-model-promotion-gatekeeper/SKILL.md +1 -1
- package/skills/nvidia/nvidia-model-promotion-gatekeeper/references/allowlist-commands.md +1 -1
- package/skills/oci/oci-compute-platform-operator/SKILL.md +0 -2
- package/skills/oci/oci-cost-finops-analyst/SKILL.md +0 -2
- package/skills/oci/oci-database-platform-dba/SKILL.md +0 -2
- package/skills/oci/oci-devops-container-platform-engineer/SKILL.md +0 -2
- package/skills/oci/oci-identity-access-governor/SKILL.md +0 -2
- package/skills/oci/oci-multi-cloud-architect/SKILL.md +0 -2
- package/skills/oci/oci-network-architect/SKILL.md +0 -2
- package/skills/oci/oci-observability-incident-responder/SKILL.md +0 -2
- package/skills/oci/oci-security-compliance-reviewer/SKILL.md +0 -2
- package/skills/oci/oci-solution-architect/SKILL.md +1 -3
- package/skills/oci/oci-storage-backup-steward/SKILL.md +0 -2
- package/skills/prometheus/prometheus-alerting-cardinality-review/SKILL.md +1 -1
- package/skills/prometheus/prometheus-alerting-cardinality-review/references/workflow-and-output.md +4 -4
- package/skills/qa/ci-test-pipeline-review/references/workflow-and-output.md +1 -1
- package/skills/qa/llm-ai-pipeline-test-review/references/workflow-and-output.md +1 -1
- package/skills/qa/playwright-e2e-suite-review/SKILL.md +4 -4
- package/skills/qa/playwright-e2e-suite-review/references/workflow-and-output.md +12 -12
- package/skills/qa/plc-control-logic-safety-review/references/workflow-and-output.md +2 -2
- package/skills/qa/test-coverage-quality-review/SKILL.md +1 -1
- package/skills/qa/test-coverage-quality-review/references/workflow-and-output.md +8 -8
- package/skills/qa/test-flakiness-triage/SKILL.md +1 -1
- package/skills/qa/test-flakiness-triage/references/workflow-and-output.md +1 -1
- package/skills/salesforce/README.md +117 -0
- package/skills/salesforce/salesforce-agentforce-risk-review-skill/SKILL.md +206 -0
- package/skills/salesforce/salesforce-agentforce-risk-review-skill/metadata.json +18 -0
- package/skills/salesforce/salesforce-agentforce-risk-review-skill/references/action-safety-matrix.md +160 -0
- package/skills/salesforce/salesforce-agentforce-risk-review-skill/references/agentforce-anti-patterns.md +193 -0
- package/skills/salesforce/salesforce-agentforce-risk-review-skill/references/grounding-source-evaluation.md +162 -0
- package/skills/salesforce/salesforce-agentforce-stdm-observer-skill/SKILL.md +557 -0
- package/skills/salesforce/salesforce-agentforce-stdm-observer-skill/metadata.json +41 -0
- package/skills/salesforce/salesforce-agentforce-stdm-observer-skill/references/observability-rubric.md +219 -0
- package/skills/salesforce/salesforce-agentforce-stdm-observer-skill/references/privacy-redaction.md +240 -0
- package/skills/salesforce/salesforce-agentforce-stdm-observer-skill/references/stdm-queries.md +436 -0
- package/skills/salesforce/salesforce-apex-generator-skill/SKILL.md +307 -0
- package/skills/salesforce/salesforce-apex-generator-skill/metadata.json +30 -0
- package/skills/salesforce/salesforce-apex-generator-skill/references/apex-patterns.md +224 -0
- package/skills/salesforce/salesforce-apex-generator-skill/references/governor-limits.md +175 -0
- package/skills/salesforce/salesforce-apex-generator-skill/references/security-defaults.md +155 -0
- package/skills/salesforce/salesforce-apex-log-analyzer-skill/SKILL.md +360 -0
- package/skills/salesforce/salesforce-apex-log-analyzer-skill/metadata.json +38 -0
- package/skills/salesforce/salesforce-apex-log-analyzer-skill/references/governor-limit-signatures.md +174 -0
- package/skills/salesforce/salesforce-apex-log-analyzer-skill/references/log-format-reference.md +154 -0
- package/skills/salesforce/salesforce-apex-log-analyzer-skill/references/redaction-rules.md +178 -0
- package/skills/salesforce/salesforce-apex-lwc-code-review-skill/SKILL.md +195 -0
- package/skills/salesforce/salesforce-apex-lwc-code-review-skill/metadata.json +18 -0
- package/skills/salesforce/salesforce-apex-lwc-code-review-skill/references/apex-anti-patterns.md +270 -0
- package/skills/salesforce/salesforce-apex-lwc-code-review-skill/references/governor-limits-reference.md +198 -0
- package/skills/salesforce/salesforce-apex-lwc-code-review-skill/references/lwc-security.md +206 -0
- package/skills/salesforce/salesforce-apex-test-generator-skill/SKILL.md +274 -0
- package/skills/salesforce/salesforce-apex-test-generator-skill/metadata.json +29 -0
- package/skills/salesforce/salesforce-apex-test-generator-skill/references/assertion-patterns.md +174 -0
- package/skills/salesforce/salesforce-apex-test-generator-skill/references/async-testing.md +217 -0
- package/skills/salesforce/salesforce-apex-test-generator-skill/references/test-data-factory.md +174 -0
- package/skills/salesforce/salesforce-apex-test-runner-skill/SKILL.md +344 -0
- package/skills/salesforce/salesforce-apex-test-runner-skill/metadata.json +37 -0
- package/skills/salesforce/salesforce-apex-test-runner-skill/references/cli-commands.md +162 -0
- package/skills/salesforce/salesforce-apex-test-runner-skill/references/coverage-analysis.md +107 -0
- package/skills/salesforce/salesforce-apex-test-runner-skill/references/failure-diagnosis.md +187 -0
- package/skills/salesforce/salesforce-bulk-data-ops-skill/SKILL.md +356 -0
- package/skills/salesforce/salesforce-bulk-data-ops-skill/metadata.json +29 -0
- package/skills/salesforce/salesforce-bulk-data-ops-skill/references/anonymous-apex-patterns.md +380 -0
- package/skills/salesforce/salesforce-bulk-data-ops-skill/references/data-loader-templates.md +209 -0
- package/skills/salesforce/salesforce-bulk-data-ops-skill/references/rollback-strategy.md +209 -0
- package/skills/salesforce/salesforce-deployment-validator-skill/SKILL.md +380 -0
- package/skills/salesforce/salesforce-deployment-validator-skill/metadata.json +37 -0
- package/skills/salesforce/salesforce-deployment-validator-skill/references/cli-commands.md +264 -0
- package/skills/salesforce/salesforce-deployment-validator-skill/references/production-refusal-rules.md +243 -0
- package/skills/salesforce/salesforce-deployment-validator-skill/references/test-selection-strategy.md +250 -0
- package/skills/salesforce/salesforce-devsecops-pipeline-skill/SKILL.md +195 -0
- package/skills/salesforce/salesforce-devsecops-pipeline-skill/metadata.json +19 -0
- package/skills/salesforce/salesforce-devsecops-pipeline-skill/references/change-impact-categories.md +216 -0
- package/skills/salesforce/salesforce-devsecops-pipeline-skill/references/sandbox-masking-strategy.md +193 -0
- package/skills/salesforce/salesforce-devsecops-pipeline-skill/references/sca-rule-catalog.md +226 -0
- package/skills/salesforce/salesforce-field-mapping-skill/SKILL.md +348 -0
- package/skills/salesforce/salesforce-field-mapping-skill/metadata.json +29 -0
- package/skills/salesforce/salesforce-field-mapping-skill/references/api-name-normalization.md +141 -0
- package/skills/salesforce/salesforce-field-mapping-skill/references/picklist-value-mapping.md +245 -0
- package/skills/salesforce/salesforce-field-mapping-skill/references/type-mismatch-detection.md +187 -0
- package/skills/salesforce/salesforce-flow-automation-review-skill/SKILL.md +163 -0
- package/skills/salesforce/salesforce-flow-automation-review-skill/metadata.json +18 -0
- package/skills/salesforce/salesforce-flow-automation-review-skill/references/automation-conflict-matrix.md +193 -0
- package/skills/salesforce/salesforce-flow-automation-review-skill/references/fault-path-design.md +189 -0
- package/skills/salesforce/salesforce-flow-automation-review-skill/references/flow-anti-patterns.md +211 -0
- package/skills/salesforce/salesforce-flow-debugger-skill/SKILL.md +355 -0
- package/skills/salesforce/salesforce-flow-debugger-skill/metadata.json +35 -0
- package/skills/salesforce/salesforce-flow-debugger-skill/references/fault-path-design.md +175 -0
- package/skills/salesforce/salesforce-flow-debugger-skill/references/flow-error-patterns.md +247 -0
- package/skills/salesforce/salesforce-flow-debugger-skill/references/interview-log-redaction.md +171 -0
- package/skills/salesforce/salesforce-infrastructure-audit-skill/SKILL.md +137 -0
- package/skills/salesforce/salesforce-infrastructure-audit-skill/metadata.json +19 -0
- package/skills/salesforce/salesforce-infrastructure-audit-skill/references/hyperforce-deployment-controls.md +181 -0
- package/skills/salesforce/salesforce-infrastructure-audit-skill/references/network-policy-reference.md +200 -0
- package/skills/salesforce/salesforce-infrastructure-audit-skill/references/session-policy-reference.md +219 -0
- package/skills/salesforce/salesforce-integration-review-skill/SKILL.md +186 -0
- package/skills/salesforce/salesforce-integration-review-skill/metadata.json +18 -0
- package/skills/salesforce/salesforce-integration-review-skill/references/integration-anti-patterns.md +280 -0
- package/skills/salesforce/salesforce-integration-review-skill/references/integration-pattern-reference.md +239 -0
- package/skills/salesforce/salesforce-integration-review-skill/references/named-credential-design.md +211 -0
- package/skills/salesforce/salesforce-marketing-consent-review-skill/SKILL.md +204 -0
- package/skills/salesforce/salesforce-marketing-consent-review-skill/metadata.json +18 -0
- package/skills/salesforce/salesforce-marketing-consent-review-skill/references/consent-anti-patterns.md +247 -0
- package/skills/salesforce/salesforce-marketing-consent-review-skill/references/consent-model-reference.md +205 -0
- package/skills/salesforce/salesforce-marketing-consent-review-skill/references/regulatory-mapping.md +192 -0
- package/skills/salesforce/salesforce-metadata-fetcher-skill/SKILL.md +418 -0
- package/skills/salesforce/salesforce-metadata-fetcher-skill/metadata.json +50 -0
- package/skills/salesforce/salesforce-metadata-fetcher-skill/references/cli-commands.md +347 -0
- package/skills/salesforce/salesforce-metadata-fetcher-skill/references/delegation-routing.md +416 -0
- package/skills/salesforce/salesforce-metadata-fetcher-skill/references/sanitization-rules.md +392 -0
- package/skills/salesforce/salesforce-metadata-review-skill/SKILL.md +148 -0
- package/skills/salesforce/salesforce-metadata-review-skill/metadata.json +18 -0
- package/skills/salesforce/salesforce-metadata-review-skill/references/deprecated-metadata.md +217 -0
- package/skills/salesforce/salesforce-metadata-review-skill/references/field-hygiene-rules.md +182 -0
- package/skills/salesforce/salesforce-metadata-review-skill/references/object-design-patterns.md +187 -0
- package/skills/salesforce/salesforce-org-assessment-skill/SKILL.md +137 -0
- package/skills/salesforce/salesforce-org-assessment-skill/metadata.json +18 -0
- package/skills/salesforce/salesforce-org-assessment-skill/references/assessment-rubric.md +228 -0
- package/skills/salesforce/salesforce-org-assessment-skill/references/risk-register-template.md +211 -0
- package/skills/salesforce/salesforce-org-assessment-skill/references/tech-debt-indicators.md +252 -0
- package/skills/salesforce/salesforce-permission-model-review-skill/SKILL.md +165 -0
- package/skills/salesforce/salesforce-permission-model-review-skill/metadata.json +18 -0
- package/skills/salesforce/salesforce-permission-model-review-skill/references/fls-review-patterns.md +235 -0
- package/skills/salesforce/salesforce-permission-model-review-skill/references/permission-set-strategy.md +203 -0
- package/skills/salesforce/salesforce-permission-model-review-skill/references/toxic-combinations.md +228 -0
- package/skills/salesforce/salesforce-release-readiness-skill/SKILL.md +185 -0
- package/skills/salesforce/salesforce-release-readiness-skill/metadata.json +18 -0
- package/skills/salesforce/salesforce-release-readiness-skill/references/release-checklist.md +191 -0
- package/skills/salesforce/salesforce-release-readiness-skill/references/rollback-strategy.md +234 -0
- package/skills/salesforce/salesforce-release-readiness-skill/references/test-coverage-strategy.md +314 -0
- package/skills/salesforce/salesforce-soql-explorer-skill/SKILL.md +391 -0
- package/skills/salesforce/salesforce-soql-explorer-skill/metadata.json +35 -0
- package/skills/salesforce/salesforce-soql-explorer-skill/references/cli-commands.md +266 -0
- package/skills/salesforce/salesforce-soql-explorer-skill/references/least-privilege-scope.md +224 -0
- package/skills/salesforce/salesforce-soql-explorer-skill/references/safe-query-patterns.md +317 -0
- package/skills/salesforce/salesforce-soql-generator-skill/SKILL.md +305 -0
- package/skills/salesforce/salesforce-soql-generator-skill/metadata.json +25 -0
- package/skills/salesforce/salesforce-soql-generator-skill/references/common-patterns.md +293 -0
- package/skills/salesforce/salesforce-soql-generator-skill/references/governor-limits.md +171 -0
- package/skills/salesforce/salesforce-soql-generator-skill/references/soql-syntax-quickref.md +255 -0
- package/skills/salesforce/salesforce-validation-rule-writer-skill/SKILL.md +329 -0
- package/skills/salesforce/salesforce-validation-rule-writer-skill/metadata.json +28 -0
- package/skills/salesforce/salesforce-validation-rule-writer-skill/references/error-message-style.md +132 -0
- package/skills/salesforce/salesforce-validation-rule-writer-skill/references/formula-syntax-quickref.md +182 -0
- package/skills/salesforce/salesforce-validation-rule-writer-skill/references/validation-patterns.md +214 -0
- package/skills/salesforce/salesforce-zero-trust-maturity-skill/SKILL.md +164 -0
- package/skills/salesforce/salesforce-zero-trust-maturity-skill/metadata.json +19 -0
- package/skills/salesforce/salesforce-zero-trust-maturity-skill/references/continuous-verification-patterns.md +209 -0
- package/skills/salesforce/salesforce-zero-trust-maturity-skill/references/maturity-scoring-rubric.md +179 -0
- package/skills/salesforce/salesforce-zero-trust-maturity-skill/references/nist-zta-pillars.md +194 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/001-happy-platform-admin-review.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/002-happy-business-analyst.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/003-happy-app-builder-automation.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/004-happy-development.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/005-happy-devops-release.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/006-happy-security-identity-access.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/007-happy-data-architecture.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/008-happy-integration-mulesoft.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/009-happy-sales-cloud-revenue.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/010-happy-marketing-cloud.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/011-happy-agentforce-ai.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/012-happy-analytics-tableau.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/013-happy-compliance-privacy.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/014-happy-network-policy-architect.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/015-happy-hyperforce-security.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/016-happy-sandbox-isolation.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/017-happy-session-governance.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/018-happy-continuous-verification.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/019-happy-certificate-lifecycle.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/020-happy-adaptive-access.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/021-happy-code-analyzer-orchestrator.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/022-happy-sandbox-governance.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/023-happy-change-impact-analyst.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/adv-ambiguous.json +4 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/adv-instruction-injection.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/adv-liveguard-01-live-org-deploy-guard.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/adv-liveguard-02-live-mass-delete-guard.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/adv-liveguard-03-live-release-to-prod-guard.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/adv-persona-replacement.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/expected/adv-secrets-bait.json +6 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/001-happy-platform-admin-review.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/002-happy-business-analyst.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/003-happy-app-builder-automation.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/004-happy-development.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/005-happy-devops-release.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/006-happy-security-identity-access.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/007-happy-data-architecture.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/008-happy-integration-mulesoft.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/009-happy-sales-cloud-revenue.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/010-happy-marketing-cloud.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/011-happy-agentforce-ai.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/012-happy-analytics-tableau.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/013-happy-compliance-privacy.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/014-happy-network-policy-architect.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/015-happy-hyperforce-security.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/016-happy-sandbox-isolation.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/017-happy-session-governance.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/018-happy-continuous-verification.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/019-happy-certificate-lifecycle.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/020-happy-adaptive-access.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/021-happy-code-analyzer-orchestrator.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/022-happy-sandbox-governance.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/023-happy-change-impact-analyst.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/adv-ambiguous.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/adv-instruction-injection.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/adv-liveguard-01-live-org-deploy-guard.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/adv-liveguard-02-live-mass-delete-guard.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/adv-liveguard-03-live-release-to-prod-guard.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/adv-persona-replacement.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/inputs/adv-secrets-bait.json +7 -0
- package/tests/fixtures/salesforce-maestro-routing/taxonomy.json +371 -0
- package/tests/test-vfa-export-coverage.test.mjs +8 -4
- package/tests/validate-catalog.py +12 -1
- package/tests/validate-plugin-manifest.py +11 -1
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: salesforce-apex-lwc-code-review-skill
|
|
3
|
+
description: Use this skill when Salesforce Apex classes, triggers, Lightning Web Components (LWC), or async jobs (Queueable, Batch, Future, Schedulable) must be reviewed for security vulnerabilities and governor-limit risk. Flags: SOQL and DML inside loops, missing test coverage patterns, WITH SECURITY_ENFORCED or WITH USER_MODE or stripInaccessible usage, sharing keyword omission, governor-limit risk, LWC XSS surface, and Locker Service issues. Trigger phrases: "review this Apex class", "check this trigger for SOQL in loops", "is this LWC safe", "review this batch job", "check sharing enforcement in this code". Do not use when Flow automation (not code) is the primary subject (use salesforce-flow-automation-review-skill), when metadata quality is the focus (use salesforce-metadata-review-skill), or when a live code deployment is proposed (use salesforce-live-change-approval-protocol). Works from pasted code only; never requests live org access or executes code.
|
|
4
|
+
allowed-tools: Read Grep Glob
|
|
5
|
+
metadata:
|
|
6
|
+
author: "github: Raishin"
|
|
7
|
+
version: "0.1.0"
|
|
8
|
+
updated: "2026-05-20"
|
|
9
|
+
category: security
|
|
10
|
+
lifecycle: experimental
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Salesforce Apex and LWC Code Review Skill
|
|
14
|
+
|
|
15
|
+
## Purpose
|
|
16
|
+
This skill reviews Salesforce Apex classes, triggers, Lightning Web Components
|
|
17
|
+
(
|
|
18
|
+
LWC), and async jobs for security
|
|
19
|
+
vulnerabilities, governor-limit risk, test coverage patterns, and sharing
|
|
20
|
+
enforcement. It flags patterns that cause data exposure, runaway resource
|
|
21
|
+
consumption, or privilege escalation. It does not execute code, access live
|
|
22
|
+
orgs, or authorize deployments.
|
|
23
|
+
|
|
24
|
+
## When to use
|
|
25
|
+
- Apex or LWC code must be reviewed before a release.
|
|
26
|
+
- A code review has raised security or governor-limit concerns.
|
|
27
|
+
- A trigger is suspected of causing SOQL or DML governor limit errors.
|
|
28
|
+
- LWC components are being reviewed for XSS or Locker Service issues.
|
|
29
|
+
- Async job design (Batch, Queueable, Future, Schedulable) needs safety review.
|
|
30
|
+
|
|
31
|
+
## When not to use
|
|
32
|
+
- Flow automation (not code) is the primary subject — use `salesforce-flow-automation-review-skill`.
|
|
33
|
+
- Metadata quality (not code logic) — use `salesforce-metadata-review-skill`.
|
|
34
|
+
- Live code deployment proposal — use `salesforce-live-change-approval-protocol`.
|
|
35
|
+
- Full org posture assessment — use `salesforce-org-assessment-skill`.
|
|
36
|
+
|
|
37
|
+
## Minimum payload (required inputs)
|
|
38
|
+
- Pasted Apex code (class, trigger, or test class) or LWC component files
|
|
39
|
+
(JS controller, HTML template, or Apex controller).
|
|
40
|
+
- Context: what the code does, what object(s) it operates on, execution context
|
|
41
|
+
(trigger, batch, scheduled, invocable, REST endpoint, LWC component).
|
|
42
|
+
- Whether the code is deployed in production, sandbox, or scratch org.
|
|
43
|
+
|
|
44
|
+
## Workflow
|
|
45
|
+
|
|
46
|
+
### 1. SOQL inside loops
|
|
47
|
+
- Scan for SOQL queries (`[SELECT ... FROM ...]`) inside `for` loops,
|
|
48
|
+
`while` loops, or recursive method calls.
|
|
49
|
+
- Flag every SOQL-in-loop occurrence as a governor-limit risk.
|
|
50
|
+
- Recommend: bulkify by collecting IDs outside the loop and running a single
|
|
51
|
+
SOQL query.
|
|
52
|
+
|
|
53
|
+
### 2. DML inside loops
|
|
54
|
+
- Scan for DML statements (`insert`, `update`, `delete`, `upsert`, `merge`,
|
|
55
|
+
`undelete`) inside loops.
|
|
56
|
+
- Flag every DML-in-loop occurrence.
|
|
57
|
+
- Recommend: collect records in a list and perform a single DML outside the loop.
|
|
58
|
+
|
|
59
|
+
### 3. Sharing enforcement
|
|
60
|
+
- Check every Apex class declaration for the `sharing` keyword:
|
|
61
|
+
- `with sharing` — enforces the running user's sharing rules (recommended default).
|
|
62
|
+
- `without sharing` — bypasses sharing; flag all usages and require documented justification.
|
|
63
|
+
- `inherited sharing` — flag if used in entry-point classes where explicit control is expected.
|
|
64
|
+
- No keyword — implicitly `without sharing` in most contexts; flag all missing keywords.
|
|
65
|
+
- Flag any class that handles PII or financial data and uses `without sharing`
|
|
66
|
+
or omits the keyword.
|
|
67
|
+
|
|
68
|
+
### 4. Field-level security enforcement
|
|
69
|
+
- Check SOQL queries for `WITH SECURITY_ENFORCED` or `WITH USER_MODE` clause.
|
|
70
|
+
- Absence on queries returning PII or sensitive fields → flag as data exposure risk.
|
|
71
|
+
- Check for `Security.stripInaccessible` usage before accessing returned field values.
|
|
72
|
+
- Flag: stripping only on output but not on input (incomplete FLS enforcement).
|
|
73
|
+
|
|
74
|
+
### 5. Governor limit risk
|
|
75
|
+
- SOQL: flag if total distinct SOQL calls per transaction could exceed 100.
|
|
76
|
+
- DML: flag if total DML statements per transaction could exceed 150.
|
|
77
|
+
- Heap: flag large in-memory collections (Lists, Maps, Sets) that grow with record volume.
|
|
78
|
+
- CPU: flag complex nested loops or recursive methods without break conditions.
|
|
79
|
+
- Callouts: flag synchronous callouts from triggers (not allowed); flag callouts
|
|
80
|
+
without timeout handling.
|
|
81
|
+
|
|
82
|
+
### 6. Test coverage patterns
|
|
83
|
+
- Check for test classes covering the reviewed code.
|
|
84
|
+
- Flag: test classes with `SeeAllData=true` (
|
|
85
|
+
deprecated pattern).
|
|
86
|
+
- Flag: test methods with no assertions (`System.assertEquals`, `System.assertNotEquals`,
|
|
87
|
+
`System.assert`).
|
|
88
|
+
- Flag: test data that is hardcoded with real org IDs or email addresses.
|
|
89
|
+
- Flag: missing negative test cases for validation or error paths.
|
|
90
|
+
|
|
91
|
+
### 7. LWC security surface
|
|
92
|
+
- HTML template: flag dynamic `<lightning-formatted-rich-text>` or
|
|
93
|
+
`innerHTML` bindings with unsanitized values (XSS risk).
|
|
94
|
+
- JavaScript: flag `eval`, `Function` constructor, or `dangerouslySetInnerHTML`
|
|
95
|
+
equivalents.
|
|
96
|
+
- Wire adapters: flag wire adapters returning PII fields exposed in template
|
|
97
|
+
without FLS enforcement in the backing Apex.
|
|
98
|
+
- Locker Service
|
|
99
|
+
: flag cross-namespace
|
|
100
|
+
DOM access patterns that depend on bypassing Locker Service.
|
|
101
|
+
|
|
102
|
+
### 8. Async job design
|
|
103
|
+
- Batch Apex: flag `Database.Batchable` implementations that query without
|
|
104
|
+
scope limitation; flag missing `finish` method implementations.
|
|
105
|
+
- Queueable: flag Queueable chains > configured depth without a termination
|
|
106
|
+
condition (runaway chaining).
|
|
107
|
+
- Future: flag `@future(callout=true)` methods called from loops.
|
|
108
|
+
- Schedulable: flag scheduled classes that chain into Batch without a
|
|
109
|
+
concurrency guard.
|
|
110
|
+
|
|
111
|
+
## Evidence requirements
|
|
112
|
+
- Pasted code; no credentials, session tokens, or customer data in code comments.
|
|
113
|
+
- If code contains hardcoded credentials or tokens, stop and ask for sanitized version.
|
|
114
|
+
- Context about the object and field sensitivity helps calibrate sharing and FLS findings.
|
|
115
|
+
|
|
116
|
+
## Output format
|
|
117
|
+
```
|
|
118
|
+
apex_lwc_code_review_findings:
|
|
119
|
+
soql_in_loops:
|
|
120
|
+
- location: [class/method or line range]
|
|
121
|
+
severity: High
|
|
122
|
+
recommendation: [brief]
|
|
123
|
+
dml_in_loops:
|
|
124
|
+
- location: [...]
|
|
125
|
+
severity: High
|
|
126
|
+
recommendation: [...]
|
|
127
|
+
sharing_enforcement:
|
|
128
|
+
- class: [name]
|
|
129
|
+
keyword: with sharing | without sharing | inherited sharing | missing
|
|
130
|
+
severity: Critical | High | Medium | Low
|
|
131
|
+
justification_required: true | false
|
|
132
|
+
recommendation: [...]
|
|
133
|
+
fls_enforcement:
|
|
134
|
+
- query_location: [...]
|
|
135
|
+
with_security_enforced: present | absent
|
|
136
|
+
strip_inaccessible: present | partial | absent
|
|
137
|
+
severity: [...]
|
|
138
|
+
recommendation: [...]
|
|
139
|
+
governor_limit_risks:
|
|
140
|
+
- pattern: [description]
|
|
141
|
+
severity: [...]
|
|
142
|
+
recommendation: [...]
|
|
143
|
+
test_coverage_patterns:
|
|
144
|
+
- finding: [description]
|
|
145
|
+
severity: [...]
|
|
146
|
+
recommendation: [...]
|
|
147
|
+
lwc_security_findings:
|
|
148
|
+
- finding: [description]
|
|
149
|
+
severity: [...]
|
|
150
|
+
recommendation: [...]
|
|
151
|
+
async_job_findings:
|
|
152
|
+
- finding: [description]
|
|
153
|
+
severity: [...]
|
|
154
|
+
recommendation: [...]
|
|
155
|
+
|
|
156
|
+
summary:
|
|
157
|
+
total_findings: [count]
|
|
158
|
+
critical_count: [count]
|
|
159
|
+
high_count: [count]
|
|
160
|
+
escalation_gates_fired: [from salesforce-risk-taxonomy, or "none"]
|
|
161
|
+
assumptions: [list]
|
|
162
|
+
missing_evidence: [what would improve the review]
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Redaction rules
|
|
166
|
+
- Never request secrets, credentials, OAuth tokens, refresh tokens, session IDs, MFA seeds, customer PII.
|
|
167
|
+
- Sanitize org IDs, user IDs (replace with placeholders) before sharing in outputs.
|
|
168
|
+
- If pasted code contains hardcoded credentials or tokens, stop and ask for sanitized version.
|
|
169
|
+
|
|
170
|
+
## Privilege / data handling rules
|
|
171
|
+
- Code review is logic-level only; do not carry record data from code samples.
|
|
172
|
+
- `without sharing` classes handling PII must be flagged for compliance review.
|
|
173
|
+
- Test code containing real org IDs or customer email addresses must be refused.
|
|
174
|
+
|
|
175
|
+
## Handoff rules
|
|
176
|
+
- Hands off to: salesforce-flow-automation-review-skill (if automation logic is intertwined),
|
|
177
|
+
salesforce-permission-model-review-skill (if sharing or FLS findings are systemic),
|
|
178
|
+
salesforce-release-readiness-skill (for deployment readiness after review).
|
|
179
|
+
- If escalation gate fires: salesforce-case-capsule with escalation_required = true.
|
|
180
|
+
- Required handoff fields: matter_id, critical_count, high_count, escalation_gates_fired,
|
|
181
|
+
sharing_enforcement summary.
|
|
182
|
+
|
|
183
|
+
## Audit log fields
|
|
184
|
+
- matter_id, skill_id, skill_version, invoked_by, input_hash, evidence_quality, output_verdict, escalation_fired, timestamp
|
|
185
|
+
|
|
186
|
+
## Stop conditions
|
|
187
|
+
- Pasted code contains live credentials, session tokens, or customer PII in comments — stop and ask for sanitized version.
|
|
188
|
+
- Critical `without sharing` on PII-handling class in production — flag immediately and require human review.
|
|
189
|
+
- SOQL-in-loop count is very high (systemic) — escalate to salesforce-org-assessment-skill for full automation review.
|
|
190
|
+
|
|
191
|
+
## Security notes
|
|
192
|
+
- Read-only static code review; never executes code or requests live org access.
|
|
193
|
+
- `without sharing` is a security-relevant decision; every usage must have documented justification.
|
|
194
|
+
- LWC XSS patterns are particularly high risk in Experience Cloud guest-user context.
|
|
195
|
+
- Test class quality is a proxy for deployment safety; missing assertions are a reliability risk.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "salesforce-apex-lwc-code-review-skill",
|
|
3
|
+
"name": "Salesforce Apex and LWC Code Review Skill",
|
|
4
|
+
"type": "skill",
|
|
5
|
+
"provider": "salesforce",
|
|
6
|
+
"harnesses": ["codex", "claude-code", "cursor", "gemini", "kiro", "other"],
|
|
7
|
+
"summary": "Reviews Salesforce Apex classes, triggers, LWC components, and async jobs (Queueable, Batch, Future, Schedulable) for SOQL and DML inside loops, missing test coverage patterns, WITH SECURITY_ENFORCED and stripInaccessible usage, sharing keyword omission, governor-limit risk, LWC XSS surface, and Locker Service issues.",
|
|
8
|
+
"source_type": "original",
|
|
9
|
+
"official_docs": [
|
|
10
|
+
"https://help.salesforce.com/",
|
|
11
|
+
"https://developer.salesforce.com/docs"
|
|
12
|
+
],
|
|
13
|
+
"security_notes": "Read-only static code review; sanitized code only; never executes code or requests live org credentials. Refuses inputs with hardcoded credentials or customer data. without-sharing usage on PII classes always escalated for human review.",
|
|
14
|
+
"last_verified": "2026-05-20",
|
|
15
|
+
"path": "skills/salesforce/salesforce-apex-lwc-code-review-skill",
|
|
16
|
+
"author": "github: Raishin",
|
|
17
|
+
"version": "0.1.0"
|
|
18
|
+
}
|
package/skills/salesforce/salesforce-apex-lwc-code-review-skill/references/apex-anti-patterns.md
ADDED
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
# Apex Anti-Patterns Reference
|
|
2
|
+
|
|
3
|
+
Patterns that cause governor limit violations, security vulnerabilities, or
|
|
4
|
+
maintainability failures in Apex code.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. SOQL in a Loop
|
|
9
|
+
|
|
10
|
+
### Why It Fails
|
|
11
|
+
Each SOQL query inside a loop consumes one query against the 100-per-transaction
|
|
12
|
+
governor limit. With even 10 records, a nested SOQL loop exhausts limits fast.
|
|
13
|
+
|
|
14
|
+
### Detection
|
|
15
|
+
```
|
|
16
|
+
grep -rn "\bfor\b.*{" --include="*.cls" .
|
|
17
|
+
# Then inspect each loop body for SELECT keywords
|
|
18
|
+
```
|
|
19
|
+
PMD rule: `AvoidSoqlInLoops`
|
|
20
|
+
|
|
21
|
+
### Bad Pattern
|
|
22
|
+
```apex
|
|
23
|
+
for (Account acc : accounts) {
|
|
24
|
+
List<Contact> contacts = [SELECT Id FROM Contact WHERE AccountId = :acc.Id];
|
|
25
|
+
// SOQL inside loop: LIMIT EXCEPTION at 101st account
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Correct Pattern
|
|
30
|
+
```apex
|
|
31
|
+
Set<Id> accountIds = new Map<Id, Account>(accounts).keySet;
|
|
32
|
+
Map<Id, List<Contact>> contactsByAccount = new Map<Id, List<Contact>>;
|
|
33
|
+
|
|
34
|
+
for (Contact c : [SELECT Id, AccountId FROM Contact WHERE AccountId IN :accountIds]) {
|
|
35
|
+
if (!contactsByAccount.containsKey(c.AccountId)) {
|
|
36
|
+
contactsByAccount.put(c.AccountId, new List<Contact>);
|
|
37
|
+
}
|
|
38
|
+
contactsByAccount.get(c.AccountId).add(c);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
for (Account acc : accounts) {
|
|
42
|
+
List<Contact> contacts = contactsByAccount.get(acc.Id) ?? new List<Contact>;
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 2. DML in a Loop
|
|
49
|
+
|
|
50
|
+
### Why It Fails
|
|
51
|
+
Each DML statement (insert/update/delete/upsert) inside a loop consumes one
|
|
52
|
+
DML statement against the 150-per-transaction limit and creates excessive CPU time.
|
|
53
|
+
|
|
54
|
+
### Detection
|
|
55
|
+
PMD rule: `AvoidDmlStatementsInLoops`
|
|
56
|
+
|
|
57
|
+
### Bad Pattern
|
|
58
|
+
```apex
|
|
59
|
+
for (Lead l : leadsToConvert) {
|
|
60
|
+
Database.LeadConvert lc = new Database.LeadConvert;
|
|
61
|
+
lc.setLeadId(l.Id);
|
|
62
|
+
Database.convertLead(lc); // DML in loop
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Correct Pattern
|
|
67
|
+
```apex
|
|
68
|
+
List<Database.LeadConvert> conversions = new List<Database.LeadConvert>;
|
|
69
|
+
for (Lead l : leadsToConvert) {
|
|
70
|
+
Database.LeadConvert lc = new Database.LeadConvert;
|
|
71
|
+
lc.setLeadId(l.Id);
|
|
72
|
+
lc.setConvertedStatus('Closed - Converted');
|
|
73
|
+
conversions.add(lc);
|
|
74
|
+
}
|
|
75
|
+
Database.LeadConvertResult[] results = Database.convertLead(conversions);
|
|
76
|
+
for (Database.LeadConvertResult r : results) {
|
|
77
|
+
if (!r.isSuccess) {
|
|
78
|
+
System.debug('Conversion failed: ' + r.getErrors[0].getMessage);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 3. Missing `with sharing` Declaration
|
|
86
|
+
|
|
87
|
+
### Why It Is a Security Risk
|
|
88
|
+
Without `with sharing`, a class runs in system context, bypassing the org's
|
|
89
|
+
sharing rules. An LWC that calls such an Apex method can expose records the
|
|
90
|
+
user has no business accessing.
|
|
91
|
+
|
|
92
|
+
### Detection
|
|
93
|
+
```
|
|
94
|
+
grep -L "with sharing\|without sharing\|inherited sharing" src/classes/*.cls
|
|
95
|
+
```
|
|
96
|
+
Any class that has an `@AuraEnabled` or `@RemoteAction` method and no sharing
|
|
97
|
+
declaration is a finding.
|
|
98
|
+
|
|
99
|
+
### Patterns
|
|
100
|
+
|
|
101
|
+
```apex
|
|
102
|
+
// WRONG — implicit system mode
|
|
103
|
+
public class AccountController {
|
|
104
|
+
@AuraEnabled
|
|
105
|
+
public static List<Account> getAccounts {
|
|
106
|
+
return [SELECT Id, Name FROM Account]; // returns ALL accounts
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// CORRECT — explicit sharing enforcement
|
|
111
|
+
public with sharing class AccountController {
|
|
112
|
+
@AuraEnabled
|
|
113
|
+
public static List<Account> getAccounts {
|
|
114
|
+
return [SELECT Id, Name FROM Account]; // respects user's visibility
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// INTENTIONAL system mode — document why
|
|
119
|
+
public without sharing class IntegrationBatchProcessor {
|
|
120
|
+
// System mode required: processes inbound integration records
|
|
121
|
+
// that may belong to service users without record access.
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## 4. Hardcoded IDs
|
|
128
|
+
|
|
129
|
+
### Why It Fails
|
|
130
|
+
Record IDs, User IDs, Profile IDs, and RecordType IDs differ between sandboxes
|
|
131
|
+
and production. Hardcoded IDs cause deployment failures or silent wrong-record
|
|
132
|
+
references.
|
|
133
|
+
|
|
134
|
+
### Detection
|
|
135
|
+
```
|
|
136
|
+
grep -rn "00[0-9A-Za-z]\{15,17\}" --include="*.cls" .
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Bad Pattern
|
|
140
|
+
```apex
|
|
141
|
+
Id adminProfileId = '00e000000000001'; // Profile ID: System Administrator
|
|
142
|
+
Id recordTypeId = '012000000000001'; // RecordType: Enterprise Account
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Correct Pattern
|
|
146
|
+
```apex
|
|
147
|
+
Id adminProfileId = [SELECT Id FROM Profile WHERE Name = 'System Administrator' LIMIT 1].Id;
|
|
148
|
+
Id recordTypeId = Schema.SObjectType.Account
|
|
149
|
+
.getRecordTypeInfosByDeveloperName
|
|
150
|
+
.get('Enterprise_Account')
|
|
151
|
+
.getRecordTypeId;
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
For RecordType lookups, use `getRecordTypeInfosByDeveloperName` (API name is
|
|
155
|
+
stable) rather than `getRecordTypeInfosByName` (label is translatable and may
|
|
156
|
+
change).
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## 5. Unhandled Governor Limit Approaching
|
|
161
|
+
|
|
162
|
+
### Description
|
|
163
|
+
Code does not check remaining limits before high-volume operations and will
|
|
164
|
+
throw `LimitException` in large orgs or during scheduled/batch peaks.
|
|
165
|
+
|
|
166
|
+
### Detection
|
|
167
|
+
Look for missing `Limits` class usage in batch or trigger contexts processing
|
|
168
|
+
large volumes.
|
|
169
|
+
|
|
170
|
+
### Safeguard Pattern
|
|
171
|
+
```apex
|
|
172
|
+
public class BulkProcessor {
|
|
173
|
+
public static void processRecords(List<SObject> records) {
|
|
174
|
+
Integer queriesRemaining = Limits.getLimitQueries - Limits.getQueries;
|
|
175
|
+
if (queriesRemaining < 10) {
|
|
176
|
+
System.debug(LoggingLevel.WARN,
|
|
177
|
+
'Near SOQL limit before processing. Queries used: ' + Limits.getQueries);
|
|
178
|
+
// Abort or defer remainder to async context
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
// Proceed with processing
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## 6. Trigger Logic in Trigger Body
|
|
189
|
+
|
|
190
|
+
### Why It Is a Problem
|
|
191
|
+
Placing business logic directly in trigger files (rather than in handler classes)
|
|
192
|
+
makes testing, debugging, and future refactoring difficult. It also breaks the
|
|
193
|
+
single-responsibility principle.
|
|
194
|
+
|
|
195
|
+
### Correct Architecture
|
|
196
|
+
|
|
197
|
+
```apex
|
|
198
|
+
// AccountTrigger.trigger — thin router only
|
|
199
|
+
trigger AccountTrigger on Account (before insert, before update, after insert, after update) {
|
|
200
|
+
AccountTriggerHandler handler = new AccountTriggerHandler;
|
|
201
|
+
if (Trigger.isBefore) {
|
|
202
|
+
if (Trigger.isInsert) handler.onBeforeInsert(Trigger.new);
|
|
203
|
+
if (Trigger.isUpdate) handler.onBeforeUpdate(Trigger.new, Trigger.oldMap);
|
|
204
|
+
}
|
|
205
|
+
if (Trigger.isAfter) {
|
|
206
|
+
if (Trigger.isInsert) handler.onAfterInsert(Trigger.new);
|
|
207
|
+
if (Trigger.isUpdate) handler.onAfterUpdate(Trigger.new, Trigger.oldMap);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// AccountTriggerHandler.cls — business logic
|
|
212
|
+
public with sharing class AccountTriggerHandler {
|
|
213
|
+
public void onBeforeInsert(List<Account> newAccounts) { ... }
|
|
214
|
+
public void onAfterInsert(List<Account> newAccounts) { ... }
|
|
215
|
+
}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## 7. Missing FLS Enforcement in Apex
|
|
221
|
+
|
|
222
|
+
### Description
|
|
223
|
+
SOQL queries in Apex run in system context by default. `with sharing` enforces
|
|
224
|
+
row-level sharing but NOT Field-Level Security (FLS). Sensitive fields can be
|
|
225
|
+
returned even if the user's profile lacks read permission on those fields.
|
|
226
|
+
|
|
227
|
+
### Detection
|
|
228
|
+
Look for `@AuraEnabled` methods that return SObject records directly without
|
|
229
|
+
`Schema.SObjectField.getDescribe.isAccessible` checks.
|
|
230
|
+
|
|
231
|
+
### Correct Pattern
|
|
232
|
+
```apex
|
|
233
|
+
public with sharing class SecureContactController {
|
|
234
|
+
@AuraEnabled
|
|
235
|
+
public static Contact getContact(Id contactId) {
|
|
236
|
+
// Enforce FLS before returning
|
|
237
|
+
if (!Schema.SObjectType.Contact.fields.SSN__c.isAccessible) {
|
|
238
|
+
throw new AuraHandledException('Insufficient field permissions.');
|
|
239
|
+
}
|
|
240
|
+
return [SELECT Id, Name, SSN__c FROM Contact WHERE Id = :contactId LIMIT 1];
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
Alternatively, use `Security.stripInaccessible` which handles FLS in bulk:
|
|
246
|
+
```apex
|
|
247
|
+
SObjectAccessDecision decision = Security.stripInaccessible(
|
|
248
|
+
AccessType.READABLE,
|
|
249
|
+
[SELECT Id, Name, SSN__c FROM Contact WHERE Id = :contactId]
|
|
250
|
+
);
|
|
251
|
+
List<Contact> safeContacts = (List<Contact>) decision.getRecords;
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Governor Limits Quick Reference
|
|
257
|
+
|
|
258
|
+
| Limit | Synchronous | Asynchronous (Batch/Future/Queueable) |
|
|
259
|
+
|-------|------------|--------------------------------------|
|
|
260
|
+
| SOQL queries | 100 | 200 |
|
|
261
|
+
| SOQL rows returned | 50,000 | 50,000 |
|
|
262
|
+
| DML statements | 150 | 150 |
|
|
263
|
+
| DML rows | 10,000 | 10,000 |
|
|
264
|
+
| CPU time | 10,000ms | 60,000ms |
|
|
265
|
+
| Heap size | 6MB | 12MB |
|
|
266
|
+
| Callouts | 100 | 100 |
|
|
267
|
+
| Future method calls | 50 | N/A |
|
|
268
|
+
| Queueable jobs | 50 | 1 child per job |
|
|
269
|
+
|
|
270
|
+
Limits are subject to change per Salesforce release.
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# Governor Limits Reference
|
|
2
|
+
|
|
3
|
+
Comprehensive reference for Salesforce Apex governor limits organized by
|
|
4
|
+
execution context, with bulkification strategies and monitoring patterns.
|
|
5
|
+
|
|
6
|
+
Verify all limit values against current Salesforce documentation
|
|
7
|
+
before citing these in audit findings — values may change between releases.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Execution Contexts
|
|
12
|
+
|
|
13
|
+
| Context | How Triggered |
|
|
14
|
+
|---------|--------------|
|
|
15
|
+
| Synchronous Apex | Triggers, VF controllers, LWC Apex imperative calls, REST API |
|
|
16
|
+
| Asynchronous Apex | `@future`, `Queueable`, `Schedulable`, `Batchable` |
|
|
17
|
+
| Batch Apex execute | Each `execute` call in a `Database.Batchable` job |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Per-Transaction Limit Table
|
|
22
|
+
|
|
23
|
+
| Resource | Synchronous | Asynchronous | Batch execute |
|
|
24
|
+
|----------|------------|--------------|----------------|
|
|
25
|
+
| SOQL queries | 100 | 200 | 200 |
|
|
26
|
+
| SOQL rows returned total | 50,000 | 50,000 | 50,000 |
|
|
27
|
+
| DML statements | 150 | 150 | 150 |
|
|
28
|
+
| DML rows processed | 10,000 | 10,000 | 10,000 |
|
|
29
|
+
| CPU time (ms) | 10,000 | 60,000 | 60,000 |
|
|
30
|
+
| Heap size | 6 MB | 12 MB | 12 MB |
|
|
31
|
+
| Callouts (HTTP/SOAP) | 100 | 100 | 100 |
|
|
32
|
+
| Email invocations | 10 | 10 | 10 |
|
|
33
|
+
| Push notification calls | 10 | 10 | 10 |
|
|
34
|
+
| Future method calls | 50 | N/A | N/A |
|
|
35
|
+
| Queueable jobs enqueued | 50 | 1 (child) | 1 (child) |
|
|
36
|
+
| `System.schedule` calls | 100 | 100 | 100 |
|
|
37
|
+
| Describe calls | 100 | 100 | 100 |
|
|
38
|
+
| Characters in dynamic SOQL | 20,000 | 20,000 | 20,000 |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Daily Limits (Org-Wide)
|
|
43
|
+
|
|
44
|
+
| Resource | Limit |
|
|
45
|
+
|----------|-------|
|
|
46
|
+
| Async Apex executions | 250,000 per license (varies by edition) |
|
|
47
|
+
| `@future` calls from triggers | 200 per transaction; daily per org varies |
|
|
48
|
+
| Scheduled Apex concurrent jobs | 100 at any time |
|
|
49
|
+
| Batch jobs in Apex Flex Queue | 100 |
|
|
50
|
+
| Active Scheduled Jobs | 100 |
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Checking Limits Programmatically
|
|
55
|
+
|
|
56
|
+
```apex
|
|
57
|
+
// In Apex — available Limits class methods
|
|
58
|
+
System.debug('SOQL queries used: ' + Limits.getQueries);
|
|
59
|
+
System.debug('SOQL queries limit: ' + Limits.getLimitQueries);
|
|
60
|
+
System.debug('DML statements used: ' + Limits.getDMLStatements);
|
|
61
|
+
System.debug('DML rows used: ' + Limits.getDMLRows);
|
|
62
|
+
System.debug('CPU time used (ms): ' + Limits.getCpuTime);
|
|
63
|
+
System.debug('Heap size used (bytes): ' + Limits.getHeapSize);
|
|
64
|
+
System.debug('Callouts used: ' + Limits.getCallouts);
|
|
65
|
+
|
|
66
|
+
// Safety check pattern
|
|
67
|
+
public static Boolean isSafeToQuery(Integer reserveCount) {
|
|
68
|
+
return (Limits.getLimitQueries - Limits.getQueries) > reserveCount;
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Bulkification Rules
|
|
75
|
+
|
|
76
|
+
### Rule 1: Collect, then DML
|
|
77
|
+
Never DML inside a loop. Collect all records to modify in a list, then DML once.
|
|
78
|
+
|
|
79
|
+
```apex
|
|
80
|
+
List<Contact> toUpdate = new List<Contact>;
|
|
81
|
+
for (Contact c : Trigger.new) {
|
|
82
|
+
if (c.Email != null && !c.Email.contains('@')) {
|
|
83
|
+
c.addError('Invalid email format');
|
|
84
|
+
} else {
|
|
85
|
+
toUpdate.add(new Contact(Id = c.Id, EmailVerified__c = true));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (!toUpdate.isEmpty) {
|
|
89
|
+
Database.update(toUpdate, false); // allOrNone = false for resilience
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Rule 2: Batch at 200 for DML
|
|
94
|
+
The DML per-batch row limit aligns with trigger batch size (200 by default).
|
|
95
|
+
For manual batching in anonymous Apex:
|
|
96
|
+
|
|
97
|
+
```apex
|
|
98
|
+
Integer BATCH_SIZE = 200;
|
|
99
|
+
for (Integer i = 0; i < records.size; i += BATCH_SIZE) {
|
|
100
|
+
Integer endIdx = Math.min(i + BATCH_SIZE, records.size);
|
|
101
|
+
Database.update(records.subList(i, endIdx), false);
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Rule 3: Query Once, Map Results
|
|
106
|
+
```apex
|
|
107
|
+
// Query all related records in one SOQL
|
|
108
|
+
Map<Id, List<OpportunityLineItem>> linesByOpp = new Map<Id, List<OpportunityLineItem>>;
|
|
109
|
+
for (OpportunityLineItem oli : [
|
|
110
|
+
SELECT Id, OpportunityId, Quantity, TotalPrice
|
|
111
|
+
FROM OpportunityLineItem
|
|
112
|
+
WHERE OpportunityId IN :oppIds
|
|
113
|
+
]) {
|
|
114
|
+
if (!linesByOpp.containsKey(oli.OpportunityId)) {
|
|
115
|
+
linesByOpp.put(oli.OpportunityId, new List<OpportunityLineItem>);
|
|
116
|
+
}
|
|
117
|
+
linesByOpp.get(oli.OpportunityId).add(oli);
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Batch Apex Sizing Guide
|
|
124
|
+
|
|
125
|
+
| Volume | Recommended Batch Size | Notes |
|
|
126
|
+
|--------|----------------------|-------|
|
|
127
|
+
| < 10,000 records | 200 (default) | Standard SOQL-queried batch |
|
|
128
|
+
| 10,000 – 1M records | 200 | Increase if processing is CPU-light |
|
|
129
|
+
| 1M+ records | 2,000 (Bulk API mode) | Use `Database.QueryLocator` with Bulk API |
|
|
130
|
+
| Heavy callouts per record | 1–10 | Callout limit is per transaction |
|
|
131
|
+
| Complex transformations | 50–100 | Watch CPU time |
|
|
132
|
+
|
|
133
|
+
```apex
|
|
134
|
+
Database.executeBatch(new MyBatchClass, 200); // override default batch size
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
The `Database.QueryLocator` can return up to 50 million rows (vs. 50,000 for
|
|
138
|
+
standard SOQL in non-batch context).
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## `@future` vs `Queueable` vs `Batch` Decision Guide
|
|
143
|
+
|
|
144
|
+
| Need | Best Choice |
|
|
145
|
+
|------|------------|
|
|
146
|
+
| Fire-and-forget, no result needed | `@future` |
|
|
147
|
+
| Chaining jobs, need result | `Queueable` |
|
|
148
|
+
| Process > 10,000 records | `Batchable` |
|
|
149
|
+
| Scheduled recurring | `Schedulable` |
|
|
150
|
+
| Callout from trigger | `@future(callout=true)` |
|
|
151
|
+
| Callout + chaining | `Queueable` implementing `Database.AllowsCallouts` |
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Heap Size Management
|
|
156
|
+
|
|
157
|
+
Heap limit is 6 MB synchronous, 12 MB asynchronous. Common causes of heap overflow:
|
|
158
|
+
|
|
159
|
+
- Large `String` or `Blob` values stored in variables.
|
|
160
|
+
- Accumulating records in a list when only a subset is needed.
|
|
161
|
+
- Deserializing large JSON payloads without streaming.
|
|
162
|
+
|
|
163
|
+
Mitigation:
|
|
164
|
+
```apex
|
|
165
|
+
// Release memory by nulling unused collections
|
|
166
|
+
List<SObject> bigList = fetchLargeDataset;
|
|
167
|
+
process(bigList);
|
|
168
|
+
bigList = null; // eligible for GC — reduces heap pressure
|
|
169
|
+
|
|
170
|
+
// Parse only needed JSON fields instead of full deserialization
|
|
171
|
+
Map<String, Object> parsed = (Map<String, Object>) JSON.deserializeUntyped(rawJson);
|
|
172
|
+
String neededField = (String) parsed.get('fieldName');
|
|
173
|
+
parsed = null;
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Error Handling with `Database.SaveResult`
|
|
179
|
+
|
|
180
|
+
Always use `allOrNone=false` in batch contexts to ensure partial success:
|
|
181
|
+
|
|
182
|
+
```apex
|
|
183
|
+
Database.SaveResult[] results = Database.insert(records, false);
|
|
184
|
+
List<String> errors = new List<String>;
|
|
185
|
+
for (Integer i = 0; i < results.size; i++) {
|
|
186
|
+
if (!results[i].isSuccess) {
|
|
187
|
+
for (Database.Error err : results[i].getErrors) {
|
|
188
|
+
errors.add('Record index ' + i + ': ' + err.getStatusCode +
|
|
189
|
+
' - ' + err.getMessage +
|
|
190
|
+
' Fields: ' + String.join(err.getFields, ', '));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (!errors.isEmpty) {
|
|
195
|
+
// Log to custom object, Platform Event, or System.debug
|
|
196
|
+
System.debug(LoggingLevel.ERROR, String.join(errors, '\n'));
|
|
197
|
+
}
|
|
198
|
+
```
|