siluzan-tso-cli 1.1.47 → 1.1.48-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/README.md +2 -1
  2. package/dist/index.js +1999 -42
  3. package/dist/skill/AGENTS.md +1 -0
  4. package/dist/skill/SKILL.md +12 -2
  5. package/dist/skill/_meta.json +2 -2
  6. package/dist/skill/assets/meta-lead-create-template.json +105 -0
  7. package/dist/skill/assets/meta-lead-create-template.md +46 -0
  8. package/dist/skill/references/README.md +12 -1
  9. package/dist/skill/references/accounts/accounts-list.md +1 -1
  10. package/dist/skill/references/accounts/accounts-permissions.md +2 -2
  11. package/dist/skill/references/accounts/finance.md +1 -1
  12. package/dist/skill/references/accounts/open-account-by-media.md +1 -1
  13. package/dist/skill/references/accounts/open-account-google-ui.md +1 -1
  14. package/dist/skill/references/analytics/rag.md +1 -1
  15. package/dist/skill/references/analytics/reporting.md +5 -5
  16. package/dist/skill/references/core/intent-routing.md +4 -0
  17. package/dist/skill/references/core/setup.md +5 -5
  18. package/dist/skill/references/core/workflows.md +22 -2
  19. package/dist/skill/references/meta-ads/meta-ads-read.md +33 -0
  20. package/dist/skill/references/meta-ads/meta-ads-write.md +70 -0
  21. package/dist/skill/references/meta-ads/meta-ads.md +37 -0
  22. package/dist/skill/references/meta-ads/meta-lead-launch-plan-template.md +168 -0
  23. package/dist/skill/references/misc/tso-home.md +2 -2
  24. package/dist/skill/references/operations/clue.md +2 -1
  25. package/dist/skill/scripts/install.ps1 +3 -3
  26. package/dist/skill/scripts/install.sh +3 -3
  27. package/eval/cases/accounts-entityid-vs-mediaccustomerid.scenario.json +14 -2
  28. package/eval/cases/accounts-mcc-bind-inquiry.scenario.json +3 -1
  29. package/eval/cases/accounts-single-balance-not-bulk.scenario.json +14 -3
  30. package/eval/cases/budget-display-not-raw-micros.scenario.json +8 -1
  31. package/eval/cases/clue-meta-leads-json.scenario.json +14 -2
  32. package/eval/cases/clue-tiktok-leads-json.scenario.json +11 -2
  33. package/eval/cases/destructive-account-delink-needs-confirm.scenario.json +9 -3
  34. package/eval/cases/destructive-forewarning-delete-needs-confirm.scenario.json +9 -3
  35. package/eval/cases/destructive-invoice-apply-needs-confirm.scenario.json +9 -3
  36. package/eval/cases/facebook-analysis-google-section-aliases.scenario.json +11 -2
  37. package/eval/cases/facebook-analysis-not-google-keywords.scenario.json +10 -3
  38. package/eval/cases/facebook-analysis-period-default.scenario.json +14 -2
  39. package/eval/cases/finance-invoice-info-list.scenario.json +11 -3
  40. package/eval/cases/forewarning-list-google.scenario.json +14 -3
  41. package/eval/cases/google-ads-no-structural-without-confirm.scenario.json +6 -2
  42. package/eval/cases/google-analysis-keywords-route.scenario.json +14 -2
  43. package/eval/cases/guard-budget-circuit-all-google.scenario.json +12 -2
  44. package/eval/cases/guard-zero-conv-empty-spend.scenario.json +12 -2
  45. package/eval/cases/human-p1-multiturn.scenario.json +5 -1
  46. package/eval/cases/ir-p1-vs-p8-account-vs-url.scenario.json +17 -5
  47. package/eval/cases/ir-p3-cpa-monitor-not-p7.scenario.json +19 -2
  48. package/eval/cases/ir-p3-zero-inquiry-not-p7.scenario.json +16 -3
  49. package/eval/cases/ir-p4-period-not-diagnosis.scenario.json +16 -3
  50. package/eval/cases/ir-p8-meets-google-ads-requirements-with-url.scenario.json +28 -3
  51. package/eval/cases/ir-p8-network-diagnosis-with-url.scenario.json +25 -3
  52. package/eval/cases/ir-p8-website-monitor-report-with-url.scenario.json +28 -3
  53. package/eval/cases/ir-p8-website-test-report-no-url.scenario.json +14 -3
  54. package/eval/cases/ir-p9-industry-not-p8.scenario.json +19 -3
  55. package/eval/cases/ir-vague-report-clarify.scenario.json +14 -3
  56. package/eval/cases/ir-w3-vs-p8-from-website.scenario.json +8 -2
  57. package/eval/cases/ir-w5-keyword-planner-url-core-terms.scenario.json +22 -2
  58. package/eval/cases/meta-single-balance-not-bulk.scenario.json +17 -3
  59. package/eval/cases/no-legacy-json-flag.scenario.json +6 -2
  60. package/eval/cases/open-account-google-noninteractive.scenario.json +4 -2
  61. package/eval/cases/open-account-tiktok-license-file.scenario.json +3 -1
  62. package/eval/cases/optimize-list-by-account.scenario.json +11 -3
  63. package/eval/cases/p1-single-account-profile.scenario.json +11 -1
  64. package/eval/cases/p2-balance-scan-bulk.scenario.json +9 -2
  65. package/eval/cases/p3-accounts-digest.scenario.json +5 -1
  66. package/eval/cases/p3-cpa-scan-max-cpa.scenario.json +14 -2
  67. package/eval/cases/p4-fb-meta-period-report.scenario.json +12 -2
  68. package/eval/cases/p4-period-report-window.scenario.json +8 -1
  69. package/eval/cases/pmax-asset-group-create-with-bg.scenario.json +13 -2
  70. package/eval/cases/pmax-brand-edit-routing.scenario.json +16 -3
  71. package/eval/cases/pmax-edit-not-campaign-edit.scenario.json +12 -2
  72. package/eval/cases/pmax-enable-brand-guidelines.scenario.json +12 -2
  73. package/eval/cases/pmax-no-assets-update-brand-fields.scenario.json +14 -3
  74. package/eval/cases/rag-before-keyword-expand.scenario.json +11 -1
  75. package/eval/cases/rag-list-then-query.scenario.json +14 -2
  76. package/eval/cases/report-list-google.scenario.json +11 -2
  77. package/eval/cases/report-push-list-google.scenario.json +11 -2
  78. package/eval/cases/setup-login-or-env.scenario.json +3 -1
  79. package/eval/cases/setup-siluzan-data-permission-env.scenario.json +3 -1
  80. package/eval/cases/tiktok-bc-bind-inquiry.scenario.json +6 -2
  81. package/eval/cases/time-range-user-delegates-default.scenario.json +8 -1
  82. package/eval/cases/tips-json-out-filtering.scenario.json +3 -1
  83. package/eval/cases/tips-large-json-pagination.scenario.json +3 -1
  84. package/eval/cases/uj-ad-campaign-validate-before-create-stub.scenario.json +11 -2
  85. package/eval/cases/uj-ad-outdoor-campgear-search-plan.scenario.json +3 -1
  86. package/eval/cases/uj-ad-website-search-plan-table-format.scenario.json +3 -1
  87. package/eval/cases/uj-analytics-30d-pdf-campaign-device-geo.scenario.json +18 -6
  88. package/eval/cases/uj-analytics-compare-google-tiktok-last-month-roi.scenario.json +8 -1
  89. package/eval/cases/uj-analytics-ecommerce-industry-report.scenario.json +14 -2
  90. package/eval/cases/uj-analytics-google-weekly-trends-campaigns-keywords.scenario.json +11 -2
  91. package/eval/cases/uj-analytics-report-push-weekly-email.scenario.json +3 -1
  92. package/eval/cases/uj-finance-invoice-records-this-month.scenario.json +11 -2
  93. package/eval/cases/uj-life-newbie-siluzan-google-end-to-end.scenario.json +4 -1
  94. package/eval/cases/uj-meta-ad-validate-before-create-stub.scenario.json +30 -0
  95. package/eval/cases/uj-ops-google-accounts-list-normal.scenario.json +17 -2
  96. package/eval/cases/uj-ops-google-yesterday-spend-conversions.scenario.json +14 -2
  97. package/eval/cases/uj-ops-open-google-b2c-usd-shenzhen.scenario.json +1 -1
  98. package/eval/cases/uj-ops-pause-worst-adgroup-confirm.scenario.json +6 -2
  99. package/eval/cases/uj-ops-tiktok-leads-last-week.scenario.json +17 -3
  100. package/eval/cases/uj-patrol-cpc-spike-adgroups-over-15.scenario.json +5 -1
  101. package/eval/cases/uj-patrol-forewarning-create-daily-cap-3000.scenario.json +3 -1
  102. package/eval/cases/uj-patrol-forewarning-trigger-records.scenario.json +17 -3
  103. package/eval/cases/uj-patrol-google-balances-low.scenario.json +11 -2
  104. package/eval/cases/uj-roi-optimize-records-then-execute-cautiously.scenario.json +14 -3
  105. package/eval/cases/uj-roi-search-terms-add-negative-keywords.scenario.json +14 -2
  106. package/eval/cases/yandex-stats-use-porg-mediaccustomerid.scenario.json +21 -3
  107. package/package.json +1 -1
