Read the full raw SKILL.md content for a skill.
Returns the complete file content including any YAML frontmatter. Callers are responsible for parsing or stripping frontmatter if needed.
When allowed_roots is provided, the resolved path must fall within at
least one root directory. This prevents symlink traversal from reading files
outside known skill directories.
Path to the SKILL.md file (from SkillMetadata['path']).
Skill root directories the resolved path must be contained within.
Callers must pre-resolve these via Path.resolve() — the resolved
skill path is compared directly, so un-resolved roots cause false
containment failures.
If empty, containment is not checked.