<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: sshwarts</title><link>https://news.ycombinator.com/user?id=sshwarts</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 16 Jul 2026 01:53:31 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=sshwarts" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by sshwarts in "Show HN: Skillscript – A declarative, sandboxed language for tool orchestration"]]></title><description><![CDATA[
<p>I would say you're right in that with succinctness comes constraint. And the constraint is really the point, not the brevity. It's small because it can't do arbitrary things, which is exactly what lets you read one and approve it (and for hopefully anyone to understand), and what makes it run the same way every time.<p>A comparison would be useful. No published benchmark yet, but that's fair to ask for, and probably the next thing worth putting out.</p>
]]></description><pubDate>Mon, 13 Jul 2026 20:07:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48898068</link><dc:creator>sshwarts</dc:creator><comments>https://news.ycombinator.com/item?id=48898068</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48898068</guid></item><item><title><![CDATA[New comment by sshwarts in "Show HN: Skillscript – A declarative, sandboxed language for tool orchestration"]]></title><description><![CDATA[
<p>It makes sense. I think my response skewed things a bit. The worker can not run wild for exactly the reasons you state. Constraints of the language and the workflow are easy for a human to understand (especially a non-programmer human).<p>I expect, in general, agents to be writing automation for non-programmers to approve which is another case for why not bash or python.</p>
]]></description><pubDate>Mon, 13 Jul 2026 17:12:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=48895744</link><dc:creator>sshwarts</dc:creator><comments>https://news.ycombinator.com/item?id=48895744</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48895744</guid></item><item><title><![CDATA[New comment by sshwarts in "Show HN: Skillscript – A declarative, sandboxed language for tool orchestration"]]></title><description><![CDATA[
<p>yea, I let it get out of control. A new leaner readme is on its way thanks in big part to christoff12.</p>
]]></description><pubDate>Mon, 13 Jul 2026 16:02:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48894718</link><dc:creator>sshwarts</dc:creator><comments>https://news.ycombinator.com/item?id=48894718</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48894718</guid></item><item><title><![CDATA[New comment by sshwarts in "Show HN: Skillscript – A declarative, sandboxed language for tool orchestration"]]></title><description><![CDATA[
<p>Oh wow. Talking about going above and beyond! Thanks for this. I'll use it as a template for sure. You might have guessed, first time building in public per se. Everything else I do is pretty much for clients and C/C++ work.</p>
]]></description><pubDate>Mon, 13 Jul 2026 13:51:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=48892673</link><dc:creator>sshwarts</dc:creator><comments>https://news.ycombinator.com/item?id=48892673</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48892673</guid></item><item><title><![CDATA[New comment by sshwarts in "Show HN: Skillscript – A declarative, sandboxed language for tool orchestration"]]></title><description><![CDATA[
<p>What's the difference? if you're the one writing the Python and approving each script, probably little. The difference shows up when the agent writes it unattended, over and over. Skillscript can only reach the binaries and tools I allowlisted, where I allowlisted them. An agent can't escalate by writing something clever that get by me.<p>I think you're right on. I let the readme get out of hand. It became a README, changelog mash-up. Going to rewrite it, and the 80% metric is a good one. Is there an example of what you consider the perfect readme?</p>
]]></description><pubDate>Mon, 13 Jul 2026 01:50:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=48886906</link><dc:creator>sshwarts</dc:creator><comments>https://news.ycombinator.com/item?id=48886906</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48886906</guid></item><item><title><![CDATA[New comment by sshwarts in "Show HN: Skillscript – A declarative, sandboxed language for tool orchestration"]]></title><description><![CDATA[
<p>Honestly, not far from where I started. The origin of this was "what would a Makefile look like if it built markdown skills?" You'll notice the syntax is very much makefile like.<p>"new language is the wrong abstraction": I'd resist using "language" as it carries way too much weight here. Closer to your DAG than to a general purpose language.<p>I guess the way I look at it, if people are reading less and less code, what an agent hands me needs to be small and skimmable. The web tool helps by highlighting ops, and I even built a code to mermaid function (which honestly is there but unused right now) because the skillscripts are generally straightforward.<p>Skim the examples, I hope you'll see its not that different.</p>
]]></description><pubDate>Mon, 13 Jul 2026 01:38:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48886825</link><dc:creator>sshwarts</dc:creator><comments>https://news.ycombinator.com/item?id=48886825</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48886825</guid></item><item><title><![CDATA[New comment by sshwarts in "Show HN: Skillscript – A declarative, sandboxed language for tool orchestration"]]></title><description><![CDATA[
<p>That's a fair comment. I sorta feel you're describing my thesis, "shrink the stochastic, grow the deterministic" is the point. Where we differ, maybe, is what the deterministic part is made of.<p>The problem I'm trying to solve for me is a step removed. The agent is the one writing the script, and I want it to run unattended against my systems every morning. I can't let it write and run bash. Even though my agent lives in a container (NanoClaw), I still need it to reach out to other systems. Github, my other servers, MCPs, etc.<p>Skillscript is how I let it reach out without holding the keys. It can invoke a skillscript that hits GitHub, but it never runs the raw command or holds the token itself. The runtime holds the credential and only lets it through the skillscript I approved.<p>It's fair to say a skillscript basically is your two bash scripts and an LLM call, but fenced in.</p>
]]></description><pubDate>Sun, 12 Jul 2026 20:26:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=48884439</link><dc:creator>sshwarts</dc:creator><comments>https://news.ycombinator.com/item?id=48884439</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48884439</guid></item><item><title><![CDATA[New comment by sshwarts in "Show HN: Skillscript – A declarative, sandboxed language for tool orchestration"]]></title><description><![CDATA[
<p>I really appreciate the comments and the encouragement.<p>"How <is> this better than just using any other script language?"<p>I wanted to make the language something built for a machine to write and a human to approve with a narrow scope and my control of what extends that. What shell commands, if any. What MCP and what tools in that MCP, and so on. If an agent generates a Python script to run unattended every morning, I feel I can't control it.<p>"Inventing a new language complicates large models ability to generate such scripts..."<p>I tried to keep it as small as possible and borrow a lot from what I knew models had seen in makefiles, YAML-ish, etc.<p>That was actually the question I began with. What would a make file look like if I were using it to make a classic markdown skill? Asking that question, sort of spawned the rest of it.<p>I tested the language against cold agents in both frontier model and local model camps to see where they had difficulty nad made changes as required. The lint approach as well as help topics from the MCP helped a lot.<p>"AI Showing..."<p>Yea there is a certain irony there. I freely admit product was written with Claude Code. I wrote the Product Requirements & Engineering Requirements and reviewed the code, so I can say I own it.<p>"Consider the recursive nature of the problem you’re solving..."<p>That framing is better than mine. When a frontier model writes a skillscript, there's not much chance of something slipping by. Over time, I've become cautiously open to the model adapting the skillscript to solve problems as they occur. Example, a skillscript runs every morning and checks github for PRs and issues. The agent when woken after the run 'noticed' an issue, fixed the script and it was ready for me to approve in the morning. Yes, that could have been done in Python, but I'd not be as confident about it.<p>I also really appreciate the link.</p>
]]></description><pubDate>Sun, 12 Jul 2026 20:11:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=48884262</link><dc:creator>sshwarts</dc:creator><comments>https://news.ycombinator.com/item?id=48884262</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48884262</guid></item><item><title><![CDATA[New comment by sshwarts in "Show HN: Skillscript – A declarative, sandboxed language for tool orchestration"]]></title><description><![CDATA[
<p>Is what you are seeing is the topics sidebar overlapping the text?</p>
]]></description><pubDate>Sun, 12 Jul 2026 19:32:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48883881</link><dc:creator>sshwarts</dc:creator><comments>https://news.ycombinator.com/item?id=48883881</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48883881</guid></item><item><title><![CDATA[New comment by sshwarts in "Show HN: Skillscript – A declarative, sandboxed language for tool orchestration"]]></title><description><![CDATA[
<p>Thanks. I'm guessing since the docs are mintlify hosted, the CDN assets might be being blocked. I'll look and see if adding a domain sidesteps it.</p>
]]></description><pubDate>Sun, 12 Jul 2026 18:16:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=48883181</link><dc:creator>sshwarts</dc:creator><comments>https://news.ycombinator.com/item?id=48883181</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48883181</guid></item><item><title><![CDATA[Show HN: Skillscript – A declarative, sandboxed language for tool orchestration]]></title><description><![CDATA[
<p>Hi HN — I'm Scott. Skillscript is a small language I built to write what I want my local agent to actually do, in a form I can read and version, instead of hoping the model gets it right each time.<p>The itch started with something small. I wanted my NanoClaw agent to run my morning brief the same way every day. Check overnight tickets, summarize the deploy pipeline, flag anything urgent. Every session, it would re-figure out how to do this from scratch, drift a little, and cost tokens for what's basically a fixed procedure. I could put it in a system prompt or an MD skill file, but those are still instructions the model reads and reasons about every time. And I wanted it to run autonomously and then hand it to the model to reason over the data.<p>The second thing that pushed me: I wanted to use small local models for the cheap stuff. They're capable, but if you just hand them the wheel, they wander. What I wanted was a way for the frontier model (or me) to write a specific procedure and hand it to the local model to execute, not interpret. The skillscript is the program; the model is the runtime.<p>Skillscript is that. A skillscript is a text file with named steps, variables, conditions, and calls out to tools (MCP connectors, a local model, and shell commands from an operator allowlist). It's deliberately minimal — no eval, no arbitrary imports, no subprocess, no unbounded loops. Bounded language, limited potential for damage. Everything a skillscript can do is in the file. You read it and know.<p>Where it is: pre-1.0 (0.30), MCP-native, self-hosted. Rough edges I know about: first-run setup takes more steps than it should, some of the grammar is still moving, and the local model integration currently assumes Ollama. It works well enough that I use it every day, but I wouldn't necessarily call it production-ready.<p>- Repo: [<a href="https://github.com/sshwarts/skillscript" rel="nofollow">https://github.com/sshwarts/skillscript</a>](<a href="https://github.com/sshwarts/skillscript" rel="nofollow">https://github.com/sshwarts/skillscript</a>)<p>- Site: [<a href="https://skillscript.ai" rel="nofollow">https://skillscript.ai</a>](<a href="https://skillscript.ai" rel="nofollow">https://skillscript.ai</a>)<p>- Docs: [<a href="https://skillscript.mintlify.app/docs" rel="nofollow">https://skillscript.mintlify.app/docs</a>](<a href="https://skillscript.mintlify.app/docs" rel="nofollow">https://skillscript.mintlify.app/docs</a>)<p>- npm: `skillscript-runtime`<p>I'd welcome critique on two things especially: the language design (is it too small? too big? wrong shape?) and the trust model around agent-authored skills. What would you want to see before you trusted this on your own machine?</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48881112">https://news.ycombinator.com/item?id=48881112</a></p>
<p>Points: 18</p>
<p># Comments: 32</p>
]]></description><pubDate>Sun, 12 Jul 2026 13:34:00 +0000</pubDate><link>https://github.com/sshwarts/skillscript</link><dc:creator>sshwarts</dc:creator><comments>https://news.ycombinator.com/item?id=48881112</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48881112</guid></item><item><title><![CDATA[New comment by sshwarts in "Who manages the agents?"]]></title><description><![CDATA[
<p>I think part of the point here is that agents need to be managed. People need to learn how to manage them and be given the tools to do so. Those tools and knowledge should not come from nor be gate kept by the 'clergy' to use the writer's term.</p>
]]></description><pubDate>Sat, 11 Jul 2026 20:12:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=48875423</link><dc:creator>sshwarts</dc:creator><comments>https://news.ycombinator.com/item?id=48875423</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48875423</guid></item></channel></rss>