From d336b324601a72e7eef246c94b485eb9284a1986 Mon Sep 17 00:00:00 2001 From: Stefan Gasser Date: Sat, 21 Feb 2026 16:23:19 +0100 Subject: [PATCH] fix: copy skill subdirectories recursively (#175) copyFileSync crashes with EISDIR when a skill contains subdirectories like scripts/. Skills support nested folders (scripts/, examples/, templates/) per the Claude Code spec. Use fs.cpSync to handle the complete skill structure. --- src/container-runner.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/container-runner.ts b/src/container-runner.ts index 0d78caa..6f66708 100644 --- a/src/container-runner.ts +++ b/src/container-runner.ts @@ -134,12 +134,7 @@ function buildVolumeMounts( const srcDir = path.join(skillsSrc, skillDir); if (!fs.statSync(srcDir).isDirectory()) continue; const dstDir = path.join(skillsDst, skillDir); - fs.mkdirSync(dstDir, { recursive: true }); - for (const file of fs.readdirSync(srcDir)) { - const srcFile = path.join(srcDir, file); - const dstFile = path.join(dstDir, file); - fs.copyFileSync(srcFile, dstFile); - } + fs.cpSync(srcDir, dstDir, { recursive: true }); } } mounts.push({