The description is the interface
A Skill that's never invoked provides zero value, no matter how good its instructions are, and the single biggest determinant of whether it gets invoked is its description. Before an agent can follow a Skill's steps, something has to decide that this Skill is relevant to the current task, and that decision is typically made by matching the task at hand against a short description, not by reading the entire body of instructions. If that description is vague, generic, or written from the author's point of view rather than the trigger's point of view, the matching step fails silently: the Skill sits there unused, and nobody gets an error message telling them why.
The failure mode to avoid is a description that says what the Skill does but not when to reach for it. "Helps with PDF forms" is weaker than "use when the user asks to fill out, complete, or populate a PDF form with provided data," because the second version gives the matching step concrete trigger language to compare the task against, and it also draws a boundary, it implicitly excludes reading or summarizing a PDF, which is a different job. A good description names the situations that should trigger the Skill, in language close to how a real request would be phrased, and it's just as useful to state what the Skill is not for, since that prevents it from firing on adjacent tasks it wasn't built to handle.
