diff --git a/bin/install.js b/bin/install.js index d74f52c4a..93f5c0e2a 100755 --- a/bin/install.js +++ b/bin/install.js @@ -1104,6 +1104,10 @@ function convertSlashCommandsToCodexSkillMentions(content) { function convertClaudeToCodexMarkdown(content) { let converted = convertSlashCommandsToCodexSkillMentions(content); converted = converted.replace(/\$ARGUMENTS\b/g, '{{GSD_ARGS}}'); + // Path replacement: .claude → .codex (#1430) + converted = converted.replace(/\$HOME\/\.claude\//g, '$HOME/.codex/'); + converted = converted.replace(/~\/\.claude\//g, '~/.codex/'); + converted = converted.replace(/\.\/\.claude\//g, './.codex/'); // Runtime-neutral agent name replacement (#766) converted = neutralizeAgentReferences(converted, 'AGENTS.md'); return converted; diff --git a/tests/codex-config.test.cjs b/tests/codex-config.test.cjs index bcd314ee6..4908a1a38 100644 --- a/tests/codex-config.test.cjs +++ b/tests/codex-config.test.cjs @@ -169,6 +169,21 @@ Run /gsd:execute-phase to proceed.`; const result = convertClaudeAgentToCodexAgent(input); assert.strictEqual(result, input, 'returns input unchanged'); }); + + test('replaces .claude paths with .codex paths (#1430)', () => { + const input = `--- +name: gsd-debugger +description: Debugs issues +tools: Read, Bash +--- + +INIT=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state load) +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" commit "docs: resolve"`; + + const result = convertClaudeAgentToCodexAgent(input); + assert.ok(result.includes('$HOME/.codex/get-shit-done/bin/gsd-tools.cjs'), 'replaces $HOME/.claude/ with $HOME/.codex/'); + assert.ok(!result.includes('$HOME/.claude/'), 'no .claude paths remain'); + }); }); // ─── generateCodexAgentToml ─────────────────────────────────────────────────────