fix(skills): accept any SKILL.md casing and list bundled files in detail - #1140
Draft
wen2zhou wants to merge 1 commit into
Draft
fix(skills): accept any SKILL.md casing and list bundled files in detail#1140wen2zhou wants to merge 1 commit into
wen2zhou wants to merge 1 commit into
Conversation
Specialist packages built on case-insensitive filesystems (macOS/APFS) ship the skill document as `skill.md`. The package validator matched `SKILL.md` exactly, so such packages failed to import with "Skill document missing". The skill detail view also rendered only the SKILL.md body, ignoring references/scripts/assets/templates. Centralize the skill-document rule in isSkillDocumentName (skill-bundle-paths) and apply it everywhere a skill document path or name is matched, so casing can never drift between validation, import, listing, and export: specialist package validator (the import blocker), skill-bundle-import-owner, agent-home-skill-owner, export, service, skill-bundle-paths, and skill-files listSkillFiles. Add listSkillFiles and SkillFileEntry so the skill detail view lists every bundled file as a directory tree, excluding the skill document (already rendered as the body) and app metadata files.
wen2zhou
marked this pull request as draft
August 12, 2026 10:32
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.
Problem
Importing a Specialist package whose skill document is
skill.md(lowercase, common on macOS/APFS) failed with "Skill document missing", and the skill detail view showed only the SKILL.md body —references/,scripts/,assets/,templates/were invisible.Root cause
validatormatchedSKILL.mdexactly — a string compare on zip entry paths, so the OS's case-insensitivity couldn't help → import blocked.=== 'SKILL.md'in some places, ad-hoctoLowerCase()in others) → easy to drift.SkillDetailViewnever rendered anything but the SKILL.md body.Fix
isSkillDocumentName(skill-bundle-paths) and use it everywhere a skill document path/name is matched, so casing can never drift between validation, import, listing, and export: specialist-packagevalidator(the import blocker),skill-bundle-import-owner,agent-home-skill-owner,export,service,skill-bundle-paths, andlistSkillFiles.listSkillFiles+SkillFileEntry; the skill detail view now lists every bundled file as a directory tree with sizes, excluding the skill document (already the body) and app metadata (.source.json/.specialist-package.json).Verification
npm run typecheck(node + web) ✓vitest run src/main→ 9592 passed (incl. newskill-filesunit tests, specialist-package validator/service, SkillDetailView render) ✓Notes
readFile(join(dir, 'SKILL.md'))sites (read a fixed path) are unchanged — on macOS/APFS they already resolve lowercase; cross-platform (Linux) full consistency is a separate follow-up.