Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changeset/switch-skill-marketplace-to-skills-sh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@spencer-kit/coder-studio": patch
---

Switch the Skill marketplace integration to skills.sh, including install support and marketplace
download and GitHub star metrics in the Skill Manager UI.
2 changes: 1 addition & 1 deletion packages/core/src/domain/skill-management.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ describe("skill management domain", () => {
});

it("exports stable skill library origins", () => {
expect(SKILL_LIBRARY_ORIGINS).toEqual(["builtin", "skillhub", "filesystem"]);
expect(SKILL_LIBRARY_ORIGINS).toEqual(["builtin", "skillhub", "skills-sh", "filesystem"]);
});

it("exports stable mount statuses", () => {
Expand Down
1 change: 1 addition & 0 deletions packages/core/src/domain/skill-management.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ export * from "@coder-studio/skill-manager";
/** Coder Studio workspace-intelligence extension; not part of the reusable Skill Manager. */
export interface SkillRecommendationEntry {
slug: string;
registryRef?: string;
displayName: string;
description?: string;
reason: string;
Expand Down
39 changes: 25 additions & 14 deletions packages/server/src/__tests__/skills/commands.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,8 @@ describe("skills commands", () => {
displayName: "Code Review",
description: "Review code changes before merge",
version: "1.3.0",
installCount: 8_674,
githubStars: 518,
},
]),
} as never,
Expand All @@ -129,6 +131,8 @@ describe("skills commands", () => {
displayName: "Code Review",
description: "Review code changes before merge",
version: "1.3.0",
installCount: 8_674,
githubStars: 518,
installed: true,
installedVersion: "1.2.3",
mountedProviderIds: ["codex"],
Expand Down Expand Up @@ -363,11 +367,12 @@ describe("skills commands", () => {
list: vi.fn(() => [
{
slug: "code-review",
registryRef: "mattpocock/skills@code-review",
displayName: "Code Review",
description: "Review code changes before merge",
version: "1.2.3",
source: "installed",
origin: "skillhub",
origin: "skills-sh",
libraryPath: "/library/code-review",
installState: "installed",
installedAt: 1,
Expand Down Expand Up @@ -439,23 +444,25 @@ describe("skills commands", () => {
list: vi.fn(() => [
{
slug: "code-review",
registryRef: "mattpocock/skills@code-review",
displayName: "Code Review",
description: "Review code changes before merge",
version: "1.2.3",
source: "installed",
origin: "skillhub",
origin: "skills-sh",
libraryPath: "/library/code-review",
installState: "installed",
installedAt: 1,
updatedAt: 2,
},
{
slug: "security-review",
registryRef: "acme/skills@security-review",
displayName: "Security Review",
description: "Review security issues",
version: "1.2.3",
source: "installed",
origin: "skillhub",
origin: "skills-sh",
libraryPath: "/library/security-review",
installState: "installed",
installedAt: 1,
Expand Down Expand Up @@ -517,8 +524,8 @@ describe("skills commands", () => {
},
]);
expect(info).toHaveBeenCalledTimes(2);
expect(info).toHaveBeenCalledWith("code-review");
expect(info).toHaveBeenCalledWith("security-review");
expect(info).toHaveBeenCalledWith("code-review", "mattpocock/skills@code-review");
expect(info).toHaveBeenCalledWith("security-review", "acme/skills@security-review");
});

it("reports unknown and error states when Skill Hub version checks cannot compare versions", async () => {
Expand All @@ -534,21 +541,23 @@ describe("skills commands", () => {
list: vi.fn(() => [
{
slug: "missing-version",
registryRef: "acme/skills@missing-version",
displayName: "Missing Version",
version: "1.0.0",
source: "installed",
origin: "skillhub",
origin: "skills-sh",
libraryPath: "/library/missing-version",
installState: "installed",
installedAt: 1,
updatedAt: 2,
},
{
slug: "lookup-failed",
registryRef: "acme/skills@lookup-failed",
displayName: "Lookup Failed",
version: "1.0.0",
source: "installed",
origin: "skillhub",
origin: "skills-sh",
libraryPath: "/library/lookup-failed",
installState: "installed",
installedAt: 1,
Expand Down Expand Up @@ -1152,7 +1161,7 @@ describe("skills commands", () => {
expect(get).toHaveBeenCalledWith("job-1");
});

it("starts updates for installed Skill Hub skills only", async () => {
it("starts updates for installed skills.sh skills only", async () => {
const start = vi.fn(async () => ({
jobId: "job-update-1",
slug: "code-review",
Expand All @@ -1164,11 +1173,12 @@ describe("skills commands", () => {
skillLibraryRepo: {
get: vi.fn(() => ({
slug: "code-review",
registryRef: "mattpocock/skills@code-review",
displayName: "Code Review",
description: "Review code changes before merge",
version: "1.2.3",
source: "installed",
origin: "skillhub",
origin: "skills-sh",
libraryPath: "/library/code-review",
installState: "installed",
installedAt: 1,
Expand All @@ -1188,7 +1198,7 @@ describe("skills commands", () => {
);

expect(result.ok).toBe(true);
expect(start).toHaveBeenCalledWith("code-review");
expect(start).toHaveBeenCalledWith("code-review", "mattpocock/skills@code-review");
});

it("rejects update requests for non-Skill Hub skills", async () => {
Expand Down Expand Up @@ -1223,7 +1233,7 @@ describe("skills commands", () => {
expect(result.ok).toBe(false);
expect(result.error).toMatchObject({
code: "skill_update_unavailable",
message: "Only installed Skill Hub skills can be updated: local-helper",
message: "Only installed skills.sh skills can be updated: local-helper",
});
expect(start).not.toHaveBeenCalled();
});
Expand Down Expand Up @@ -1260,7 +1270,7 @@ describe("skills commands", () => {
expect(result.ok).toBe(false);
expect(result.error).toMatchObject({
code: "skill_update_unavailable",
message: "Only installed Skill Hub skills can be updated: code-review",
message: "Only installed skills.sh skills can be updated: code-review",
});
expect(start).not.toHaveBeenCalled();
});
Expand All @@ -1272,11 +1282,12 @@ describe("skills commands", () => {
skillLibraryRepo: {
get: vi.fn(() => ({
slug: "code-review",
registryRef: "mattpocock/skills@code-review",
displayName: "Code Review",
description: "Review code changes before merge",
version: "1.2.3",
source: "installed",
origin: "skillhub",
origin: "skills-sh",
libraryPath: "/library/code-review",
installState: "failed",
installedAt: 1,
Expand All @@ -1298,7 +1309,7 @@ describe("skills commands", () => {
expect(result.ok).toBe(false);
expect(result.error).toMatchObject({
code: "skill_update_unavailable",
message: "Only installed Skill Hub skills can be updated: code-review",
message: "Only installed skills.sh skills can be updated: code-review",
});
expect(start).not.toHaveBeenCalled();
});
Expand Down
17 changes: 14 additions & 3 deletions packages/server/src/__tests__/skills/install-manager.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ async function waitForJob(
}

describe("SkillInstallManager", () => {
it("auto-mounts installed Skill Hub skills into installed agent skill targets", async () => {
it("auto-mounts installed skills.sh skills into installed agent skill targets", async () => {
const tempDir = await mkdtemp(join(tmpdir(), "skill-install-auto-mount-"));
try {
const libraryRoot = join(tempDir, "library");
Expand Down Expand Up @@ -81,7 +81,17 @@ describe("SkillInstallManager", () => {
description: "Review code changes before merge",
version: "1.2.3",
})),
stageInstall: vi.fn(async () => ({ tempHome: join(tempDir, "home"), exportDir })),
stageInstall: vi.fn(async () => ({
tempHome: join(tempDir, "home"),
exportDir,
info: {
slug: "code-review",
registryRef: "mattpocock/skills@code-review",
name: "Code Review",
description: "Review code changes before merge",
version: "1.2.3",
},
})),
readStagedSkill: vi.fn(async () => "skill body"),
cleanupStage: vi.fn(async () => undefined),
} as never,
Expand Down Expand Up @@ -114,7 +124,8 @@ describe("SkillInstallManager", () => {
expect.objectContaining({
slug: "code-review",
source: "installed",
origin: "skillhub",
origin: "skills-sh",
registryRef: "mattpocock/skills@code-review",
})
);
} finally {
Expand Down
89 changes: 0 additions & 89 deletions packages/server/src/__tests__/skills/search-parser.test.ts

This file was deleted.

Loading
Loading