I've installed a lot of skills, and most of the ones I actually reach for are more like jobs.
/grill-me isn't knowledge the agent draws on while working. It's a workflow with an intended outcome. /improve-codebase-architecture is the same shape.
I started thinking of those as commands, and calling them skills started to feel like a misnomer.
Claude Code used to ship both. A markdown file in .claude/commands/ was a slash command that ran when you typed it. A SKILL.md was something the model could reach for on its own. Then v2.1.3 landed on January 9th, 2026, with one line in the changelog:
Merged slash commands and skills, simplifying the mental model with no change in behavior
My first reaction was that this was a mistake. I no longer think so. The old layout made you pick invocation mode by picking a directory, which welded together two independent things: what the thing contains, and who fires it. Post-merge there's one artifact, invocation is a property you set, and the commands directory is kept around as legacy. That's the better design.
Then look at the year that followed:
- v2.1.0: skills can opt out of the slash menu with
user-invocable: false - v2.1.129: a
skillOverridessetting arrives, including a mode that hides a skill from the model entirely - v2.1.215: Claude stops running the bundled
/verifyand/code-reviewskills on its own - v2.1.218:
/deep-researchis changed to start only when invoked manually - v2.1.222: when Claude tries to invoke a skill marked
disable-model-invocation, it's told to ask you to run it rather than reconstruct the workflow itself
Not one of those made automatic invocation easier. All five restrict it, and two are Anthropic walking back skills it had already shipped as auto-invocable. Two hundred releases of correction, all of it pointing the same way.
Which is a problem with the default, not the merge.
Write a SKILL.md and the model may invoke it unless you say otherwise. Ambient is free; deliberate costs you a frontmatter field you have to know exists. Forget it, and your carefully staged interrogation turns up in the middle of a bug fix.
So: more commands. Not the directory back, since invocation belongs on the artifact rather than the file path. But more of what you write should be a job you fire on purpose, and the ones that fire themselves should have to make the case, especially anything with side effects. A skill that deploys or deletes a branch shouldn't get to decide on its own that now is the moment.
Model-invoked still earns its keep for a narrower set: reference knowledge, format conventions, things that should hold whether or not I thought to ask.
Everything else is one line.
disable-model-invocation: true
"Skill" is a container word now, the way "file" is. Most of the time I'm not extending what the agent knows, I'm giving myself a button.