Files
gstack/hosts/claude.ts
T
garrytan 7e7307e650 hosts, utility: model-neutral Claude co-author trailer (s03 M10, s11 M10)
The Claude host trailer and the resolver fallback (cursor, kiro, opencode,
slate) signed commits as 'Claude Opus 4.7' whatever model ran. Both now read
'Co-Authored-By: Claude <noreply@anthropic.com>' so the trailer cannot go
stale at the next model release (the s11 report offered this neutral form;
s03 M10's hunk uses it). document-release's release body renders the same
{{CO_AUTHOR_TRAILER}} and follows on regeneration.
test/host-config.test.ts:589 only requires 'Claude' and stays green. Goldens
move on regeneration (not committed). expected red until the regeneration commit
2026-10-03 00:14:27 +00:00

39 lines
1.3 KiB
TypeScript

import { defineHost } from './define-host';
const claude = defineHost({
name: 'claude',
displayName: 'Claude Code',
usesEnvVars: false, // primary host — literal ~ paths, no $GSTACK_ROOT env vars
frontmatter: {
mode: 'denylist',
// interactive + benefits-from are gen-time inputs (buildContext reads them
// from the .tmpl); no runtime or test reader consumes them from the
// GENERATED file (verified: e2e-harness-audit reads .tmpl; benefits-from
// tests assert rendered prose; the host reads name/description/
// allowed-tools/hooks; bin/gstack-brain-context-load reads gbrain: — which
// is why gbrain and hooks are NOT stripped). Stripping them trims the
// always-on frontmatter catalog every session loads.
stripFields: ['sensitive', 'voice-triggers', 'interactive', 'benefits-from'],
descriptionLimit: null,
},
generation: {
generateMetadata: false,
skipSkills: ['claude-code'], // An outside reviewer must use a different harness.
},
pathRewrites: [], // Claude is the primary host — no rewrites needed
toolRewrites: {},
install: {
linkingStrategy: 'real-dir-symlink',
},
coAuthorTrailer: 'Co-Authored-By: Claude <noreply@anthropic.com>',
learningsMode: 'full',
});
export default claude;