querying-soql
forcedotcom/sf-skills
SOQL query generation, optimization, and analysis with 100-point scoring for Salesforce.
What is querying-soql?
This skill generates, optimizes, and analyzes SOQL/SOSL queries for Salesforce. Use it when you need natural-language-to-query conversion, relationship or aggregate queries, query-plan analysis, or performance improvements. It covers selectivity, indexing, governor limits, and security patterns.
- Generate SOQL/SOSL queries from natural language and requirements
- Optimize queries for selectivity, indexing, and performance
- Analyze query shape and relationship patterns (parent-to-child, child-to-parent, aggregates)
- Validate queries against anti-patterns and security best practices
- Score queries on a 0–100 scale for production readiness
- Provide execution suggestions and delegate to handling-sf-data or generating-apex as needed
How to install querying-soql
npx skills add https://github.com/forcedotcom/sf-skills --skill querying-soqlHow to use querying-soql
- 1.Gather context: target objects, required fields, filter criteria, sort/limit needs, and use case (display, automation, Apex)
- 2.Describe your query need in natural language or provide an existing query to optimize
- 3.Receive a generated or optimized SOQL/SOSL with explanation of the shape chosen (relationship, aggregate, filter pattern)
- 4.Review optimization notes on selectivity, indexes, security, and governor awareness
- 5.Use the provided query directly or delegate execution to handling-sf-data or Apex embedding to generating-apex
Use cases
- Convert a user requirement into an optimized SOQL query with proper filtering and field selection
- Refactor a slow query by analyzing indexes, selectivity, and relationship traversal
- Build aggregate queries with GROUP BY and ROLLUP for reporting-like analysis
- Design relationship queries to fetch parent data from child records or child rows from a parent
- Validate a query for security, governor limits, and common anti-patterns before embedding in Apex
- Salesforce developers writing or optimizing SOQL queries
- Apex developers embedding queries in services or selector classes
- Anyone debugging query performance or selectivity issues
- Teams building query-backed automation or reporting logic
querying-soql FAQ
Use querying-soql to author and optimize the query itself. Use handling-sf-data to execute the query against an org, export results, or perform bulk operations.
Use querying-soql to design the query shape and logic. Use generating-apex when embedding the query into a selector class, service, or broader Apex implementation.
Scores 90+ indicate production-ready queries; 80–89 are good with minor improvements; 70–79 are functional but have performance concerns; <70 need revision before production use.
Yes, this skill covers both SOQL and SOSL. Use SOSL when you need text search across multiple objects.
Use handling-sf-data for bulk inserts, updates, deletes, or large-scale data export. This skill focuses on query design and optimization.
Full instructions (SKILL.md)
Source of truth, from forcedotcom/sf-skills.
name: querying-soql description: "SOQL query generation, optimization, and analysis with 100-point scoring. Use this skill when the user needs SOQL/SOSL authoring or optimization: natural-language-to-query generation, relationship queries, aggregates, query-plan analysis, and performance or safety improvements for Salesforce queries. TRIGGER when: user writes, optimizes, or debugs SOQL/SOSL queries, touches .soql files, or asks about relationship queries, aggregates, or query performance. DO NOT TRIGGER when: bulk data operations (use handling-sf-data), Apex DML logic (use generating-apex), or report/dashboard queries." metadata: version: "1.1"
querying-soql: Salesforce SOQL Query Expert
Use this skill when the user needs SOQL/SOSL authoring or optimization: natural-language-to-query generation, relationship queries, aggregates, query-plan analysis, and performance/safety improvements for Salesforce queries.
When This Skill Owns the Task
Use querying-soql when the work involves:
.soqlfiles- query generation from natural language
- relationship queries and aggregate queries
- query optimization and selectivity analysis
- SOQL/SOSL syntax and governor-aware design
Delegate elsewhere when the user is:
- performing bulk data operations → handling-sf-data
- embedding query logic inside broader Apex implementation → generating-apex
- debugging via logs rather than query shape → debugging-apex-logs
Required Context to Gather First
Ask for or infer:
- target object(s)
- fields needed
- filter criteria
- sort / limit requirements
- whether the query is for display, automation, reporting-like analysis, or Apex usage
- whether performance / selectivity is already a concern
Recommended Workflow
1. Generate the simplest correct query
Prefer:
- only needed fields
- clear WHERE criteria
- reasonable LIMIT when appropriate
- relationship depth only as deep as necessary
2. Choose the right query shape
| Need | Default pattern |
|---|---|
| parent data from child | child-to-parent traversal |
| child rows from parent | subquery |
| counts / rollups | aggregate query |
| records with / without related rows | semi-join / anti-join |
| text search across objects | SOSL |
3. Optimize for selectivity and safety
Check:
- indexed / selective filters
- no unnecessary fields
- no avoidable wildcard or scan-heavy patterns
- security enforcement expectations
4. Validate execution path if needed
If the user wants runtime verification, hand off execution to:
- handling-sf-data
High-Signal Rules
- never use
SELECT *style thinking; query only required fields - do not query inside loops in Apex contexts
- prefer filtering in SOQL rather than post-filtering in Apex
- use aggregates for counts and grouped summaries instead of loading unnecessary records
- evaluate wildcard usage carefully; leading wildcards often defeat indexes
- account for security mode / field access requirements when queries move into Apex
Output Format
When finishing, report in this order:
- Query purpose
- Final SOQL/SOSL
- Why this shape was chosen
- Optimization or security notes
- Execution suggestion if needed
Suggested shape — use references/soql-syntax-reference.md for exact syntax:
Query goal: <summary>
Query: <soql or sosl>
Design: <relationship / aggregate / filter choices>
Notes: <selectivity, limits, security, governor awareness>
Next step: <run in handling-sf-data or embed in Apex>
Cross-Skill Integration
| Need | Delegate to | Reason |
|---|---|---|
| run the query against an org | handling-sf-data | execution and export |
| embed the query in services/selectors | generating-apex | implementation context |
| analyze slow-query symptoms from logs | debugging-apex-logs | runtime evidence |
| wire query-backed UI | generating-lwc-components | frontend integration |
Score Guide
| Score | Meaning |
|---|---|
| 90+ | production-optimized query |
| 80–89 | good query with minor improvements possible |
| 70–79 | functional but performance concerns remain |
| < 70 | needs revision before production use |
Reference File Index
| File | When to read |
|---|---|
references/soql-syntax-reference.md | Syntax, operators, date literals, relationship query patterns |
references/query-optimization.md | Selectivity rules, indexing strategy, governor limits, security patterns |
references/soql-reference.md | Quick reference — operators, date functions, aggregate functions, WITH clauses |
references/anti-patterns.md | Common SOQL mistakes and their fixes — read before finalizing any query |
references/selector-patterns.md | Apex selector layer patterns — read when embedding queries in Apex classes |
references/field-coverage-rules.md | Field coverage validation — read when generating SOQL used inside Apex code |
references/cli-commands.md | sf CLI query execution, bulk export, query plan commands |
assets/basic-queries.soql | Starter query examples for common objects |
assets/relationship-queries.soql | Parent-to-child and child-to-parent relationship query patterns |
assets/aggregate-queries.soql | COUNT, SUM, GROUP BY, ROLLUP query patterns |
assets/optimization-patterns.soql | Selective filter and index-aware query patterns |
assets/bulkified-query-pattern.cls | Apex Map-based bulk query pattern for trigger contexts |
assets/selector-class.cls | Full selector class implementation template |
scripts/post-tool-validate.py | Post-write hook — runs static SOQL validation and live query plan analysis after .soql file edits |
Related skills
More from forcedotcom/sf-skills and the wider catalog.

retrieving-datacloud
Query, search, and inspect Salesforce Data Cloud objects with SQL, vector search, and metadata introspection.

reviewing-lwc-mobile-offline
Review Lightning Web Components for Salesforce Mobile App offline compatibility using Komaci static analysis.

running-apex-tests
Run Apex tests, analyze coverage, and fix failures with structured test-fix loops.

running-code-analyzer
Scan Salesforce code for security, performance, and quality violations across all engines (PMD, ESLint, CPD, RetireJS, Flow, SFGE, ApexGuru).

searching-media
Route and execute media searches across Salesforce CMS, Data 360, and other sources.

segmenting-datacloud
Create, publish, and troubleshoot Salesforce Data Cloud segments and calculated insights.