fix(skill-tooling): validate skill names, fix invalid frontmatter, and harden scripts#80
Open
crazywriter1 wants to merge 1 commit into
Open
Conversation
Collaborator
🟡 Heimdall Review Status
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes correctness issues in the bundled skill tooling and metadata that
prevented skills from passing their own validator/packager, plus a few
small script hardening improvements.
Changes
base-mcp/SKILL.md— removed non-spectitleandversionfrontmatterkeys. They are not in the allowed property set, so
quick_validate.py/package_skill.pyrejected the skill. Now onlyname+description.init_skill.pyhyphens, max 64 chars) before creating anything — previously any name
was accepted despite the printed requirements.
descriptionso generated skills are valid YAML.Starting with
[made YAML parse it as a list, so every freshlyinitialized skill failed
quick_validate.py("Description must be astring, got list").
Max 40 characters→Max 64to match the validator.quick_validate.py— tolerate CRLF (\r\n) frontmatter and drop theunused
osimport.package_skill.py— fixed usage docstring path (utils/→scripts/).analyze_project.py— preserveprovider_typein theprovider_locationsoutput instead of dropping it.validate_conversion.py— align theminiKitprop regex withanalyze_project.py([=:]→[=:{]).Testing
No formal test suite exists in the repo, so verified manually:
python -m py_compileon all five touched scripts — OKquick_validate.py skills/base-mcp— now passes (was failing)init_skill.pyrejects invalid names (Bad_Name, 65-char name) andaccepts valid ones
init_skill → quick_validate → package_skillpipeline succeedsend-to-end on a generated skill
Notes
register.shJSON-parsing bug is intentionally not included here —it's already tracked upstream (issue register.sh: grep pattern fails when API response has space after colon in JSON key ("builder_code": vs "builder_code":") #54, PRs fix(register.sh): handle pretty-printed JSON with space after colon #55 / fix(register): handle spaces in JSON response parsing #57).
build-on-base/SKILL.mdhas a 1164-chardescriptionthat exceeds the validator's 1024 limit.