@@ -11,6 +11,23 @@
11
11
  "references/core/playbooks.md",
12
12
  "references/accounts/accounts-balance-stats.md"
13
13
  ],
14
- "commandMustInclude": [["accounts-digest"], ["--json-out"]],
15
- "commandMustNotInclude": [["--period"], ["google-inquiry"], ["inquiry-analysis"]]
14
+ "commandMustInclude": [
15
+ [
16
+ "accounts-digest"
17
+ ],
18
+ [
19
+ "--json-out"
20
+ ]
21
+ ],
22
+ "commandMustNotInclude": [
23
+ [
24
+ "--period"
25
+ ],
26
+ [
27
+ "google-inquiry"
28
+ ],
29
+ [
30
+ "inquiry-analysis"
31
+ ]
32
+ ]
16
33
  }
@@ -1,7 +1,9 @@
1
1
  {
2
2
  "id": "ir-p3-zero-inquiry-not-p7",
3
3
  "description": "昨日零询盘(无 CRM)— P3 --zero-conversions,不是 P7",
4
- "turns": ["帮我查一下 Google 账户昨日零询盘(有消耗无转化)的账户列表,直接执行。"],
4
+ "turns": [
5
+ "帮我查一下 Google 账户昨日零询盘(有消耗无转化)的账户列表,直接执行。"
6
+ ],
5
7
  "judgeExpectation": "路径:口语「零询盘/0 转化」且无询盘附件 → P3 accounts-digest(宜 --zero-conversions),不是 P7。\n输出:交付零转化账户表或明确无命中;禁止编造询盘明细。",
6
8
  "skillMapping": "references/core/intent-routing.md · §零·D · P3",
7
9
  "judgeReferencePaths": [
@@ -9,6 +11,17 @@
9
11
  "references/core/playbooks.md",
10
12
  "references/accounts/accounts-balance-stats.md"
11
13
  ],
12
- "commandMustInclude": [["accounts-digest"], ["--json-out"]],
13
- "commandMustNotInclude": [["--period"]]
14
+ "commandMustInclude": [
15
+ [
16
+ "accounts-digest"
17
+ ],
18
+ [
19
+ "--json-out"
20
+ ]
21
+ ],
22
+ "commandMustNotInclude": [
23
+ [
24
+ "--period"
25
+ ]
26
+ ]
14
27
  }
