pub fn check(pack: &Pack, against: &Against) -> Vec<Problem>Expand description
Every problem of pack, checked against against, in order of skill
and file:
- its frontmatter reads, with its folder’s
name(lowercase letters, digits and single-), adescriptionthat says when to use it (Use …) and when not (Not …), and ametadata.version(1.0); - every
shuyi <command>in the code of its Markdown files is a command ofshuyi; - every relative link of its Markdown files names a file of the pack,
and none names the engine’s repository on
main(a skill sends an agent to the project’sAGENTS.md, which names the engine’s docs at the version the game builds with); - its name, description, compatibility and
SKILL.mdare within the format’s lengths (MAX_NAME,MAX_DESCRIPTION,MAX_COMPATIBILITY,MAX_LINES); - every id in its
waits_foris an open ticket (when they are known), and a skill of the engine’s pack (Pack::embedded, by name) that waits for nothing has a worked example. A project’s own skill, one the embedded pack doesn’t have, needs none: it teaches the project’s own workflow, with nothing for a new game to run; - every problem code (
SH2003) in its files is a row of the table (shuyi explain) that isn’t retired.
A folder of the pack with no SKILL.md is a problem too.