Most skill files start clean. Someone writes a focused SKILL.md for one job, it works, and then a second, related job shows up. The tempting move is to add a section. Six weeks later the description reads "handles documents and reports and invoices" and the agent starts firing the skill on requests nobody intended.
Two symptoms tell you the file now covers two jobs. Anything else is usually a wording problem.
Trigger overlap. The description matches requests that belong to the other job. The Agent Skills specification uses progressive disclosure: at startup the agent loads only each skill's name and description, and reads the full body only when a task appears to match per the optimizing descriptions guide. That makes the description the entire selection signal. It also means a description that describes two jobs will be evaluated against requests for both, and the agent has no cheap way to tell them apart before it commits.
Step interference. Following the steps for one job makes the other job worse. This is subtler and more expensive. A shared skill often carries shared preconditions: "always read the schema first," "always run the validator before writing output." Those preconditions may be essential for job A and actively harmful for job B. When the model loads a 900-line body for a task that needed 60 lines, the irrelevant instructions compete with the relevant ones for attention. Anthropic's guidance on context engineering treats the context window as a finite resource with diminishing returns: as token count rises, recall of any given piece falls and models lose focus per Anthropic's context engineering post.
Both symptoms are measurable. Neither is a matter of taste, which is why the decision rule below is worth writing down.



