
Debugging Apex Logs
Diagnose Salesforce governor limits, stack traces, and performance from .log files before changing Apex.
Install
npx skills add https://github.com/forcedotcom/sf-skills --skill debugging-apex-logsWhat is this skill?
- Owns .log analysis, governor-limit diagnosis, and stack-trace interpretation—not test runs or code generation
- 100-point scoring framework for structured troubleshooting
- Explicit delegation: running-apex-tests, generating-apex, observing-agentforce for adjacent tasks
- Reproduction-to-fix loop grounded in SOQL/DML/CPU/heap evidence from logs
Adoption & trust: 729 installs on skills.sh; 513 GitHub stars; 3/3 security scanners passed (skills.sh audits).
Recommended Skills
Azure Diagnosticsmicrosoft/azure-skills
Diagnosemattpocock/skills
Systematic Debuggingobra/superpowers
Safe Debuglllllllama/rigorpilot-skills
Mastramastra-ai/skills
Insforge Debuginsforge/agent-skills
Journey fit
Common Questions / FAQ
Is Debugging Apex Logs safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Debugging Apex Logs
# debugging-apex-logs: Salesforce Debug Log Analysis & Troubleshooting Use this skill when the user needs **root-cause analysis from debug logs**: governor-limit diagnosis, stack-trace interpretation, slow-query investigation, heap / CPU pressure analysis, or a reproduction-to-fix loop based on log evidence. ## When This Skill Owns the Task Use `debugging-apex-logs` when the work involves: - `.log` files from Salesforce - stack traces and exception analysis - governor limits - SOQL / DML / CPU / heap troubleshooting - query-plan or performance evidence extracted from logs Delegate elsewhere when the user is: - running or repairing Apex tests → [running-apex-tests](../running-apex-tests/SKILL.md) - generating or implementing the code fix → [generating-apex](../generating-apex/SKILL.md) - debugging Agentforce session traces / parquet telemetry → [observing-agentforce](../observing-agentforce/SKILL.md) --- ## Required Context to Gather First Ask for or infer: - org alias - failing transaction / user flow / test name - approximate timestamp or transaction window - user / record / request ID if known - whether the goal is diagnosis only or diagnosis + fix loop --- ## Recommended Workflow ### 1. Retrieve logs Use the commands in [references/cli-commands.md](references/cli-commands.md) to list, download, or stream logs for the target org. ### 2. Analyze in this order 1. entry point and transaction type 2. exceptions / fatal errors 3. governor limits 4. repeated SOQL / DML patterns 5. CPU / heap hotspots 6. callout timing and external failures ### 3. Classify severity - **Critical** — runtime failure, hard limit, corruption risk - **Warning** — near-limit, non-selective query, slow path - **Info** — optimization opportunity or hygiene issue ### 4. Recommend the smallest correct fix Prefer fixes that are: - root-cause oriented - bulk-safe - testable - easy to verify with a rerun Expanded workflow: [references/analysis-playbook.md](references/analysis-playbook.md) --- ## High-Signal Issue Patterns | Issue | Primary signal | Default fix direction | |---|---|---| | SOQL in loop | repeating `SOQL_EXECUTE_BEGIN` in a repeated call path | query once, use maps / grouped collections | | DML in loop | repeated `DML_BEGIN` patterns | collect rows, bulk DML once | | Non-selective query | high rows scanned / poor selectivity | add indexed filters, reduce scope | | CPU pressure | CPU usage approaching sync limit | reduce algorithmic complexity, cache, async where valid | | Heap pressure | heap usage approaching sync limit | stream with SOQL for-loops, reduce in-memory data | | Null pointer / fatal error | `EXCEPTION_THROWN` / `FATAL_ERROR` | guard null assumptions, fix empty-query handling | Expanded examples: [references/common-issues.md](references/common-issues.md) --- ## Output Format When finishing analysis, report in this order: 1. **What failed** 2. **Where it failed** (class / method / line / transaction stage) 3. **Why it failed** (root cause, not just symptom) 4. **How severe it is** 5. **Recommended fix** 6. **Verification step** Suggested shape: ```text Issue: <summary> Location: <class / line / transaction> Root cause: <explanation> Severity: Critical | Warning | Info Fix: <specific action> Verify: <test or rerun step> ``` --- ## Rules / Constraints | Rule | Rationale | |------|-----------| | Always base fix recommendations on log evidence | Avoid speculative diagnosis — root cause must be traceable in the log | | Report all six output fields for ev