From 83a05630cdbf90ce953596812519993e48d6faad Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Sun, 8 Feb 2026 17:52:34 +0900 Subject: [PATCH] feat(tools/delegate-task): add skill-resolver module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add skill-resolver.ts for resolving skill configurations - Handles skill loading and configuration resolution - Part of modular delegate-task refactoring effort 🤖 Generated with assistance of OhMyOpenCode --- src/tools/delegate-task/skill-resolver.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/tools/delegate-task/skill-resolver.ts diff --git a/src/tools/delegate-task/skill-resolver.ts b/src/tools/delegate-task/skill-resolver.ts new file mode 100644 index 00000000..db31c898 --- /dev/null +++ b/src/tools/delegate-task/skill-resolver.ts @@ -0,0 +1,21 @@ +import type { GitMasterConfig, BrowserAutomationProvider } from "../../config/schema" +import { resolveMultipleSkillsAsync } from "../../features/opencode-skill-loader/skill-content" +import { discoverSkills } from "../../features/opencode-skill-loader" + +export async function resolveSkillContent( + skills: string[], + options: { gitMasterConfig?: GitMasterConfig; browserProvider?: BrowserAutomationProvider, disabledSkills?: Set } +): Promise<{ content: string | undefined; error: string | null }> { + if (skills.length === 0) { + return { content: undefined, error: null } + } + + const { resolved, notFound } = await resolveMultipleSkillsAsync(skills, options) + if (notFound.length > 0) { + const allSkills = await discoverSkills({ includeClaudeCodePaths: true }) + const available = allSkills.map(s => s.name).join(", ") + return { content: undefined, error: `Skills not found: ${notFound.join(", ")}. Available: ${available}` } + } + + return { content: Array.from(resolved.values()).join("\n\n"), error: null } +}