@@ -1,13 +1,26 @@
1
1
  {
2
2
  "id": "ir-p4-period-not-diagnosis",
3
3
  "description": "月度周期报告 — P4,不是 P1 诊断",
4
- "turns": ["Google 账户 {{EVAL_ACCOUNT_READ}} 出一份 5 月份的月度投放报告,汇总花费和转化就行。"],
4
+ "turns": [
5
+ "Google 账户 {{EVAL_ACCOUNT_READ}} 出一份 5 月份的月度投放报告,汇总花费和转化就行。"
6
+ ],
5
7
  "judgeExpectation": "路径:用户要「月度/周期报告」且给账户 ID、未强调健康诊断 → P4(google-analysis 等拉数),不是 google-ads-diagnosis。\n输出:说明周期报告与账户诊断区别;列出将用的拉数步骤。",
6
8
  "skillMapping": "references/core/intent-routing.md · P4 vs P1",
7
9
  "judgeReferencePaths": [
8
10
  "references/core/intent-routing.md",
9
11
  "references/report-templates/google-period-report.md"
10
12
  ],
11
- "commandMustInclude": [["list-accounts"], ["{{EVAL_ACCOUNT_READ}}"]],
12
- "commandMustNotInclude": [["google-ads-diagnosis"]]
13
+ "commandMustInclude": [
14
+ [
15
+ "list-accounts"
16
+ ],
17
+ [
18
+ "{{EVAL_ACCOUNT_READ}}"
19
+ ]
20
+ ],
21
+ "commandMustNotInclude": [
22
+ [
23
+ "google-ads-diagnosis"
24
+ ]
25
+ ]
13
26
  }
@@ -1,7 +1,9 @@
1
1
  {
2
2
  "id": "ir-p8-meets-google-ads-requirements-with-url",
3
3
  "description": "是否符合 Google 广告投放要求 + URL — 须 P8 website-diagnosis,禁止 W3/WebFetch 当终稿",
4
- "turns": ["请诊断网站 https://www.siluzan.com 是否符合 Google 广告投放要求"],
4
+ "turns": [
5
+ "请诊断网站 https://www.siluzan.com 是否符合 Google 广告投放要求"
6
+ ],
5
7
  "judgeExpectation": "路径:「诊断网站 / 是否符合 Google 广告投放要求」+ URL → 必须 P8;须执行 `website-diagnosis collect --url` 且带 --json-out。\n禁止:因带「Google 广告」改走 W3 campaign-validate/create;禁止只用 WebFetch/浏览器看页写结论代替 CLI。\n输出:说明 collect → prepare → render HTML。",
6
8
  "skillMapping": "references/core/intent-routing.md · §零 · P8",
7
9
  "judgeReferencePaths": [
@@ -9,6 +11,29 @@
9
11
  "references/core/playbooks.md",
10
12
  "analytics/website-diagnosis-guide.md"
11
13
  ],
12
- "commandMustInclude": [["website-diagnosis"], ["collect"], ["--url"], ["--json-out"]],
13
- "commandMustNotInclude": [["campaign-validate"], ["campaign-create"], ["market-analysis"]]
14
+ "commandMustInclude": [
15
+ [
16
+ "website-diagnosis"
17
+ ],
18
+ [
19
+ "collect"
20
+ ],
21
+ [
22
+ "--url"
23
+ ],
24
+ [
25
+ "--json-out"
26
+ ]
27
+ ],
28
+ "commandMustNotInclude": [
29
+ [
30
+ "campaign-validate"
31
+ ],
32
+ [
33
+ "campaign-create"
34
+ ],
35
+ [
36
+ "market-analysis"
37
+ ]
38
+ ]
14
39
  }
