chore: update agent rules, skills and workflows

This commit is contained in:
Zuev
2026-02-19 20:33:47 +03:00
parent 64d85eab55
commit ed8668c599
7 changed files with 123 additions and 123 deletions

View File

@@ -2,45 +2,45 @@
trigger: always_on 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). - **Язык**: Смешанный (Java Backend + Web Frontend).
- **Public URL**: https://magistr.zuev.company - **Публичный 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. - **`backend/`**: Содержит исходный код бэкенд-приложения на **Java**.
- When working on API or server logic, focus here. - При работе с API или серверной логикой фокусируйтесь здесь.
- **`frontend/`**: Contains the frontend source code. Note the strict role separation: - **`frontend/`**: Содержит исходный код фронтенда. Обратите внимание на строгое разделение ролей:
- `frontend/admin/`: Code specific to the **Administrator** interface. - `frontend/admin/`: Код, специфичный для интерфейса **Администратора**.
- `frontend/teacher/`: Code specific to the **Teacher** interface. - `frontend/teacher/`: Код, специфичный для интерфейса **Преподавателя**.
- `frontend/student/`: Code specific to the **Student** interface. - `frontend/student/`: Код, специфичный для интерфейса **Студента**.
- *Constraint*: Do not mix logic between these folders unless creating a shared utility. - *Ограничение*: Не смешивайте логику между этими папками, если только не создаете общую утилиту.
- **`db/`**: Database configuration and data. - **`db/`**: Конфигурация и данные базы данных.
- `db/init/init.sql`: The SQL script responsible for **creating and initializing** the database schema (tables, initial data). - `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. - `compose.yaml`: Конфигурация Docker Compose. Этот файл определяет сервисы (бэкенд, БД, фронтенд-серверы) и то, как они работают вместе.
- `.env`: Environment variables. Contains sensitive config (DB passwords, ports, API keys). - `.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. - **`../caddy-proxy/`**: Находится на один уровень выше относительно корня проекта.
- **Role**: Reverse proxy handling traffic for `magistr.zuev.company`. - **Роль**: Реверс-прокси, обрабатывающий трафик для `magistr.zuev.company`.
- **`Caddyfile`**: Configuration for routing and SSL. - **`Caddyfile`**: Конфигурация для маршрутизации и SSL.
- **`compose.yaml`**: A separate Docker Compose file specifically for the proxy service. - **`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. 1. **Изменения в базе данных**: Если вам нужно изменить схему базы данных, вы должны обновить `db/init/init.sql`, чтобы изменения сохранялись при пересборке контейнера.
2. **Configuration**: If adding new configuration parameters, add them to `.env` and reference them in `compose.yaml` or the application code. 2. **Конфигурация**: Если вы добавляете новые параметры конфигурации, добавьте их в `.env` и сошлитесь на них в `compose.yaml` или коде приложения.
3. **Routing/Proxy**: If there are issues with the domain or external access, check the configuration in `../caddy-proxy/Caddyfile`. 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. - **Всегда отвечайте на русском**: Это строгое требование пользователя. Все объяснения, комментарии и взаимодействия должны быть на русском языке, если только не будет специально запрошено иное.

View File

@@ -1,30 +1,30 @@
--- ---
name: git-commit-formatter 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 ## Формат
`<type>[optional scope]: <description>` `<type>[optional scope]: <description>`
## Allowed Types ## Допустимые типы
- **feat**: A new feature - **feat**: Новая функциональность
- **fix**: A bug fix - **fix**: Исправление ошибки
- **docs**: Documentation only changes - **docs**: Изменения только в документации
- **style**: Changes that do not affect the meaning of the code (white-space, formatting, etc) - **style**: Изменения, не влияющие на смысл кода (пробелы, форматирование и т.д.)
- **refactor**: A code change that neither fixes a bug nor adds a feature - **refactor**: Изменение кода, которое не исправляет ошибку и не добавляет функциональность
- **perf**: A code change that improves performance - **perf**: Изменение кода, повышающее производительность
- **test**: Adding missing tests or correcting existing tests - **test**: Добавление недостающих тестов или исправление существующих
- **chore**: Changes to the build process or auxiliary tools and libraries such as documentation generation - **chore**: Изменения в процессе сборки или вспомогательных инструментах и библиотеках
## Instructions ## Инструкции
1. Analyze the changes to determine the primary `type`. 1. Проанализируйте изменения, чтобы определить основной тип (`type`).
2. Identify the `scope` if applicable (e.g., specific component or file). 2. Определите область (`scope`), если это применимо (например, конкретный компонент или файл).
3. Write a concise `description` in imperative mood (e.g., "add feature" not "added feature"). 3. Напишите краткое описание (`description`) в повелительном наклонении (например, "add feature", а не "added feature").
4. If there are breaking changes, add a footer starting with `BREAKING CHANGE:`. 4. Если есть критические изменения, добавьте подвал, начинающийся с `BREAKING CHANGE:`.
## Example ## Пример
`feat(auth): implement login with google` `feat(auth): implement login with google`

View File

@@ -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) ## Формат (Conventional Commits)
When writing a git commit message, you MUST follow this format: При написании сообщения коммита вы ДОЛЖНЫ следовать этому формату:
`<type>[optional scope]: <description>` `<type>[optional scope]: <description>`
### Allowed Types ### Допустимые типы
- **feat**: A new feature - **feat**: Новая функциональность
- **fix**: A bug fix - **fix**: Исправление ошибки
- **docs**: Documentation only changes - **docs**: Изменения только в документации
- **style**: Changes that do not affect the meaning of the code (white-space, formatting, etc) - **style**: Изменения, не влияющие на смысл кода (пробелы, форматирование и т.д.)
- **refactor**: A code change that neither fixes a bug nor adds a feature - **refactor**: Изменение кода, которое не исправляет ошибку и не добавляет функциональность
- **perf**: A code change that improves performance - **perf**: Изменение кода, повышающее производительность
- **test**: Adding missing tests or correcting existing tests - **test**: Добавление недостающих тестов или исправление существующих
- **chore**: Changes to the build process or auxiliary tools and libraries - **chore**: Изменения в процессе сборки или вспомогательных инструментах и библиотеках
### Instructions for Agent ### Инструкции для агента
1. Analyze the user's request or recent file changes to determine the `type` and `description`. 1. Проанализируйте запрос пользователя или недавние изменения файлов, чтобы определить тип (`type`) и описание (`description`).
2. Construct the commit message string (e.g., "fix(auth): correct token validation"). 2. Сформируйте строку сообщения коммита (например, "fix(auth): correct token validation").
3. **Execute** the bash script below, passing the generated message as an argument. 3. **Выполните** bash-скрипт ниже, передав сгенерированное сообщение в качестве аргумента.
## Execution ## Выполнение
Run the following command (replace .YOUR_MESSAGE. with the formatted string): Запустите следующую команду (замените "YOUR_MESSAGE" на отформатированную строку):
```bash ```bash
/bin/bash .agent/skills/git-push/scripts/push_changes.sh "YOUR_MESSAGE" /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"` `/bin/bash .agent/skills/git-push/scripts/push_changes.sh "fix(auth): resolve login error"`

