Skip to content

Commit b4894c8

Browse files
authored
Merge pull request #2414 from dgageot/fix-skills-loading
Fix skills loading
2 parents f2529a2 + c0b228f commit b4894c8

2 files changed

Lines changed: 27 additions & 1 deletion

File tree

pkg/skills/skills.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,11 +281,15 @@ func loadSkillFile(path, dirName string) (Skill, bool) {
281281
}
282282

283283
skill, ok := parseFrontmatter(string(content))
284-
if !ok || !isValidSkill(skill) {
284+
if !ok {
285285
return Skill{}, false
286286
}
287287

288288
skill.Name = cmp.Or(skill.Name, dirName)
289+
290+
if !isValidSkill(skill) {
291+
return Skill{}, false
292+
}
289293
skill.FilePath = path
290294
skill.BaseDir = filepath.Dir(path)
291295
skill.Local = true

pkg/skills/skills_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,28 @@ Run migrations with care.
249249
assert.Equal(t, nestedDir, skills[0].BaseDir)
250250
}
251251

252+
func TestLoadSkillsFromDir_NameFromDirectory(t *testing.T) {
253+
tmpDir := t.TempDir()
254+
255+
skillDir := filepath.Join(tmpDir, "hola")
256+
require.NoError(t, os.MkdirAll(skillDir, 0o755))
257+
258+
// Skill without a name field — should derive name from directory.
259+
skillContent := `---
260+
description: Say hello in Spanish
261+
---
262+
263+
Run the hola command.
264+
`
265+
require.NoError(t, os.WriteFile(filepath.Join(skillDir, "SKILL.md"), []byte(skillContent), 0o644))
266+
267+
skills := loadSkillsFromDir(tmpDir, false)
268+
269+
require.Len(t, skills, 1)
270+
assert.Equal(t, "hola", skills[0].Name)
271+
assert.Equal(t, "Say hello in Spanish", skills[0].Description)
272+
}
273+
252274
func TestLoadSkillsFromDir_SkipHiddenAndSymlinks(t *testing.T) {
253275
tmpDir := t.TempDir()
254276

0 commit comments

Comments
 (0)