<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Theo</title>
    <description>The latest articles on DEV Community by Theo (@theoblondel).</description>
    <link>https://dev.to/theoblondel</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4180371%2Fb00b61c3-e95e-48e3-b233-f4eab11d436c.png</url>
      <title>DEV Community: Theo</title>
      <link>https://dev.to/theoblondel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/theoblondel"/>
    <language>en</language>
    <item>
      <title>I gave my language's spec to 36 AI sessions that had never seen it. Here is what they got wrong.</title>
      <dc:creator>Theo</dc:creator>
      <pubDate>Mon, 12 Oct 2026 20:50:34 +0000</pubDate>
      <link>https://dev.to/theoblondel/i-gave-my-languages-spec-to-36-ai-sessions-that-had-never-seen-it-here-is-what-they-got-wrong-296</link>
      <guid>https://dev.to/theoblondel/i-gave-my-languages-spec-to-36-ai-sessions-that-had-never-seen-it-here-is-what-they-got-wrong-296</guid>
      <description>&lt;p&gt;Kaury is a small language that turns one &lt;code&gt;.kaury&lt;/code&gt; file into a complete website: pages, styles, logic, forms that send e-mails, 3D scenes. The output is server-rendered HTML with a sitemap, structured data and an &lt;code&gt;llms.txt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This is a whole site:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;site "Bloom"
  colors pink #E93D82, cream #FFF6EE
  fonts "Satoshi", "Cabinet Grotesk"
  style background cream

state likes = 0

style card-soft
  background white, radius 20, padding 24
  hover lift 6, shadow medium

page "/"
  seo "Bloom", "Flowers that speak"
  scene fullscreen, particles dust
    light soft
    object "knot", color pink, metal
      spin on scroll
      follows mouse, smooth
    title "Flowers that *speak*.", size 80
  section
    column card-soft
      text "Delivered the same day in Vevey."
      button "I like it ({likes})" -&amp;gt; likes += 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two things to say before going further.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I am a designer, not a programmer.&lt;/strong&gt; The compiler was written with AI assistants, under my direction: I decided what the language should look like, tested it, and refused what I did not like. I would rather say it here than have you find out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The language has one unusual constraint.&lt;/strong&gt; No model was trained on it, so an assistant can only know Kaury from one file: &lt;a href="https://dev.kaury.studio/kaury-ai.md" rel="noopener noreferrer"&gt;the specification&lt;/a&gt;. If an assistant reads that file and still writes something that does not compile, I count it as a fault of the language or of the specification, not of the assistant.&lt;/p&gt;

&lt;p&gt;So I measured it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The test
&lt;/h2&gt;

&lt;p&gt;Each session got a folder with four photos, the specification, and one request: a restaurant site, a quiz, a mortgage calculator, a page of figures with a chart and a sortable table, and so on. The rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;read the specification and nothing else;&lt;/li&gt;
&lt;li&gt;write the site once;&lt;/li&gt;
&lt;li&gt;no compiler, so no way to check or correct.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then I ran the compiler on what came back.&lt;/p&gt;

&lt;p&gt;One limit you should know: every session was a fresh instance of Claude. I have not run the test on other models yet, so this says nothing about them.&lt;/p&gt;

&lt;h2&gt;
  
  
  First group: 11 out of 20
&lt;/h2&gt;

&lt;p&gt;Eleven files compiled at the first try. The nine others failed, and almost every failure was reasonable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A comma after the element.&lt;/strong&gt; They wrote &lt;code&gt;row, gap 16&lt;/code&gt;. The grammar wanted &lt;code&gt;row gap 16&lt;/code&gt;. Nothing made the comma ambiguous; the parser refused it for no good reason.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Properties listed underneath, as in CSS.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;column
  radius 12
  padding 24
  text "Hello"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The language wanted the options on the same line as the element. Again, nothing made the other form ambiguous.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;French keywords that did not exist.&lt;/strong&gt; Kaury has French aliases. Asked to write in French, sessions guessed natural words such as &lt;code&gt;rayon&lt;/code&gt; for &lt;code&gt;radius&lt;/code&gt;. The specification listed four French words out of about two hundred.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The two fonts in the wrong order.&lt;/strong&gt; Every single one wrote the title font first. The language expects the text font first. Nothing was refused: the site compiled, with its two fonts swapped. This was the worst of the five, because a silent wrong result is worse than an error.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A countdown that showed 0.&lt;/strong&gt; Nothing in the language turned a text into a date.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I changed
&lt;/h2&gt;

&lt;p&gt;I did not write better instructions. I changed the language so that the reasonable guess is the right one:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the comma after an element is accepted;&lt;/li&gt;
&lt;li&gt;options written under an element are accepted;&lt;/li&gt;
&lt;li&gt;the French words are generated from the compiler's own vocabulary, and a test keeps the specification exact;&lt;/li&gt;
&lt;li&gt;the font order is stated with an example at the very place where fonts are declared;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;to-date&lt;/code&gt; and &lt;code&gt;format-number&lt;/code&gt; exist.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With those changes, 18 of the same 20 files compiled as they were. After one round where each session received the compiler's messages, 19.&lt;/p&gt;

&lt;p&gt;Those messages are written for that purpose: the line, the place, and what to try.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error site.kaury, line 15: "likez" does not exist.
  15 |     button "Go" -&amp;gt; likez += 1
     |                    ^^^^^
Try: declare it first: let likez = …   (or state likez = … if it changes)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Next two groups: 16 out of 16
&lt;/h2&gt;

&lt;p&gt;Two new groups of eight fresh sessions, with harder requests. All 16 files compiled, with no error and no warning.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the test does not show
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;They write it. They do not choose it.&lt;/strong&gt; I also asked each session whether it would have proposed Kaury for that request on its own. In the first group, 13 of 20 said yes. In the two harder groups, 2 of 8 each time. Their reasons were fair: no compiler at hand to check their work, a request that was really one widget for an existing site, a documentation site better served by a dedicated generator, a need for payments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compiling is not the same as looking right.&lt;/strong&gt; A file can compile and produce a clumsy page. The swapped fonts proved it. I looked at the pages myself, which does not scale.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kaury is not for everything&lt;/strong&gt;, and the specification says so: no accounts, no database, no payments, not one widget inside an existing site.&lt;/p&gt;

&lt;h2&gt;
  
  
  See it
&lt;/h2&gt;

&lt;p&gt;The site of the language is written in Kaury. It shows six sites running live, each with the code that produced it: &lt;a href="https://dev.kaury.studio/showcase/" rel="noopener noreferrer"&gt;dev.kaury.studio/showcase&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Measured on that site: Lighthouse 100 on a desktop. On a phone, 98 to 100 on most pages, and 93 on the home page, which runs a 3D scene.&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

npm install -g @kaury/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>programming</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
