feat(core,cli): harden install engine and extend skill lint and interview eval

- update only touches the recorded project root; project installs do not
  follow symlinks or junctions; repeated --force rotates .orig backups;
  uninstall never deletes outside the recorded root
- run npm/npx without a shell on Windows and pin optional tool versions
- skip the update check in CI and non-interactive output
- lint: cross-document section pointers, preflight row ids, gate rule
  numbers, per-document size budgets, gate copy equality
- eval: scenarios S19-S21, route and read-cost rejudging, interpretation
  card judging, temp-dir previews and table-form cards no longer fail
This commit is contained in:
Yun Chan 2026-10-06 16:55:38 +09:00
parent ee3bef2ce5
commit 9bcb45cbd3
122 changed files with 5836 additions and 831 deletions

View file

@ -48,6 +48,7 @@ node build/ci/lint-skill.mjs packages/skill
cd apps/site
pnpm verify # full L0–L6 gate; exit 1 on any failure = do not deploy
pnpm test:design:gate # design gate only (gate.config.json)
pnpm test:similarity # cross-showcase convergence (fonts, background, accent hue, radius, mono); strict pairs fail, rest warn
pnpm build # prebuild generates showcase assets; postbuild runs no-hanja check
node tools/visual.mjs --update-baseline # refresh visual baselines, then commit
```
@ -87,7 +88,7 @@ Hand-rolled argv parser (`src/index.ts`), commands in `src/commands/` (install,
### Site (apps/site)
Astro static output. Showcases are self-contained static pages under `public/work/<name>/` with their own `tokens.css`/`styles/`; `gate.config.json` declares per-page contracts (views, selectors, token/hygiene files, color/radius literal budgets) consumed by `tools/design-gate.mjs`. `tools/no-hanja.mjs` forbids Hanja in deployed text (postbuild + verify). The design skill's own audit methodology (`packages/skill/references/audit-gate.md`) is implemented by these tools — treat gate failures as design regressions, not build noise.
Astro static output. Showcases are self-contained static pages under `public/work/<name>/` with their own `tokens.css`/`styles/`; `gate.config.json` declares per-page contracts (views, selectors, token/hygiene files, color/radius literal budgets) consumed by `tools/design-gate.mjs`. `tools/no-hanja.mjs` forbids Hanja in deployed text (postbuild + verify). The design skill's own audit methodology (`packages/skill/references/audit-gate.md`) is implemented by these tools — treat gate failures as design regressions, not build noise. `tools/similarity.mjs` checks convergence between showcases (a "house look"): a new showcase must stay below the 0.78 similarity threshold against existing fingerprints (`similarity.config.json`).
## Conventions