* fix: stabilize validation and tests on Windows * test: add Windows smoke coverage for skill activation * refactor: make setup_web script CommonJS * fix: repair aegisops-ai frontmatter * docs: add when-to-use guidance to core skills * docs: add when-to-use guidance to Apify skills * docs: add when-to-use guidance to Google and Expo skills * docs: add when-to-use guidance to Makepad skills * docs: add when-to-use guidance to git workflow skills * docs: add when-to-use guidance to fp-ts skills * docs: add when-to-use guidance to Three.js skills * docs: add when-to-use guidance to n8n skills * docs: add when-to-use guidance to health analysis skills * docs: add when-to-use guidance to writing and review skills * meta: sync generated catalog metadata * docs: add when-to-use guidance to Robius skills * docs: add when-to-use guidance to review and workflow skills * docs: add when-to-use guidance to science and data skills * docs: add when-to-use guidance to tooling and automation skills * docs: add when-to-use guidance to remaining skills * fix: gate bundle helper execution in Windows activation * chore: drop generated artifacts from contributor PR * docs(maintenance): Record PR 457 sweep Document the open issue triage, PR supersedence decision, local verification, and source-only cleanup that prepared PR #457 for re-running CI. --------- Co-authored-by: sickn33 <sickn33@users.noreply.github.com>
42 lines
1.4 KiB
JavaScript
42 lines
1.4 KiB
JavaScript
const assert = require("assert");
|
|
const { spawnSync } = require("child_process");
|
|
const path = require("path");
|
|
const packageJson = require(path.resolve(__dirname, "..", "..", "..", "package.json"));
|
|
|
|
const repoRoot = path.resolve(__dirname, "..", "..", "..");
|
|
const npmCommand = process.platform === "win32" ? "npm.cmd" : "npm";
|
|
|
|
function runNpmPackDryRunJson() {
|
|
const result = spawnSync(npmCommand, ["pack", "--dry-run", "--json"], {
|
|
cwd: repoRoot,
|
|
encoding: "utf8",
|
|
shell: process.platform === "win32",
|
|
});
|
|
|
|
if (result.error) {
|
|
throw result.error;
|
|
}
|
|
|
|
if (typeof result.status !== "number" || result.status !== 0) {
|
|
throw new Error(result.stderr.trim() || "npm pack --dry-run --json failed");
|
|
}
|
|
|
|
return JSON.parse(result.stdout);
|
|
}
|
|
|
|
const packOutput = runNpmPackDryRunJson();
|
|
assert.ok(Array.isArray(packOutput) && packOutput.length > 0, "npm pack should return package metadata");
|
|
|
|
const packagedFiles = new Set(packOutput[0].files.map((file) => file.path));
|
|
|
|
assert.ok(packagedFiles.has("tools/bin/install.js"), "published package must include tools/bin/install.js");
|
|
assert.ok(
|
|
packagedFiles.has("tools/lib/symlink-safety.js"),
|
|
"published package must include tools/lib/symlink-safety.js",
|
|
);
|
|
assert.strictEqual(
|
|
packageJson.dependencies?.yaml,
|
|
"^2.8.2",
|
|
"published package must declare yaml as a runtime dependency for the installer",
|
|
);
|