On Agent Skill Priorities
Once you start actively configuring skills, you run into a pretty annoying problem. In a specific project, you have project skills; at the system level, you have personal skills. And if they are roughly about the same thing, the agent activates both (setting aside the fact that activation is still unstable).
Not only does this clutter the context, it can also contain contradictory instructions. For example, a commit skill in a project describes how things are done there, while your personal one says to inspect previous commits and adapt, but defaults to conventional commits.
And it's not very clear how to deal with this. Humanity still hasn't solved the naming problem.
In general, it would make sense to name skills differently everywhere, for example /myproject:commit in the project and /username:commit in the system, so they don't clash with each other or with random experimental skills from the internet.
Claude Code docs say that when skill names are the same, only one gets activated. Which sounds like what we need.
But first, their priority logic is absolutely absurd. With a naming conflict, Personal overrides Project, and personal skills are called first. When you join a new project, do you start coding by your personal preferences first, or do you prioritize project standards?
And second, sometimes we don't control the skill names in a project (it's someone else's project), or we have multiple projects where the same type of skill can have different names. For example, one uses /commit, another uses /git:commit. And that's it, nothing you can do.
I think that for name collisions, project skills should have priority. And giving skills namespaces is obviously good practice. It makes permissions easier to configure, skill trees easier to organize, and avoids name conflicts by default. So I'd like to be able to disable specific personal skills in a specific project.
For now, though, we have to use hacks. All my personal skills that "duplicate" project ones are marked disable-model-invocation=true, so I can call them manually but the agent cannot. That makes secondary projects less convenient, but at least it doesn't make primary projects worse.