@@ -1,7 +1,9 @@
1
1
  {
2
2
  "id": "ir-p8-network-diagnosis-with-url",
3
3
  "description": "网络诊断 + URL — 用户混说「网络」仍须 P8,禁止 P9",
4
- "turns": ["帮我做一下 https://shop.example.com 的网络诊断报告"],
4
+ "turns": [
5
+ "帮我做一下 https://shop.example.com 的网络诊断报告"
6
+ ],
5
7
  "judgeExpectation": "路径:用户说「网络诊断/网络检测/网络监测」且带 URL → 仍须 P8 website-diagnosis;禁止 market-analysis、禁止因「网络」二字走 P9 行业分析。\n须 `website-diagnosis collect --url` 且带 --json-out。",
6
8
  "skillMapping": "references/core/intent-routing.md · §零 · P8",
7
9
  "judgeReferencePaths": [
@@ -9,6 +11,26 @@
9
11
  "references/core/playbooks.md",
10
12
  "analytics/website-diagnosis-guide.md"
11
13
  ],
12
- "commandMustInclude": [["website-diagnosis"], ["collect"], ["--url"], ["--json-out"]],
13
- "commandMustNotInclude": [["market-analysis"], ["google-ads-diagnosis"]]
14
+ "commandMustInclude": [
15
+ [
16
+ "website-diagnosis"
17
+ ],
18
+ [
19
+ "collect"
20
+ ],
21
+ [
22
+ "--url"
23
+ ],
24
+ [
25
+ "--json-out"
26
+ ]
27
+ ],
28
+ "commandMustNotInclude": [
29
+ [
30
+ "market-analysis"
31
+ ],
32
+ [
33
+ "google-ads-diagnosis"
34
+ ]
35
+ ]
14
36
  }
@@ -1,7 +1,9 @@
1
1
  {
2
2
  "id": "ir-p8-website-monitor-report-with-url",
3
3
  "description": "网站监测报告 + URL — 须 P8 website-diagnosis,禁止 P9/W3",
4
- "turns": ["帮我出一份 https://www.example.com 的网站监测报告"],
4
+ "turns": [
5
+ "帮我出一份 https://www.example.com 的网站监测报告"
6
+ ],
5
7
  "judgeExpectation": "路径:「网站监测/检测/诊断报告」+ URL 须识别为 P8;须 `website-diagnosis collect --url` 且带 --json-out;不是 market-analysis、不是 google-ads-diagnosis、不是 W3 搜索方案。\n输出:说明 collect → Agent → render 或 HTML 交付;须 Read website-diagnosis-rules.md。",
6
8
  "skillMapping": "references/core/intent-routing.md · P8",
7
9
  "judgeReferencePaths": [
@@ -9,6 +11,29 @@
9
11
  "references/core/playbooks.md",
10
12
  "analytics/website-diagnosis-guide.md"
11
13
  ],
12
- "commandMustInclude": [["website-diagnosis"], ["collect"], ["--url"], ["--json-out"]],
13
- "commandMustNotInclude": [["market-analysis"], ["google-ads-diagnosis"], ["campaign-validate"]]
14
+ "commandMustInclude": [
15
+ [
16
+ "website-diagnosis"
17
+ ],
18
+ [
19
+ "collect"
20
+ ],
21
+ [
22
+ "--url"
23
+ ],
24
+ [
25
+ "--json-out"
26
+ ]
27
+ ],
28
+ "commandMustNotInclude": [
29
+ [
30
+ "market-analysis"
31
+ ],
32
+ [
33
+ "google-ads-diagnosis"
34
+ ],
35
+ [
36
+ "campaign-validate"
37
+ ]
38
+ ]
14
39
  }
@@ -1,9 +1,20 @@
1
1
  {
2
2
  "id": "ir-p8-website-test-report-no-url",
3
3
  "description": "仅网站检测报告无 URL — 须追问 URL,禁止直接 P9",
4
- "turns": ["帮我做一份网站检测报告"],
4
+ "turns": [
5
+ "帮我做一份网站检测报告"
6
+ ],
5
7
  "judgeExpectation": "路径:用户只说网站检测/监测/诊断报告但未给 URL 时,须追问网址或给出 intent-routing §五 A/B/C/D;禁止直接 market-analysis collect 或 google-ads-diagnosis。\n输出:明确需要 URL 才能 P8;可一次二选一澄清。",
6
8
  "skillMapping": "references/core/intent-routing.md · P8 · §五",
7
- "judgeReferencePaths": ["references/core/intent-routing.md"],
8
- "commandMustNotInclude": [["market-analysis collect"], ["google-ads-diagnosis collect"]]
9
+ "judgeReferencePaths": [
10
+ "references/core/intent-routing.md"
11
+ ],
12
+ "commandMustNotInclude": [
13
+ [
14
+ "market-analysis collect"
15
+ ],
16
+ [
17
+ "google-ads-diagnosis collect"
18
+ ]
19
+ ]
9
20
  }
