{
  "skill_name": "ux-writing",
  "evals": [
    {
      "id": 1,
      "prompt": "Write the UI copy for Acme Bank's 'add a payee' flow in our mobile app. Steps: enter payee name, sort code and account number; we run a name check against the bank's records (match, close match, no match); then confirm and add. Users can also see an empty Payees list before they've added anyone. Our style guide says: plain, calm, second person, no exclamation marks.",
      "assertions": [
        "Every slot has a string, including an error for each field rule, each name-check result, a network failure, the empty Payees list, loading and success",
        "Every string shows a character count against a stated budget, and no recommended string exceeds its budget",
        "Every error says what happened and what to do next, names the field, and does not blame the user",
        "Primary buttons are verb plus object; none says Submit, OK or Yes",
        "Each string has one labelled variant and a recommendation",
        "A terminology list picks one term per concept (e.g. payee vs recipient) with terms to avoid, and the strings follow it",
        "No exclamation marks, matching the given style guide",
        "Does not invent limits, fees, processing times or policies not in the prompt; unknowns are placeholders listed as open questions"
      ]
    },
    {
      "id": 2,
      "held_out": "2026-10-18",
      "prompt": "Write the on-screen text for our Voltbay public electric vehicle charger. The screens, current drafts and display limits are in screens.md, the error codes are in error-codes.csv, and our voice rules are in brand-notes.md. I need final strings for every screen and every error, ready for the hardware team.",
      "assertions": [
        "Every button fits 16 characters, every title fits 28 characters and every body fits 90 characters, as screens.md requires",
        "Uses one name for the unit (for example 'charger') everywhere, with none of 'station', 'charge point' or 'pump' left in the strings",
        "The E43 message does not say the card has expired; it says the payment wasn't approved and what the person can do, such as trying another card",
        "Each error message says what happened and what to do next, with the code shown at most as a small reference rather than as the whole message",
        "Errors the user can't fix themselves (E51 ground fault, E60 network) point them to another option or support, and the user-fixable E12 does not send them to support",
        "Does not hardcode a price per kWh and does not invent a support phone number or URL; the price comes from the system and the number is left as a placeholder",
        "Covers all five screens and all five error codes"
      ]
    },
    {
      "id": 3,
      "held_out": "2026-10-18",
      "prompt": "our yoga studio booking app shows 'Error 409' when someone tries to book a class that's full. what should it say instead? there's also a waitlist button, what should that say? when someone cancels, the first person on the waitlist gets an email. just the text pls, a couple of options, nothing long",
      "assertions": [
        "The full-class message says plainly that the class is full and offers the waitlist (or another class) as the next step",
        "No error code or technical wording in the message the person sees",
        "Button text is short (a few words) and says what will happen when tapped",
        "Copy about the waitlist matches what the studio said: an email goes to the first person on the waitlist; it does not promise a guaranteed place, a text message or automatic booking",
        "Does not invent features, prices or policies the studio didn't mention",
        "Gives just the text with a couple of options, short as asked"
      ]
    }
  ]
}