| ▲ | _pdp_ 4 days ago |
| LLMs need prompts. Prompts can get very big very quickly. The so called "skills", which exist in other forms in other platforms outside of Anthropic and OpenAI, are simply a mechanism to extend the prompt dynamically. The tool (scripts) that are part of the skill are no different then simply having the tools already installed in the OS where the agent operates. The idea behind skills is sound because context management matters. However, skills are different from MCP. Skills has nothing to do with tool calling at all! You can implement your own version of skills easily and there is absolutely zero need for any kind of standard or a framework of sorts. They way to do is to register a tool / function to load and extend the base prompt and presto - you have implemented your own version of skills. In ChatBotKit AI Widget we even have our own version of that for both the server and when building client-side applications. With client-side applications the whole thing is implemented with a simple react hook that adds the necessary tools to extend the prompt dynamically. You can easily come up with your own implementation of that with 20-30 lines of code. It is not complicated. Very often people latch on some idea thinking this is the next big thing hoping that it will explode. It is not new and it wont explode! It is just part of a suite of tools that already exist in various forms. The mechanic is so simple at its core that practically makes no sense to call it a standard and there is absolutely zero need to have it for most types of applications. It does make sense for coding assistant though as they work with quite a bit of data so there it matters. But skills are not fundamentally different from *.instruction.md prompt in Copilot or AGENT.md and its variations. |
|
| ▲ | electric_muse 3 days ago | parent | next [-] |
| > But skills are not fundamentally different from *.instruction.md prompt in Copilot or AGENT.md and its variations. One of the best patterns I’ve see is having an /ai-notes folder with files like ‘adding-integration-tests.md’ that contain specialized knowledge suitable for specific tasks. These “skills” can then be inserted/linked into prompts where I think they are relevant. But these skills can’t be static. For best results, I observe what knowledge would make the AI better at the skill the next time. Sometimes I ask the AI to propose new learnings to add to the relevant skill files, and I adopt the sensical ones while managing length carefully. Skills are a great concept for specialized knowledge, but they really aren’t a groundbreaking idea. It’s just context engineering. |
| |
| ▲ | tedivm 3 days ago | parent | next [-] | | Back in my day we referred to this as "documentation". It turns out it's actually useful for developers too, not just agents. | | | |
| ▲ | CuriouslyC 3 days ago | parent | prev | next [-] | | Pro tip, just add links in code comments/readmes with relevant "skills" for the code in question. It works for both humans and agents. | | |
| ▲ | _pdp_ 3 days ago | parent | next [-] | | This is exactly what I do. It works super well. Who would have thought that documenting your code helps both other developers and AI agent? I've been sarcastic. | | |
| ▲ | smoe 3 days ago | parent [-] | | I would argue that many engineering “best practices” have become much more important much earlier in projects. Personally, I can deal with a lot of jank and lack of documentation in a early stage codebase, but LLMs get lost so quickly, or they just multiply the jank faster than anyone ever could have in the past, making it much, much worse for both LLMs and humans. Documentation, variable naming, automated tests, specs, type checks, linting. Anything the agent can bang its proverbial head against in a loop for a while without involving you every step of the way. |
| |
| ▲ | scottlamb 3 days ago | parent | prev [-] | | This might be one of the best things about the current AI boom. The agents give quick, frequent, cheap feedback on how effective the comments, code structure, and documentation are to helping a "new" junior engineer get started. I like to think I'm above average in terms of having design docs alongside my code, having meaningful comments, etc. But playing with agents recently has pointed out several ways I could be doing better. | | |
| ▲ | Leynos a day ago | parent [-] | | If I see an LLM having trouble with a library, I can feed its transcript into another agent and ask for actionable feedback on how to make the library easier to use. Which of course gets fed into a third agent to implement. It works really well for me. Nothing more satisfying than a satisfied customer. | | |
| ▲ | CuriouslyC a day ago | parent [-] | | I've done something similar. I ask agents to use CLIs, then I give them an "exit survey" on their experience along with feedback on improvements. Feels pretty meta. |
|
|
| |
| ▲ | pbronez 3 days ago | parent | prev [-] | | I’ve seen some dev agents do this pretty well. |
|
|
| ▲ | cube2222 3 days ago | parent | prev | next [-] |
| The general idea is not very new, but the current chat apps have added features that are big enablers. That is, skills make the most sense when paired with a Python script or cli that the skill uses. Nowadays most of the AI model providers have code execution environments that the models can use. Previously, you could only use such skills with locally running agent clis. This is imo the big enabler, which may totally mean that “skills will go big”. And yeah, having implemented multiple MCP servers, I think skills are a way better approach for most use-cases. |
| |
| ▲ | DonHopkins 3 days ago | parent | next [-] | | I like the focus on python cli tools, using the standard argparse module, and writing good help and self documentation. You can develop skills incrementally, starting with just one md file describing how to do something, and no code at first. As you run through it for the first several times, testing and debugging it, you accumulate a rich history of prompts, examples, commands, errors, recovery, backing up and branching. But that chat history is ephemeral, so you need to scoop it up and fold it back into the md instructions. While the experience is still fresh in the chat, have it uplift knowledge from the experience into the md instructions, refine the instructions with more details, give concrete examples of input and output, Add more detailed and explicit instructions, handle exceptions and prerequisites, etc. Then after you have a robust reliable set of instructions and examples for solving a problem (with branches and conditionals and loops to handle different conditions, like installing prerequisite tools, or checking and handling different cases), you can have it rewrite the parts that don't require "thought" into python, as a self documenting cli tool that an llm, you, and other scripts can call. It's great to end up with a tangible well documented cli tool that you can use yourself interactively, and build on top of with other scripts. Often the whole procedure can be rewritten in python, in which case the md instructions only need to tell how to use the python cli tool you've generated, which cli.py --help will fully document. But if it requires a mix of llm decision making or processing plus easily automated deterministic procedures, then the art is in breaking it up into one or more cli tools and file formats, and having the llm orchestrate them. Finally you can take it all the way into one tool, turn it outside in, and have the python cli tool call out to an llm, instead of being called by an llm, so it can run independently outside of cursor or whatever. It's a lot like a "just in time" compiler from md instructions to python code. Anyone can write up (and refine) this "Self Optimizing Skills" approach in another md file of meta instructions for incrementally bootstrapping md instructions into python clis. | |
| ▲ | jmalicki 3 days ago | parent | prev [-] | | MCP servers are really just skills paired with python scripts, it's not really that different, MCP just lets you package them together for distribution. | | |
| ▲ | cube2222 3 days ago | parent [-] | | But then those work only locally - not in the web ui’s, unless you make it a remote MCP, and then it’s back to being something somewhat different. Skills also have a nicer way of working with the context, by default (and in the main web uis), with their overview-driven lazy loading. |
|
|
|
| ▲ | lxgr 4 days ago | parent | prev | next [-] |
| Many useful inventions seem blindingly obvious in hindsight. Yes, in the end skills are just another way to manage prompts and avoid cluttering the context of a model, but they happen to be one that works really well. |
| |
| ▲ | _pdp_ 4 days ago | parent [-] | | It is not an invention if it is common sense and there is plenty of previous art. How would you otherwise dynamically extend the prompt? You will have some kind of function that based on the selected preferences add more prompt to the base prompt. That is basically what this is except that Anthropic added it as a built in tool. | | |
| ▲ | skydhash 4 days ago | parent [-] | | Open the python REPL Type `import math` You now have more skills (symbols) | | |
| ▲ | _pdp_ 4 days ago | parent [-] | | ??? | | |
| ▲ | wordpad 3 days ago | parent | next [-] | | He is making a point something extremely powerful can be simple and obvious. Importing libraries is an obvious way to manage code complexity and dependencies. Skills do that for prompts. | | |
| ▲ | butlike a day ago | parent [-] | | But I need skills ~4.3 cause 19,383 deps depend on it. Should I bump to ^4.0 in the llm-composer.json? |
| |
| ▲ | 3 days ago | parent | prev [-] | | [deleted] |
|
|
|
|
|
| ▲ | bg24 3 days ago | parent | prev | next [-] |
| With a little bit of experience, I realized that it makes sense even for agent to run commands/scripts for deterministic tasks. For example, to find a particular app out of a list of N (can be 100) with a complex filtering crietria, best option is to run a shell command to get specific output. Like this, you can divide a job to be done into blocks of reasoning and deterministic tasks. The later are scripts/commands. The whole package is called skills. |
|
| ▲ | btown 3 days ago | parent | prev | next [-] |
| > [The] way to do is to register a tool / function to load and extend the base prompt and presto - you have implemented your own version of skills. So are they basically just function tool calls whose return value is a constant string? Do we know if that’s how they’re implemented, or is the string inserted into the new input context as something other than a function_call_output? |
| |
| ▲ | _pdp_ 3 days ago | parent [-] | | No. You basically call a function to temporarily or permanently extend the base prompt. But of course you can think of other patterns to do more interesting things depending on your use-case. The prompt selection is a RAG. | | |
|
|
| ▲ | valstu 4 days ago | parent | prev | next [-] |
| > However, skills are different from MCP. Skills has nothing to do with tool calling at all Although skills require that you have certain tools available like basic file system operations so the model can read the skills files. Usually this is implemented as ephemeral "sandbox environment" where LLM have access to file system and can also execute python, run bash commands etc. |
|
| ▲ | PythonicNinja 2 days ago | parent | prev | next [-] |
| added blog post about skills in AI and references to Dotprompt / Claude / Dia browser skills - "Skills Everywhere: Portable Playbooks for Codex, Claude, and Dia" https://pythonic.ninja/blog/2025-12-14-codex-skills/ |
|
| ▲ | kelvinjps10 3 days ago | parent | prev [-] |
| Isn't the simplicity of the concept, that will make it "explode"? |