@@ -1,13 +1,29 @@
1
1
  {
2
2
  "id": "ir-p9-industry-not-p8",
3
3
  "description": "电商行业分析报告 — P9,不是 P8 网站报告",
4
- "turns": ["写一份制造业的行业分析报告"],
4
+ "turns": [
5
+ "写一份制造业的行业分析报告"
6
+ ],
5
7
  "judgeExpectation": "路径:仅行业名 + 行业/市场报告 → P9 market-analysis collect;不是 website-diagnosis。\n输出:collect + render HTML;禁止 WebSearch 代替 CLI。",
6
8
  "skillMapping": "references/core/intent-routing.md · P9",
7
9
  "judgeReferencePaths": [
8
10
  "references/core/intent-routing.md",
9
11
  "analytics/market-analysis-guide.md"
10
12
  ],
11
- "commandMustInclude": [["market-analysis"], ["collect"], ["--json-out"]],
12
- "commandMustNotInclude": [["website-diagnosis"]]
13
+ "commandMustInclude": [
14
+ [
15
+ "market-analysis"
16
+ ],
17
+ [
18
+ "collect"
19
+ ],
20
+ [
21
+ "--json-out"
22
+ ]
23
+ ],
24
+ "commandMustNotInclude": [
25
+ [
26
+ "website-diagnosis"
27
+ ]
28
+ ]
13
29
  }
@@ -1,9 +1,20 @@
1
1
  {
2
2
  "id": "ir-vague-report-clarify",
3
3
  "description": "只说「出份报告」— 须澄清或 intent-routing 四选一,禁止瞎猜 P4",
4
- "turns": ["帮我出份报告"],
4
+ "turns": [
5
+ "帮我出份报告"
6
+ ],
5
7
  "judgeExpectation": "路径:用户仅说「帮我出份报告/做个分析」无 URL/账户/行业时,须按 intent-routing §五 一次追问 A/B/C/D,或等价澄清;禁止无上下文直接 google-analysis 或 google-ads-diagnosis。\n输出:澄清问题简短;不得假装已完成报告。",
6
8
  "skillMapping": "references/core/intent-routing.md · §五",
7
- "judgeReferencePaths": ["references/core/intent-routing.md"],
8
- "commandMustNotInclude": [["google-ads-diagnosis collect"], ["website-diagnosis collect"]]
9
+ "judgeReferencePaths": [
10
+ "references/core/intent-routing.md"
11
+ ],
12
+ "commandMustNotInclude": [
13
+ [
14
+ "google-ads-diagnosis collect"
15
+ ],
16
+ [
17
+ "website-diagnosis collect"
18
+ ]
19
+ ]
9
20
  }
@@ -1,12 +1,18 @@
1
1
  {
2
2
  "id": "ir-w3-vs-p8-from-website",
3
3
  "description": "根据官网生成搜索广告 — W3,不是 P8",
4
- "turns": ["根据 www.siluzan.com 官网帮我生成 Google 搜索广告关键词表"],
4
+ "turns": [
5
+ "根据 www.siluzan.com 官网帮我生成 Google 搜索广告关键词表"
6
+ ],
5
7
  "judgeExpectation": "路径:用户要根据官网生成 Google 搜索广告/关键词表 → W3;须 Read campaign-create-template.json;不是 website-diagnosis。\n输出:方案 JSON + validate 门禁说明。",
6
8
  "skillMapping": "references/core/intent-routing.md · W3 vs P8",
7
9
  "judgeReferencePaths": [
8
10
  "references/core/intent-routing.md",
9
11
  "references/google-ads/google-ads-campaign-plan.md"
10
12
  ],
11
- "commandMustNotInclude": [["website-diagnosis collect"]]
13
+ "commandMustNotInclude": [
14
+ [
15
+ "website-diagnosis collect"
16
+ ]
17
+ ]
12
18
  }
@@ -10,6 +10,26 @@
10
10
  "references/core/intent-routing.md",
11
11
  "references/analytics/keyword-planner-workflows.md"
12
12
  ],
13
- "commandMustInclude": [["keyword"], ["--google-only"], ["--json-out"]],
14
- "commandMustNotInclude": [["website-diagnosis"], ["market-analysis"], ["campaign-validate"]]
13
+ "commandMustInclude": [
14
+ [
15
+ "keyword"
16
+ ],
17
+ [
18
+ "--google-only"
19
+ ],
20
+ [
21
+ "--json-out"
22
+ ]
23
+ ],
24
+ "commandMustNotInclude": [
25
+ [
26
+ "website-diagnosis"
27
+ ],
28
+ [
29
+ "market-analysis"
30
+ ],
31
+ [
32
+ "campaign-validate"
33
+ ]
34
+ ]
15
35
  }
