Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Writes and debugs Apex code, builds Lightning Web Components, optimizes SOQL queries, implements triggers, batch jobs, platform events, and integrations on the Salesforce platform. Use when developing Salesforce applications, customizing CRM workflows, managing governor limits, bulk processing, or setting up Salesforce DX and CI/CD pipelines.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✓→✓ | = Same ✓ | 42% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 124% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 63% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 66% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 80% | 0% |
Load detailed guidance based on context:
| Topic | Reference | Load When | |-------|-----------|-----------| | Apex Development | references/apex-development.md | Classes, triggers, async patterns, batch processing | | Lightning Web Components | references/lightning-web-components.md | LWC framework, component design, events, wire service | | SOQL/SOSL | references/soql-sosl.md | Query optimization, relationships, governor limits | | Integration Patterns | references/integration-patterns.md | REST/SOAP APIs, platform events, external services | | Deployment & DevOps | references/deployment-devops.md | Salesforce DX, CI/CD, scratch orgs, metadata API |
Database.update(scope, false) for partial successapex// CORRECT: collect IDs, query once outside the loop trigger AccountTrigger on Account (before insert, before update) { AccountTriggerHandler.handleBeforeInsert(Trigger.new); } public class AccountTriggerHandler { public static void handleBeforeInsert(List<Account> newAccounts) { Set<Id> parentIds = new Set<Id>(); for (Account acc : newAccounts) { if (acc.ParentId != null) parentIds.add(acc.ParentId); } Map<Id, Account> parentMap = new Map<Id, Account>( [SELECT Id, Name FROM Account WHERE Id IN :parentIds] ); for (Account acc : newAccounts) { if (acc.ParentId != null && parentMap.containsKey(acc.ParentId)) { acc.Description = 'Child of: ' + parentMap.get(acc.ParentId).Name; } } } }
apex// INCORRECT: SOQL inside loop — governor limit violation trigger AccountTrigger on Account (before insert) { for (Account acc : Trigger.new) { Account parent = [SELECT Id, Name FROM Account WHERE Id = :acc.ParentId]; // BAD acc.Description = 'Child of: ' + parent.Name; } }
apexpublic class ContactBatchUpdate implements Database.Batchable<SObject> { public Database.QueryLocator start(Database.BatchableContext bc) { return Database.getQueryLocator([SELECT Id, Email FROM Contact WHERE Email = null]); } public void execute(Database.BatchableContext bc, List<Contact> scope) { for (Contact c : scope) { c.Email = 'unknown@example.com'; } Database.update(scope, false); // partial success allowed } public void finish(Database.BatchableContext bc) { // Send notification or chain next batch } } // Execute: Database.executeBatch(new ContactBatchUpdate(), 200);
apex@IsTest private class AccountTriggerHandlerTest { @TestSetup static void makeData() { Account parent = new Account(Name = 'Parent Co'); insert parent; Account child = new Account(Name = 'Child Co', ParentId = parent.Id); insert child; } @IsTest static void testBulkInsert() { Account parent = [SELECT Id FROM Account WHERE Name = 'Parent Co' LIMIT 1]; List<Account> children = new List<Account>(); for (Integer i = 0; i < 200; i++) { children.add(new Account(Name = 'Child ' + i, ParentId = parent.Id)); } Test.startTest(); insert children; Test.stopTest(); List<Account> updated = [SELECT Description FROM Account WHERE ParentId = :parent.Id]; System.assert(!updated.isEmpty(), 'Children should have descriptions set'); System.assert(updated[0].Description.startsWith('Child of:'), 'Description format mismatch'); } }
apex// Selective query — use indexed fields in WHERE clause List<Opportunity> opps = [ SELECT Id, Name, Amount, StageName FROM Opportunity WHERE AccountId IN :accountIds // indexed field AND CloseDate >= :Date.today() // indexed field ORDER BY CloseDate ASC LIMIT 200 ]; // Relationship query to avoid extra round-trips List<Account> accounts = [ SELECT Id, Name, (SELECT Id, LastName, Email FROM Contacts WHERE Email != null) FROM Account WHERE Id IN :accountIds ];
html<!-- counterComponent.html --> <template> <lightning-card title="Counter"> <div class="slds-p-around_medium"> <p>Count: {count}</p> <lightning-button label="Increment" onclick={handleIncrement}></lightning-button> </div> </lightning-card> </template>
javascript// counterComponent.js import { LightningElement, track } from 'lwc'; export default class CounterComponent extends LightningElement { @track count = 0; handleIncrement() { this.count += 1; } }
xml<!-- counterComponent.js-meta.xml --> <?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>59.0</apiVersion> <isExposed>true</isExposed> <targets> <target>lightning__AppPage</target> <target>lightning__RecordPage</target> </targets> </LightningComponentBundle>
Other measured skills in the registry, with their headline benchmark lift.