From cf601a0f58819ff178817bac763524e11e941721 Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Sat, 15 Aug 2026 08:50:03 -0700 Subject: [PATCH] =?UTF-8?q?test(evals):=20skillify=20fixtures=20via=20extr?= =?UTF-8?q?actSkillBody=20=E2=80=94=2063-83%=20smaller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tests follow all 11 skillify steps, so the whole body stays; only the shared generated preamble drops (skillify 1239->453, scrape 958->167). Co-Authored-By: Claude Fable 5 --- test/skill-e2e-skillify.test.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/test/skill-e2e-skillify.test.ts b/test/skill-e2e-skillify.test.ts index d5a02bd35..f92af6cdc 100644 --- a/test/skill-e2e-skillify.test.ts +++ b/test/skill-e2e-skillify.test.ts @@ -34,6 +34,7 @@ import { setupBrowseShims, copyDirSync, logCost, recordE2E, createEvalCollector, finalizeEvalCollector, } from './helpers/e2e-helpers'; +import { extractSkillBody } from './helpers/skill-fixture'; import { spawnSync } from 'child_process'; import * as fs from 'fs'; import * as path from 'path'; @@ -77,12 +78,15 @@ function setupSkillifyWorkdir(suffix: string, installSkills: string[] = ['scrape setupBrowseShims(workDir); - // Install requested skills. + // Install requested skills. The tests exercise the full /scrape + /skillify + // flows (all 11 skillify steps, D1-D3 contracts), so keep the whole + // skill-specific body — but drop the ~780-line shared preamble the tests + // never touch (CLAUDE.md: "E2E test fixtures: extract, don't copy"). const skillsDir = path.join(workDir, '.claude', 'skills'); for (const skill of installSkills) { const destDir = path.join(skillsDir, skill); fs.mkdirSync(destDir, { recursive: true }); - fs.copyFileSync(path.join(ROOT, skill, 'SKILL.md'), path.join(destDir, 'SKILL.md')); + fs.writeFileSync(path.join(destDir, 'SKILL.md'), extractSkillBody(path.join(ROOT, skill))); } // bin/ scripts — preamble references several of these.