@@ -6,7 +6,21 @@
6
6
  ],
7
7
  "judgeExpectation": "路径:仅查单个 Meta 账户余额应使用 balance -m MetaAd -a <mediaCustomerId> --json-out,不应使用 balance-scan。\n输出:说明余额字段含义即可;stub 即可。",
8
8
  "skillMapping": "references/accounts/accounts.md;媒体 MetaAd",
9
- "judgeReferencePaths": ["references/accounts/accounts.md"],
10
- "commandMustInclude": [["balance"], ["MetaAd"], ["--json-out"]],
11
- "commandMustNotInclude": ["balance-scan"]
9
+ "judgeReferencePaths": [
10
+ "references/accounts/accounts.md"
11
+ ],
12
+ "commandMustInclude": [
13
+ [
14
+ "balance"
15
+ ],
16
+ [
17
+ "MetaAd"
18
+ ],
19
+ [
20
+ "--json-out"
21
+ ]
22
+ ],
23
+ "commandMustNotInclude": [
24
+ "balance-scan"
25
+ ]
12
26
  }
@@ -1,8 +1,12 @@
1
1
  {
2
2
  "id": "no-legacy-json-flag",
3
3
  "description": "禁止使用过时的 --json flag",
4
- "turns": ["请用 siluzan-tso list-accounts -m Google --json-out ./snap 拉账户列表。"],
4
+ "turns": [
5
+ "请用 siluzan-tso list-accounts -m Google --json-out ./snap 拉账户列表。"
6
+ ],
5
7
  "judgeExpectation": "路径:结构化拉数应使用 --json-out,不得使用已移除的 --json。",
6
8
  "skillMapping": "references/core/tips.md · 仅 --json-out",
7
- "commandMustNotInclude": ["--json "]
9
+ "commandMustNotInclude": [
10
+ "--json "
11
+ ]
8
12
  }
@@ -4,7 +4,9 @@
4
4
  "turns": [
5
5
  "我们公司要在丝路赞新开一个 Google 美国户,推广 B2C,网址 https://example.com,币种 USD。你告诉我 CLI 要怎么一步步做,我复制粘贴执行。"
6
6
  ],
7
- "judgeExpectation": "路径:用户要新开 Google 广告户时,应说明需资料(公司、网址、行业一级/二级、币种等);提交用非交互式 `open-account google ...`(含 industry;Agent 环境不可用交互式 google-wizard);后续用 `account-history`、`list-accounts` 跟踪。\n输出:明确 wizard 限制;不要求真实提交开户。",
7
+ "judgeExpectation": "路径:用户要新开 Google 广告户时,应说明需资料(公司、网址、币种等;行业可选);提交用非交互式 `open-account google ...`(Agent 环境不可用交互式 google-wizard);后续用 `account-history`、`list-accounts` 跟踪。\n输出:明确 wizard 限制;不要求真实提交开户。",
8
8
  "skillMapping": "references/core/workflows.md 流程一;accounts/open-account-by-media.md",
9
- "judgeReferencePaths": ["references/core/workflows.md"]
9
+ "judgeReferencePaths": [
10
+ "references/core/workflows.md"
11
+ ]
10
12
  }
@@ -6,5 +6,7 @@
6
6
  ],
7
7
  "judgeExpectation": "路径:应提到需营业执照本地路径、行业/地区等前置查询(如 tiktok-industries、tiktok-areas 等,与文档一致),以及 `open-account tiktok` 所需字段;CLI 不做 OCR。\n输出:不编造与文档冲突的参数;不要求真实执行开户。",
8
8
  "skillMapping": "references/core/workflows.md · TikTok 开户",
9
- "judgeReferencePaths": ["references/core/workflows.md"]
9
+ "judgeReferencePaths": [
10
+ "references/core/workflows.md"
11
+ ]
10
12
  }
@@ -1,9 +1,17 @@
1
1
  {
2
2
  "id": "optimize-list-by-account",
3
3
  "description": "AI 优化记录 — optimize list",
4
- "turns": ["查 Google 账户 {{EVAL_ACCOUNT_READ}} 在丝路赞里的 AI 优化记录列表,给我 JSON。"],
4
+ "turns": [
5
+ "查 Google 账户 {{EVAL_ACCOUNT_READ}} 在丝路赞里的 AI 优化记录列表,给我 JSON。"
6
+ ],
5
7
  "judgeExpectation": "路径:查某账户优化批次列表应使用 `siluzan-tso optimize list -a <mediaCustomerId>`,需要分析时加 `--json-out`;脱管账户场景文档另有 `--match-media-customer-id`,本场景用简单 -a 即可。\n输出:不要求记录内容真实。",
6
8
  "skillMapping": "references/operations/optimize.md",
7
- "judgeReferencePaths": ["references/operations/optimize.md"],
8
- "commandMustInclude": [["optimize list"]]
9
+ "judgeReferencePaths": [
10
+ "references/operations/optimize.md"
11
+ ],
12
+ "commandMustInclude": [
13
+ [
14
+ "optimize list"
15
+ ]
16
+ ]
9
17
  }
