Co-authored-by: iamlukethedev <iamlukethedev@users.noreply.github.com>
This commit is contained in:
Luke The Dev
2026-03-23 11:44:25 -05:00
committed by GitHub
parent c2cbdeec44
commit 5e7812c352
30 changed files with 2213 additions and 128 deletions
+44
View File
@@ -0,0 +1,44 @@
import { readFileSync, readdirSync } from "node:fs";
import path from "node:path";
import { describe, expect, it } from "vitest";
import { buildPackagedSkillStatusEntry, listPackagedSkills } from "@/lib/skills/catalog";
import { resolveSkillMarketplaceMetadata } from "@/lib/skills/marketplace";
import { readPackagedSkillFiles } from "@/lib/skills/packaged";
const resolveAssetDir = (packageId: string) => path.join(process.cwd(), "assets/skills", packageId);
describe("packaged skills", () => {
it("keeps packaged skill files synchronized with the asset source files", () => {
for (const packagedSkill of listPackagedSkills()) {
const assetDir = resolveAssetDir(packagedSkill.packageId);
const expectedFiles = readdirSync(assetDir, { withFileTypes: true })
.filter((entry) => entry.isFile())
.map((entry) => entry.name)
.sort();
const packagedFiles = readPackagedSkillFiles(packagedSkill.packageId);
const packagedRelativePaths = packagedFiles.map((file) => file.relativePath).sort();
expect(packagedRelativePaths).toEqual(expectedFiles);
for (const file of packagedFiles) {
const assetContent = readFileSync(path.join(assetDir, file.relativePath), "utf8");
expect(file.content).toBe(assetContent);
}
}
});
it("exposes creator attribution and hides fake popularity stats for packaged skills", () => {
for (const packagedSkill of listPackagedSkills()) {
expect(packagedSkill.creatorName).toBeTruthy();
expect(packagedSkill.creatorUrl).toBeTruthy();
const metadata = resolveSkillMarketplaceMetadata(buildPackagedSkillStatusEntry(packagedSkill));
expect(metadata.poweredByName).toBe(packagedSkill.creatorName);
expect(metadata.poweredByUrl).toBe(packagedSkill.creatorUrl);
expect(metadata.hideStats).toBe(true);
}
});
});