#!/usr/bin/env node /** * make-pack.mjs - compile the Hallmark skill text into a single system prompt. * * Two packs: * --pack floor SKILL.md "Critical floor" + "Flow at a glance" sections only, * behind a 3-line one-shot preamble. The cheapest prompt that * should still hold the non-negotiables. * --pack full The entire SKILL.md plus references/typography.md, color.md, * anti-patterns.md, copy.md, and the gate-list portion of * slop-test.md, concatenated with file-path separators. * * Usage: * node eval/make-pack.mjs --pack floor # size summary * node eval/make-pack.mjs --pack floor --list # what the pack includes * node eval/make-pack.mjs --pack full --out /tmp/full.txt * * Node 18+, zero dependencies. */ import { readFileSync, writeFileSync, mkdirSync } from "node:fs"; import { dirname, resolve } from "node:path"; import { fileURLToPath } from "node:url"; const EVAL_DIR = dirname(fileURLToPath(import.meta.url)); const SKILL_DIR = resolve(EVAL_DIR, "..", "skills", "hallmark"); const SKILL_MD = resolve(SKILL_DIR, "SKILL.md"); const REFS = resolve(SKILL_DIR, "references"); // One-shot preamble: the skill assumes an agentic harness with file writes and // scripts; a bare chat completion has neither, so the output contract must be // restated up front. Kept to three lines by design. const PREAMBLE = [ "You are running the Hallmark design skill. Produce a complete single-file index.html with all of its CSS inline in one