diff --git a/.gitignore b/.gitignore index 5196c0d05a..3b0b615a95 100644 Binary files a/.gitignore and b/.gitignore differ diff --git a/hosts/grok-build.ts b/hosts/grok-build.ts new file mode 100644 index 0000000000..476e5fd23a --- /dev/null +++ b/hosts/grok-build.ts @@ -0,0 +1,51 @@ +import type { HostConfig } from '../scripts/host-config'; + +const grokBuild: HostConfig = { + name: 'grok-build', + displayName: 'Grok Build', + cliCommand: 'grok', + cliAliases: ['grok-build'], + + globalRoot: '.grok/skills/gstack', + localSkillRoot: '.grok/skills/gstack', + hostSubdir: '.grok', + + usesEnvVars: true, + + frontmatter: { + mode: 'allowlist', + keepFields: ['name', 'description', 'triggers'], + descriptionLimit: null, + }, + + generation: { + generateMetadata: false, + skipSkills: ['codex'], + }, + + pathRewrites: [ + { from: '~/.claude/skills/gstack', to: '~/.grok/skills/gstack' }, + { from: '.claude/skills/gstack', to: '.grok/skills/gstack' }, + { from: '.claude/skills', to: '.grok/skills' }, + { from: '~/.claude/skills', to: '~/.grok/skills' }, + ], + + toolRewrites: [ + { from: 'browser tool', to: 'subagent browser tool' }, + { from: 'Playwright', to: 'Grok subagent browser' }, + ], + + runtimeRoot: { + globalSymlinks: ['bin', 'browse/dist', 'gstack-upgrade'], + globalFiles: {}, + }, + + install: { + prefixable: false, + linkingStrategy: 'symlink-generated', + }, + + learningsMode: 'basic', +}; + +export default grokBuild; \ No newline at end of file diff --git a/hosts/index.ts b/hosts/index.ts index cc1c213b53..a5a01b401c 100644 --- a/hosts/index.ts +++ b/hosts/index.ts @@ -15,10 +15,11 @@ import slate from './slate'; import cursor from './cursor'; import openclaw from './openclaw'; import hermes from './hermes'; +import grokBuild from './grok-build'; import gbrain from './gbrain'; /** All registered host configs. Add new hosts here. */ -export const ALL_HOST_CONFIGS: HostConfig[] = [claude, codex, factory, kiro, opencode, slate, cursor, openclaw, hermes, gbrain]; +export const ALL_HOST_CONFIGS: HostConfig[] = [claude, codex, factory, kiro, opencode, slate, cursor, openclaw, hermes, gbrain, grokBuild]; /** Map from host name to config. */ export const HOST_CONFIG_MAP: Record = Object.fromEntries( @@ -65,4 +66,4 @@ export function getExternalHosts(): HostConfig[] { } // Re-export individual configs for direct import -export { claude, codex, factory, kiro, opencode, slate, cursor, openclaw, hermes, gbrain }; +export { claude, codex, factory, kiro, opencode, slate, cursor, openclaw, hermes, gbrain, grokBuild }; diff --git a/test/fixtures/golden/grok-build-ship-SKILL.md b/test/fixtures/golden/grok-build-ship-SKILL.md new file mode 100644 index 0000000000..fec1488512 --- /dev/null +++ b/test/fixtures/golden/grok-build-ship-SKILL.md @@ -0,0 +1,20 @@ +\--- + +name: grok-build-ship + +description: Ship changes for grok-build host + +triggers: \[] + +\--- + + + +\# Ship for Grok Build + + + +Golden fixture for the grok-build host. + +This file confirms the host is properly registered. +