Agent Skills

sf-apex

backendjaganpro1.6K installs

Generates and reviews Salesforce Apex code with 150-point scoring. TRIGGER when: user writes, reviews, or fixes Apex classes, triggers, test classes, batch/queueable/schedulable jobs, or touches .cls/.trigger files. DO NOT TRIGGER when: LWC JavaScript (use sf-lwc), Flow XML (use sf-flow), SOQL-only queries (use sf-soql), or non-Salesforce code.

Install

npx skills add https://github.com/jaganpro/sf-skills --skill sf-apex
SKILL.md

sf-apex: Salesforce Apex Code Generation and Review

Use this skill when the user needs production Apex: new classes, triggers, selectors, services, async jobs, invocable methods, test classes, or evidence-based review of existing .cls / .trigger code.

When This Skill Owns the Task

Use sf-apex when the work involves:

  • Apex class generation or refactoring
  • trigger design and trigger-framework decisions
  • @InvocableMethod, Queueable, Batch, Schedulable, or test-class work
  • review of bulkification, sharing, security, testing, or maintainability

Delegate elsewhere when the user is:

  • editing LWC JavaScript / HTML / CSS → sf-lwc
  • building Flow XML or Flow orchestration → sf-flow
  • writing SOQL only → sf-soql
  • deploying or validating metadata to orgs → sf-deploy

Required Context to Gather First

Ask for or infer:

  • class type: trigger, service, selector, batch, queueable, schedulable, invocable, test
  • target object(s) and business goal
  • whether code is net-new, refactor, or fix
  • org / API constraints if known
  • expected test coverage or deployment target

Before authoring, inspect the project shape:

  • existing classes / triggers
  • current trigger framework or handler pattern
  • related tests, flows, and selectors
  • whether TAF is already in use

Recommended Workflow

1. Discover local architecture

Check for:

  • existing trigger handlers / frameworks
  • service-selector-domain conventions
  • related tests and data factories
  • invocable or async patterns already used in the repo

2. Choose the smallest correct pattern

Need Preferred pattern
simple reusable logic service class
query-heavy data access selector
single object trigger behavior one trigger + handler / TAF action
Flow needs complex logic @InvocableMethod
background processing Queueable by default
very large datasets Batch Apex or Database.Cursor patterns
repeatable verification dedicated test class + test data factory

3. Author with guardrails

Generate code that is:

  • bulk-safe
  • sharing-aware
  • CRUD/FLS-safe where applicable
  • testable in isolation
  • consistent with project naming and layering

4. Validate and score

Evaluate against the 150-point rubric before handoff.

5. Hand off deploy/test next steps

When org validation is needed, hand off to:


Generation Guardrails

Never generate these without explicitly stopping and explaining the problem:

Anti-pattern Why it blocks
SOQL in loops governor-limit failure
DML in loops governor-limit failure
missing sharing model security / data exposure risk
hardcoded IDs deployment and portability failure
empty catch blocks silent failure / poor observability
string-built SOQL with user input injection risk
tests without assertions false-positive test suite

Default fix direction:

  • query once, operate on collections
  • use with sharing unless justified otherwise
  • use bind variables and WITH USER_MODE where appropriate
  • create assertions for positive, negative, and bulk cases

See references/anti-patterns.md and references/security-guide.md.


High-Signal Build Rules

Trigger architecture

  • Prefer one trigger per object.
  • If TAF is already installed and used, extend it instead of inventing a second trigger pattern.
  • Triggers should delegate logic; avoid heavy business logic directly in trigger bodies.

Async choice

Scenario Default
standard async work Queueable
very large record processing Batch Apex
recurring schedule Scheduled Flow or Schedulable
post-job cleanup Finalizer
long-running Lightning callouts Continuation

Testing minimums

Use the PNB pattern for every feature:

  • Positive path
  • Negative / error path
  • Bulk path (251+ records where relevant)

Modern Apex expectations

Prefer current idioms when available:

  • safe navigation: obj?.Field__c
  • null coalescing: value ?? fallback
  • Assert.* over legacy assertion style
  • WITH USER_MODE and explicit security handling where relevant

Output Format

When finishing, report in this order:

  1. What was created or reviewed
  2. Files changed
  3. Key design decisions
  4. Risk / guardrail notes
  5. Test guidance
  6. Deployment guidance

Suggested shape:

Apex work: <summary>
Files: <paths>
Design: <pattern / framework choices>
Risks: <security, bulkification, async, dependency notes>
Tests: <what to run / add>
Deploy: <dry-run or next step>

LSP Validation Note

This skill supports an LSP-assisted authoring loop for .cls and .trigger files:

  • syntax issues can be detected immediately after write/edit
  • the skill can auto-fix common syntax errors in a short loop
  • semantic quality still depends on the 150-point review rubric

Full guide: references/troubleshooting.md


Cross-Skill Integration

Need Delegate to Reason
describe objects / fields first sf-metadata avoid coding against wrong schema
seed bulk or edge-case data sf-data create realistic test datasets
run Apex tests / fix failing tests sf-testing execute and iterate on failures
deploy to org sf-deploy validation and deployment orchestration
build Flow that calls Apex sf-flow declarative orchestration
build LWC that calls Apex sf-lwc UI/controller integration

Reference Map

Start here

High-signal checklists

Specialized patterns

Troubleshooting / validation


Score Guide

Score Meaning
120+ strong production-ready Apex
90–119 good implementation, review before deploy
67–89 acceptable but needs improvement
< 67 block deployment

Related skills

entra-app-registrationmicrosoft606KGuides Microsoft Entra ID app registration, OAuth 2.0 authentication, and MSAL integration. USE FOR: create app registration, register Azure AD app, configure OAuth, set up authentication, add API permissions, generate service principal, MSAL example, console app auth, Entra ID setup, Azure AD authentication. DO NOT USE FOR: Key Vault secrets (use azure-keyvault-expiration-audit), general Azure resource security guidance.azure-messagingmicrosoft595KTroubleshoot and resolve issues with Azure Messaging SDKs for Event Hubs and Service Bus. Covers connection failures, authentication errors, message processing issues, and SDK configuration problems. WHEN: event hub SDK error, service bus SDK issue, messaging connection failure, AMQP error, event processor host issue, message lock lost, message lock expired, lock renewal, lock renewal batch, send timeout, receiver disconnected, SDK troubleshooting, azure messaging SDK, event hub consumer, servicentra-agent-idmicrosoft328KProvision Microsoft Entra Agent Identity Blueprints, BlueprintPrincipals, and per-instance Agent Identities via Microsoft Graph, and configure OAuth 2.0 token exchange (fmi_path, OBO, cross-tenant) including the Microsoft Entra SDK for AgentID sidecar. USE FOR: Agent Identity Blueprint, BlueprintPrincipal, agent OAuth, fmi_path token exchange, agent OBO, Workload Identity Federation for agents, polyglot agent auth, Microsoft.Identity.Web.AgentIdentities. DO NOT USE FOR: standard Entra app registsupabasesupabase298KUse when doing ANY task involving Supabase. Triggers: Supabase products (Database, Auth, Edge Functions, Realtime, Storage, Vectors, Cron, Queues); client libraries and SSR integrations (supabase-js, @supabase/ssr) in Next.js, React, SvelteKit, Astro, Remix; auth issues (login, logout, sessions, JWT, cookies, getSession, getUser, getClaims, RLS); Supabase CLI or MCP server; schema changes, migrations, declarative schemas, security audits, Postgres extensions (pg_graphql, pg_cron, pg_vector); deb

Search skills and MCP servers

Fuzzy search across 23,137 skills and servers