platform-soql-query: 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 platform-soql-query when the work involves:
.soql files
- 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:
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:
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 platform-data-manage or embed in Apex>
Cross-Skill 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 |
1---
2name: platform-soql-query
3description: "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 platform-data-manage), Apex DML logic (use platform-apex-generate), or report/dashboard queries."
4metadata:
5 version: "1.1"
6 domains: ["Platform"]
7 relatedSkills:
8 - "experience-lwc-generate"
9 - "platform-apex-generate"
10 - "platform-apex-logs-debug"
11 - "platform-apex-test-run"
12 - "platform-data-manage"
13 cliTools:
14 - tool: ["jq"]
15 semver: ">=1.6.0"
16 - tool: ["python3"]
17 semver: ">=3.10.0"
18 - tool: ["sf"]
19 semver: ">=2.0.0"
20---
21
22# platform-soql-query: Salesforce SOQL Query Expert
23
24Use 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.
25
26## When This Skill Owns the Task
27
28Use `platform-soql-query` when the work involves:
29- `.soql` files
30- query generation from natural language
31- relationship queries and aggregate queries
32- query optimization and selectivity analysis
33- SOQL/SOSL syntax and governor-aware design
34
35Delegate elsewhere when the user is:
36- performing bulk data operations → [platform-data-manage](../platform-data-manage/SKILL.md)
37- embedding query logic inside broader Apex implementation → [platform-apex-generate](../platform-apex-generate/SKILL.md)
38- debugging via logs rather than query shape → [platform-apex-logs-debug](../platform-apex-logs-debug/SKILL.md)
39
40---
41
42## Required Context to Gather First
43
44Ask for or infer:
45- target object(s)
46- fields needed
47- filter criteria
48- sort / limit requirements
49- whether the query is for display, automation, reporting-like analysis, or Apex usage
50- whether performance / selectivity is already a concern
51
52---
53
54## Recommended Workflow
55
56### 1. Generate the simplest correct query
57Prefer:
58- only needed fields
59- clear WHERE criteria
60- reasonable LIMIT when appropriate
61- relationship depth only as deep as necessary
62
63### 2. Choose the right query shape
64| Need | Default pattern |
65|---|---|
66| parent data from child | child-to-parent traversal |
67| child rows from parent | subquery |
68| counts / rollups | aggregate query |
69| records with / without related rows | semi-join / anti-join |
70| text search across objects | SOSL |
71
72### 3. Optimize for selectivity and safety
73Check:
74- indexed / selective filters
75- no unnecessary fields
76- no avoidable wildcard or scan-heavy patterns
77- security enforcement expectations
78
79### 4. Validate execution path if needed
80If the user wants runtime verification, hand off execution to:
81- [platform-data-manage](../platform-data-manage/SKILL.md)
82
83---
84
85## High-Signal Rules
86
87- never use `SELECT *` style thinking; query only required fields
88- do not query inside loops in Apex contexts
89- prefer filtering in SOQL rather than post-filtering in Apex
90- use aggregates for counts and grouped summaries instead of loading unnecessary records
91- evaluate wildcard usage carefully; leading wildcards often defeat indexes
92- account for security mode / field access requirements when queries move into Apex
93
94---
95
96## Output Format
97
98When finishing, report in this order:
991. **Query purpose**
1002. **Final SOQL/SOSL**
1013. **Why this shape was chosen**
1024. **Optimization or security notes**
1035. **Execution suggestion if needed**
104
105Suggested shape — use `references/soql-syntax-reference.md` for exact syntax:
106
107```text
108Query goal: <summary>
109Query: <soql or sosl>
110Design: <relationship / aggregate / filter choices>
111Notes: <selectivity, limits, security, governor awareness>
112Next step: <run in platform-data-manage or embed in Apex>
113```
114
115---
116
117## Cross-Skill Integration
118
119| Need | Delegate to | Reason |
120|---|---|---|
121| run the query against an org | [platform-data-manage](../platform-data-manage/SKILL.md) | execution and export |
122| embed the query in services/selectors | [platform-apex-generate](../platform-apex-generate/SKILL.md) | implementation context |
123| analyze slow-query symptoms from logs | [platform-apex-logs-debug](../platform-apex-logs-debug/SKILL.md) | runtime evidence |
124| wire query-backed UI | [experience-lwc-generate](../experience-lwc-generate/SKILL.md) | frontend integration |
125
126---
127
128## Score Guide
129
130| Score | Meaning |
131|---|---|
132| 90+ | production-optimized query |
133| 80–89 | good query with minor improvements possible |
134| 70–79 | functional but performance concerns remain |
135| < 70 | needs revision before production use |
136
137---
138
139## Reference File Index
140
141| File | When to read |
142|------|-------------|
143| `references/soql-syntax-reference.md` | Syntax, operators, date literals, relationship query patterns |
144| `references/query-optimization.md` | Selectivity rules, indexing strategy, governor limits, security patterns |
145| `references/soql-reference.md` | Quick reference — operators, date functions, aggregate functions, WITH clauses |
146| `references/anti-patterns.md` | Common SOQL mistakes and their fixes — read before finalizing any query |
147| `references/selector-patterns.md` | Apex selector layer patterns — read when embedding queries in Apex classes |
148| `references/field-coverage-rules.md` | Field coverage validation — read when generating SOQL used inside Apex code |
149| `references/cli-commands.md` | sf CLI query execution, bulk export, query plan commands |
150| `assets/basic-queries.soql` | Starter query examples for common objects |
151| `assets/relationship-queries.soql` | Parent-to-child and child-to-parent relationship query patterns |
152| `assets/aggregate-queries.soql` | COUNT, SUM, GROUP BY, ROLLUP query patterns |
153| `assets/optimization-patterns.soql` | Selective filter and index-aware query patterns |
154| `assets/bulkified-query-pattern.cls` | Apex Map-based bulk query pattern for trigger contexts |
155| `assets/selector-class.cls` | Full selector class implementation template |
156| `scripts/post-tool-validate.py` | Post-write hook — runs static SOQL validation and live query plan analysis after `.soql` file edits |