refactor: move skill lifecycle code into skills subsystem

This commit is contained in:
Shakker
2026-05-28 19:35:55 +01:00
committed by Shakker
parent 22e2d1560f
commit bedfd4c200
69 changed files with 171 additions and 180 deletions

View File

@@ -178,7 +178,7 @@ vi.mock("../agents/agent-scope.js", () => ({
mocks.resolveAgentWorkspaceDirMock(config, agentId),
}));
vi.mock("../agents/skills-clawhub.js", () => ({
vi.mock("../skills/clawhub.js", () => ({
searchSkillsFromClawHub: (...args: unknown[]) => mocks.searchSkillsFromClawHubMock(...args),
installSkillFromClawHub: (...args: unknown[]) => mocks.installSkillFromClawHubMock(...args),
updateSkillsFromClawHub: (...args: unknown[]) => mocks.updateSkillsFromClawHubMock(...args),
@@ -194,7 +194,7 @@ vi.mock("../infra/clawhub.js", () => ({
fetchClawHubSkillCard: (...args: unknown[]) => mocks.fetchClawHubSkillCardMock(...args),
}));
vi.mock("../agents/skills-source-install.js", () => ({
vi.mock("../skills/source-install.js", () => ({
installSkillFromSource: (...args: unknown[]) => mocks.installSkillFromSourceMock(...args),
isSkillSourceInstallSpec: (raw: string) =>
raw.startsWith("git:") ||
@@ -204,7 +204,7 @@ vi.mock("../agents/skills-source-install.js", () => ({
raw.startsWith("/"),
}));
vi.mock("../agents/skills-status.js", () => ({
vi.mock("../skills/status.js", () => ({
buildWorkspaceSkillStatus: (workspaceDir: string, options?: unknown) =>
mocks.buildWorkspaceSkillStatusMock(workspaceDir, options),
}));

View File

@@ -1,4 +1,4 @@
import type { SkillStatusEntry, SkillStatusReport } from "../agents/skills-status.js";
import type { SkillStatusEntry, SkillStatusReport } from "../skills/status.js";
import { sanitizeForLog, stripAnsi } from "../terminal/ansi.js";
import { decorativeEmoji, decorativePrefix } from "../terminal/decorative-emoji.js";
import { getTerminalTableWidth, renderTable } from "../terminal/table.js";

View File

@@ -2,9 +2,9 @@ import fs from "node:fs";
import os from "node:os";
import path from "node:path";
import { afterAll, beforeAll, describe, expect, it } from "vitest";
import { buildWorkspaceSkillStatus } from "../agents/skills-status.js";
import { createCanonicalFixtureSkill } from "../agents/skills.test-helpers.js";
import type { SkillEntry } from "../skills/index.js";
import { buildWorkspaceSkillStatus } from "../skills/status.js";
import { createCanonicalFixtureSkill } from "../skills/test-helpers.js";
import { captureEnv } from "../test-utils/env.js";
import { formatSkillInfo, formatSkillsCheck, formatSkillsList } from "./skills-cli.format.js";

View File

@@ -1,5 +1,5 @@
import { describe, expect, it, vi } from "vitest";
import type { SkillStatusEntry, SkillStatusReport } from "../agents/skills-status.js";
import type { SkillStatusEntry, SkillStatusReport } from "../skills/status.js";
import { createEmptyInstallChecks } from "./requirements-test-fixtures.js";
import { formatSkillInfo, formatSkillsCheck, formatSkillsList } from "./skills-cli.format.js";

View File

@@ -4,17 +4,6 @@ import {
resolveAgentWorkspaceDir,
resolveDefaultAgentId,
} from "../agents/agent-scope.js";
import {
installSkillFromClawHub,
readTrackedClawHubSkillSlugs,
resolveClawHubSkillVerificationTarget,
searchSkillsFromClawHub,
updateSkillsFromClawHub,
} from "../agents/skills-clawhub.js";
import {
installSkillFromSource,
isSkillSourceInstallSpec,
} from "../agents/skills-source-install.js";
import { getRuntimeConfig } from "../config/config.js";
import {
fetchClawHubSkillCard,
@@ -23,6 +12,14 @@ import {
} from "../infra/clawhub.js";
import { defaultRuntime } from "../runtime.js";
import { normalizeOptionalString } from "../shared/string-coerce.js";
import {
installSkillFromClawHub,
readTrackedClawHubSkillSlugs,
resolveClawHubSkillVerificationTarget,
searchSkillsFromClawHub,
updateSkillsFromClawHub,
} from "../skills/clawhub.js";
import { installSkillFromSource, isSkillSourceInstallSpec } from "../skills/source-install.js";
import { formatDocsLink } from "../terminal/links.js";
import { theme } from "../terminal/theme.js";
import { CONFIG_DIR } from "../utils.js";
@@ -38,7 +35,7 @@ export type {
export { formatSkillInfo, formatSkillsCheck, formatSkillsList } from "./skills-cli.format.js";
type SkillStatusReport = Awaited<
ReturnType<(typeof import("../agents/skills-status.js"))["buildWorkspaceSkillStatus"]>
ReturnType<(typeof import("../skills/status.js"))["buildWorkspaceSkillStatus"]>
>;
type ResolvedClawHubSkillVerificationTarget = Extract<
Awaited<ReturnType<typeof resolveClawHubSkillVerificationTarget>>,
@@ -79,7 +76,7 @@ async function loadSkillsStatusReport(
options?: ResolveSkillsWorkspaceOptions,
): Promise<SkillStatusReport> {
const { config, workspaceDir, agentId } = resolveSkillsWorkspace(options);
const { buildWorkspaceSkillStatus } = await import("../agents/skills-status.js");
const { buildWorkspaceSkillStatus } = await import("../skills/status.js");
return buildWorkspaceSkillStatus(workspaceDir, { config, agentId });
}