Ask HN: How do you manage skills files?

How do you find skills, keep them organized, and make sure they actually work? Do you keep improving them over time?

I believe skills will eventually be eating by model capabilities, but until then I'm just looking for a better way to manage things.

70 points | by imadtaieber 11 hours ago

31 comments

  • alexhans 1 hour ago
    - I don't find skills, I create them

    - Keep them organised in software repos that you install with symlinks for all coding harnesses that you have. Progressive disclosure based on the frontmatter does the rest.

    - I make sure they work with AI evals. Think of them like integration tests to prove behaviour. They're useful to optimize your flows. I try to make my skills be mostly a translation between natural language and good small fast tools that they call.

    - I change them as a new problem arises. Not just because.

    Skills can't be eaten by model capabilities if skills represent a workflow that is custom to my team or my person.

    I wrote about a good mental model in the past:

    https://alexhans.github.io/posts/series/evals/building-agent...

    • stingraycharles 28 minutes ago
      People always say this about the evals, but I find it hard to have a practical implementation of such a thing where you won’t end up spending 100x the amount of time on the evals than building the skill itself.

      Like, ok, I have a debugging skill, now how do I make evals except for the most trivial things?

      • TobTobXX 17 minutes ago
        A skill should only document behaviour the LLM didn't/couldn't exhibit on its own.

        So you take your failed case (eg. working with gdb or whatever), write a skill and then test for that failed case.

        • hakunin 14 minutes ago
          There are also skills that help LLM do the thing it can do without the skill, but faster (by cutting out unnecessary discovery). I guess for such skills the fail case is "being slow"?

          I imagine many fail cases can burn a lot of tokens/usage/time because failing LLMs can be very persistent. Maybe some upper bound (turn count, timeout) would help too.

  • WatchDog 2 hours ago
    I don't use any skills, what kinds of skills are people finding most useful?

    For general tasks, the model seems perfectly capable of figuring out things itself, for project or environment specific tasks, I just put that information in the readme or agents.md file.

    • ygjb 28 minutes ago
      So the term used internally is to make things "Determinishtic". I use skills extensively, combined with SOPs, scripts and MCP servers.

      An example skill I have is SessionMiner, which is installed via post session hooks in Claude and Kiro, and analyzes the session, what was accomplished, and whether or not it should be turned into a skill, then when it summarizes it, the decisions it came to and either fires off a message to me for followup if it decides a new skill or tool should be built, or it catalogues the approach so that future analysis can identify trends in how I use the tools.

      Over time it has built me a fairly decent stable of repeatable skills and tools, and highlighted process deficiencies and nominated process changes that I have pursued.

      Another skill is a communications analysis skill; I started using it summer last year I think, and it scans my communications across a broad cross-section of my activity online. It tracks the commitments I make, ensures that I follow up with people that I might miss, ranks and scores my communication against my own personal targets that I set to make sure that I am communicating effectively. As a person who has had a decently successful career despite autism spectrum and unmedicated ADHD (I was medicated, but unfortunately each medication I tried had adverse side effects), it has made me much more effective in tracking work and following through, especially on the "boring" stuff that is actually critical to being a dependable team member, and effective partner for the teams I support.

      Just a couple of examples.

    • pletnes 1 hour ago
      I make skills for «this is how I like to do things in this company / project». Query test database, git branch names, commit message style, which cloud things can be inspected like logs etc. I don’t see the point in trying to teach the models things that is in the documentation of git, python, what have you. They already know.
      • stanmancan 58 minutes ago
        Isn’t that what the agents.md in your project is for?
        • paool 41 minutes ago
          I try to keep agents/Claude.md as tiny as possible. With high level "truths" that don't change. Stack used, invariants, file structure, and some scripts.

          Skills are more for things you do often. I run mutation tests, type check,linting,etc. I _could_ just prompt and copy/paste the same prompt each time I need to, or I can just run /tests.

          I also have skills for specialized tasks I need every once in a while, like a ux skill, a text skill optimized for xyz, etc.

        • jpalomaki 26 minutes ago
          Depends on how much information and details you have. The agents.md always goes into context. Detailed testing or process information might be excessive, when agent is working on UI. Skills are pulled when needed.
    • Zambyte 33 minutes ago
      Your agents.md is a good place for high level facts, but if you have something that requires a lot of info to explain (ie: if there is a complex build process, testing patterns, things like that), loading up your agents.md for every request may be a bad idea. Offloading that information to a skill ensures it's only included in the context if you're actually using it.
      • sampullman 30 minutes ago
        How about linking to a separate docs file from the Readme, same as how you'd split separate topics into different files for humans? The context cost is low and as far as I can tell it's pretty much how Claude's "memory" feature works.
    • dxjxjdjsssb 1 hour ago
      I use skills for offloading work onto subagents. By configuring the skill to use a specific model it gets enforced at the harness instead of depending on the good will of the orchestrating model to actually delegate. This also saves context.

      Today Fable had to fetch a zip file from a web page with a eula prompt, then get at a file in a disk image in the zip.

      This is something that will need to happen a lot as part of this project.

      I asked Fable for a skill/script combo suitable for Haiku to accomplish the task, and now that task happens at minimal cost during an analysis run.

      • jeffreygoesto 10 minutes ago
        Did you consider writing a small Python script for that?
    • gavmor 1 hour ago
      Well, for non-general tasks, of course. For example particular tooling that's required for the environment.

      I will often make a skill out of the docs for any of the frameworks or libraries that we're using but with which I'm unfamiliar. When I'm creating that skill, I focus on idiomatic implementation and usage. It's not enough for the code to work—I want it to work "with the grain" and "through the front door", as it were.

      By default, these models are just all too willing to reinvent the wheel and monkeypatch as they go.

    • skybrian 2 hours ago
      I have a couple of skills with project-specific conventions for how to write a plan and how to write HTML-generating code. But they could probably just as well be .md files in a docs directory, linked to from the AGENTS.md file.
    • nvch 2 hours ago
      For starters, if you repeat a specific prompt multiple times per day, you may save it as a skill.
      • LTL_FTC 2 hours ago
        Claude will do this for you after a few times. But yes, I have a skill called plan-to-epic which creates a Jira epic and ticket per milestone. It helps my agents persist context and, because I’m terrible at competing with my coworkers for “visibility,” means I can point to all my work if asked.
    • kkarpkkarp 1 hour ago
      > I don't use any skills, what kinds of skills are people finding most useful?

      I create/edit/delete at least one skill per day. I can't imagine working effectively without those files.

      The most common case: if I see something took AI too much time and tokens and it is done, I ask my Cursor immedietly after to save it as skill. So next time I do the same I just refer to skill. I don't need to remember the name of the skill, I just mention something like "do {explaining briefly the task}, you have done something similar in the past and it is saved as skill"

    • killingtime74 2 hours ago
      It's not that, is for: Ensuring certain vetted implementation method is used. E.g. you always want tests or docs, or always done.

      Caching certain scripts so it's not reinvented each time with risk of error/need reviewing.

    • petesergeant 20 minutes ago
      Gateway drug is “/grilling” by Matt Pocock.
    • squirrellous 1 hour ago
      One way I use skills, which I don’t see mentioned very often, is as “shortcuts”. Imagine some frequently issued prompt like “fetch origin and rebase this branch onto origin/master and resolve conflicts”. I make that into a little skills file called “rebase” with a one sentence description, and next time just type something like “/reb-tab-enter”.
  • matsemann 1 minute ago
    Skills is just a tech bro word for a simple markdown file with instructions.

    No need to over complicate it. Write down things you feel like re-using. Like how to specifically implement something in your system ("when adding a new API endpoint we need to do x y and z") so you don't have to repeat it. And I mostly add it in cases where it didn't infer it itself. So very reactive, not proactive.

    Most public skills are useless and over complicated.

  • chandureddyvari 1 hour ago
    I commit them to git(so complete team leverages them)., each repo has kind of different skills and the skills are the ones which I update at least twice a week. I’ve skills on how to add instrumentation , debug, code, code review, tech design review etc. I found most of the skills I find on skills.sh are not very useful for me., but I browse occasionally to get some inspiration. One more paradigm I’m seeing good results on adding new skills is ‘how to do X’, for instance ‘how to add logs’., “how to review code” etc., if i’m not able to frame it that way I don’t think it’s a good use case for me to add that skill to the llm arsenal.

    Another thing i discovered is less is more (in case of skills as well)., don’t add lots of skills., keep them very handful - I’ve got 9 skills so far (many people have 100s installed from marketplaces and plugins)

  • yatsyk 23 minutes ago
    Skills live in two source-of-truth git repos (private and public). Agents edit skills by my request, and syncs to all coding agents ~/.claude/skills/, ~/.codex/skills, ~/.pi/agent/skills, ~/.config/opencode/skills etc. with agent written sync-agent-skill script. script ensures that no local changes was made in-place.
    • r0b05 20 minutes ago
      Why do you use so many different agents if I may ask?
  • ssivark 2 hours ago
    To the extent that skills are contextual guidance (for this author, this project, etc) and not just (raw) capabilities they are unlikely to be eaten by models.

    I maintain all my skill files in a central location (like dotfile management) and have guix home sync it to the skill folders of various harnesses that I'm playing with (codex, pi, antigravity, Claude Code, Deepseek harness, etc). They're set up to be bidirectional links rather than read-only like the default configuration, so I can keep editing them / adding to the corpus from any harness.

    This works well for skills since all harnesses expect the same format, but is more annoying for other features.

    EDIT: This is actually an example of a potentially useful skill. You might choose to manage your skills slightly differently. All you need to do is write a skill-management skill for your agents to be able to wire things up correctly / access them for edits.

    Some other nifty skills/plugins in my experience: render latex equations, cetz diagrams inline, jujutsu, guix, code reviewer, writing feedback.

  • theletterf 1 hour ago
    We keep the skills in a repo, where an agentic workflow runs biweekly to check if their content drifted compared to the docs and opens PRs if they did. The repo is also a Claude plugin. The biggest problem is keeping skills up to date across users, so I developed a small Go binary that takes care of that across harnesses.
    • mstr32 55 minutes ago
      That's very cool. How does the binary keep skills updated across users?
  • mstr32 1 hour ago
    The main problem I encountered around this is that skills need to be edited across projects and across team members in a controlled way. Git is of course required for this but is not enough so I built a tool to do just that:

    https://github.com/genged/capshelf

    Using capshelf I manage my skills across projects. When I start a new project I can just:

    $ capshelf add security-review

    From the skill repo.

    And if I create a new skill I can promote it to the repo so everyone can install it:

    $ capshelf promote security-review

    It pins the skill content hash so there are no unexpected edits that can break your flow. It also supports MCP configs and agent configs.

  • starefossen 1 hour ago
    For the my branch of the Norwegian Government we have a public skill registry and a tool to sync them locally according to what «profile» you select, https://ki-utvikling.nav.no/verktoy

    Source at navikt/copilot

  • winternewt 1 hour ago
    I keep my skills in a Home Manager repo and install them into my .claude / .codex / whathaveyou directory through the home manager config. I'll know if they don't work because they are specific instructions on how to git commit, how to merge code, how to author text (without the typical AI tells), or API usage documentation for specific libraries, etc. If they didn't work the agent would do things incorrectly and I'd notice.

    And sometimes it doesn't follow the instructions well. I have a skill for that too: it tells the agent, given what it knows about attention and LLM:s in general, to evaluate the instructions and the mistake the LLM made, try to diagnose why it didn't follow the instructions as expected, and come up with an improvement of the skill based on that diagnosis.

  • Sherveen 1 hour ago
    I have a repo/project called Loadouts & Summons. It has a primary skill, `capsule`.

    All skills, MCPs, CLIs, etc. live inside of it. I have it symlinked to all my dev machines so that it doesn't have to be an MCP.

    `capsule` is then progressive to dozens of skills/tools thru `capsule` -- ex. `$capsule plannotator [args]`.

    In some harnesses, I make it human-invoke only, and call it directly. In others, I let the model invoke it, and it has a top-level description that hints at what's inside.

    Maximal context/session start control and capability extension.

  • rcarmo 58 minutes ago
    My agents use https://rcarmo.github.io/projects/memento/ to manage shared skills and propose changes. But I also have template projects with skills baked in for some scenarios.
  • vira28 1 hour ago
    Instead of managing skills as files, I have been using a simple utility which helps me create, update/attach skills and finally search it across sessions https://github.com/viggy28/recall/
  • asedali 59 minutes ago
    Why do you think like that? "I believe skills will eventually be eating by model capabilities, but until then I'm just looking for a better way to manage things."
  • joshuanapoli 6 hours ago
    We have some company-managed skills, that help coding agents find the relationships between our repos, and our conventions, architecture, and other high-level decisions. These are supposed to be portable between agents, and so distributing them is currently awkward.

    We have a bootstrap script to deploy company-managed skills to each developer's "personal" skills. Hooks for codex and claude code try to refresh the skills on each startup.

  • vkvkakal 4 hours ago
    I recently completely overhauled repo’s skill setup.

    I tried to control the execution of tasks performed by each project using claude.md within the project, but claude.md is only read at the beginning of each session, so it felt like the instructions weren’t being properly reflected.

    So I revised the strategy to manage frequently used features in skill units. In doing so, instead of organizing skills by project, it was structured to be integrated into the general skills of the individual repo.

    When skills are spread out across multiple projects and the number increases, it becomes impossible to keep track of which skills are available, so they end up not being used.

    I also think that eventually, once Claude(model) advances, it will be able to replace most of the skills, so I believe registering and managing countless skills actually degrades performance.

  • daitangio 1 hour ago
    Openspec has a subcommand (init) to manage them: clever because they provide also an update path.
  • pletnes 1 hour ago
    I have my skills in my dotfiles repo, then symlink them to my home directory and/or projects where I want to use them. Project specific ones go into the project.
  • jameshiew 6 hours ago
    I manage them as part of my dotfiles using chezmoi. A `.agents/skills/` directory + a symlink to there from `.claude/skills/`.

    > Do you keep improving them over time?

    In my global AGENTS.md I have a note to agents to explain any frustrations they had doing a task, and to suggest any skill/tool/AGENTS.md improvements. I am trying to keep AGENTS.md files small but still finding the balance.

  • lazy_afternoons 1 hour ago
    I have a separate repo which has to be pulled locally and the skills and agents are sym linked to projects.
  • patleeman 2 hours ago
    I use an agent plugin spec repo. Codex is already compatible with it and it supports skills + MCP definitions.

    https://agent-plugins.org/

  • osr00 7 hours ago
    > How do you find skills

    I try to keep my collection of community skills short, usually a few established names (mattpocock, mcollina, trailsofbit). And then I check new releases (or when mattpocock published a youtube video for instance :D)

    > keep them organized

    For skills I wrote myself, I have my own private github repo. I use skills like /commands most of the time, so I can tell if they work straight away.

    For community skills, a package manager really helps. vercel-labs/skills and withastro/rosie are good options. I also built one myself: https://github.com/osrim/ski. It has some cool features like an update command and a security scan.

  • serf 10 hours ago
    >I believe skills will eventually be eating by model capabilities

    a model capability is never going to fill in an unknowable blank that a custom skill (or whatever equivalent your paradigm supports) can.

    a model might have the cleverness to whoami and look through the .ssh folder for keys and evidence of past connections when asked to connect to bob, but a skills file can just easily say "We connect to bob using key Z and user X." so that the operation gets done without all this nonsense needless inference as far into the future as the information is valid for.

    a concise information dense skill is going to always dominate on tokens-burnt for any given task that requires insider knowledge. it simply gets rid of the entire investigative phase of work.

    • TomEleff 10 hours ago
      Agree here. My philosophy is the "general-purpose" coding agent will keep getting better and better, making skills less and less useful. And it will probably get better at a pace far greater than the customization folks can build around them via skills.

      This of course is from my own experience writing code, where agents are already good at software engineering conventions. This probably doesn't hold as well for other tasks, say writing marketing copy with a unique voice

      For now, I keep skills pretty minimal - single sentence prompts I send all the time, like "Remove all the slam poetry from the docs in this repo."

      I also tend to share often. All skills go into a repo my team can access. No pressure, use them, riff on them, add your own - sharing and engaging on how we do the work is more important than making everyone do the work the same way to me.

    • vjvjvjvjghv 2 hours ago
      “ determinist harness around the agent ”

      Can you explain what this means?

      • chickensong 1 hour ago
        If you can express something deterministically with code, it's better to do that rather than have an agent do it, because it's faster, cheaper, and deterministic. E.g. you regularly copy file A to file B. You can ask the agent to do it, or you can write a script and have the agent call the script via skill. That's the beginning of a harness.

        Eventually you arrive at building custom software that does a lot in the traditional way, but delegates certain tasks to the model where it makes sense or it's non-trivial/impossible to express via code.

    • imadtaieber 9 hours ago
      What I meant by skills getting eating by models are the "general use" skills, like design critique, code review...ect

      But, for custom use skills, ofc no model will be able to replace them and it's not efficient to try to do that as well. For this type of skills I create and maintain them by myself, my question was about "general use" skills, they are everywhere on the internet, how do you manage them?

      • SyneRyder 8 hours ago
        Do you find any of the general use skills useful? I'm not sure I've ever used any of them, and when I've looked at them it's been some YouTuber trying to make money. That, and their Substack.

        I know everyone's down on MCP, but custom-built client side MCP tools are what I find useful instead. But that's me.

  • RALaBarge 2 hours ago
    Any skills, I just add into the tool itself. I then have the py tools in their PWD, don’t bother with mcp.
  • politician 1 hour ago
    I wrote a small command-line tool that installs skill packs into agent-specific project folders. It works pretty much like `brew` (or any package manager, really). The skills are compiled into the binary so that I don't have to worry about where they're located and can quickly move the skills between machines by copying the tool.

    Making sure they actually work? Trial and error, mostly. I know some folks have tried auto-researcher approaches, but I haven't found that to be the best use of time in my work.

  • moomoo11 10 hours ago
    i have a docs/

    it has all the skills/docs my particular application needs

    i treat it as ADRs as it helps the AI understand the parts of the system it is working on

  • mr-karan 32 minutes ago
    [dead]
  • oliviayii 1 hour ago
    [dead]
  • atxpace 9 hours ago
    [flagged]
  • adastra22 2 hours ago
    Skills are no longer useful.
    • prettyblocks 2 hours ago
      I find them very useful.
      • adastra22 2 hours ago
        I have been finding them decreasing in the effectiveness with each model release. We got rid of skills and built a determinist harness around the agent instead.
  • mercurialsolo 2 hours ago
    One of the engineers I know is building this product called SkillEd for just this. Lemme know if you need an invite