refactor(loaders): migrate to async-first pattern for commands and skills

- Remove all sync functions from command loader (async now default)
- Remove sync load functions from skill loader (async now default)
- Add resolveSymlinkAsync to file-utils.ts
- Update all callers to use async versions:
  - config-handler.ts
  - index.ts
  - tools/slashcommand/tools.ts
  - tools/skill/tools.ts
  - hooks/auto-slash-command/executor.ts
  - loader.test.ts
- All 607 tests pass, build succeeds

Generated with assistance of 🤖 [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
This commit is contained in:
YeonGyu-Kim
2026-01-05 14:18:42 +09:00
parent 17950c4d65
commit 333e3853c5
9 changed files with 187 additions and 491 deletions
+16 -16
View File
@@ -1,16 +1,16 @@
import { createBuiltinAgents } from "../agents";
import {
loadUserCommandsAsync,
loadProjectCommandsAsync,
loadOpencodeGlobalCommandsAsync,
loadOpencodeProjectCommandsAsync,
loadUserCommands,
loadProjectCommands,
loadOpencodeGlobalCommands,
loadOpencodeProjectCommands,
} from "../features/claude-code-command-loader";
import { loadBuiltinCommands } from "../features/builtin-commands";
import {
loadUserSkillsAsync,
loadProjectSkillsAsync,
loadOpencodeGlobalSkillsAsync,
loadOpencodeProjectSkillsAsync,
loadUserSkills,
loadProjectSkills,
loadOpencodeGlobalSkills,
loadOpencodeProjectSkills,
} from "../features/opencode-skill-loader";
import {
loadUserAgents,
@@ -298,14 +298,14 @@ export function createConfigHandler(deps: ConfigHandlerDeps) {
opencodeGlobalSkills,
opencodeProjectSkills,
] = await Promise.all([
includeClaudeCommands ? loadUserCommandsAsync() : Promise.resolve({}),
includeClaudeCommands ? loadProjectCommandsAsync() : Promise.resolve({}),
loadOpencodeGlobalCommandsAsync(),
loadOpencodeProjectCommandsAsync(),
includeClaudeSkills ? loadUserSkillsAsync() : Promise.resolve({}),
includeClaudeSkills ? loadProjectSkillsAsync() : Promise.resolve({}),
loadOpencodeGlobalSkillsAsync(),
loadOpencodeProjectSkillsAsync(),
includeClaudeCommands ? loadUserCommands() : Promise.resolve({}),
includeClaudeCommands ? loadProjectCommands() : Promise.resolve({}),
loadOpencodeGlobalCommands(),
loadOpencodeProjectCommands(),
includeClaudeSkills ? loadUserSkills() : Promise.resolve({}),
includeClaudeSkills ? loadProjectSkills() : Promise.resolve({}),
loadOpencodeGlobalSkills(),
loadOpencodeProjectSkills(),
]);
config.command = {