From 67af98fc06f48c531b6bd5f39f794f2240f5d228 Mon Sep 17 00:00:00 2001 From: spacegeologist Date: Thu, 28 May 2026 14:56:52 +0800 Subject: [PATCH] fix(codex): load qa-only from gstack root in ship --- hosts/codex.ts | 1 + test/gen-skill-docs.test.ts | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/hosts/codex.ts b/hosts/codex.ts index 7dc80ea87..1b99e8c91 100644 --- a/hosts/codex.ts +++ b/hosts/codex.ts @@ -29,6 +29,7 @@ const codex: HostConfig = { { from: '.claude/skills/gstack', to: '.agents/skills/gstack' }, { from: '.claude/skills/review', to: '.agents/skills/gstack/review' }, { from: '.claude/skills', to: '.agents/skills' }, + { from: '${CLAUDE_SKILL_DIR}/../qa-only/SKILL.md', to: '$GSTACK_ROOT/../gstack-qa-only/SKILL.md' }, ], suppressedResolvers: [ diff --git a/test/gen-skill-docs.test.ts b/test/gen-skill-docs.test.ts index 0a0c9741b..b1c01304d 100644 --- a/test/gen-skill-docs.test.ts +++ b/test/gen-skill-docs.test.ts @@ -1737,6 +1737,12 @@ describe('Codex generation (--host codex)', () => { expect(reviewContent).not.toContain('CODEX_REVIEWS'); }); + test('Codex ship plan verification loads qa-only from gstack root', () => { + const shipContent = fs.readFileSync(path.join(AGENTS_DIR, 'gstack-ship', 'SKILL.md'), 'utf-8'); + expect(shipContent).toContain('$GSTACK_ROOT/../gstack-qa-only/SKILL.md'); + expect(shipContent).not.toContain('${CLAUDE_SKILL_DIR}/../qa-only/SKILL.md'); + }); + test('--host codex --dry-run freshness', () => { const result = Bun.spawnSync(['bun', 'run', 'scripts/gen-skill-docs.ts', '--host', 'codex', '--dry-run'], { cwd: ROOT, @@ -1842,8 +1848,8 @@ describe('Codex generation (--host codex)', () => { } }); - test('all four path rewrite rules produce correct output', () => { - // Test each of the 4 path rewrite rules individually + test('Codex path rewrite rules produce correct output', () => { + // Test host-configured path rewrite rules individually const content = fs.readFileSync(path.join(AGENTS_DIR, 'gstack-review', 'SKILL.md'), 'utf-8'); // Rule 1: ~/.claude/skills/gstack → $GSTACK_ROOT