关于 platform-soql-query
面向 Salesforce 查询编写者和开发者的技能,用于生成、审查和优化 SOQL/SOSL 查询,涵盖查询结构、选择性、安全性及 Apex 场景设计。
主要功能
- 01从自然语言生成查询
- 02关系查询与聚合查询
- 03选择性与查询计划分析
- 04SOQL/SOSL 语法指导
- 05性能与安全检查
适用场景
- 01根据数据需求编写查询
- 02选择父子关系查询模式
- 03提升查询选择性
- 04检查 Apex 查询安全性
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill platform-soql-query安装后在 Claude Code 中输入/platform-soql-query确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdassets/aggregate-queries.soqlbasic-queries.soqlbulkified-query-pattern.clsoptimization-patterns.soqlrelationship-queries.soqlselector-class.clsreferences/anti-patterns.mdcli-commands.mdfield-coverage-rules.mdquery-optimization.mdselector-patterns.mdsoql-reference.mdsoql-syntax-reference.mdscripts/post-tool-validate.py详细介绍
platform-soql-query:Salesforce SOQL 查询专家
当用户需要编写或优化 SOQL/SOSL时使用此技能:将自然语言转换为查询、编写关系查询、聚合查询、分析查询计划,以及改进 Salesforce 查询的性能和安全性。
此技能适用的任务
在工作涉及以下内容时,使用 platform-soql-query:
.soql文件- 根据自然语言生成查询
- 关系查询和聚合查询
- 查询优化和选择性分析
- SOQL/SOSL 语法和符合 governor 限制的设计
以下情况应委派给其他技能:
- 执行批量数据操作 → platform-data-manage
- 在更广泛的 Apex 实现中嵌入查询逻辑 → platform-apex-generate
- 通过日志而非查询结构进行调试 → platform-apex-logs-debug
首先收集必要的上下文
询问或推断:
- 目标对象
- 所需字段
- 筛选条件
- 排序和限制要求
- 查询用途是用于显示、自动化、类似报表的分析,还是 Apex
- 是否已存在性能或选择性方面的顾虑
建议的工作流
1. 生成最简单且正确的查询
优先考虑:
- 只查询所需字段
- 使用清晰的 WHERE 条件
- 适时设置合理的 LIMIT
- 关系查询深度仅达到必要程度
2. 选择合适的查询结构
| 需求 | 默认模式 |
|---|---|
| 从子记录获取父记录数据 | 子到父遍历 |
| 从父记录获取子记录 | 子查询 |
| 计数/汇总 | 聚合查询 |
| 查询有/无关联记录的记录 | 半连接/反连接 |
| 跨对象文本搜索 | SOSL |
3. 优化选择性和安全性
检查:
- 筛选条件是否使用索引/具有选择性
- 是否包含不必要的字段
- 是否存在可避免的通配符或扫描密集型模式
- 是否符合安全性实施要求
4. 必要时验证执行路径
如果用户需要运行时验证,将执行工作转交给:
关键规则
- 切勿采用
SELECT *的思路;只查询必需字段 - 在 Apex 上下文中,不要在循环内执行查询
- 优先在 SOQL 中筛选,而不是在 Apex 中进行后置筛选
- 计数和分组汇总应使用聚合查询,而不是加载不必要的记录
- 谨慎评估通配符的使用;前置通配符往往会导致索引失效
- 查询逻辑移入 Apex 时,应考虑安全模式/字段访问要求
输出格式
完成时,按以下顺序报告:
- 查询用途
- 最终 SOQL/SOSL
- 选择此结构的原因
- 优化或安全性说明
- 必要时提供执行建议
建议结构——准确语法请参考 references/soql-syntax-reference.md:
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>
跨技能协作
| 需求 | 委派给 | 原因 |
|---|---|---|
| 对组织运行查询 | platform-data-manage | 执行和导出 |
| 将查询嵌入服务/选择器 | platform-apex-generate | 实现上下文 |
| 根据日志分析慢查询症状 | platform-apex-logs-debug | 运行时证据 |
| 接入由查询驱动的 UI | experience-lwc-generate | 前端集成 |
| 在测试中验证查询行为 | platform-apex-test-run | 查询逻辑的测试覆盖 |
评分指南
| 分数 | 含义 |
|---|---|
| 90+ | 已针对生产环境优化的查询 |
| 80–89 | 查询良好,仍有少量改进空间 |
| 70–79 | 功能正常,但仍存在性能顾虑 |
| < 70 | 投入生产前需要修改 |
参考文件索引
| 文件 | 何时阅读 |
|---|---|
references/soql-syntax-reference.md | 语法、运算符、日期字面量、关系查询模式 |
references/query-optimization.md | 选择性规则、索引策略、治理限制、安全模式 |
references/soql-reference.md | 快速参考——运算符、日期函数、聚合函数、WITH 子句 |
references/anti-patterns.md | 常见 SOQL 错误及其修正方法——定稿任何查询前请阅读 |
references/selector-patterns.md | Apex 选择器层模式——在 Apex 类中嵌入查询时请阅读 |
references/field-coverage-rules.md | 字段覆盖率验证——生成 Apex 代码中使用的 SOQL 时请阅读 |
references/cli-commands.md | sf CLI 查询执行、批量导出、查询计划命令 |
assets/basic-queries.soql | 常见对象的入门查询示例 |
assets/relationship-queries.soql | 父到子和子到父关系查询模式 |
assets/aggregate-queries.soql | COUNT、SUM、GROUP BY、ROLLUP 查询模式 |
assets/optimization-patterns.soql | 选择性筛选和索引感知查询模式 |
assets/bulkified-query-pattern.cls | 适用于触发器上下文的基于 Apex Map 的批量查询模式 |
assets/selector-class.cls | 完整的选择器类实现模板 |
scripts/post-tool-validate.py | 写入后钩子——在编辑 .soql 文件后运行静态 SOQL 验证和实时查询计划分析 |
评论
支持 Markdown