What
scripts/check-cli-verbs.py cannot validate any SKILL.md. It reports zero findings for a verb that does not exist.
Reproduced with a positive control. I copied skills/uipath-test/SKILL.md to /tmp, replaced a real verb with a fabricated one, and ran the script on both:
$ python3 scripts/check-cli-verbs.py skills/uipath-test/SKILL.md
[Info] skills/uipath-test/SKILL.md: YAML parse error: expected a single document in the stream
0 High, 0 Medium, 1 Info (catalog: uip 1.203.0-dev.8733)
$ python3 scripts/check-cli-verbs.py /tmp/SKILL.md # contains `uip tm executions zzzbogusverb`
0 High, 0 Medium, 1 Info (catalog: uip 1.203.0-dev.8733)
The parse error is the cause: the script reads the whole file as YAML rather than extracting the frontmatter, so the --- that closes the frontmatter reads as a second document. Every SKILL.md in the repo hits it — I checked uipath-admin too, and the version on main.
Scope
Nothing depends on it today: grep -rn "check-cli-verbs" .github/ returns nothing, so it is not wired into any workflow. scripts/check-skill-verbs.py, which is wired in, works correctly — it flagged six deliberately-unreleased verbs in a branch of mine and cleared the rest.
So this is a broken helper rather than a broken gate. It is worth either fixing or deleting, because its name suggests it validates what check-skill-verbs.py actually validates, and a zero-finding run reads as a pass.
How to fix
Split the frontmatter before parsing, or use the same loader check-skill-verbs.py uses.
How it was found
Validating a skill change that adds six new uip tm executions verbs. The working checker flagged them as stale against the published catalog, which is correct and expected until the CLI ships. This one said nothing, which is what prompted the control.
What
scripts/check-cli-verbs.pycannot validate anySKILL.md. It reports zero findings for a verb that does not exist.Reproduced with a positive control. I copied
skills/uipath-test/SKILL.mdto/tmp, replaced a real verb with a fabricated one, and ran the script on both:The parse error is the cause: the script reads the whole file as YAML rather than extracting the frontmatter, so the
---that closes the frontmatter reads as a second document. EverySKILL.mdin the repo hits it — I checkeduipath-admintoo, and the version onmain.Scope
Nothing depends on it today:
grep -rn "check-cli-verbs" .github/returns nothing, so it is not wired into any workflow.scripts/check-skill-verbs.py, which is wired in, works correctly — it flagged six deliberately-unreleased verbs in a branch of mine and cleared the rest.So this is a broken helper rather than a broken gate. It is worth either fixing or deleting, because its name suggests it validates what
check-skill-verbs.pyactually validates, and a zero-finding run reads as a pass.How to fix
Split the frontmatter before parsing, or use the same loader
check-skill-verbs.pyuses.How it was found
Validating a skill change that adds six new
uip tm executionsverbs. The working checker flagged them as stale against the published catalog, which is correct and expected until the CLI ships. This one said nothing, which is what prompted the control.