The directory name is part of the contract
The name field in the frontmatter must match the parent directory name, so renaming a skill means renaming both. This is the constraint people break most often, usually by copying a folder and editing only the file inside it. The skill then either fails validation or is ignored, with nothing in the output to say why.
Project scope against user scope
A skill kept with a project travels with the repository, so anyone who clones it gets the same instructions and the same review history. A skill kept in your user configuration follows you across every project. Conventions that belong to one codebase belong with that codebase; habits that are yours belong in user scope.
What goes in the subdirectories
SKILL.md holds the frontmatter and the instructions. scripts/ holds executable code the agent may run, references/ holds documentation loaded only when a task needs it, and assets/ holds templates, images and data files. Keep file references one level deep from SKILL.md so the agent does not have to chase a path through several hops.