From e27f183b65660de96a2c374b5e2b09eccc72152a Mon Sep 17 00:00:00 2001 From: Sisyphus Date: Sun, 29 Mar 2026 01:16:10 -0700 Subject: [PATCH] test: cover remaining nested async skill paths Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus --- .../async-loader.test.ts | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/features/opencode-skill-loader/async-loader.test.ts b/src/features/opencode-skill-loader/async-loader.test.ts index 8ccb925df..498770430 100644 --- a/src/features/opencode-skill-loader/async-loader.test.ts +++ b/src/features/opencode-skill-loader/async-loader.test.ts @@ -131,6 +131,54 @@ Nested skill. expect(skills[0]?.definition.name).toBe("superpowers/brainstorming") }) + it("preserves nested skill path names for nested {dirName}.md discovery", async () => { + // given + const nestedSkillDir = join(SKILLS_DIR, "superpowers", "brainstorming") + mkdirSync(nestedSkillDir, { recursive: true }) + writeFileSync( + join(nestedSkillDir, "brainstorming.md"), + `--- +name: brainstorming +description: Nested brainstorming skill +--- +Nested skill. +` + ) + + // when + const { discoverSkillsInDirAsync } = await import("./async-loader") + const skills = await discoverSkillsInDirAsync(SKILLS_DIR) + + // then + expect(skills).toHaveLength(1) + expect(skills[0]?.name).toBe("superpowers/brainstorming") + expect(skills[0]?.definition.name).toBe("superpowers/brainstorming") + }) + + it("preserves nested skill path names for nested direct markdown discovery", async () => { + // given + const nestedSkillDir = join(SKILLS_DIR, "superpowers") + mkdirSync(nestedSkillDir, { recursive: true }) + writeFileSync( + join(nestedSkillDir, "brainstorming.md"), + `--- +name: brainstorming +description: Nested brainstorming skill +--- +Nested skill. +` + ) + + // when + const { discoverSkillsInDirAsync } = await import("./async-loader") + const skills = await discoverSkillsInDirAsync(SKILLS_DIR) + + // then + expect(skills).toHaveLength(1) + expect(skills[0]?.name).toBe("superpowers/brainstorming") + expect(skills[0]?.definition.name).toBe("superpowers/brainstorming") + }) + it("skips entries starting with dot", async () => { // given const validContent = `---