From 97e51c42dc134a86e3532bfe49c0b259caa0adec Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Sun, 4 Jan 2026 21:31:50 +0900 Subject: [PATCH] perf(init): integrate async skill/command loaders MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) - Replace synchronous skill discovery calls in src/index.ts with async versions - Use Promise.all to parallelize 4 skill directory scans - Wrap conditional calls in Promise.resolve for consistent Promise types - Imports: discoverUserClaudeSkillsAsync, discoverProjectClaudeSkillsAsync, discoverOpencodeGlobalSkillsAsync, discoverOpencodeProjectSkillsAsync - Verification: bun test passes (571 pass, 1 pre-existing failure), bun run typecheck passes --- src/index.ts | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/index.ts b/src/index.ts index 8d5c0f6..9a8798f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -33,10 +33,10 @@ import { } from "./features/context-injector"; import { createGoogleAntigravityAuthPlugin } from "./auth/antigravity"; import { - discoverUserClaudeSkills, - discoverProjectClaudeSkills, - discoverOpencodeGlobalSkills, - discoverOpencodeProjectSkills, + discoverUserClaudeSkillsAsync, + discoverProjectClaudeSkillsAsync, + discoverOpencodeGlobalSkillsAsync, + discoverOpencodeProjectSkillsAsync, mergeSkills, } from "./features/opencode-skill-loader"; import { createBuiltinSkills } from "./features/builtin-skills"; @@ -201,13 +201,19 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => { return true; }); const includeClaudeSkills = pluginConfig.claude_code?.skills !== false; + const [userSkills, globalSkills, projectSkills, opencodeProjectSkills] = await Promise.all([ + includeClaudeSkills ? discoverUserClaudeSkillsAsync() : Promise.resolve([]), + discoverOpencodeGlobalSkillsAsync(), + includeClaudeSkills ? discoverProjectClaudeSkillsAsync() : Promise.resolve([]), + discoverOpencodeProjectSkillsAsync(), + ]); const mergedSkills = mergeSkills( builtinSkills, pluginConfig.skills, - includeClaudeSkills ? discoverUserClaudeSkills() : [], - discoverOpencodeGlobalSkills(), - includeClaudeSkills ? discoverProjectClaudeSkills() : [], - discoverOpencodeProjectSkills() + userSkills, + globalSkills, + projectSkills, + opencodeProjectSkills ); const skillMcpManager = new SkillMcpManager(); const getSessionIDForMcp = () => getMainSessionID() || "";