|
| 1 | +{ |
| 2 | + "skill_name": "semantic-layer-builder", |
| 3 | + "evals": [ |
| 4 | + { |
| 5 | + "id": 1, |
| 6 | + "name": "grain-first-before-dimensions", |
| 7 | + "prompt": "这是一个 REST 接口:GET /v1/orders 返回 { orders: [ { order_id, store_id, placed_at, total_amount } ] }。帮我建语义层。", |
| 8 | + "expected_output": "先确认事实与 grain(一行=一笔订单)再挂维度;回显小表请确认;不直接跳到生成。", |
| 9 | + "expectations": [ |
| 10 | + "Identifies a fact for the orders array before listing dimensions", |
| 11 | + "States a falsifiable grain such as one row per order (orders[] element)", |
| 12 | + "Echoes a confirmation table (fact/grain or dimensions) and asks to confirm before emitting", |
| 13 | + "Does not produce final YAML/OKF before grain is confirmed" |
| 14 | + ], |
| 15 | + "files": [] |
| 16 | + }, |
| 17 | + { |
| 18 | + "id": 2, |
| 19 | + "name": "no-invented-fields", |
| 20 | + "prompt": "把这个 CLI 转成语义层:`mytool list-invoices --customer` 输出每行 invoice_id, amount, currency。币种字典接口我没给你。", |
| 21 | + "expected_output": "只用给出的字段;缺失的字典来源标 TODO(verify),不编造 source_operations 或枚举值。", |
| 22 | + "expectations": [ |
| 23 | + "Only models fields evidenced by the interface (invoice_id, amount, currency)", |
| 24 | + "Marks the missing currency dictionary source as TODO(verify) instead of inventing an operation", |
| 25 | + "Does not fabricate enum values, codes, or field paths not present in the input", |
| 26 | + "Lists open TODO(verify) items in the deliverable" |
| 27 | + ], |
| 28 | + "files": [] |
| 29 | + }, |
| 30 | + { |
| 31 | + "id": 3, |
| 32 | + "name": "okf-default-target", |
| 33 | + "prompt": "我有一个 orders 表(order_id PK, store_id FK, placed_at, total_amount)。直接生成语义对象,用推荐格式。", |
| 34 | + "expected_output": "默认/推荐 Google OKF v0.1:每概念一文件、frontmatter 含非空 type、根 index.md 仅 okf_version;事实/维度/度量分别为 concept。", |
| 35 | + "expectations": [ |
| 36 | + "Chooses Google OKF v0.1 as the recommended/default output target", |
| 37 | + "Each concept is one markdown file with YAML frontmatter containing a non-empty type", |
| 38 | + "Fact, dimension(s), and measure(s) are emitted as separate concepts", |
| 39 | + "Root index.md carries only okf_version frontmatter (or none in sub-index)" |
| 40 | + ], |
| 41 | + "files": [] |
| 42 | + }, |
| 43 | + { |
| 44 | + "id": 4, |
| 45 | + "name": "one-blocking-ask-on-grain-ambiguity", |
| 46 | + "prompt": "把 GET /v1/usage 转语义层,响应是 { data: [...] },结构我暂时说不清。", |
| 47 | + "expected_output": "在改变建模结果的歧义(grain/响应结构未知)处一次一问,给候选;不做问卷连环问,不臆造结构。", |
| 48 | + "expectations": [ |
| 49 | + "Asks one blocking question about the unknown response structure / grain", |
| 50 | + "Offers candidate grains or asks for the array element shape", |
| 51 | + "Does not invent a schema or proceed to emit without the structure", |
| 52 | + "Does not fire a long multi-question questionnaire" |
| 53 | + ], |
| 54 | + "files": [] |
| 55 | + }, |
| 56 | + { |
| 57 | + "id": 5, |
| 58 | + "name": "layer-split-values-to-contract", |
| 59 | + "prompt": "ListProducts 返回 category 字段,枚举有 ELECTRONICS/FOOD/TOYS 等几十个。帮我建语义层维度。", |
| 60 | + "expected_output": "语义层维度只描述形态(kind/business_key/source_operations),枚举取值不内联进语义对象,指向命令/契约层。", |
| 61 | + "expectations": [ |
| 62 | + "Models category as a dimension with kind and business_key", |
| 63 | + "Does NOT inline the full enum value list into the semantic object", |
| 64 | + "Points enum/code values to the command/contract layer (notes references contract)", |
| 65 | + "Keeps the semantic layer thin (shape, not concrete typed-in values)" |
| 66 | + ], |
| 67 | + "files": [] |
| 68 | + } |
| 69 | + ] |
| 70 | +} |
0 commit comments