@@ -6,5 +6,15 @@
6
6
  ],
7
7
  "judgeExpectation": "路径:应先确认账户(list-accounts 或等效),再拉 stats 与 ad campaigns(或带日期的 campaigns),需要结构化数据时应使用 --json-out。\n输出:应对该区间做文字/表格总结;若材料中有货币/区间信息,应表述清楚;不要求具体消耗数字正确。",
8
8
  "skillMapping": "Playbook P1 · 单账户投放画像",
9
- "commandMustInclude": [["list-accounts"], ["stats"], ["ad campaigns"]]
9
+ "commandMustInclude": [
10
+ [
11
+ "list-accounts"
12
+ ],
13
+ [
14
+ "stats"
15
+ ],
16
+ [
17
+ "ad campaigns"
18
+ ]
19
+ ]
10
20
  }
@@ -6,6 +6,13 @@
6
6
  ],
7
7
  "judgeExpectation": "路径:多账户续航/余额筛查应使用 balance-scan(或文档允许的批量命令),不应大量逐账户单独 balance 拖慢任务。\n输出:应能说明筛查目的(如不足 7 天)并呈现结果要点;若 CLI 返回了示例/占位金额,在回复中简要引用即可,不要求金额与真实数据一致。",
8
8
  "skillMapping": "Playbook P2 · 批量余额 / 硬规范「批量任务」",
9
- "commandMustInclude": [["balance-scan"]],
10
- "commandMustNotInclude": ["for ", "while "]
9
+ "commandMustInclude": [
10
+ [
11
+ "balance-scan"
12
+ ]
13
+ ],
14
+ "commandMustNotInclude": [
15
+ "for ",
16
+ "while "
17
+ ]
11
18
  }
@@ -6,7 +6,11 @@
6
6
  ],
7
7
  "judgeExpectation": "路径:多账户汇总消耗应优先 accounts-digest(带 --json-out 落盘),而非对每个账户重复 stats。\n输出:应有汇总表或对比说明;结构化数据应来自落盘 JSON(可先 outline 再读文件),不要求 ROAS/消耗数值与真实数据一致。",
8
8
  "skillMapping": "Playbook P3 · accounts-digest",
9
- "commandMustInclude": [["accounts-digest"]],
9
+ "commandMustInclude": [
10
+ [
11
+ "accounts-digest"
12
+ ]
13
+ ],
10
14
  "maxOccurrences": [
11
15
  {
12
16
  "pattern": "stats --",
@@ -6,6 +6,18 @@
6
6
  ],
7
7
  "judgeExpectation": "路径:多账户 CPA 筛查应使用 accounts-digest,并带 --max-cpa(或等价过滤)与 --json-out;可用 --start/--end 或 --start-date/--end-date。\n输出:交付高 CPA / 零转化命中表或「无命中」;禁止只落盘不说明。",
8
8
  "skillMapping": "Playbook P3 · §零·D 转化成本巡检",
9
- "commandMustInclude": [["accounts-digest"], ["--max-cpa"], ["--json-out"]],
10
- "commandMustNotInclude": ["--period"]
9
+ "commandMustInclude": [
10
+ [
11
+ "accounts-digest"
12
+ ],
13
+ [
14
+ "--max-cpa"
15
+ ],
16
+ [
17
+ "--json-out"
18
+ ]
19
+ ],
20
+ "commandMustNotInclude": [
21
+ "--period"
22
+ ]
11
23
  }
@@ -6,6 +6,16 @@
6
6
  ],
7
7
  "judgeExpectation": "路径:在已给起止日期下应使用 facebook-analysis 拉 overview 与结构/地域/受众/创意等维度(可用默认 sections 或显式列出),加 --json-out;撰写时说明无 daily-metrics/keywords。\n输出:区间感知的总结或拉数计划;stub 即可。",
8
8
  "skillMapping": "Playbook P4-FB · meta-period-report.md",
9
- "judgeReferencePaths": ["references/core/playbooks.md", "report-templates/meta-period-report.md"],
10
- "commandMustInclude": [["facebook-analysis"], ["--json-out"]]
9
+ "judgeReferencePaths": [
10
+ "references/core/playbooks.md",
11
+ "report-templates/meta-period-report.md"
12
+ ],
13
+ "commandMustInclude": [
14
+ [
15
+ "facebook-analysis"
16
+ ],
17
+ [
18
+ "--json-out"
19
+ ]
20
+ ]
11
21
  }
@@ -6,5 +6,12 @@
6
6
  ],
7
7
  "judgeExpectation": "路径:在已给起止日期下应拉取 stats 与 ad campaigns(或等价)以支撑周期分析。\n输出:应有区间感知的文字总结;不要求指标数值准确。",
8
8
  "skillMapping": "Playbook P4 · 周期报告",
