You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
But root-level single-skill repos (the default output of npx skills init) are not handled. The code in skills.ts and transform.ts only looks one level deep for SKILL.md inside subdirectories, not at the plugin root itself.
Expected behavior
When a plugin repo has SKILL.md at the root (and no skills/ subdirectory and no subdirectories with SKILL.md), treat the entire repo as a single skill. The skill name should be derived from the SKILL.md frontmatter name field, falling back to the repo/directory name.
Implementation notes
In skills.tsgetAllSkillsFromPlugins() and transform.ts skill sync logic, after checking:
Add:
3. Root SKILL.md exists → single-skill layout: treat pluginPath itself as the skill directory
The skill name can be read from the frontmatter name field of the root SKILL.md, with the directory name as fallback.
Verification
# Create a minimal root-level SKILL.md repo
mkdir /tmp/single-skill-repo
echo'---\nname: my-skill\ndescription: test\n---\n# My skill'> /tmp/single-skill-repo/SKILL.md
# Install and list
allagents plugin install /tmp/single-skill-repo
allagents skills list
# Expected: shows "my-skill" from the installed plugin
Problem
npx skills init my-skillcreates a repo whereSKILL.mdlives at the root of the repository. Example layout:Running
allagents plugin install github:org/my-skill-repothenallagents skills listshows no skills for this repo.Current support
PR #234 added support for multi-skill flat repos — repos with subdirectories each containing a
SKILL.md:But root-level single-skill repos (the default output of
npx skills init) are not handled. The code inskills.tsandtransform.tsonly looks one level deep forSKILL.mdinside subdirectories, not at the plugin root itself.Expected behavior
When a plugin repo has
SKILL.mdat the root (and noskills/subdirectory and no subdirectories withSKILL.md), treat the entire repo as a single skill. The skill name should be derived from theSKILL.mdfrontmatternamefield, falling back to the repo/directory name.Implementation notes
In
skills.tsgetAllSkillsFromPlugins()andtransform.tsskill sync logic, after checking:skills/subdirectory → standard layoutSKILL.md→ multi-skill flat layout (feat: auto-wrap flat SKILL.md repos as skills #234)Add:
3. Root
SKILL.mdexists → single-skill layout: treatpluginPathitself as the skill directoryThe skill name can be read from the frontmatter
namefield of the rootSKILL.md, with the directory name as fallback.Verification
Related
npx skills initalways creates root-level SKILL.md repos