View File

@@ -1,10 +1,5 @@
#!/bin/bash #!/bin/bash
# --- НАСТРОЙКИ (Проверь, чтобы совпадали с check_and_pull.sh) ---
SERVER="root@192.168.1.87"
REMOTE_PATH="/root/magistr/program"
# -------------------------------------------------------------
COMMIT_MSG="$1" COMMIT_MSG="$1"
# Проверка: если сообщение пустое, ругаемся # Проверка: если сообщение пустое, ругаемся
@@ -14,15 +9,14 @@ if [ -z "$COMMIT_MSG" ]; then
exit 1 exit 1
fi 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 add . && \ git commit -m "$COMMIT_MSG" && \
git commit -m \"$COMMIT_MSG\" && \ git push origin main
git push origin main"
# Проверяем код возврата последней команды # Проверяем код возврата
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "✅ Success! Changes pushed to remote." echo "✅ Success! Changes pushed to remote."
else else

View File

@@ -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 ```bash
/bin/bash .agent/skills/git-sync/scripts/check_and_pull.sh /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. 1. **Успех**: Если скрипт говорит "Successfully updated", сообщите пользователю, что проект обновлен до последней версии.
2. **No Updates**: If the script says "Up-to-date", tell the user no changes were found. 2. **Нет обновлений**: Если скрипт говорит "Up-to-date", сообщите пользователю, что изменений не найдено.
3. **Error**: If the script fails or reports conflicts, ask the user to check git status manually. 3. **Ошибка**: Если скрипт завершился с ошибкой или сообщает о конфликтах, попросите пользователя проверить статус git вручную.

View File

@@ -1,24 +1,17 @@
#!/bin/bash #!/bin/bash
# --- НАСТРОЙКИ --- echo "📡 Checking for updates locally..."
SERVER="root@192.168.1.87"
REMOTE_PATH="/root/magistr/program"
# -----------------
echo "📡 Connecting to remote server ($SERVER)..." # 1. Запускаем fetch локально
git fetch origin
# 1. Запускаем fetch прямо на сервере
# Флаг -o BatchMode=yes запрещает спрашивать пароль (чтобы скрипт не завис)
ssh -o BatchMode=yes -o ConnectTimeout=10 "$SERVER" "cd $REMOTE_PATH && git fetch origin"
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "❌ Connection failed." echo "❌ Fetch failed. Check your internet connection and git remote settings."
echo "Make sure SSH keys are set up and the server is reachable."
exit 1 exit 1
fi fi
# 2. Проверяем количество новых коммитов (HEAD..@{u}) # 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 if [ -z "$BEHIND_COUNT" ]; then
@@ -28,16 +21,16 @@ fi
# 3. Логика обновления # 3. Логика обновления
if [ "$BEHIND_COUNT" -gt 0 ]; then 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 на сервере # Выполняем git pull
ssh "$SERVER" "cd $REMOTE_PATH && git pull" git pull
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "✅ Server successfully updated!" echo "✅ Successfully updated!"
else else
echo "❌ Update failed (merge conflicts?)." echo "❌ Update failed (merge conflicts?)."
fi fi
else else
echo "✨ Server is already up to date." echo "✨ Already up to date."
fi fi

View File

@@ -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"
```