import { readFileSync } from "node:fs"; import { createHash } from "node:crypto"; const D2 = "/mnt/storage/scratch/sage-r64/d2", LAND = "/mnt/storage/scratch/sage-r64/land"; const want = JSON.parse(readFileSync(`${LAND}/roles/coder.json`, "utf8")).skills; for (const h of ["claude-code", "pi"]) { const raw = readFileSync(`${D2}/manifest-${h}.json`); const m = JSON.parse(raw); const prompt = readFileSync(`${D2}/prompt-${h}.md`, "utf8"); const names = (m.skills ?? []).map((s) => s.name); let files = 0, bad = 0, inPrompt = 0; for (const s of m.skills) for (const [path, sha256] of Object.entries(s.files)) { const f = { path, sha256 }; files++; const src = readFileSync(`${LAND}/skills/${s.name}/${f.path}`); if (createHash("sha256").update(src).digest("hex") !== f.sha256) bad++; const open = `\n`; if (prompt.includes(open + src.toString("utf8"))) inPrompt++; } const markers = (prompt.match(/^