From ed8668c599725e5bb9066f00990811b197381e08 Mon Sep 17 00:00:00 2001 From: Zuev Date: Thu, 19 Feb 2026 20:33:47 +0300 Subject: [PATCH] chore: update agent rules, skills and workflows --- .agent/rules/main.md | 64 +++++++++---------- .agent/skills/git-commit-formatter/SKILL.md | 38 +++++------ .agent/skills/git-push/SKILL.md | 56 ++++++++-------- .../skills/git-push/scripts/push_changes.sh | 18 ++---- .agent/skills/git-sync/SKILL.md | 30 ++++----- .../skills/git-sync/scripts/check_and_pull.sh | 27 +++----- .agent/workflows/deploy-server.md | 13 ++++ 7 files changed, 123 insertions(+), 123 deletions(-) create mode 100644 .agent/workflows/deploy-server.md diff --git a/.agent/rules/main.md b/.agent/rules/main.md index 7054edf..e27a4c3 100644 --- a/.agent/rules/main.md +++ b/.agent/rules/main.md @@ -2,45 +2,45 @@ trigger: always_on --- -# Project Context: University Schedule System +# Контекст проекта: Система расписания университета -## Project Overview -This project is a university scheduling system website. -- **Role**: Educational platform for managing schedules. -- **Language**: Mixed (Java Backend + Web Frontend). -- **Public URL**: https://magistr.zuev.company +## Обзор проекта +Этот проект представляет собой веб-сайт системы управления университетским расписанием. +- **Роль**: Образовательная платформа для управления расписанием. +- **Язык**: Смешанный (Java Backend + Web Frontend). +- **Публичный URL**: https://magistr.zuev.company -## Directory Structure & Responsibilities -The project follows a specific folder structure. You must adhere to these paths: +## Структура директорий и обязанности +Проект следует определенной структуре папок. Вы должны придерживаться этих путей: -- **`backend/`**: Contains the **Java** backend application source code. - - When working on API or server logic, focus here. +- **`backend/`**: Содержит исходный код бэкенд-приложения на **Java**. + - При работе с API или серверной логикой фокусируйтесь здесь. -- **`frontend/`**: Contains the frontend source code. Note the strict role separation: - - `frontend/admin/`: Code specific to the **Administrator** interface. - - `frontend/teacher/`: Code specific to the **Teacher** interface. - - `frontend/student/`: Code specific to the **Student** interface. - - *Constraint*: Do not mix logic between these folders unless creating a shared utility. +- **`frontend/`**: Содержит исходный код фронтенда. Обратите внимание на строгое разделение ролей: + - `frontend/admin/`: Код, специфичный для интерфейса **Администратора**. + - `frontend/teacher/`: Код, специфичный для интерфейса **Преподавателя**. + - `frontend/student/`: Код, специфичный для интерфейса **Студента**. + - *Ограничение*: Не смешивайте логику между этими папками, если только не создаете общую утилиту. -- **`db/`**: Database configuration and data. - - `db/init/init.sql`: The SQL script responsible for **creating and initializing** the database schema (tables, initial data). +- **`db/`**: Конфигурация и данные базы данных. + - `db/init/init.sql`: SQL-скрипт, отвечающий за **создание и инициализацию** схемы базы данных (таблицы, начальные данные). -- **Root Files**: - - `compose.yaml`: The Docker Compose configuration. This file defines the services (backend, db, frontend servers) and how they run together. - - `.env`: Environment variables. Contains sensitive config (DB passwords, ports, API keys). +- **Корневые файлы**: + - `compose.yaml`: Конфигурация Docker Compose. Этот файл определяет сервисы (бэкенд, БД, фронтенд-серверы) и то, как они работают вместе. + - `.env`: Переменные окружения. Содержит конфиденциальные настройки (пароли БД, порты, ключи API). -## External Dependencies (Parent Directory) -Some infrastructure components are located outside the project root: +## Внешние зависимости (родительская директория) +Некоторые компоненты инфраструктуры расположены за пределами корня проекта: -- **`../caddy-proxy/`**: Located one level up relative to the project root. - - **Role**: Reverse proxy handling traffic for `magistr.zuev.company`. - - **`Caddyfile`**: Configuration for routing and SSL. - - **`compose.yaml`**: A separate Docker Compose file specifically for the proxy service. +- **`../caddy-proxy/`**: Находится на один уровень выше относительно корня проекта. + - **Роль**: Реверс-прокси, обрабатывающий трафик для `magistr.zuev.company`. + - **`Caddyfile`**: Конфигурация для маршрутизации и SSL. + - **`compose.yaml`**: Отдельный файл Docker Compose специально для службы прокси. -## Workflow Guidelines -1. **Database Changes**: If you need to modify the database schema, you must update `db/init/init.sql` so the changes persist when the container is rebuilt. -2. **Configuration**: If adding new configuration parameters, add them to `.env` and reference them in `compose.yaml` or the application code. -3. **Routing/Proxy**: If there are issues with the domain or external access, check the configuration in `../caddy-proxy/Caddyfile`. +## Рекомендации по рабочему процессу +1. **Изменения в базе данных**: Если вам нужно изменить схему базы данных, вы должны обновить `db/init/init.sql`, чтобы изменения сохранялись при пересборке контейнера. +2. **Конфигурация**: Если вы добавляете новые параметры конфигурации, добавьте их в `.env` и сошлитесь на них в `compose.yaml` или коде приложения. +3. **Маршрутизация/Прокси**: Если возникают проблемы с доменом или внешним доступом, проверьте конфигурацию в `../caddy-proxy/Caddyfile`. -## Language Preference -- **Always answer in Russian**: This is a strict requirement from the user. All explanations, comments, and interactions must be in Russian unless specifically asked otherwise. \ No newline at end of file +## Языковые предпочтения +- **Всегда отвечайте на русском**: Это строгое требование пользователя. Все объяснения, комментарии и взаимодействия должны быть на русском языке, если только не будет специально запрошено иное. \ No newline at end of file diff --git a/.agent/skills/git-commit-formatter/SKILL.md b/.agent/skills/git-commit-formatter/SKILL.md index bc24790..d57aa1d 100644 --- a/.agent/skills/git-commit-formatter/SKILL.md +++ b/.agent/skills/git-commit-formatter/SKILL.md @@ -1,30 +1,30 @@ --- name: git-commit-formatter -description: Formats git commit messages according to Conventional Commits specification. Use this when the user asks to commit changes or write a commit message. +description: Форматирует сообщения коммитов git в соответствии со спецификацией Conventional Commits. Используйте этот навык, когда пользователь просит закоммитить изменения или написать сообщение к коммиту. --- -# Git Commit Formatter Skill +# Навык форматирования коммитов Git -When writing a git commit message, you MUST follow the Conventional Commits specification. +При написании сообщения коммита вы ДОЛЖНЫ следовать спецификации Conventional Commits. -## Format +## Формат `[optional scope]: ` -## Allowed Types -- **feat**: A new feature -- **fix**: A bug fix -- **docs**: Documentation only changes -- **style**: Changes that do not affect the meaning of the code (white-space, formatting, etc) -- **refactor**: A code change that neither fixes a bug nor adds a feature -- **perf**: A code change that improves performance -- **test**: Adding missing tests or correcting existing tests -- **chore**: Changes to the build process or auxiliary tools and libraries such as documentation generation +## Допустимые типы +- **feat**: Новая функциональность +- **fix**: Исправление ошибки +- **docs**: Изменения только в документации +- **style**: Изменения, не влияющие на смысл кода (пробелы, форматирование и т.д.) +- **refactor**: Изменение кода, которое не исправляет ошибку и не добавляет функциональность +- **perf**: Изменение кода, повышающее производительность +- **test**: Добавление недостающих тестов или исправление существующих +- **chore**: Изменения в процессе сборки или вспомогательных инструментах и библиотеках -## Instructions -1. Analyze the changes to determine the primary `type`. -2. Identify the `scope` if applicable (e.g., specific component or file). -3. Write a concise `description` in imperative mood (e.g., "add feature" not "added feature"). -4. If there are breaking changes, add a footer starting with `BREAKING CHANGE:`. +## Инструкции +1. Проанализируйте изменения, чтобы определить основной тип (`type`). +2. Определите область (`scope`), если это применимо (например, конкретный компонент или файл). +3. Напишите краткое описание (`description`) в повелительном наклонении (например, "add feature", а не "added feature"). +4. Если есть критические изменения, добавьте подвал, начинающийся с `BREAKING CHANGE:`. -## Example +## Пример `feat(auth): implement login with google` \ No newline at end of file diff --git a/.agent/skills/git-push/SKILL.md b/.agent/skills/git-push/SKILL.md index 5c88c3d..db9b84f 100644 --- a/.agent/skills/git-push/SKILL.md +++ b/.agent/skills/git-push/SKILL.md @@ -1,41 +1,41 @@ -# Git Push & Format Skill +# Навык Git Push и форматирования -## Description -Formats git commit messages according to Conventional Commits specification and pushes changes to the remote repository. Use this when the user asks to commit changes, save progress, or upload code. +## Описание +Форматирует сообщения коммитов git в соответствии со спецификацией Conventional Commits и отправляет изменения в удаленный репозиторий. Используйте этот навык, когда пользователь просит закоммитить изменения, сохранить прогресс или отправить код. -## Triggers -- "Запушь изменения" (Push changes) -- "Сделай коммит" (Make a commit) -- "Сохрани в гит" (Save to git) -- "Сделай пуш" (Make a push) -- "Запушь" (Push) +## Триггеры +- "Запушь изменения" +- "Сделай коммит" +- "Сохрани в гит" +- "Сделай пуш" +- "Запушь" -## Format (Conventional Commits) -When writing a git commit message, you MUST follow this format: +## Формат (Conventional Commits) +При написании сообщения коммита вы ДОЛЖНЫ следовать этому формату: `[optional scope]: ` -### Allowed Types -- **feat**: A new feature -- **fix**: A bug fix -- **docs**: Documentation only changes -- **style**: Changes that do not affect the meaning of the code (white-space, formatting, etc) -- **refactor**: A code change that neither fixes a bug nor adds a feature -- **perf**: A code change that improves performance -- **test**: Adding missing tests or correcting existing tests -- **chore**: Changes to the build process or auxiliary tools and libraries +### Допустимые типы +- **feat**: Новая функциональность +- **fix**: Исправление ошибки +- **docs**: Изменения только в документации +- **style**: Изменения, не влияющие на смысл кода (пробелы, форматирование и т.д.) +- **refactor**: Изменение кода, которое не исправляет ошибку и не добавляет функциональность +- **perf**: Изменение кода, повышающее производительность +- **test**: Добавление недостающих тестов или исправление существующих +- **chore**: Изменения в процессе сборки или вспомогательных инструментах и библиотеках -### Instructions for Agent -1. Analyze the user's request or recent file changes to determine the `type` and `description`. -2. Construct the commit message string (e.g., "fix(auth): correct token validation"). -3. **Execute** the bash script below, passing the generated message as an argument. +### Инструкции для агента +1. Проанализируйте запрос пользователя или недавние изменения файлов, чтобы определить тип (`type`) и описание (`description`). +2. Сформируйте строку сообщения коммита (например, "fix(auth): correct token validation"). +3. **Выполните** bash-скрипт ниже, передав сгенерированное сообщение в качестве аргумента. -## Execution -Run the following command (replace .YOUR_MESSAGE. with the formatted string): +## Выполнение +Запустите следующую команду (замените "YOUR_MESSAGE" на отформатированную строку): ```bash /bin/bash .agent/skills/git-push/scripts/push_changes.sh "YOUR_MESSAGE" ``` -## Example Usage -If user says "I fixed the login bug", you execute: +## Пример использования +Если пользователь говорит "Я исправил ошибку входа", вы выполняете: `/bin/bash .agent/skills/git-push/scripts/push_changes.sh "fix(auth): resolve login error"` \ No newline at end of file diff --git a/.agent/skills/git-push/scripts/push_changes.sh b/.agent/skills/git-push/scripts/push_changes.sh index 21409e9..d8cdc9f 100755 --- a/.agent/skills/git-push/scripts/push_changes.sh +++ b/.agent/skills/git-push/scripts/push_changes.sh @@ -1,10 +1,5 @@ #!/bin/bash -# --- НАСТРОЙКИ (Проверь, чтобы совпадали с check_and_pull.sh) --- -SERVER="root@192.168.1.87" -REMOTE_PATH="/root/magistr/program" -# ------------------------------------------------------------- - COMMIT_MSG="$1" # Проверка: если сообщение пустое, ругаемся @@ -14,15 +9,14 @@ if [ -z "$COMMIT_MSG" ]; then exit 1 fi -echo "🚀 Starting Push Sequence to $SERVER..." +echo "🚀 Starting Local Push Sequence..." -# Выполняем цепочку команд на сервере одной строкой -ssh -o BatchMode=yes "$SERVER" "export LANG=C.UTF-8 && cd $REMOTE_PATH && \ - git add . && \ - git commit -m \"$COMMIT_MSG\" && \ - git push origin main" +# Выполняем цепочку команд локально +git add . && \ +git commit -m "$COMMIT_MSG" && \ +git push origin main -# Проверяем код возврата последней команды +# Проверяем код возврата if [ $? -eq 0 ]; then echo "✅ Success! Changes pushed to remote." else diff --git a/.agent/skills/git-sync/SKILL.md b/.agent/skills/git-sync/SKILL.md index 7d6263e..9848bfe 100644 --- a/.agent/skills/git-sync/SKILL.md +++ b/.agent/skills/git-sync/SKILL.md @@ -1,23 +1,23 @@ -# Git Sync Skill +# Навык Git Sync -## Description -This skill allows the agent to check the remote Git repository for updates. It automatically pulls changes if a new version is available on the remote server. +## Описание +Этот навык позволяет агенту проверять удаленный Git-репозиторий на наличие обновлений. Он автоматически подтягивает изменения, если на удаленном сервере доступна новая версия. -## Triggers -Activate this skill when the user asks: -- "Проверь обновления" (Check for updates) -- "Загрузи новую версию" (Download new version) -- "Синхронизируй с гитом" (Sync with git) -- "Есть ли изменения?" (Are there changes?) +## Триггеры +Активируйте этот навык, когда пользователь спрашивает: +- "Проверь обновления" +- "Загрузи новую версию" +- "Синхронизируй с гитом" +- "Есть ли изменения?" -## Execution -To run this skill, execute the bash script: +## Выполнение +Для запуска этого навыка выполните bash-скрипт: ```bash /bin/bash .agent/skills/git-sync/scripts/check_and_pull.sh ``` -## Response Guidelines -1. **Success**: If the script says "Successfully updated", inform the user the project is now on the latest version. -2. **No Updates**: If the script says "Up-to-date", tell the user no changes were found. -3. **Error**: If the script fails or reports conflicts, ask the user to check git status manually. \ No newline at end of file +## Рекомендации по ответам +1. **Успех**: Если скрипт говорит "Successfully updated", сообщите пользователю, что проект обновлен до последней версии. +2. **Нет обновлений**: Если скрипт говорит "Up-to-date", сообщите пользователю, что изменений не найдено. +3. **Ошибка**: Если скрипт завершился с ошибкой или сообщает о конфликтах, попросите пользователя проверить статус git вручную. \ No newline at end of file diff --git a/.agent/skills/git-sync/scripts/check_and_pull.sh b/.agent/skills/git-sync/scripts/check_and_pull.sh index 71e8152..785cd89 100644 --- a/.agent/skills/git-sync/scripts/check_and_pull.sh +++ b/.agent/skills/git-sync/scripts/check_and_pull.sh @@ -1,24 +1,17 @@ #!/bin/bash -# --- НАСТРОЙКИ --- -SERVER="root@192.168.1.87" -REMOTE_PATH="/root/magistr/program" -# ----------------- +echo "📡 Checking for updates locally..." -echo "📡 Connecting to remote server ($SERVER)..." - -# 1. Запускаем fetch прямо на сервере -# Флаг -o BatchMode=yes запрещает спрашивать пароль (чтобы скрипт не завис) -ssh -o BatchMode=yes -o ConnectTimeout=10 "$SERVER" "cd $REMOTE_PATH && git fetch origin" +# 1. Запускаем fetch локально +git fetch origin if [ $? -ne 0 ]; then - echo "❌ Connection failed." - echo "Make sure SSH keys are set up and the server is reachable." + echo "❌ Fetch failed. Check your internet connection and git remote settings." exit 1 fi # 2. Проверяем количество новых коммитов (HEAD..@{u}) -BEHIND_COUNT=$(ssh "$SERVER" "cd $REMOTE_PATH && git rev-list --count HEAD..@{u} 2>/dev/null") +BEHIND_COUNT=$(git rev-list --count HEAD..@{u} 2>/dev/null) # Если переменная пустая — значит ошибка в гите if [ -z "$BEHIND_COUNT" ]; then @@ -28,16 +21,16 @@ fi # 3. Логика обновления if [ "$BEHIND_COUNT" -gt 0 ]; then - echo "⬇️ Found $BEHIND_COUNT new commit(s). Pulling on server..." + echo "⬇️ Found $BEHIND_COUNT new commit(s). Pulling changes..." - # Выполняем git pull на сервере - ssh "$SERVER" "cd $REMOTE_PATH && git pull" + # Выполняем git pull + git pull if [ $? -eq 0 ]; then - echo "✅ Server successfully updated!" + echo "✅ Successfully updated!" else echo "❌ Update failed (merge conflicts?)." fi else - echo "✨ Server is already up to date." + echo "✨ Already up to date." fi \ No newline at end of file diff --git a/.agent/workflows/deploy-server.md b/.agent/workflows/deploy-server.md new file mode 100644 index 0000000..08d425b --- /dev/null +++ b/.agent/workflows/deploy-server.md @@ -0,0 +1,13 @@ +--- +description: Деплой на удаленный сервер 192.168.1.87 (Git Pull + Docker Build) +--- + +# Развертывание на сервере 192.168.1.87 + +Этот воркфлоу позволяет быстро обновить проект на удаленном сервере после того, как вы запушили изменения в Git. + +// turbo-all +1. Синхронизировать код и перезапустить контейнеры: +```bash +ssh root@192.168.1.87 "cd /root/magistr/program/ && git fetch origin main && git reset --hard origin/main && docker compose up -d --build" +```