<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: wtomas</title><link>https://news.ycombinator.com/user?id=wtomas</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 10 Aug 2026 02:22:52 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=wtomas" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[Show HN: Sufleur - npm-style prompt registry with typed code-generation]]></title><description><![CDATA[
<p>Hi HN, I've built Sufleur, a prompt registry and companion CLI tool. The motivation was essentially the frustration that prompts are becoming more and more crucial parts of applications, but in the codebases I've seen, they just sit around as random strings, in-house templates with odd rules, and essentially no version control beyond git. I've felt pain in the past when prompts suddenly changed their schemas (either input for rendering or output expected by the LLM), having to read through the whole thing to figure out what I need to supply for the rendering to work, and spent hours trying to debug why the carefully written and evaluated prompt which worked wonders in a python notebook suddenly stopped working in a typescript codebase in prod...<p>These are the main ideas:<p>- Mustache templates for the prompts, since Mustache is a mature, logic-less templating language which already has packages in a lot of languages I would ever want to target.<p>- Input schemas to render a prompt properly are inferred fully from the template. No separate interface to keep in sync, the parser in Sufleur figures out the schema, with some extensions I've added to the templating to aid this.<p>- Output JSON schemas also recorded on the prompts.<p>- Semver versioning and immutable versions after publishing.<p>- The CLI that allows installing/updating/removing prompts as dependencies, generating the code, and exposes all the authoring methods, so your AI agent can drive the prompt development cycle as well.<p>- No runtime dependency(!). The code is generated with all of the content inlined. The generated code allows you to render each prompt, provides methods to parse and validate the outputs, and access metadata fields (provider, model, model-parameters).<p>- Public and workspace private prompts. Public prompts can be installed without an account.<p>- Workspace rules can optionally enforce semver semantics (breaking change can't be patch-bumped) and mandatory eval thresholds.<p>The CLI is open source (written in go), with npm and pypi wrapper packages distributed. 
The platform itself has other features (evals, workspace management) all that jazz. Free to use for individuals or $2/seat/month for teams beyond 3 people.<p>Some honest limitations:<p>- It's a solo project.<p>- Only python and typescript codegen so far, but very open to extending that in the future when demand arises.<p>- Currently working on a representation of LLM tool-calls, they are not on the platform yet but soon will be.<p>- Pretty much no users so far (admittedly, haven't done much marketing either), so really looking forward to see some folks pick it up and get some honest criticism.<p>Docs: <a href="https://sufleur.com/docs" rel="nofollow">https://sufleur.com/docs</a><p>Curious to see what others use to version and share prompts today, most of the solutions I have seen focused mostly on tracing, without providing much structure around the prompts themselves.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49232345">https://news.ycombinator.com/item?id=49232345</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 09 Aug 2026 15:28:53 +0000</pubDate><link>https://github.com/sufleur/cli</link><dc:creator>wtomas</dc:creator><comments>https://news.ycombinator.com/item?id=49232345</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49232345</guid></item><item><title><![CDATA[New comment by wtomas in "Ask HN: What apps are you building?"]]></title><description><![CDATA[
<p>I'm building Sufleur: a package manager for LLM prompts. You publish Mustache templates as immutable semver versions, and a CLI generates typed TypeScript/Python from them — typed on both the input and output side. The part that's been the most fun to build is inferring input types from the template itself:<p><pre><code>  Hi {{user.name}}{{@type string}}
</code></pre>
becomes<p><pre><code>  { user: { name: string } }
</code></pre>
as an input type in the generated code, so prompt changes fail your build instead of your production.<p>I started it ~a year ago and it died like side projects do. Months later, building something completely different, I caught myself wishing for exactly the tool I'd abandoned, and since then it's completely vacuumed up all my free time.<p>Repo: <a href="https://github.com/sufleur/cli" rel="nofollow">https://github.com/sufleur/cli</a></p>
]]></description><pubDate>Tue, 28 Jul 2026 07:29:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=49080546</link><dc:creator>wtomas</dc:creator><comments>https://news.ycombinator.com/item?id=49080546</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49080546</guid></item></channel></rss>