9
- "commandMustInclude": [["stats"], ["ad campaigns"]]
9
+ "commandMustInclude": [
10
+ [
11
+ "stats"
12
+ ],
13
+ [
14
+ "ad campaigns"
15
+ ]
16
+ ]
10
17
  }
@@ -10,6 +10,17 @@
10
10
  "references/google-ads/pmax-api.md",
11
11
  "assets/pmax-asset-group-template.md"
12
12
  ],
13
- "commandMustInclude": [["pmax-get"], ["pmax-asset-group-create"]],
14
- "commandMustNotInclude": ["pmax-create", "campaign-create", "ad campaign-create"]
13
+ "commandMustInclude": [
14
+ [
15
+ "pmax-get"
16
+ ],
17
+ [
18
+ "pmax-asset-group-create"
19
+ ]
20
+ ],
21
+ "commandMustNotInclude": [
22
+ "pmax-create",
23
+ "campaign-create",
24
+ "ad campaign-create"
25
+ ]
15
26
  }
@@ -6,7 +6,20 @@
6
6
  ],
7
7
  "judgeExpectation": "路径:应先 `ad pmax-get`(带 --json-out)确认 `_brandGuidelinesActive` 或 brandAssets;BG 生效时改商家名/Logo 须 `ad pmax-brand-assets-edit --patch-file`,不得 `pmax-assets-update` 链接 BUSINESS_NAME/LOGO,不得 `ad campaign-edit`。\n输出:说明改的是 Campaign 级 brandAssets;stub 即可。",
8
8
  "skillMapping": "references/google-ads/pmax-api.md § Brand Guidelines",
9
- "judgeReferencePaths": ["references/google-ads/pmax-api.md"],
10
- "commandMustInclude": [["pmax-get"], ["pmax-brand-assets-edit"]],
11
- "commandMustNotInclude": ["pmax-assets-update", "campaign-edit", "ad campaign-edit"]
9
+ "judgeReferencePaths": [
10
+ "references/google-ads/pmax-api.md"
11
+ ],
12
+ "commandMustInclude": [
13
+ [
14
+ "pmax-get"
15
+ ],
16
+ [
17
+ "pmax-brand-assets-edit"
18
+ ]
19
+ ],
20
+ "commandMustNotInclude": [
21
+ "pmax-assets-update",
22
+ "campaign-edit",
23
+ "ad campaign-edit"
24
+ ]
12
25
  }
@@ -10,6 +10,16 @@
10
10
  "references/google-ads/pmax-api.md",
11
11
  "references/google-ads/google-ads.md"
12
12
  ],
13
- "commandMustInclude": [["pmax-get"], ["pmax-edit"]],
14
- "commandMustNotInclude": ["campaign-edit", "ad campaign-edit"]
13
+ "commandMustInclude": [
14
+ [
15
+ "pmax-get"
16
+ ],
17
+ [
18
+ "pmax-edit"
19
+ ]
20
+ ],
21
+ "commandMustNotInclude": [
22
+ "campaign-edit",
23
+ "ad campaign-edit"
24
+ ]
15
25
  }
@@ -10,6 +10,16 @@
10
10
  "references/google-ads/pmax-api.md",
11
11
  "assets/pmax-brand-guidelines-enable-template.md"
12
12
  ],
13
- "commandMustInclude": [["pmax-get"], ["pmax-brand-guidelines-enable"]],
14
- "commandMustNotInclude": ["campaign-edit", "ad campaign-edit"]
13
+ "commandMustInclude": [
14
+ [
15
+ "pmax-get"
16
+ ],
17
+ [
18
+ "pmax-brand-guidelines-enable"
19
+ ]
20
+ ],
21
+ "commandMustNotInclude": [
22
+ "campaign-edit",
23
+ "ad campaign-edit"
24
+ ]
15
25
  }
@@ -6,7 +6,18 @@
6
6
  ],
7
7
  "judgeExpectation": "路径:用户要在 PMax 上换 Logo 时,若 BG 已生效,应 `pmax-get` 后走 `pmax-brand-assets-edit`,**不得** `pmax-assets-update` 对 AssetGroup PUT LOGO/BUSINESS_NAME(CLI 预检与网关均会 400)。\n输出:说明 Campaign 级品牌与 AssetGroup 素材分离;stub 即可。",
8
8
  "skillMapping": "references/google-ads/pmax-api.md § Brand Guidelines",
9
- "judgeReferencePaths": ["references/google-ads/pmax-api.md"],
10
- "commandMustInclude": [["pmax-get"], ["pmax-brand-assets-edit"]],
11
- "commandMustNotInclude": ["pmax-assets-update"]
9
+ "judgeReferencePaths": [
10
+ "references/google-ads/pmax-api.md"
11
+ ],
12
+ "commandMustInclude": [
13
+ [
14
+ "pmax-get"
15
+ ],
16
+ [
17
+ "pmax-brand-assets-edit"
18
+ ]
19
+ ],
20
+ "commandMustNotInclude": [
21
+ "pmax-assets-update"
22
+ ]
12
23
  }