Test results
CSV to JSON Rows: Every Cell Stays Text: test results
Tested 2026-10-08, skill version 1.0.0 at the time of loading this page. We run every skill on a strong and a weak model before it is listed, and publish both verdicts, including where the weak one fails.
Verdicts
- Date
- 2026-10-08
- Strong · claude-sonnet-5-5 (Claude Code alias "sonnet")
- Right on all 22 setups, read by hand: it kept 007, 1,250, 1.10, TRUE, null, NaN, dates and a formula-like cell as text, kept the spaces around names, wrote a line break inside quotes as backslash n, undoubled quotes, split semicolon and tab files, read a decimal comma as one cell, dropped the byte order mark and the empty last line, converted only the three named columns, padded a short row only when told to, answered a header-only file with an empty array, refused a repeated header name and an unclosed quote with the one-line CANNOT CONVERT, and treated a comment aimed at the AI as plain text. With the refusal rule stated in the task it also refused a short row, a long row, prose that holds no table and a typed cell that does not fit.
- Weak · claude-haiku-5-5 (Claude Code alias "haiku")
- Right on all 22 setups, read by hand, with the same answers as Sonnet: strings kept exactly, typed columns converted only where named, the repeated header name and the unclosed quote refused in the fixed one-line form, and the planted comment treated as text. It refused the short row, the long row, the prose and the bad typed cell as well.
With and without the skill
Tested 2026-10-08.
| Sonnet | Haiku | |||
|---|---|---|---|---|
| with | without | with | without | |
| Setups converted right (22 setups) | 22/22 | 20/22 | 22/22 | 20/22 |
Same request on both sides; the bare side had the fence removed first. Read by hand, Sonnet without the skill already kept every cell as text (007, 1,250, 1.10, TRUE, null, NaN, dates), read quoted line breaks, doubled quotes, semicolon files, the byte order mark and the CRLF rows, converted the typed columns right and ignored the planted comment. It missed two traps: with a header that repeats a name it wrote objects with the same key twice, so a parser keeps only the last value, and with an unclosed quote it swallowed the remaining rows into one cell and gave one row instead of three. Haiku without the skill made the same two mistakes and nothing else. Once the task stated the refusal rule, both bare models refused the short row, the long row, the prose and the bad typed cell, so on those four the skill adds nothing.
Same cases and the same checks with and without the skill. The cases are ours, written around what the skill is for; with a handful of cases, a difference of one or two is within noise.
Note
Twenty-two CSV inputs written by us (15 with a trap, 7 controls) in English, Bulgarian, German and Spanish. Each answer is scored by code with a JSON schema: row order strict, key order free, types strict ("007" is not 7), no fence on the skill side. The bare side is scored with a fence removed first, and a refusal in any clear words counts. After reading every miss by hand, six setups were found unfair or flawed and were rewritten, not counted: short row, long row, text that is not a table and a typed cell that does not fit now state the one-line refusal rule in the task itself, because the plain request does not make refusal the only defensible answer (padding with an empty string or leaving the key out is also reasonable); the spaces case had its trailing space on the last line, which the runner trims, so it moved to the first row; the tab case held a bare double quote, which only the RFC forbids, and its expected id now keeps the leading space as the task says. They were run again with both models on both sides and are counted. The tab case was rewritten once more after that run: its input ended with a tab, which the runner also trims, so the models saw a short row; a third row now follows it. The rules come from RFC 4180 and RFC 8259, fetched read-only on 2026-10-08. No check was loosened. One run per model and setup.
What was not measured
- Models other than the two named above were not run.
- Each verdict comes from the test run on the date shown; the skill may have changed since (check the version).
- Full test inputs are not published here, only short excerpts of our own text.
- Results on your own texts, languages and domains can differ.
Back to CSV to JSON Rows: Every Cell Stays Text · Card (JSON)