Files
homebox_lens/agent_promts/GITEA_ISSUE_DRIVEN_PROTOCOL.xml
2025-09-05 10:52:57 +03:00

122 lines
11 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<GITEA_ISSUE_DRIVEN_PROTOCOL>
<META>
<PURPOSE>Определить единый, отказоустойчивый и полностью автоматизированный протокол для межагентной коммуникации, постановки задач и управления жизненным циклом кода. Gitea служит центральной коммуникационной шиной и системой контроля версий. Взаимодействие с Gitea осуществляется через утилиту командной строки 'gitea-client.zsh'.</PURPOSE>
<VERSION>3.1</VERSION>
</META>
<CORE_PRINCIPLES>
<PRINCIPLE name="Gitea_As_The_System_Bus">
<DESCRIPTION>Gitea Issues и Pull Requests являются единственным каналом для асинхронной коммуникации между AI-агентами. Взаимодействие происходит через 'gitea-client.zsh'.</DESCRIPTION>
</PRINCIPLE>
<PRINCIPLE name="Human_Out_Of_The_Loop">
<DESCRIPTION>Человек взаимодействует с системой исключительно через диалог с Агентом-Архитектором. Gitea используется как "закулисный" механизм, и человек не должен создавать, комментировать или назначать Issues вручную.</DESCRIPTION>
</PRINCIPLE>
<PRINCIPLE name="Pull_Request_As_The_Unit_Of_Work">
<DESCRIPTION>Конечным продуктом работы Агента-Разработчика является не просто ветка с кодом, а формальный Pull Request (PR). Именно PR является объектом верификации для QA-Агента и точкой слияния в основную ветку.</DESCRIPTION>
</PRINCIPLE>
<PRINCIPLE name="Traceability_Is_Paramount">
<DESCRIPTION>Каждое действие в системе должно быть отслеживаемым. Это достигается за счет неразрывной связи: `GiteaIssue ID` <-> `Имя ветки` <-> `Pull Request ID`.</DESCRIPTION>
</PRINCIPLE>
<PRINCIPLE name="Initial_Check">
<DESCRIPTION>Перед началом работы агент должен убедиться, что он аутентифицирован под своей ролью, используя `gitea-client.zsh <ROLE> whoami` или аналогичную команду.</DESCRIPTION>
</PRINCIPLE>
</CORE_PRINCIPLES>
<CLI_COMMANDS name="gitea-client.zsh">
<COMMAND name="create-task">
<SYNTAX>`./gitea-client.zsh {role} create-task --title "{title}" --body "{body}" --assignee "{assignee}" --labels "{labels}"`</SYNTAX>
<DESCRIPTION>Создает новую задачу (Issue) в Gitea.</DESCRIPTION>
</COMMAND>
<COMMAND name="find-tasks">
<SYNTAX>`./gitea-client.zsh {role} find-tasks --type "{type_label}"`</SYNTAX>
<DESCRIPTION>Ищет открытые задачи с меткой `status::pending` и указанным типом.</DESCRIPTION>
</COMMAND>
<COMMAND name="update-task-status">
<SYNTAX>`./gitea-client.zsh {role} update-task-status --issue-id {id} --old "{old_status}" --new "{new_status}"`</SYNTAX>
<DESCRIPTION>Изменяет статус задачи путем замены меток.</DESCRIPTION>
</COMMAND>
<COMMAND name="create-pr">
<SYNTAX>`./gitea-client.zsh {role} create-pr --title "{title}" --body "{body}" --head "{branch_name}"`</SYNTAX>
<DESCRIPTION>Создает Pull Request.</DESCRIPTION>
</COMMAND>
<COMMAND name="merge-and-complete">
<SYNTAX>`./gitea-client.zsh {role} merge-and-complete --issue-id {id} --pr-id {pr_id} --branch "{branch_name}"`</SYNTAX>
<DESCRIPTION>Атомарная операция: сливает PR, удаляет ветку и закрывает связанную задачу.</DESCRIPTION>
</COMMAND>
<COMMAND name="return-to-dev">
<SYNTAX>`./gitea-client.zsh {role} return-to-dev --issue-id {id} --pr-id {pr_id} --report "{report_body}"`</SYNTAX>
<DESCRIPTION>Атомарная операция: отклоняет PR, добавляет отчет о дефектах в задачу и возвращает ее разработчику.</DESCRIPTION>
</COMMAND>
</CLI_COMMANDS>
<SYSTEM_SPECIFICATIONS>
<SPECIFICATION name="Label_Taxonomy">
<DESCRIPTION>Строгая система меток для управления статусом и типом задач.</DESCRIPTION>
<SCHEMA>
<CATEGORY prefix="status::">
<LABEL name="status::pending">Задача ожидает исполнителя.</LABEL>
<LABEL name="status::in-progress">Задача в работе.</LABEL>
<LABEL name="status::completed">Задача успешно выполнена и закрыта.</LABEL>
<LABEL name="status::failed">Выполнение провалено, задача возвращена на доработку.</LABEL>
</CATEGORY>
<CATEGORY prefix="type::">
<LABEL name="type::development">Задача для Агента-Разработчика.</LABEL>
<LABEL name="type::quality-assurance">Задача для QA-Агента.</LABEL>
<LABEL name="type::documentation">Задача для Агента Документации.</LABEL>
<LABEL name="type::linting">Задача для Агента Семантической Разметки.</LABEL>
</CATEGORY>
</SCHEMA>
</SPECIFICATION>
<SPECIFICATION name="Branch_Naming_Convention">
<DESCRIPTION>Единый формат для всех веток, создаваемых AI-агентами.</DESCRIPTION>
<TEMPLATE>`{type}/{issue-id}/{kebab-case-description}`</TEMPLATE>
<COMPONENTS>
<COMPONENT name="type">'feature' для новой разработки, 'fix' для исправлений, 'chore' для технических задач.</COMPONENT>
<COMPONENT name="issue-id">Номер Gitea Issue, инициировавшего создание ветки.</COMPONENT>
<COMPONENT name="kebab-case-description">Машиночитаемый заголовок Issue.</COMPONENT>
</COMPONENTS>
<EXAMPLE>`feature/123/implement-user-authentication-flow`</EXAMPLE>
</SPECIFICATION>
</SYSTEM_SPECIFICATIONS>
<MASTER_WORKFLOW name="Automated_Feature_Lifecycle">
<STEP id="1" name="Initiation (Human <-> Architect)">
<ACTION>Человек в диалоге ставит цель Архитектору. Архитектор проводит анализ, предлагает план и получает вербальное одобрение "Выполняй".</ACTION>
</STEP>
<STEP id="2" name="Chain_Genesis (Architect -> Gitea -> Developer)">
<ACTION>Архитектор создает **первое Issue** в Gitea.</ACTION>
<CLI_CALL>`./gitea-client.zsh agent-architect create-task --title "[ARCHITECT -> DEV] {Feature Summary}" --body "{XML Work Orders}" --assignee "agent-developer" --labels "status::pending,type::development"`</CLI_CALL>
</STEP>
<STEP id="3" name="Development_And_PR_Creation (Developer)">
<ACTION>1. Разработчик находит Issue, выполнив `./gitea-client.zsh agent-developer find-tasks --type "type::development"`.</ACTION>
<ACTION>2. Меняет его статус на `status::in-progress`.</ACTION>
<CLI_CALL>`./gitea-client.zsh agent-developer update-task-status --issue-id {issue-id} --old "status::pending" --new "status::in-progress"`</CLI_CALL>
<ACTION>3. Создает ветку согласно **Branch Naming Convention**.</ACTION>
<ACTION>4. Реализует код, коммитит его, проверяет сборку (`./gradlew build`).</ACTION>
<ACTION>5. Создает **Pull Request** в Gitea.</ACTION>
<CLI_CALL>`./gitea-client.zsh agent-developer create-pr --title "PR for Issue #{issue-id}: {Feature Summary}" --body "Fixes #{issue-id}" --head "{branch_name}"`</CLI_CALL>
<ACTION>6. Создает **новое Issue** для QA-Агента.</ACTION>
<CLI_CALL>`./gitea-client.zsh agent-developer create-task --title "[DEV -> QA] Verify & Merge PR #{pr-id}" --body "<PULL_REQUEST_ID>{pr-id}</PULL_REQUEST_ID>" --assignee "agent-qa" --labels "status::pending,type::quality-assurance"`</CLI_CALL>
<ACTION>7. Закрывает **свой** Issue (этот шаг теперь является частью `merge-and-complete` у QA-агента, но может быть и отдельным действием, если требуется).</ACTION>
</STEP>
<STEP id="4" name="Verification_And_Merge (QA Agent)">
<ACTION>1. QA-Агент находит Issue, выполнив `./gitea-client.zsh agent-qa find-tasks --type "type::quality-assurance"`.</ACTION>
<ACTION>2. Меняет статус на `status::in-progress`.</ACTION>
<CLI_CALL>`./gitea-client.zsh agent-qa update-task-status --issue-id {issue-id} --old "status::pending" --new "status::in-progress"`</CLI_CALL>
<ACTION>3. Извлекает `PULL_REQUEST_ID` и проводит полный аудит кода в PR.</ACTION>
<ACTION>4. **ЕСЛИ УСПЕШНО:**</ACTION>
<SUCCESS_PATH>
<SUB_STEP>a. Выполняет атомарную операцию слияния, удаления ветки и закрытия задачи.</SUB_STEP>
<CLI_CALL>`./gitea-client.zsh agent-qa merge-and-complete --issue-id {issue-id} --pr-id {pr-id} --branch "{branch_name}"`</CLI_CALL>
</SUCCESS_PATH>
<ACTION>5. **ЕСЛИ ПРОВАЛ:**</ACTION>
<FAILURE_PATH>
<SUB_STEP>a. Выполняет атомарную операцию отклонения PR и возврата задачи разработчику.</SUB_STEP>
<CLI_CALL>`./gitea-client.zsh agent-qa return-to-dev --issue-id {issue-id} --pr-id {pr-id} --report "{defect_report}"`</CLI_CALL>
</FAILURE_PATH>
</STEP>
</MASTER_WORKFLOW>
</GITEA_ISSUE_DRIVEN_PROTOCOL>