{ "metadata": { "skill_name": "soneta-form-xml", "skill_path": "/Users/marcin/d/Skills/soneta-form-xml", "executor_model": "claude-sonnet-4-6", "timestamp": "2026-03-05T12:00:00Z", "evals_run": ["pageform-z-gridem", "viewform-lista", "warunkowa-widocznosc"], "runs_per_configuration": 1 }, "runs": [ { "eval_id": 1, "eval_name": "pageform-z-gridem", "configuration": "with_skill", "run_number": 1, "result": { "pass_rate": 1.0, "passed": 8, "failed": 0, "total": 8, "time_seconds": 37.8, "tokens": 32707, "tool_calls": 9, "errors": 0 }, "expectations": [ {"text": "Plik zaczyna się od ", "passed": true, "evidence": "Poprawna deklaracja XML"}, {"text": "DataForm ma Priority=\"10\"", "passed": true, "evidence": "Atrybut w elemencie root"}, {"text": "Page ma DataContext=\"{DataSource}\"", "passed": true, "evidence": "Linia 8"}, {"text": "Trzy grupy: Dane podstawowe, Warunki, Pozycje", "passed": true, "evidence": "Linie 10,17,30"}, {"text": "Układ Row>Stack w grupie Warunki", "passed": true, "evidence": "Linie 18-28"}, {"text": "Grid: IsToolbarVisible, EditInPlace, NewInPlace", "passed": true, "evidence": "Linie 31-35"}, {"text": "Footer=Sum na Ilosc i Wartosc", "passed": true, "evidence": "Linie 38,40"}, {"text": "Binding {NazwaPola}", "passed": true, "evidence": "EditValue we wszystkich polach"} ] }, { "eval_id": 1, "eval_name": "pageform-z-gridem", "configuration": "without_skill", "run_number": 1, "result": { "pass_rate": 0.5, "passed": 4, "failed": 4, "total": 8, "time_seconds": 17.7, "tokens": 4263, "tool_calls": 3, "errors": 0 }, "expectations": [ {"text": "Plik zaczyna się od ", "passed": true, "evidence": "Poprawna deklaracja"}, {"text": "DataForm ma Priority=\"10\"", "passed": false, "evidence": "Używa zamiast atrybutu"}, {"text": "Page ma DataContext=\"{DataSource}\"", "passed": false, "evidence": "Brak Page i DataContext"}, {"text": "Trzy grupy: Dane podstawowe, Warunki, Pozycje", "passed": false, "evidence": "Grupy z Name= zamiast CaptionHtml="}, {"text": "Układ Row>Stack w grupie Warunki", "passed": true, "evidence": "Row>Stack obecne"}, {"text": "Grid: IsToolbarVisible, EditInPlace, NewInPlace", "passed": true, "evidence": "Atrybuty obecne"}, {"text": "Footer=Sum na Ilosc i Wartosc", "passed": true, "evidence": "Footer=Sum na Column"}, {"text": "Binding {NazwaPola}", "passed": false, "evidence": "Brak EditValue — używa Name= na Control"} ] }, { "eval_id": 2, "eval_name": "viewform-lista", "configuration": "with_skill", "run_number": 1, "result": { "pass_rate": 1.0, "passed": 7, "failed": 0, "total": 7, "time_seconds": 38.4, "tokens": 34304, "tool_calls": 10, "errors": 0 }, "expectations": [ {"text": "Poprawna deklaracja XML", "passed": true, "evidence": "Linia 1"}, {"text": "xmlns='http://www.enova.pl/schema/form.xsd'", "passed": true, "evidence": "Poprawny namespace"}, {"text": "Element Grid", "passed": true, "evidence": "Grid z ViewType=Folder"}, {"text": "OrderBy='NazwiskoImie'", "passed": true, "evidence": "Linia 12"}, {"text": "IsToolbarVisible i IsFilterRowVisible", "passed": true, "evidence": "Linie 10-11"}, {"text": "6 pól: Kod, NazwiskoImie, NumerPracownika, Dzial, Stanowisko, DataZatrudnienia", "passed": true, "evidence": "Linie 13-18"}, {"text": "Dzial ma Width='*'", "passed": true, "evidence": "Linia 16"} ] }, { "eval_id": 2, "eval_name": "viewform-lista", "configuration": "without_skill", "run_number": 1, "result": { "pass_rate": 0.43, "passed": 3, "failed": 4, "total": 7, "time_seconds": 13.9, "tokens": 3821, "tool_calls": 3, "errors": 0 }, "expectations": [ {"text": "Poprawna deklaracja XML", "passed": true, "evidence": "Linia 1"}, {"text": "xmlns='http://www.enova.pl/schema/form.xsd'", "passed": false, "evidence": "Błędny namespace: http://www.soneta.pl/viewform"}, {"text": "Element Grid", "passed": false, "evidence": " lowercase — błędna nazwa elementu"}, {"text": "OrderBy='NazwiskoImie'", "passed": false, "evidence": "defaultsort= zamiast OrderBy="}, {"text": "IsToolbarVisible i IsFilterRowVisible", "passed": false, "evidence": "Atrybuty lowercase — błędna składnia"}, {"text": "6 pól: Kod, NazwiskoImie, NumerPracownika, Dzial, Stanowisko, DataZatrudnienia", "passed": true, "evidence": " z właściwymi nazwami"}, {"text": "Dzial ma Width='*'", "passed": true, "evidence": "width='*' na Dzial"} ] }, { "eval_id": 3, "eval_name": "warunkowa-widocznosc", "configuration": "with_skill", "run_number": 1, "result": { "pass_rate": 1.0, "passed": 5, "failed": 0, "total": 5, "time_seconds": 72.7, "tokens": 37262, "tool_calls": 10, "errors": 0 }, "expectations": [ {"text": "Visibility='{?Pole=Wartość}'", "passed": true, "evidence": "Linia 30: {?TypKlienta=Korporacyjny}"}, {"text": "OR: {?Status=Premium or Status=VIP}", "passed": true, "evidence": "Linia 48"}, {"text": "Negacja: {?!Status=Aktywny}", "passed": true, "evidence": "Linia 65"}, {"text": "Class='Collapsable' na Group", "passed": true, "evidence": "Linia 109"}, {"text": "Renderable dla licencji", "passed": true, "evidence": "Linia 110: Renderable='{Licence.HAN}'"} ] }, { "eval_id": 3, "eval_name": "warunkowa-widocznosc", "configuration": "without_skill", "run_number": 1, "result": { "pass_rate": 0.0, "passed": 0, "failed": 5, "total": 5, "time_seconds": 50.3, "tokens": 5896, "tool_calls": 3, "errors": 0 }, "expectations": [ {"text": "Visibility='{?Pole=Wartość}'", "passed": false, "evidence": "RowCondition= (nie istnieje) zamiast Visibility"}, {"text": "OR: {?Status=Premium or Status=VIP}", "passed": false, "evidence": "SQL-like OR syntax zamiast {?... or ...}"}, {"text": "Negacja: {?!Status=Aktywny}", "passed": false, "evidence": "NOT (...) zamiast {?!...}"}, {"text": "Class='Collapsable' na Group", "passed": false, "evidence": "Collapsable='True' atrybut zamiast Class="}, {"text": "Renderable dla licencji", "passed": false, "evidence": "Session.Features.IsAvailable() — błędna składnia"} ] } ], "run_summary": { "with_skill": { "pass_rate": {"mean": 1.0, "stddev": 0.0, "min": 1.0, "max": 1.0}, "time_seconds": {"mean": 49.6, "stddev": 18.1, "min": 37.8, "max": 72.7}, "tokens": {"mean": 34758, "stddev": 2284, "min": 32707, "max": 37262} }, "without_skill": { "pass_rate": {"mean": 0.31, "stddev": 0.22, "min": 0.0, "max": 0.5}, "time_seconds": {"mean": 27.3, "stddev": 19.1, "min": 13.9, "max": 50.3}, "tokens": {"mean": 4660, "stddev": 1080, "min": 3821, "max": 5896} }, "delta": { "pass_rate": "+0.69", "time_seconds": "+22.3", "tokens": "+30098" } }, "notes": [ "Skill daje 100% pass rate we wszystkich 3 ewalach vs 31% bez skilla — poprawa o 69 punktów procentowych", "Bez skilla model halucynuje nieistniejące elementy XML: , , , , RowCondition=", "Najsłabszy wynik bez skilla: warunkowa-widocznosc (0%) — model zna pojęcia ale ma zupełnie błędną składnię", "Skill kosztuje więcej tokenów (30k vs 4.7k) i czasu (50s vs 27s) — uzasadnione biorąc pod uwagę czytanie SKILL.md i ELEMENTS.md", "Asercja 'Poprawna deklaracja XML' zawsze przechodzi — mało dyskryminująca, ale utrzymana dla kompletności" ] }