Добавить Cursor rules, init-cursor и скрипты настройки git remotes.

Канонический источник для клонирования в $HOME\CursorRules на новых ПК.
This commit is contained in:
2026-06-18 09:51:39 +10:00
parent ff87be5824
commit 3adf0c5211
18 changed files with 599 additions and 1 deletions
+28
View File
@@ -0,0 +1,28 @@
---
description: Перед работой — прочитай все применимые rules
alwaysApply: true
---
# Всегда читай правила
Перед **любой** задачей (код, git, push, релиз, ответ пользователю):
1. **Прочитай все применимые rules** — user rules, workspace `.cursor/rules/`, особенно с `alwaysApply: true`.
2. **Не начинай работу**, пока не понял ограничения из rules (git, Cursor в репо, version-bump, язык ответа и т.д.).
3. **При конфликте** запроса пользователя и rule — остановись, объясни конфликт, спроси подтверждение.
## Обязательные проверки по типу задачи
| Задача | Перед действием прочитай / проверь |
|--------|-------------------------------------|
| `git commit` / `push` | `no-cursor-in-repositories` — нет `.cursor/` в staged; `.gitignore` содержит `.cursor/` |
| Push в `home` | `gitea-home-api` — сначала API, потом SSH push |
| Bump версии | `version-bump` (+ `version-bump-rdp` / `version-bump-ssh` для агентских мониторов) |
| Коммит | `git log -1 --format=fuller` — нет `cursoragent`, `Co-authored-by: Cursor` |
## Если rule нарушен
- **Не push**, не «доделывай быстрее».
- Исправь (amend / filter / commit-tree), затем снова проверь лог.
Правила важнее скорости выполнения задачи.
+24
View File
@@ -0,0 +1,24 @@
---
description: Git, контекст файлов и формат ответов
alwaysApply: true
---
# Контекст и дисциплина
## Git
- **Не** `git commit` / **не** `git push` без явной команды пользователя.
- Перед commit: покажи `git diff --stat`, дождись подтверждения.
- Conventional Commits: `feat:`, `fix:`, `docs:`, `refactor:`.
## Контекст
- Файлы: `@`, открытые вкладки, явные пути — не сканируй весь репо без запроса.
- Не грузи файлы >500 строк без необходимости.
- Локальные копии; не качай пакеты/URL без ошибки сборки или явного запроса.
## Ответы
- Язык: **русский** (если пользователь не переключился).
- По коду — diff/фрагменты, не дублируй неизменённые блоки.
- Без воды, но достаточно полно для понимания (не обрезай сложные ответы до одной строки).
@@ -0,0 +1,18 @@
---
description: Bump версии RDP/SSH агентов — иначе ПК не обновятся
globs: **/Login_Monitor.ps1,**/Deploy-LoginMonitor.ps1,**/Sac-Client.ps1,**/ssh-monitor,**/sac-client.sh,**/update_ssh_monitor.sh
alwaysApply: false
---
# Версии агентских мониторов
Любая **существенная правка** без bump **не доедет** до компьютеров.
| Стек | Файлы | Поле / файл версии |
|------|-------|-------------------|
| RDP | `Login_Monitor.ps1`, `version.txt` | `$ScriptVersion` = `version.txt` |
| SSH | `ssh-monitor`, `version.txt` | `SSH_MONITOR_VERSION` = `version.txt` |
Подробности: `version-bump-rdp.mdc`, `version-bump-ssh.mdc`.
**SAC backend:** `backend/app/version.py` (`APP_VERSION`) — отдельный релиз, на агенты ПК не влияет.
+12
View File
@@ -0,0 +1,12 @@
---
description: Краткий C# без лишних токенов в выводе
globs: **/*.cs
alwaysApply: false
---
# C# — компактный вывод
- File-scoped namespaces, pattern matching, target-typed `new()`, primary constructors где уместно.
- Без XML-комментариев, `#region`, лишних `using`.
- Без `Console.WriteLine` / debug-log, если задача не про логирование.
- Expression-bodied members, где читаемо.
+37
View File
@@ -0,0 +1,37 @@
---
description: Gitea home — репо через API, не вручную в вебе
alwaysApply: true
---
# Gitea home (papatramp)
При push в **`home`**, настройке remotes или первом заливе — **через Gitea API**. Не проси создать репо вручную при `Push to create is not enabled` / `Cannot find repository`.
## Пути (локально, не в git-репо)
| Назначение | Путь |
|------------|------|
| Конфиг API (секреты) | `$HOME\CursorRules\local\papatramp-gitea.conf` |
| Remotes | `$HOME\CursorRules\scripts\Set-GitRemotes.ps1` |
| Создать репо на home | `$HOME\CursorRules\scripts\Ensure-GiteaHomeRepo.ps1` |
`init-cursor` копирует в репо **только `*.mdc`**.
SSH **`home`**: `ssh://git@git.papatramp.lan:2222/PapaTramp/<RepoName>.git`
## Алгоритм
1. `GET {GiteaApiUrl}/api/v1/repos/PapaTramp/{RepoName}` — Basic Auth из конфига.
2. Если **404** — `POST {GiteaApiUrl}/api/v1/user/repos` (или `.../orgs/PapaTramp/repos`), тело: `{ "name": "<RepoName>", "private": true, "auto_init": false }`.
Или: `Ensure-GiteaHomeRepo.ps1 -RepoName <RepoName>`.
3. `git push home <branch>` (SSH).
## Запрещено
- «Создайте репо в Gitea сами» без попытки API.
- Коммитить `papatramp-gitea.conf`, пароли, временные скрипты с credentials.
- HTTPS/`origin` для home вместо remote **`home`**.
## API недоступен
Сообщи, что LAN/API (`192.168.128.48:3000`) недоступен — VPN/сеть. Не отправляй в веб-интерфейс.
@@ -0,0 +1,50 @@
---
description: Не коммитить .cursor/ и IDE-файлы в git-репозитории
alwaysApply: true
---
# Cursor не попадает в git
В **коммитах и tracked-файлах** запрещено добавлять артефакты Cursor как IDE/агента.
## Запрещено коммитить
| Путь | Назначение |
|------|------------|
| **`.cursor/`** | rules, hooks, hooks.json, settings — только локально |
| **`.cursorignore`** | индексация IDE, не часть продукта |
| **`AGENTS.md`**, **`CURSOR.md`** | служебные файлы IDE |
Не создавать `.cursor/hooks/` с auto-push/auto-commit в репозиториях проекта.
## Обязательно в `.gitignore` каждого репо
```gitignore
.cursor/
.cursorignore
```
При работе в репозитории: если строк нет — **добавить в том же коммите**, что и код, **не** коммитить сами `.cursor/`.
После `init-cursor` (копирование rules в проект) — rules остаются **локально** и **не попадают** в `git add`.
## Перед `git commit` / `git push`
1. `git status` — в staged **нет** `.cursor/` и `.cursorignore`.
2. **Не** использовать `git add -A` / `git add .` без проверки.
3. Если `.cursor` уже в индексе: `git rm -r --cached .cursor` и `git rm --cached .cursorignore`.
4. `git ls-files` — не должно быть путей, начинающихся с `.cursor`.
## Запрещено в тексте коммитов и docs
- Упоминания Cursor IDE, Cursor Agent, cursoragent, cursor.com, cursor.sh.
- Trailers: Co-authored-by: Cursor, Made-with: Cursor.
## Разрешено (не путать с IDE)
- CSS cursor: pointer; poll cursor, DB cursor, Console.CursorLeft, MOEX analytics.cursor.
## Git / GitHub
- Author и committer — Andrey Lutsenko, без co-author Cursor.
- Перед push в public: git log --format=fuller, поиск cursoragent / Co-authored-by: Cursor.
+12
View File
@@ -0,0 +1,12 @@
---
description: Компактный PowerShell в выводе агента
globs: **/*.{ps1,psm1}
alwaysApply: false
---
# PowerShell — компактный вывод
- Pipeline вместо многострочных `foreach`, где читаемо.
- Без comment-based help и лишних `Write-Host`, если не просили UI/логи.
- Не дублируй длинные CLI-аргументы целиком — placeholder или переменная.
- Сохраняй стиль и алиасы **существующего файла**; не навязывай `gc`/`gci` если в проекте полные имена.
+12
View File
@@ -0,0 +1,12 @@
---
description: Компактный Python в выводе агента
globs: **/*.py
alwaysApply: false
---
# Python — компактный вывод
- Comprehensions, ternary — где читаемо; stdlib (`pathlib`, `json`, `subprocess`) без лишних зависимостей.
- Type hints — только если уже приняты в файле.
- Без docstrings/комментариев «для объяснения», если не просили.
- При правках — функция/метод, не весь файл; `# ... existing code ...` для неизменных блоков.
+20
View File
@@ -0,0 +1,20 @@
---
description: Bump version.txt и $ScriptVersion в RDP-login-monitor
globs: **/Login_Monitor.ps1,**/Deploy-LoginMonitor.ps1,**/Sac-Client.ps1,**/Exchange-MailSecurity.ps1,**/Watchdog_RDP_Monitor.ps1,**/version.txt
alwaysApply: false
---
# Bump RDP-login-monitor
Без bump **`Deploy-LoginMonitor.ps1` не обновит ПК** (`version.txt` vs `deployed_version.txt`).
## В том же коммите
1. `Login_Monitor.ps1` — `$ScriptVersion` (напр. `2.0.7-SAC`)
2. `version.txt` — **та же строка**
Patch: `2.0.6-SAC` → `2.0.7-SAC`. Крупный релиз — minor по смыслу.
`Exchange-MailSecurity.ps1` — свой `$ScriptVersion`, bump только при правке этого пакета.
После bump — публикация на NETLOGON.
+18
View File
@@ -0,0 +1,18 @@
---
description: Bump version.txt и SSH_MONITOR_VERSION в ssh-monitor
globs: **/ssh-monitor,**/sac-client.sh,**/update_ssh_monitor.sh,**/version.txt
alwaysApply: false
---
# Bump ssh-monitor
Без bump **`update_ssh_monitor.sh` не скопирует скрипт** (sha256).
## В том же коммите
1. `ssh-monitor` — `SSH_MONITOR_VERSION="X.Y.Z-SAC"`
2. `version.txt` — **та же строка**
Patch по умолчанию. `sac-client.sh` версию не задаёт — берёт из установленного `ssh-monitor`.
После push: `git pull` + `update_ssh_monitor.sh` на хостах.
+14
View File
@@ -0,0 +1,14 @@
---
description: Patch/minor bump версии при осмысленных правках
alwaysApply: true
---
# Bump версии
## Patch (обычно)
После осмысленного изменения — **+0.0.1** (`0.7.0` → `0.7.1`) в **том же коммите**.
## Minor / major
При заметном релизе — по смыслу (`0.6.x` → `0.7.0`). Не обязательно на каждую мелочь.