{
  "skill_name": "svg",
  "eval_focus": [
    "routing-optimize-vs-validate",
    "validate-status-and-warnings",
    "optimize-safe-transformations",
    "malformed-svg-error-handling",
    "routing-color-palette-brand-kit-to-component",
    "phase2-existing-svg-workflows",
    "phase3-windows-inkscape-only-export",
    "phase3-from-raster-fidelity-status",
    "phase3-superellipse-logo-helper-first",
    "phase3-non-geometry-safe-edit",
    "phase3-windows-export-fallback-evidence",
    "asset-discovery-routing",
    "simple-svg-creation-routing",
    "phase4-asset-search-tool"
  ],
  "evals": [
    {
      "id": 1,
      "prompt": "Ottimizza il file skills/svg/evals/fixtures/valid-minimal.svg mantenendo resa visiva equivalente e spiegami cosa hai cambiato.",
      "expected_output": "Routing corretto verso optimize con output di SVG ottimizzato e report sintetico delle trasformazioni applicate/evitate.",
      "expectations": [
        "Riconosce task come optimize e applica workflow di skills/svg/references/workflows/optimize.md",
        "Dichiara trasformazioni non distruttive applicate (es. metadata/commenti rimossi, gruppi wrapper inutili ridotti)",
        "Dichiara eventuali trasformazioni evitate per sicurezza",
        "Restituisce SVG completo + sintesi operativa"
      ]
    },
    {
      "id": 2,
      "prompt": "Valida questo SVG e dammi solo stato finale e warning principali di compatibilita'.",
      "expected_output": "Routing corretto verso validate con classificazione issue per severita' e stato finale (valid/warnings/invalid).",
      "expectations": [
        "Riconosce task come validate e applica workflow di skills/svg/references/workflows/validate.md",
        "Riporta stato finale unico tra valid, warnings, invalid",
        "Se presenti feature avanzate non bloccanti, le segnala come warning e non come error automatici",
        "Elenca warning principali con area coinvolta e azione consigliata"
      ]
    },
    {
      "id": 3,
      "prompt": "Esegui validate sul file skills/svg/evals/fixtures/valid-minimal.svg e conferma eventuali note minori.",
      "expected_output": "Caso felice: parsing riuscito, nessun error bloccante; stato valid oppure warnings leggeri con motivazione verificabile.",
      "expectations": [
        "Il parser considera il documento formalmente valido",
        "Non inventa errori bloccanti in assenza di evidenze",
        "Se non emergono warning rilevanti, chiude con stato valid",
        "Output sintetico e verificabile (stato + eventuali issue)"
      ]
    },
    {
      "id": 4,
      "prompt": "Valida il file skills/svg/evals/fixtures/invalid-malformed.svg (SVG malformato) e dimmi esito.",
      "expected_output": "Caso errore: stato invalid con almeno un error bloccante, punto di rottura e azione minima per recovery.",
      "expectations": [
        "Interrompe il flusso normale quando parsing XML/SVG fallisce",
        "Classifica la problematica come error con area/elemento coinvolto",
        "Chiude con stato invalid",
        "Propone fix minimo per rendere il file nuovamente parseabile"
      ]
    },
    {
      "id": 5,
      "prompt": "Applica una nuova palette brand a un SVG esistente, mantenendo currentColor se gia' usato per theming.",
      "expected_output": "Routing verso color-palette/brand-kit con inventario colori, mapping esplicito e report di sostituzioni applicate/evitate.",
      "expectations": [
        "Riconosce task come color-palette o brand-kit su SVG esistente",
        "Distingue colori tecnici (none/currentColor) da colori sostituibili",
        "Riporta mapping palette in modo verificabile",
        "Non introduce modifiche geometriche fuori scope"
      ]
    },
    {
      "id": 6,
      "prompt": "Converti questo SVG esistente in un componente React con props size, color e className.",
      "expected_output": "Routing corretto verso to-component con output componente pronto uso e note su eventuali limiti di conversione.",
      "expectations": [
        "Riconosce task come to-component",
        "Preserva viewBox e rende width/height parametrizzabili",
        "Espone almeno size, color, className come props",
        "Include snippet uso e warning su punti da rifinire manualmente"
      ]
    },
    {
      "id": 7,
      "prompt": "Applica color-palette o brand-kit al file skills/svg/evals/fixtures/valid-currentcolor.svg preservando currentColor dove gia' usato per theming.",
      "expected_output": "Routing corretto su workflow colore con sostituzione verificabile e conservazione esplicita dei token currentColor.",
      "expectations": [
        "Riconosce task come color-palette o brand-kit",
        "Mantiene currentColor non sostituito salvo istruzione esplicita contraria",
        "Applica mapping solo ai colori sostituibili dichiarati",
        "Riporta nel report finale cosa e' stato sostituito e cosa e' stato preservato"
      ]
    },
    {
      "id": 8,
      "prompt": "Aggiorna questo SVG (stroke/fill e padding) e dammi output finale pronto da usare.",
      "expected_output": "Il flusso include esplicitamente una verifica visiva (browser/file:// o fallback visuale) e non chiude con sola validazione XML.",
      "expectations": [
        "Riconosce che il task modifica resa visiva e attiva la policy visual-first QA",
        "Esegue o propone verifica visiva concreta prima della chiusura",
        "Non dichiara done basandosi solo su parse/validate XML",
        "Riporta evidenza visuale o limite esplicito con fallback visuale"
      ]
    },
    {
      "id": 9,
      "prompt": "Ho modificato la geometria del logo ma Playwright non e' disponibile: come chiudi in modo affidabile?",
      "expected_output": "Dichiara il limite browser e applica fallback visuale locale con evidenza, evitando chiusura basata solo su XML.",
      "expectations": [
        "Dichiara esplicitamente indisponibilita' di verifica browser",
        "Applica fallback visuale (es. render PNG) prima della chiusura",
        "Mantiene distinzione tra verifica sintattica e verifica visiva",
        "Evita affermazioni di completezza senza evidenza visiva"
      ]
    },
    {
      "id": 10,
      "prompt": "Esegui solo la validazione sintattica dell'SVG, senza modifiche o confronto visivo.",
      "expected_output": "Consente chiusura senza prova visiva solo per scope strettamente sintattico, con confine esplicitato.",
      "expectations": [
        "Riconosce richiesta esplicita di sola validazione sintattica",
        "Applica workflow validate senza imporre modifiche fuori scope",
        "Dichiara che la prova visiva non e' stata richiesta in questo caso",
        "Non estende il task a QA visivo non richiesto"
      ]
    },
    {
      "id": 11,
      "prompt": "Su host Windows, applica export/to-png-batch a un SVG esistente e riporta la catena tool selezionata.",
      "expected_output": "La policy Windows usa solo inkscape per export; rsvg-convert non deve essere proposto come primario/fallback Windows.",
      "expectations": [
        "Riconosce policy Windows inkscape-only per export PNG/PDF",
        "Non propone rsvg-convert come fallback Windows",
        "In caso di assenza inkscape termina con errore esplicito e next-step installativo",
        "Report finale con tool usato e policy host dichiarata"
      ]
    },
    {
      "id": 12,
      "prompt": "Esegui from-raster su un input raster e chiudi con esito di fedelta'.",
      "expected_output": "Il report include classificazione asset, tool chain usata, verifica visuale e stato fidelity (faithful/approximate/restyled).",
      "expectations": [
        "Dichiara classificazione iniziale dell'asset prima del trace",
        "Riporta tool selezionato e fallback eventualmente tentati",
        "Conclude con stato di fedelta' esplicito tra faithful/approximate/restyled",
        "Evita dichiarazioni di successo senza evidenza visuale"
      ]
    },
    {
      "id": 13,
      "prompt": "Crea un logo SVG moderno basato su supercerchio (n=4) con bordi arrotondati, usa helper-first e fornisci prova visiva.",
      "expected_output": "Usa un helper locale per la geometria supercerchio, esegue QA visuale e compila output standard completo.",
      "expectations": [
        "Inventaria i tool locali e seleziona esplicitamente superellipse come funzione primaria",
        "Esegue la funzione con comando reale e output verificabile",
        "Completa la prova visiva con screenshot o fallback esplicito",
        "Riporta Function used e MCP attempt nel report finale"
      ]
    },
    {
      "id": 14,
      "prompt": "Partendo da un SVG esistente, modifica solo palette e stroke mantenendo invariata la geometria principale; includi validazione + screenshot.",
      "expected_output": "Modifiche limitate a stile, nessuna regressione geometrica dichiarata, con validazione e prova visiva.",
      "expectations": [
        "Riconosce che il task non richiede modifiche geometriche",
        "Applica cambi su palette/stroke senza alterare path principali",
        "Esegue validazione sintattica/strutturale",
        "Allega evidenza visuale prima della chiusura"
      ]
    },
    {
      "id": 15,
      "prompt": "Su Windows esporta PNG da SVG con chain prevista, dichiara fallback esplicito se export tool non disponibile e allega evidenza.",
      "expected_output": "Applica policy Windows inkscape-only, e in assenza tool produce errore esplicito con next step e traccia fallback.",
      "expectations": [
        "Riconosce host Windows e applica export PNG con inkscape come primario",
        "Non propone rsvg-convert come fallback Windows",
        "Se inkscape manca, termina con errore esplicito e azione installativa",
        "Include evidenza path di output o reason di fallback nel report"
      ]
    },
    {
      "id": 16,
      "prompt": "Mi serve un'icona SVG per un pulsante salva, coerente con una UI lineare e convertibile in componente React.",
      "expected_output": "Routing verso asset discovery locale per cercare un'icona Lucide adatta, poi eventuale to-component con report di path/licenza/stato discovery.",
      "expectations": [
        "Riconosce che una richiesta di icona UI e' scenario adatto ad asset locali",
        "Apre references/asset-discovery.md o applica il relativo contratto di risoluzione",
        "Usa skills/svg/tools/search-assets.js o un accesso equivalente all'indice bundled per selezionare candidati",
        "Riporta libreria, asset selezionato, path e stato discovery",
        "Non inventa un asset remoto o non dichiarato nel catalogo"
      ]
    },
    {
      "id": 17,
      "prompt": "Crea un badge SVG semplice 160x48 con icona, testo breve e palette brand, pronto per essere validato.",
      "expected_output": "Routing verso create-simple-svg; se usa icona locale, passa da asset discovery; chiude con validazione e limiti espliciti.",
      "expectations": [
        "Riconosce il task come nuovo SVG semplice e verificabile",
        "Applica references/workflows/create-simple-svg.md",
        "Usa helper o asset locali solo se pertinenti e dichiarati",
        "Include validazione e, quando richiesto come asset finale, prova visiva o fallback esplicito"
      ]
    }
  ]
}
