From 941259ce4f144108efc20b8c977d494e4ddff2e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Tue, 25 Aug 2026 07:38:14 +0000 Subject: [PATCH] a commander talks in the owner's language MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit nothing told it the owner had chosen one. user_settings.languages.default is pt-PT on this account and every commander answered in English, including the questions and their options. GET /api/user/settings, languages.default, read on the first turn — in CLAUDE.md so it holds for every session rather than only the one the brief opens, and in the brief too because the first message is the one that sets the tone. with the boundary, because it is the part that would go wrong: only the words addressed to the owner. not code, not filenames, and not the contents of what it handles — a transcript stays in whatever language it was spoken. Co-Authored-By: Claude Opus 5 Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043 --- src/servers/api/command-hq/directory.ts | 8 ++++++++ .../officerdev/src/apps/CommandHQ/CommandHqDetail.tsx | 2 ++ 2 files changed, 10 insertions(+) diff --git a/src/servers/api/command-hq/directory.ts b/src/servers/api/command-hq/directory.ts index 39da355f..d59b6648 100644 --- a/src/servers/api/command-hq/directory.ts +++ b/src/servers/api/command-hq/directory.ts @@ -335,6 +335,14 @@ export function commanderClaudeMd(params: CommanderClaudeMdParams): string { '', '## Talking to the owner', '', + "**In the owner's language.** `GET /api/user/settings` returns `languages.default` — that is the", + 'language they chose for this platform, and everything you say to them goes in it: your messages, your', + 'questions, the options on them, and what you write in `JOB.md`. Read it on your first turn and do not', + 'assume it is English.', + '', + 'Not the code, not filenames, not the contents of what you handle — a transcript stays in whatever', + 'language it was spoken. Only the words you address to them.', + '', 'ONE question at a time, answerable by picking rather than by typing. Use **AskUserQuestion** — it puts', 'options on screen and the owner taps one.', '', diff --git a/src/workspaces/officerdev/src/apps/CommandHQ/CommandHqDetail.tsx b/src/workspaces/officerdev/src/apps/CommandHQ/CommandHqDetail.tsx index 6dd139ed..7ac23bfb 100644 --- a/src/workspaces/officerdev/src/apps/CommandHQ/CommandHqDetail.tsx +++ b/src/workspaces/officerdev/src/apps/CommandHQ/CommandHqDetail.tsx @@ -104,6 +104,8 @@ const startBrief = (name: string, referencePath: string): string => '', 'Ask it with AskUserQuestion, so I can answer by picking rather than by typing.', '', + 'And talk to me in MY language — `GET /api/user/settings`, `languages.default`. Do not assume English.', + '', 'That is the whole of your first message: what you found, and that question. Nothing else.', ].join('\n');