From ac9aea43c87002ad5ec9bb247b005cb4914ce813 Mon Sep 17 00:00:00 2001 From: Sebastian Boehler Date: Sun, 22 Feb 2026 21:13:55 +0100 Subject: [PATCH] fix(context): load shared/SHARED_AGENTS.md first, then persona AGENTS/IDENTITY/SOUL/USER --- pkg/agent/context.go | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/pkg/agent/context.go b/pkg/agent/context.go index 5a84c45e2..b8be872ad 100644 --- a/pkg/agent/context.go +++ b/pkg/agent/context.go @@ -432,15 +432,27 @@ func skillFilesChangedSince(skillRoots []string, filesAtCache map[string]time.Ti } func (cb *ContextBuilder) LoadBootstrapFiles() string { - bootstrapFiles := []string{ - "AGENTS.md", - "SOUL.md", - "USER.md", - "IDENTITY.md", + var sb strings.Builder + + // 1. Shared rules — loaded first so persona files can override/extend + sharedFiles := []string{ + filepath.Join("shared", "SHARED_AGENTS.md"), + } + for _, filename := range sharedFiles { + filePath := filepath.Join(cb.workspace, filename) + if data, err := os.ReadFile(filePath); err == nil { + fmt.Fprintf(&sb, "## %s\n\n%s\n\n", filename, data) + } } - var sb strings.Builder - for _, filename := range bootstrapFiles { + // 2. Persona-specific files + personaFiles := []string{ + "AGENTS.md", + "IDENTITY.md", + "SOUL.md", + "USER.md", + } + for _, filename := range personaFiles { filePath := filepath.Join(cb.workspace, filename) if data, err := os.ReadFile(filePath); err == nil { fmt.Fprintf(&sb, "## %s\n\n%s\n\n", filename, data)