Think of a skill as a self-contained plugin that gives OpenClaw a new capability. Each skill lives in its own directory and declares what it needs through a single SKILL.md file. When OpenClaw starts, it scans every skill directory, reads the YAML frontmatter, and decides whether that skill can run on the current machine.
If the requirements are met, the skill shows up in your agent's tool list automatically. If a dependency is missing, the skill stays hidden. No crashes, no broken commands. You never need to edit a config file to register or remove a skill. Pretty clean, right?