I've been thinking about how to define skills in Didactyl, my Nostr-based agentic system. Think OpenClaw, but better.

I've written a simple demo page for how I'm thinking skills should work if you're interested: Skills Demo (https://laantungir.net/client-ndk/skills-demo.html)

https://laantungir.github.io/img_repo/c4a94875085e1c978274add9674035e2a088bb8f2655aabe631b17c3ea02cc19.png

If you're the kind of person who doesn't like reading instructions, go ahead and jump right in; otherwise, keep reading.

Skills are programs, mostly written in plain English for AI agents. In some sense, humans have been making and using skills forever. It's what we do. Computers have as well, but now they can do it in English, which is much more powerful.

AIs are slightly different than us. We can overwrite, improve, and update the skills in our neurons. AIs (for the most part) can't do that.

When an AI is born from the factory, it comes out hard-coded. From that point on, it has no long- or short-term memory because it can't learn.

What they do have, though, is a way to read. We call it context. You can type or feed documents into an AI's "context window," and then it spits out an answer.

It turns out that if you feed the same context into an AI over and over, you will get the same thing out, over and over.

The reason why you typically don't get the same thing out is because randomness is usually fed into the AI along with your prompt. Most people don't know that, but now you do. And if you don't feed in all your past conversations to an AI, over and over, it won't remember what you were talking about, because it has no memory other than what you send it each time.

Everything that comes out of an AI depends on what you feed in as a prompt if you include randomness.

I'm calling everything you feed into an AI a SKILL.

Let me explain the demo page and some very basic skills.

What I created is a simple text editor that an AI can work on using its different skills. Those skills are saved on Nostr as kind 31123 for public skills, and as kind 31124 for private skills. When an agent adopts a skill, it adds it to its kind 10123 list for the skills it has adopted.

On the left of the page, you see the text editor with some sample text. That is for our AI to use its skills on.

On the right are publicly listed skills. You should see my demo skills in there.

I made 5 skills public:
condense-5
convert-to-poem
sexy
spellcheck
translate-ja

Select the skill, then click on "Run Selected Skill".

The same AI agent will run these skills, but the outcomes will be very different depending on the skill.

https://laantungir.github.io/img_repo/2cbfc8bf7cbfb832f1181f5b904471f1278fbc3e6b64b63339612b9f51898d16.png

You can also create and edit your own skills if you are logged in. You can log in as yourself or use a random new key to test this out. I would recommend that.

So what is the point of all this? What are the benefits of Skills?

Skills are a way for agents to share what they learn in a permissionless way. No "skill store".
A Skill is something that you and your agent can work on and perfect. Once your agent learns that skill, it is automatically saved on Nostr, and you can lock it down from changes.
By referencing a skill when you are talking to your AI agent, your conversation becomes much clearer and simpler. You don't have to explain to your agent for the 50th time how you like your text formatted. It's referenced in a skill.
If you are a coder, skills are going to be the new playground. Context windows are currently up to around 1,000,000 tokens, which means that you can create extremely complicated and elaborate skills.

For more technical information on skills and how I'm thinking about them, you can check out this document:
SKILLS.md (https://git.laantungir.net/laantungir/didactyl/src/branch/master/docs/SKILLS.md)

You can follow my agent for the project here: npub12237stmmxapc2ta7spx0e06dkdzgz9vg0z2jglqqru44peus4juqg598qn

And thanks to npub130mznv74rxs032peqym6g3wqavh472623mt3z5w73xq9r6qqdufs7ql29s for their fantastic service.