{"slug": "codespeak", "name": "CodeSpeak", "category": "ai-coding", "category_name": "AI coding tools", "description": "", "recommenders": 3, "commenters": 8, "warners": 3, "score": 0.544, "rising": -0.98, "first": "2026-03-12", "latest": "2026-07-24", "why": "formalising a process many are using anyway that currently feels pretty sloppy perhaps isn't so terrible", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 3, "neutral": 2, "compare": 0, "warn": 3}, "spark": [0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "formalising a process many are using anyway that currently feels pretty sloppy perhaps isn't so terrible", "kind": "", "icon": true, "domain": "codespeak.dev", "github_repo": null, "official_url": "https://codespeak.dev", "pricing": "", "aliases": ["CodeSpeak", "Codespeak"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 759016976, "item_id": 47438561, "url": "https://news.ycombinator.com/item?id=47438561", "by": "lo_fye", "date": "2026-03-19", "version": null, "stance": "recommend", "quote": "So you think CodeSpeak by the creator of Kotlin will fail", "excerpt": "So you think CodeSpeak by the creator of Kotlin will fail, pure and simple? https://codespeak.dev", "context": "", "use_case": "", "switched_from": "", "story": "A sufficiently detailed spec is code"}, {"id": 757728384, "item_id": 47358024, "url": "https://news.ycombinator.com/item?id=47358024", "by": "modernerd", "date": "2026-03-12", "version": null, "stance": "recommend", "quote": "formalising a process many are using anyway that currently feels pretty sloppy perhaps isn't so terrible", "excerpt": "So it has \"two-way conversion\": `codespeak build` \u2014 takes the spec and turns it into code via LLM, like a non-deterministic compiler. `codespeak takeover` \u2014 reads a file and creates a spec from it. You can progressively opt in (\"mixed mode\") so it only touches files you allow it to (and makes new ones if needed). Pros: - Formalised version of the \"agentic engineering\" many are already doing, but might actually get pe", "context": "", "use_case": "", "switched_from": "", "story": "Kotlin creator's new language: a formal way to talk to LLMs instead of English"}, {"id": 757638304, "item_id": 47352394, "url": "https://news.ycombinator.com/item?id=47352394", "by": "alexc05", "date": "2026-03-12", "version": null, "stance": "recommend", "quote": "What a fantastic tool.", "excerpt": "this is really exciting and dovetails really closely with the project I'm working on. I'm writing a language spec for an LLM runner that has the ability to chain prompts and hooks into workflows. https://github.com/AlexChesser/ail I'm writing the tool as proof of the spec. Still very much a pre-alpha phase, but I do have a working POC in that I can specify a series of prompts in my YAML language and execute the chain", "context": "", "use_case": "Formal prompt language for LLMs", "switched_from": "", "story": "Kotlin creator's new language: a formal way to talk to LLMs instead of English"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 757974496, "item_id": 47373406, "url": "https://news.ycombinator.com/item?id=47373406", "by": "nyrikki", "date": "2026-03-13", "version": null, "stance": "warn", "quote": "Their example code output produced code with path traversal/resource exhaustion risks", "excerpt": "I think there is a bit of the map territory relation here. > First, it's not a question of decidability but of tractability The question of decidability is a form of many-to-one, reduction. In fact RE-complete is defined by many-to-one reductions. In a computational complexity sense, tractability is a far stronger notion. Basically an algorithm efficient if its time complexity at most PTIME for any size n input. A pr", "context": "", "use_case": "Spec-driven code generation", "switched_from": "", "story": "Kotlin creator's new language: a formal way to talk to LLMs instead of English"}, {"id": 757663104, "item_id": 47353944, "url": "https://news.ycombinator.com/item?id=47353944", "by": "etothet", "date": "2026-03-12", "version": null, "stance": "warn", "quote": "I'm curious why this requires use of an API at all", "excerpt": "Under \"Prerequisites\"[0] I see: \"Get an Anthropic API key\". I presume this is temporary since the project is still in alpha, but I'm curious why this requires use of an API at all and what's special about it that it can't leverage injecting the prompt into a Claude Code or other LLM coding tool session. [0]: https://codespeak.dev/blog/greenfield-project-tutorial-20260209", "context": "", "use_case": "", "switched_from": "", "story": "Kotlin creator's new language: a formal way to talk to LLMs instead of English"}]}], "who": [], "tags": [], "use_cases": ["spec-driven code generation", "formal prompt language for llms"], "compared": [{"slug": "claude-code", "name": "Claude Code", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [{"id": 757706448, "item_id": 47356653, "url": "https://news.ycombinator.com/item?id=47356653", "by": "abreslav", "date": "2026-03-12", "version": null, "stance": "recommend", "quote": "We're actually doing something in that area: https://codespeak.dev/blog/coverage-20260302", "excerpt": "Very much agree on coverage. We're actually doing something in that area: https://codespeak.dev/blog/coverage-20260302 For now, it's only about test coverage of the code, but the spec coverage is coming too.", "context": "", "use_case": "spec and test coverage", "switched_from": "", "story": "Kotlin creator's new language: a formal way to talk to LLMs instead of English"}, {"id": 757705216, "item_id": 47356576, "url": "https://news.ycombinator.com/item?id=47356576", "by": "abreslav", "date": "2026-03-12", "version": null, "stance": "recommend", "quote": "We'd love to hear your feedback!", "excerpt": "We'd love to hear your feedback! Feel free to come to our discord to ask questions/share experience: https://l.codespeak.dev/discord", "context": "", "use_case": "", "switched_from": "", "story": "Kotlin creator's new language: a formal way to talk to LLMs instead of English"}, {"id": 757644352, "item_id": 47352772, "url": "https://news.ycombinator.com/item?id=47352772", "by": "abreslav", "date": "2026-03-12", "version": null, "stance": "recommend", "quote": "Seems very helpful, actually.", "excerpt": "> The limitation seems to be that you can't modify the code yourself if you want the spec to reflect it Eventually, we'll end up in a world where humans don't need to touch code, but we are not there yet. We are looking into ways to \"catch up\" the specs with whatever changes happen in the code not through CodeSpeak (agents or manual changes or whatever). It's an interesting exercise. In the case of agents, it's very ", "context": "", "use_case": "Converting code to specs", "switched_from": "", "story": "Kotlin creator's new language: a formal way to talk to LLMs instead of English"}], "threads": [{"url": "https://news.ycombinator.com/item?id=47350931", "title": "Kotlin creator's new language: a formal way to talk to LLMs instead of English", "mentions": 9}, {"url": "https://news.ycombinator.com/item?id=49033388", "title": "How Do We Stop Vibe Coding?", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47434047", "title": "A sufficiently detailed spec is code", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {}, "2026-01": {}, "2026-02": {}, "2026-03": {"recommend": 3, "warn": 3, "neutral": 1}, "2026-04": {}, "2026-05": {}, "2026-06": {}, "2026-07": {"neutral": 1}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "versions": [], "version_unnamed": 0, "family_ref": null, "runs_on": null, "lines": [], "quotes": [{"id": 784573456, "item_id": 49035841, "url": "https://news.ycombinator.com/item?id=49035841", "by": "trjordan", "date": "2026-07-24", "version": null, "stance": "neutral", "quote": "checking in on how CodeSpeak and Tessl are doing", "excerpt": "Man, it's wild how I have no original thoughts. I've been pulling on this thought this morning, complete with checking in on how CodeSpeak and Tessl are doing. I'll add this link to the pile: https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html > spec-kit created a LOT of markdown files for me to review. They were repetitive, both with each other, and with the code that already existed. Some contained ", "context": "", "use_case": "", "switched_from": "", "story": "How Do We Stop Vibe Coding?"}, {"id": 759016976, "item_id": 47438561, "url": "https://news.ycombinator.com/item?id=47438561", "by": "lo_fye", "date": "2026-03-19", "version": null, "stance": "recommend", "quote": "So you think CodeSpeak by the creator of Kotlin will fail", "excerpt": "So you think CodeSpeak by the creator of Kotlin will fail, pure and simple? https://codespeak.dev", "context": "", "use_case": "", "switched_from": "", "story": "A sufficiently detailed spec is code"}, {"id": 757974496, "item_id": 47373406, "url": "https://news.ycombinator.com/item?id=47373406", "by": "nyrikki", "date": "2026-03-13", "version": null, "stance": "warn", "quote": "Their example code output produced code with path traversal/resource exhaustion risks", "excerpt": "I think there is a bit of the map territory relation here. > First, it's not a question of decidability but of tractability The question of decidability is a form of many-to-one, reduction. In fact RE-complete is defined by many-to-one reductions. In a computational complexity sense, tractability is a far stronger notion. Basically an algorithm efficient if its time complexity at most PTIME for any size n input. A pr", "context": "", "use_case": "Spec-driven code generation", "switched_from": "", "story": "Kotlin creator's new language: a formal way to talk to LLMs instead of English"}, {"id": 757728384, "item_id": 47358024, "url": "https://news.ycombinator.com/item?id=47358024", "by": "modernerd", "date": "2026-03-12", "version": null, "stance": "recommend", "quote": "formalising a process many are using anyway that currently feels pretty sloppy perhaps isn't so terrible", "excerpt": "So it has \"two-way conversion\": `codespeak build` \u2014 takes the spec and turns it into code via LLM, like a non-deterministic compiler. `codespeak takeover` \u2014 reads a file and creates a spec from it. You can progressively opt in (\"mixed mode\") so it only touches files you allow it to (and makes new ones if needed). Pros: - Formalised version of the \"agentic engineering\" many are already doing, but might actually get pe", "context": "", "use_case": "", "switched_from": "", "story": "Kotlin creator's new language: a formal way to talk to LLMs instead of English"}, {"id": 757718544, "item_id": 47357409, "url": "https://news.ycombinator.com/item?id=47357409", "by": "dworks", "date": "2026-03-12", "version": null, "stance": "warn", "quote": "", "excerpt": "You need to lock the specs and implementation plan and verify the implementation about the previous phase docs. https://github.com/doubleuuser/rlm-workflow", "context": "", "use_case": "", "switched_from": "", "story": "Kotlin creator's new language: a formal way to talk to LLMs instead of English"}, {"id": 757668672, "item_id": 47354292, "url": "https://news.ycombinator.com/item?id=47354292", "by": "koolala", "date": "2026-03-12", "version": null, "stance": "neutral", "quote": "It is a formal \"way\" aka like using json or xml like tons of people are already doing.", "excerpt": "It isn't a formal language, look at the goose example: https://codespeak.dev/blog/greenfield-project-tutorial-20260209 It is a formal \"way\" aka like using json or xml like tons of people are already doing.", "context": "", "use_case": "", "switched_from": "", "story": "Kotlin creator's new language: a formal way to talk to LLMs instead of English"}, {"id": 757663104, "item_id": 47353944, "url": "https://news.ycombinator.com/item?id=47353944", "by": "etothet", "date": "2026-03-12", "version": null, "stance": "warn", "quote": "I'm curious why this requires use of an API at all", "excerpt": "Under \"Prerequisites\"[0] I see: \"Get an Anthropic API key\". I presume this is temporary since the project is still in alpha, but I'm curious why this requires use of an API at all and what's special about it that it can't leverage injecting the prompt into a Claude Code or other LLM coding tool session. [0]: https://codespeak.dev/blog/greenfield-project-tutorial-20260209", "context": "", "use_case": "", "switched_from": "", "story": "Kotlin creator's new language: a formal way to talk to LLMs instead of English"}, {"id": 757638304, "item_id": 47352394, "url": "https://news.ycombinator.com/item?id=47352394", "by": "alexc05", "date": "2026-03-12", "version": null, "stance": "recommend", "quote": "What a fantastic tool.", "excerpt": "this is really exciting and dovetails really closely with the project I'm working on. I'm writing a language spec for an LLM runner that has the ability to chain prompts and hooks into workflows. https://github.com/AlexChesser/ail I'm writing the tool as proof of the spec. Still very much a pre-alpha phase, but I do have a working POC in that I can specify a series of prompts in my YAML language and execute the chain", "context": "", "use_case": "Formal prompt language for LLMs", "switched_from": "", "story": "Kotlin creator's new language: a formal way to talk to LLMs instead of English"}]}