用途
该技能根据自然语言描述,为 Salesforce DX 项目起草并写入符合 schema 的 scratch org 定义文件(scratch-def)。它只负责生成定义文件,不创建 scratch org。默认输出路径为 config/project-scratch-def.json,也可通过 --out 指定为 config/<purpose>-scratch-def.json。技能明确要求:绝不创建 config 目录(Never mkdir config)。
主要能力
- 从产品需求(product ask)生成 scratch-def JSON。
- 支持在 features 数组中直接放入用户提到的产品、云和功能词(例如 Revenue Cloud),由辅助脚本将每个字符串映射为至多一个 PUBLIC token,并补充所需 settings。
- 使用 lower camelCase 的 settings 键。
- 每轮都会在磁盘上写入 report.md,聊天不能替代该文件。
- 提供预览(Preview)与写入(Write)两种执行路径,预览时展示确认卡片并在聊天中给出 schema 有效的 JSON,询问“Write file?”;写入时仅执行一次 apply,不再次预览或询问。
- 写入成功后报告文件路径、一行摘要,并在聊天中给出最终写入的 JSON,同时指向 dx-org-manage(若 Dev Hub 关闭则指向 dx-org-devhub-configure)。
使用方式
技能首先执行“CRITICAL first gate”,按首个匹配行决定行为:
- 若仅涉及 shape 或 snapshot 生命周期(无 features 可叠加),停止并指向 dx-org-shape-manage 或 dx-org-snapshot-manage。
- 若为试用 / trialforce / “trial org definition”,停止并指向 platform-trial-org-create。
- 若需求不明确(未给出 edition,也未给出 products/clouds/features),停止并询问两个问题:正在构建/演示什么?涉及哪些产品/云?若同时缺少 config/,还需询问项目路径。
- 若指向他人电脑或无可读工作区路径,停止并要求提供可读的工作区路径。
- 若为批量生成(一轮生成多个定义文件),停止并说明暂不支持批量,可先做第一个。
- 若符合写入条件(命令式生成且给出 edition 和/或 products/features,或 shape/snapshot + features),但当前目录没有 config/,停止并询问已包含 config 文件夹的项目路径,不创建 config/。
- 若 shape/snapshot + features 且根目录已解析,但用户未提供 sourceOrg 或 snapshot id/name,停止并在 report.md 中要求提供 id,指向相应技能列出,再带 id 恢复本技能。
- 若用户修改草稿(本轮指定不同 edition、products、settings 等,包括同时要求写入但改变了草稿),则本轮措辞即为完整草稿,进行预览,不要求先前文件或聊天记录,暂不应用。
- 若用户确认此预览即为想要写入的草稿且未改动,且根目录已解析,则执行写入;若本轮重述同一草稿,则重建后写入,无需先前聊天记录。
- 若 shape/snapshot + features、根目录已解析、用户提供了 id,且本轮并非同意写入,则预览,暂不应用。
- 若命令式生成且给出 edition 和/或 products/features(单个定义),包括首轮写入或跳过预览的请求,根目录已解析,且本轮并非同意写入,则预览,暂不应用。
预览时:展示确认卡片(见 examples/confirm-card.md,打包时为 artifacts/examples/confirm-card.md),在聊天中给出 schema 有效的 JSON(辅助文档),并在 report.md 中询问“Write file?”,暂不应用,且在用户同意写入前不指向 dx-org-manage。
写入时:仅执行一次 apply,不预览、不第二次展示卡片、不询问“Write file?”。若本轮重述同一草稿则重建(无上下文副本)。使用 --out config/<purpose>-scratch-def.json(默认 config/project-scratch-def.json)。报告路径、一行摘要,并在聊天中给出最终写入的 JSON,指向 dx-org-manage(若 Dev Hub 关闭则指向 dx-org-devhub-configure)。
辅助脚本调用方式:每轮从 SF DX 项目根目录调用一次辅助脚本,通过绝对路径解析 HELPER,优先 <skill_dir>/scripts/lib_scratch_def.py,否则 <skill_dir>/artifacts/scripts/lib_scratch_def.py。草稿通过带引号的 heredoc(<<'EOF')传入 stdin。存在 python3 时使用 python3,否则使用 python。预览示例:
python3 "$HELPER" preview <<'EOF' {"edition":"Developer","features":["API"]} EOF
写入示例:
python3 "$HELPER" apply --out config/<purpose>-scratch-def.json <<'EOF' …same draft JSON… EOF
若辅助脚本警告未安装 jsonschema,请用户安装(python3 -m pip install jsonschema 或 python -m pip install jsonschema),成功后重试同一辅助调用一次;若用户拒绝或安装失败,保留当前结果,不阻塞预览/应用。不要将 references/features.json 或 settings-map.json 读入聊天,也不要 Grep 它们来挑选额外 token。不要添加用户未提及的目录 token。未知 token 会被丢弃并在 report.md 中警告。
适用场景
- 需要根据自然语言快速起草 Salesforce DX scratch org 定义文件。
- 需要在写入前先预览并确认草稿。
- 需要将产品、云、功能词映射为 PUBLIC token 并补充 settings。
限制
- 不创建 scratch org。
- 不创建 config 目录。
- 不运行 sf 命令。
- 不调用其他技能(Never Skill() another skill)。
- 不支持批量生成多个定义文件。
- 无法读取他人电脑或不可读工作区。
- 试用组织、仅 shape/snapshot 生命周期等场景会停止并指向其他技能。
- 目录映射依赖缓存或在线获取 PUBLIC config-values;若均不可用则使用随附快照。每次辅助调用(预览和应用)可能在用户确认前写入当日缓存文件到 cache/,建议将 cache/ 加入 .gitignore。缓存 JSON 视为生成物,删除安全,下次调用会重新获取。
- 关于收费、价格、平台、效果等未在资料中提供的信息,暂未提供。