What does an assistant actually load?
When you ask an AI assistant to do something, it doesn't only see your message. It also sees instructions it was given beforehand — including files you installed called skills.
A skill is a plain text file. It says things like "when the user mentions a PDF, do this." You can open one in Notepad. There is no compiler, no signature, no app store review. You download it, drop it in a folder, and from then on your assistant reads it every time it might be relevant.
That is genuinely useful — it is how you teach an assistant your workflow. It also means whoever wrote that file is talking to your assistant, in your session, with your permissions.
A skill is a Markdown file with YAML front-matter, conventionally SKILL.md. The front-matter carries a name, a description the runtime uses to decide relevance, and often an allowed-tools list. The body is prose instructions injected into the model's context.
Three properties make this a supply chain rather than a config format:
- No integrity layer. No signature, no checksum, no publisher identity. The file is trusted because it is on disk.
- Context-level privilege. Injected text is not sandboxed from your request. It arrives as instruction, not as data.
- Silent updates. Pull the repository, sync the plugin, and the file that runs tomorrow is not the file you read today.
allowed-tools constrains the verb. It says nothing about the object — Read is a true and useless description of a skill that reads your private keys.