1+ {
2+ "metadata" : {
3+ "skill_name" : " mpx2rn" ,
4+ "skill_path" : " /Users/didi/work/mpx2/.agents/skills/mpx2rn" ,
5+ "executor_model" : " claude-opus-4-20250514" ,
6+ "analyzer_model" : " claude-opus-4-20250514" ,
7+ "timestamp" : " 2026-05-11T12:00:00Z" ,
8+ "evals_run" : [
9+ 0 ,
10+ 1 ,
11+ 2
12+ ],
13+ "runs_per_configuration" : 1
14+ },
15+ "runs" : [
16+ {
17+ "eval_id" : 0 ,
18+ "configuration" : " with_skill" ,
19+ "run_number" : 1 ,
20+ "result" : {
21+ "pass_rate" : 1.0 ,
22+ "passed" : 9 ,
23+ "failed" : 0 ,
24+ "total" : 9 ,
25+ "time_seconds" : 270.5 ,
26+ "tokens" : 52250 ,
27+ "tool_calls" : 0 ,
28+ "errors" : 0
29+ },
30+ "expectations" : [
31+ {
32+ "text" : " style: no less nesting (& or rule-in-rule)" ,
33+ "passed" : true ,
34+ "evidence" : " PASS"
35+ },
36+ {
37+ "text" : " style on RN (wx-conditional stripped): no `:active`" ,
38+ "passed" : true ,
39+ "evidence" : " PASS"
40+ },
41+ {
42+ "text" : " style on RN: no `:first-child`" ,
43+ "passed" : true ,
44+ "evidence" : " PASS"
45+ },
46+ {
47+ "text" : " script: replaced wx.request with mpx.request" ,
48+ "passed" : true ,
49+ "evidence" : " PASS"
50+ },
51+ {
52+ "text" : " script: replaced wx.navigateTo with mpx.navigateTo" ,
53+ "passed" : true ,
54+ "evidence" : " PASS"
55+ },
56+ {
57+ "text" : " script: uses e.currentTarget.dataset (not e.target.dataset)" ,
58+ "passed" : true ,
59+ "evidence" : " PASS"
60+ },
61+ {
62+ "text" : " template: dynamic class via wx:class (not class string interp)" ,
63+ "passed" : true ,
64+ "evidence" : " PASS"
65+ },
66+ {
67+ "text" : " conditional compile uses @mpx-endif (not @mpx-end-if)" ,
68+ "passed" : true ,
69+ "evidence" : " PASS"
70+ },
71+ {
72+ "text" : " style: no empty selector rules after stripping comments" ,
73+ "passed" : true ,
74+ "evidence" : " PASS"
75+ }
76+ ],
77+ "notes" : []
78+ },
79+ {
80+ "eval_id" : 0 ,
81+ "configuration" : " without_skill" ,
82+ "run_number" : 1 ,
83+ "result" : {
84+ "pass_rate" : 1.0 ,
85+ "passed" : 9 ,
86+ "failed" : 0 ,
87+ "total" : 9 ,
88+ "time_seconds" : 225.7 ,
89+ "tokens" : 65592 ,
90+ "tool_calls" : 0 ,
91+ "errors" : 0
92+ },
93+ "expectations" : [
94+ {
95+ "text" : " style: no less nesting (& or rule-in-rule)" ,
96+ "passed" : true ,
97+ "evidence" : " PASS"
98+ },
99+ {
100+ "text" : " style on RN (wx-conditional stripped): no `:active`" ,
101+ "passed" : true ,
102+ "evidence" : " PASS"
103+ },
104+ {
105+ "text" : " style on RN: no `:first-child`" ,
106+ "passed" : true ,
107+ "evidence" : " PASS"
108+ },
109+ {
110+ "text" : " script: replaced wx.request with mpx.request" ,
111+ "passed" : true ,
112+ "evidence" : " PASS"
113+ },
114+ {
115+ "text" : " script: replaced wx.navigateTo with mpx.navigateTo" ,
116+ "passed" : true ,
117+ "evidence" : " PASS"
118+ },
119+ {
120+ "text" : " script: uses e.currentTarget.dataset (not e.target.dataset)" ,
121+ "passed" : true ,
122+ "evidence" : " PASS"
123+ },
124+ {
125+ "text" : " template: dynamic class via wx:class (not class string interp)" ,
126+ "passed" : true ,
127+ "evidence" : " PASS"
128+ },
129+ {
130+ "text" : " conditional compile uses @mpx-endif (not @mpx-end-if)" ,
131+ "passed" : true ,
132+ "evidence" : " PASS"
133+ },
134+ {
135+ "text" : " style: no empty selector rules after stripping comments" ,
136+ "passed" : true ,
137+ "evidence" : " PASS"
138+ }
139+ ],
140+ "notes" : []
141+ },
142+ {
143+ "eval_id" : 1 ,
144+ "configuration" : " with_skill" ,
145+ "run_number" : 1 ,
146+ "result" : {
147+ "pass_rate" : 1.0 ,
148+ "passed" : 9 ,
149+ "failed" : 0 ,
150+ "total" : 9 ,
151+ "time_seconds" : 204.9 ,
152+ "tokens" : 54917 ,
153+ "tool_calls" : 0 ,
154+ "errors" : 0
155+ },
156+ "expectations" : [
157+ {
158+ "text" : " uses composition API (script setup or setup())" ,
159+ "passed" : true ,
160+ "evidence" : " PASS"
161+ },
162+ {
163+ "text" : " style: no nesting / compound selectors" ,
164+ "passed" : true ,
165+ "evidence" : " PASS"
166+ },
167+ {
168+ "text" : " uses hover-class for press feedback (not bare :active on root)" ,
169+ "passed" : true ,
170+ "evidence" : " PASS"
171+ },
172+ {
173+ "text" : " triggerEvent('tap', ...) is called" ,
174+ "passed" : true ,
175+ "evidence" : " PASS"
176+ },
177+ {
178+ "text" : " title uses numberOfLines for ellipsis" ,
179+ "passed" : true ,
180+ "evidence" : " PASS"
181+ },
182+ {
183+ "text" : " avatar uses <image> (not <img>)" ,
184+ "passed" : true ,
185+ "evidence" : " PASS"
186+ },
187+ {
188+ "text" : " text content wrapped in <text> elements" ,
189+ "passed" : true ,
190+ "evidence" : " PASS"
191+ },
192+ {
193+ "text" : " defineProps uses Mpx-style `value:` (not Vue-style `default:`)" ,
194+ "passed" : true ,
195+ "evidence" : " PASS"
196+ },
197+ {
198+ "text" : " conditional compile uses @mpx-endif (not @mpx-end-if)" ,
199+ "passed" : true ,
200+ "evidence" : " PASS"
201+ }
202+ ],
203+ "notes" : []
204+ },
205+ {
206+ "eval_id" : 1 ,
207+ "configuration" : " without_skill" ,
208+ "run_number" : 1 ,
209+ "result" : {
210+ "pass_rate" : 0.8889 ,
211+ "passed" : 8 ,
212+ "failed" : 1 ,
213+ "total" : 9 ,
214+ "time_seconds" : 59.5 ,
215+ "tokens" : 18792 ,
216+ "tool_calls" : 0 ,
217+ "errors" : 0
218+ },
219+ "expectations" : [
220+ {
221+ "text" : " uses composition API (script setup or setup())" ,
222+ "passed" : true ,
223+ "evidence" : " PASS"
224+ },
225+ {
226+ "text" : " style: no nesting / compound selectors" ,
227+ "passed" : true ,
228+ "evidence" : " PASS"
229+ },
230+ {
231+ "text" : " uses hover-class for press feedback (not bare :active on root)" ,
232+ "passed" : true ,
233+ "evidence" : " PASS"
234+ },
235+ {
236+ "text" : " triggerEvent('tap', ...) is called" ,
237+ "passed" : true ,
238+ "evidence" : " PASS"
239+ },
240+ {
241+ "text" : " title uses numberOfLines for ellipsis" ,
242+ "passed" : false ,
243+ "evidence" : " FAIL"
244+ },
245+ {
246+ "text" : " avatar uses <image> (not <img>)" ,
247+ "passed" : true ,
248+ "evidence" : " PASS"
249+ },
250+ {
251+ "text" : " text content wrapped in <text> elements" ,
252+ "passed" : true ,
253+ "evidence" : " PASS"
254+ },
255+ {
256+ "text" : " defineProps uses Mpx-style `value:` (not Vue-style `default:`)" ,
257+ "passed" : true ,
258+ "evidence" : " PASS"
259+ },
260+ {
261+ "text" : " conditional compile uses @mpx-endif (not @mpx-end-if)" ,
262+ "passed" : true ,
263+ "evidence" : " PASS"
264+ }
265+ ],
266+ "notes" : []
267+ },
268+ {
269+ "eval_id" : 2 ,
270+ "configuration" : " with_skill" ,
271+ "run_number" : 1 ,
272+ "result" : {
273+ "pass_rate" : 1.0 ,
274+ "passed" : 9 ,
275+ "failed" : 0 ,
276+ "total" : 9 ,
277+ "time_seconds" : 136.4 ,
278+ "tokens" : 47991 ,
279+ "tool_calls" : 0 ,
280+ "errors" : 0
281+ },
282+ "expectations" : [
283+ {
284+ "text" : " style: no less nesting outside of conditional compile" ,
285+ "passed" : true ,
286+ "evidence" : " PASS"
287+ },
288+ {
289+ "text" : " style on RN: no ::before pseudo-element" ,
290+ "passed" : true ,
291+ "evidence" : " PASS"
292+ },
293+ {
294+ "text" : " style on RN: no `display: grid`" ,
295+ "passed" : true ,
296+ "evidence" : " PASS"
297+ },
298+ {
299+ "text" : " style on RN: no `:active` pseudo-class" ,
300+ "passed" : true ,
301+ "evidence" : " PASS"
302+ },
303+ {
304+ "text" : " style on RN: no `+` adjacent sibling combinator" ,
305+ "passed" : true ,
306+ "evidence" : " PASS"
307+ },
308+ {
309+ "text" : " conditional compile uses @mpx-endif (not @mpx-end-if)" ,
310+ "passed" : true ,
311+ "evidence" : " PASS"
312+ },
313+ {
314+ "text" : " style: numeric font-weight (e.g. 600) replaced with bold/normal" ,
315+ "passed" : true ,
316+ "evidence" : " PASS"
317+ },
318+ {
319+ "text" : " template: real node added to replace ::before (e.g. card-decorator/card-bar)" ,
320+ "passed" : true ,
321+ "evidence" : " PASS"
322+ },
323+ {
324+ "text" : " style: no empty selector rules" ,
325+ "passed" : true ,
326+ "evidence" : " PASS"
327+ }
328+ ],
329+ "notes" : []
330+ },
331+ {
332+ "eval_id" : 2 ,
333+ "configuration" : " without_skill" ,
334+ "run_number" : 1 ,
335+ "result" : {
336+ "pass_rate" : 0.2222 ,
337+ "passed" : 2 ,
338+ "failed" : 7 ,
339+ "total" : 9 ,
340+ "time_seconds" : 141.8 ,
341+ "tokens" : 51321 ,
342+ "tool_calls" : 0 ,
343+ "errors" : 0
344+ },
345+ "expectations" : [
346+ {
347+ "text" : " style: no less nesting outside of conditional compile" ,
348+ "passed" : false ,
349+ "evidence" : " FAIL"
350+ },
351+ {
352+ "text" : " style on RN: no ::before pseudo-element" ,
353+ "passed" : false ,
354+ "evidence" : " FAIL"
355+ },
356+ {
357+ "text" : " style on RN: no `display: grid`" ,
358+ "passed" : false ,
359+ "evidence" : " FAIL"
360+ },
361+ {
362+ "text" : " style on RN: no `:active` pseudo-class" ,
363+ "passed" : false ,
364+ "evidence" : " FAIL"
365+ },
366+ {
367+ "text" : " style on RN: no `+` adjacent sibling combinator" ,
368+ "passed" : false ,
369+ "evidence" : " FAIL"
370+ },
371+ {
372+ "text" : " conditional compile uses @mpx-endif (not @mpx-end-if)" ,
373+ "passed" : true ,
374+ "evidence" : " PASS"
375+ },
376+ {
377+ "text" : " style: numeric font-weight (e.g. 600) replaced with bold/normal" ,
378+ "passed" : false ,
379+ "evidence" : " FAIL"
380+ },
381+ {
382+ "text" : " template: real node added to replace ::before (e.g. card-decorator/card-bar)" ,
383+ "passed" : false ,
384+ "evidence" : " FAIL"
385+ },
386+ {
387+ "text" : " style: no empty selector rules" ,
388+ "passed" : true ,
389+ "evidence" : " PASS"
390+ }
391+ ],
392+ "notes" : []
393+ }
394+ ]
395+ }
0 commit comments