From 924148b1d35f06ffc9749150bf5b6fdff8094dfc Mon Sep 17 00:00:00 2001 From: skulidropek <66840575+skulidropek@users.noreply.github.com> Date: Sat, 7 Mar 2026 16:07:29 +0000 Subject: [PATCH 1/2] feat(prompt): require subagents with final self-review --- packages/app/tests/docker-git/entrypoint-auth.test.ts | 6 ++++++ .../src/core/templates-entrypoint/claude-extra-config.ts | 1 + packages/lib/src/core/templates-entrypoint/codex.ts | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/packages/app/tests/docker-git/entrypoint-auth.test.ts b/packages/app/tests/docker-git/entrypoint-auth.test.ts index 9fe1a572..3b3d5222 100644 --- a/packages/app/tests/docker-git/entrypoint-auth.test.ts +++ b/packages/app/tests/docker-git/entrypoint-auth.test.ts @@ -71,6 +71,12 @@ describe("renderEntrypoint auth bridge", () => { expect(entrypoint).toContain("CLAUDE_GLOBAL_PROMPT_FILE=\"/home/dev/.claude/CLAUDE.md\"") expect(entrypoint).toContain("CLAUDE_AUTO_SYSTEM_PROMPT=\"${CLAUDE_AUTO_SYSTEM_PROMPT:-1}\"") expect(entrypoint).toContain("docker-git-managed:claude-md") + expect(entrypoint).toContain( + "SUBAGENTS_LINE=\"Для решения задач обязательно используй subagents. Сам агент обязан выполнять финальную проверку, интеграцию и валидацию результата перед ответом пользователю.\"" + ) + expect(entrypoint.split("Для решения задач обязательно используй subagents.").length - 1).toBeGreaterThanOrEqual( + 2 + ) expect(entrypoint).toContain("token=\"${GITHUB_TOKEN:-}\"") expect(entrypoint).toContain("token=\"${GH_TOKEN:-}\"") expect(entrypoint).toContain(String.raw`printf "%s\n" "password=$token"`) diff --git a/packages/lib/src/core/templates-entrypoint/claude-extra-config.ts b/packages/lib/src/core/templates-entrypoint/claude-extra-config.ts index 8215eb4c..27d50fab 100644 --- a/packages/lib/src/core/templates-entrypoint/claude-extra-config.ts +++ b/packages/lib/src/core/templates-entrypoint/claude-extra-config.ts @@ -52,6 +52,7 @@ if [[ "$CLAUDE_AUTO_SYSTEM_PROMPT" == "1" ]]; then $CLAUDE_WORKSPACE_CONTEXT Фокус задачи: работай только в workspace, который запрашивает пользователь. Текущий workspace: __TARGET_DIR__ Доступ к интернету: есть. Если чего-то не знаешь — ищи в интернете или по кодовой базе. +Для решения задач обязательно используй subagents. Сам агент обязан выполнять финальную проверку, интеграцию и валидацию результата перед ответом пользователю. Если ты видишь файлы AGENTS.md или CLAUDE.md внутри проекта, ты обязан их читать и соблюдать инструкции. EOF diff --git a/packages/lib/src/core/templates-entrypoint/codex.ts b/packages/lib/src/core/templates-entrypoint/codex.ts index 93c1eb44..ec704e06 100644 --- a/packages/lib/src/core/templates-entrypoint/codex.ts +++ b/packages/lib/src/core/templates-entrypoint/codex.ts @@ -216,6 +216,7 @@ WORKSPACES_LINE="Доступные workspace пути: __TARGET_DIR__" WORKSPACE_INFO_LINE="Контекст workspace: repository" FOCUS_LINE="Фокус задачи: работай только в workspace, который запрашивает пользователь. Текущий workspace: __TARGET_DIR__" INTERNET_LINE="Доступ к интернету: есть. Если чего-то не знаешь — ищи в интернете или по кодовой базе." +SUBAGENTS_LINE="Для решения задач обязательно используй subagents. Сам агент обязан выполнять финальную проверку, интеграцию и валидацию результата перед ответом пользователю." if [[ "$REPO_REF" == issue-* ]]; then ISSUE_ID="$(printf "%s" "$REPO_REF" | sed -E 's#^issue-##')" ISSUE_URL="" @@ -257,6 +258,7 @@ $WORKSPACES_LINE $WORKSPACE_INFO_LINE $FOCUS_LINE $INTERNET_LINE +$SUBAGENTS_LINE $MANAGED_END EOF )" @@ -277,6 +279,7 @@ $WORKSPACES_LINE $WORKSPACE_INFO_LINE $FOCUS_LINE $INTERNET_LINE +$SUBAGENTS_LINE $MANAGED_END EOF )" @@ -296,6 +299,7 @@ EOF -e '/^Фокус задачи:/d' \ -e '/^Issue AGENTS.md:/d' \ -e '/^Доступ к интернету:/d' \ + -e '/^Для решения задач обязательно используй subagents[.]/d' \ "$AGENTS_PATH" > "$TMP_AGENTS_PATH" if [[ -s "$TMP_AGENTS_PATH" ]]; then printf "\n" >> "$TMP_AGENTS_PATH" From 8ca463f648e48d4925bad860ce96588f94e35564 Mon Sep 17 00:00:00 2001 From: skulidropek <66840575+skulidropek@users.noreply.github.com> Date: Sat, 7 Mar 2026 16:15:02 +0000 Subject: [PATCH 2/2] fix(lint): keep codex prompt template under line budget --- .../lib/src/core/templates-entrypoint/codex.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/lib/src/core/templates-entrypoint/codex.ts b/packages/lib/src/core/templates-entrypoint/codex.ts index ec704e06..1a6950c5 100644 --- a/packages/lib/src/core/templates-entrypoint/codex.ts +++ b/packages/lib/src/core/templates-entrypoint/codex.ts @@ -248,9 +248,9 @@ elif [[ "$REPO_REF" == refs/pull/*/head ]]; then WORKSPACE_INFO_LINE="Контекст workspace: pull request ($REPO_REF)" fi fi +MANAGED_START="" +MANAGED_END="" if [[ ! -f "$AGENTS_PATH" ]]; then - MANAGED_START="" - MANAGED_END="" MANAGED_BLOCK="$(cat < - entrypointAgentsNoticeTemplate - .replaceAll("__CODEX_HOME__", config.codexHome) - .replaceAll("__SSH_USER__", config.sshUser) - .replaceAll("__TARGET_DIR__", config.targetDir) + entrypointAgentsNoticeTemplate.replaceAll("__CODEX_HOME__", config.codexHome).replaceAll( + "__SSH_USER__", + config.sshUser + ).replaceAll("__TARGET_DIR__", config.targetDir)