Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d832f7f63e | |||
| 40aee1d3ef |
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
description: Перед работой — прочитай все применимые rules
|
||||
alwaysApply: true
|
||||
---
|
||||
@@ -15,8 +15,10 @@ alwaysApply: true
|
||||
|
||||
| Задача | Перед действием прочитай / проверь |
|
||||
|--------|-------------------------------------|
|
||||
| Начало работы / новый ПК | `machine-connectivity-bootstrap` — SSH, Gitea, GitHub, LAN; при отсутствии — `install.ps1` / bootstrap |
|
||||
| `git commit` / `push` | `no-cursor-in-repositories` — нет `.cursor/` в staged; `.gitignore` содержит `.cursor/` |
|
||||
| Push в `home` | `gitea-home-api` — сначала API, потом SSH push |
|
||||
| Создание/правка .ps1, .sh, runtime JSON | ile-encoding — UTF-8 BOM+CRLF (PS), UTF-8+LF (sh), spool без BOM |
|
||||
| Bump версии | `version-bump` (+ `version-bump-rdp` / `version-bump-ssh` для агентских мониторов) |
|
||||
| Коммит | `git log -1 --format=fuller` — нет `cursoragent`, `Co-authored-by: Cursor` |
|
||||
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
description: Кодировка и переносы строк для Windows (PowerShell) и Linux (shell)
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
# Кодировка файлов (Windows / Linux)
|
||||
|
||||
Исходники и runtime-текст должны сохраняться в кодировке, которую ожидает среда выполнения. Неверная кодировка ломает парсинг PowerShell/bash, regex по JSON и spool-файлы на диске.
|
||||
|
||||
## Windows — PowerShell (`.ps1`, `.psm1`, `.psd1`)
|
||||
|
||||
| Параметр | Значение |
|
||||
|----------|----------|
|
||||
| Кодировка исходников | **UTF-8 with BOM** (PS 5.1, кириллица в комментариях и строках) |
|
||||
| Переносы | **CRLF** |
|
||||
| EditorConfig | `charset = utf-8-bom`, `end_of_line = crlf` для `[*.ps1]` |
|
||||
|
||||
- Не сохранять `.ps1` как UTF-16 LE/BE, CP1251 или «Unicode» без явной необходимости.
|
||||
- JSON и текст на диск для API/SAC/spool: **UTF-8 без BOM** — `[System.IO.File]::WriteAllText($path, $text, (New-Object System.Text.UTF8Encoding $false))`.
|
||||
- Чтение legacy/spool: UTF-8 → UTF-16 LE (BOM `FF FE` или `{` + `0x00` в начале файла).
|
||||
|
||||
## Linux — shell (`.sh`, исполняемые скрипты)
|
||||
|
||||
| Параметр | Значение |
|
||||
|----------|----------|
|
||||
| Кодировка | **UTF-8 без BOM** |
|
||||
| Переносы | **LF** |
|
||||
| Shebang | `#!/usr/bin/env bash` или `#!/bin/sh` |
|
||||
|
||||
- Не коммитить `.sh` с **CRLF** и **BOM** — на Linux: `$'\r': command not found`, сбой shebang.
|
||||
- После правки на Windows: `dos2unix path/to/script.sh` или в `.gitattributes`: `*.sh text eol=lf`.
|
||||
|
||||
## Python, JSON, конфиги в git
|
||||
|
||||
| Тип | Кодировка | EOL |
|
||||
|-----|-----------|-----|
|
||||
| `*.py` | UTF-8 без BOM | LF (или по `.editorconfig` проекта) |
|
||||
| `*.json`, `*.yaml`, `*.md` | UTF-8 без BOM | LF или CRLF по проекту |
|
||||
| `*.vue`, `*.ts`, `*.js` | UTF-8 без BOM | LF |
|
||||
|
||||
## Обязательно в репозитории
|
||||
|
||||
- **`.editorconfig`** — явные правила для `*.ps1`, `*.sh`, `*.py`.
|
||||
- **`.gitattributes`** — минимум: `*.ps1 text eol=crlf`, `*.sh text eol=lf`.
|
||||
|
||||
## Агент
|
||||
|
||||
1. Перед записью файла — проверить `.editorconfig` / `.gitattributes` **текущего проекта**.
|
||||
2. Если их нет — следовать таблицам выше.
|
||||
3. Не перекодировать бинарники и файлы, которые уже корректны.
|
||||
4. При правке PowerShell, который пишет файлы на диск (`spool`, логи, экспорт) — явно задавать UTF-8 без BOM, если файл читает другой процесс или Linux.
|
||||
@@ -0,0 +1,88 @@
|
||||
---
|
||||
description: Новый или «голый» ПК — сначала SSH, Gitea, GitHub и LAN
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
# Подключения: Gitea, GitHub, LAN
|
||||
|
||||
Если на компьютере **нет** рабочих SSH/HTTPS-доступов к git и LAN — **настрой их до начала задачи** (clone, push, deploy, API Gitea).
|
||||
|
||||
## Когда проверять
|
||||
|
||||
В **начале сессии** или **перед** git push, deploy, clone, работой с `$HOME/CursorRules`:
|
||||
|
||||
- `git remote -v`; пробный `git fetch` / `git ls-remote` по каждому нужному remote
|
||||
- SSH: `git@github.com`, Gitea (`git.kalinamall.ru`, `git.papatramp.ru` / LAN IP), хосты деплоя (например `192.168.128.77`)
|
||||
- наличие `~/CursorRules` (Windows: `%USERPROFILE%\CursorRules`) и `local/*.conf`
|
||||
|
||||
**Не начинай** push, deploy или clone «вслепую», если проверка не прошла.
|
||||
|
||||
## Что считается «нет подключений»
|
||||
|
||||
| Симптом | Значит |
|
||||
|---------|--------|
|
||||
| `Permission denied (publickey)` | нет SSH-ключа или записи в `~/.ssh/config` |
|
||||
| `Could not resolve host` / timeout на Gitea/GitHub | нет сети/VPN или неверный HostName |
|
||||
| нет `$HOME/CursorRules` | репозиторий Rules не развёрнут |
|
||||
| нет ключей из `local/git-ssh-hosts.conf` в `~/.ssh/` | не запускали Setup-GitSsh |
|
||||
| нет `local/papatramp-gitea.conf`, `kalinamall-gitea.conf` | API Gitea не настроен |
|
||||
| deploy: нет `deploy/secrets.env` | локальный деплой по паролю не настроен |
|
||||
|
||||
## Что делать (по порядку)
|
||||
|
||||
### 1. Новый компьютер (ничего нет)
|
||||
|
||||
Из каталога **рабочего проекта**:
|
||||
|
||||
| ОС | Действие |
|
||||
|----|----------|
|
||||
| Windows | скопировать `install.ps1` с рабочего ПК → запустить в каталоге проекта |
|
||||
| Mac / Linux | то же с `install.sh` |
|
||||
|
||||
Скрипт клонирует Rules в `~/CursorRules`, создаёт ключи, `~/.ssh/config`, remotes, `init-cursor`.
|
||||
|
||||
### 2. CursorRules уже есть, но доступы сломаны или неполные
|
||||
|
||||
Windows:
|
||||
|
||||
```powershell
|
||||
& $HOME\CursorRules\scripts\Invoke-MachineBootstrap.ps1 -Root $HOME\CursorRules
|
||||
& $HOME\CursorRules\scripts\Setup-GitSsh.ps1
|
||||
& $HOME\CursorRules\scripts\Set-GitRemotes.ps1 -RepoPath (Get-Location)
|
||||
init-cursor -Update
|
||||
```
|
||||
|
||||
Mac / Linux:
|
||||
|
||||
```bash
|
||||
~/CursorRules/scripts/invoke-machine-bootstrap.sh
|
||||
~/CursorRules/scripts/setup-git-ssh.sh
|
||||
~/CursorRules/scripts/Set-GitRemotes.sh "$(pwd)"
|
||||
init-cursor --update
|
||||
```
|
||||
|
||||
### 3. Проект с удалённым деплоем
|
||||
|
||||
```bash
|
||||
cp deploy/secrets.env.example deploy/secrets.env
|
||||
# DEPLOY_HOST, DEPLOY_PASSWORD; при входе по паролю — DEPLOY_SSH_KEY=0
|
||||
```
|
||||
|
||||
На Windows без `sshpass`: `python scripts/deploy-remote.py` (если скрипт есть в проекте).
|
||||
|
||||
## Remotes (эталон)
|
||||
|
||||
| Remote | Куда |
|
||||
|--------|------|
|
||||
| `kalinamall` | git.kalinamall.ru |
|
||||
| `home` | git.papatramp.ru |
|
||||
| `github` | github.com/PTah |
|
||||
|
||||
На **сервере деплоя** `origin` должен быть **достижим из LAN** (часто `https://github.com/PTah/<repo>.git`, а не публичный HTTPS `git.papatramp.ru`).
|
||||
|
||||
## Агент
|
||||
|
||||
1. При первом `git fetch` / `push` / deploy в сессии — **проверь** remotes и SSH.
|
||||
2. При ошибке доступа — **сначала bootstrap** (скрипты выше), затем повтори операцию.
|
||||
3. **Не** проси «создай репо вручную», пока не пробовал API/скрипты из `gitea-home-api`.
|
||||
4. `deploy/secrets.env`, `local/*.conf` — **не коммитить**.
|
||||
@@ -10,3 +10,7 @@ alwaysApply: false
|
||||
- Без comment-based help и лишних `Write-Host`, если не просили UI/логи.
|
||||
- Не дублируй длинные CLI-аргументы целиком — placeholder или переменная.
|
||||
- Сохраняй стиль и алиасы **существующего файла**; не навязывай `gc`/`gci` если в проекте полные имена.
|
||||
|
||||
## Кодировка и EOL
|
||||
|
||||
См. **`file-encoding.mdc`**: `.ps1` — **UTF-8 with BOM**, **CRLF**; runtime JSON/spool на диск — **UTF-8 без BOM**.
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
description: Компактный shell/bash в выводе агента
|
||||
globs: **/*.{sh,bash}
|
||||
alwaysApply: false
|
||||
---
|
||||
|
||||
# Shell (Linux) — компактный вывод
|
||||
|
||||
- `set -euo pipefail` в bootstrap/install-скриптах, где уместно; не ломать интерактивные сценарии.
|
||||
- Кавычки вокруг переменных; `"$var"` вместо `$var`.
|
||||
- Без лишнего `echo` в библиотечных функциях — только UI/логи по делу.
|
||||
|
||||
## Кодировка и EOL
|
||||
|
||||
См. **`file-encoding.mdc`**: `.sh` — **UTF-8 без BOM**, **LF**. После правки на Windows — проверить отсутствие `\r`.
|
||||
@@ -0,0 +1,21 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
|
||||
[*.ps1]
|
||||
charset = utf-8-bom
|
||||
end_of_line = crlf
|
||||
|
||||
[*.psm1]
|
||||
charset = utf-8-bom
|
||||
end_of_line = crlf
|
||||
|
||||
[*.sh]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
|
||||
[*.md]
|
||||
end_of_line = lf
|
||||
@@ -0,0 +1,13 @@
|
||||
* text=auto
|
||||
|
||||
*.ps1 text eol=crlf
|
||||
*.psm1 text eol=crlf
|
||||
*.psd1 text eol=crlf
|
||||
|
||||
*.sh text eol=lf
|
||||
*.bash text eol=lf
|
||||
|
||||
*.md text eol=lf
|
||||
*.json text eol=lf
|
||||
*.yml text eol=lf
|
||||
*.yaml text eol=lf
|
||||
@@ -104,6 +104,22 @@ Push: `git push kalinamall`
|
||||
|
||||
---
|
||||
|
||||
## Кодировка файлов (Windows / Linux)
|
||||
|
||||
Правило **`file-encoding`** (`.cursor/rules/file-encoding.mdc`, `alwaysApply: true`):
|
||||
|
||||
| Среда | Расширения | Кодировка | Переносы |
|
||||
|-------|------------|-----------|----------|
|
||||
| Windows / PowerShell | `.ps1`, `.psm1` | UTF-8 **with BOM** | CRLF |
|
||||
| Linux / shell | `.sh` | UTF-8 **без BOM** | LF |
|
||||
| Runtime JSON/spool (PS → SAC/API) | на диске | UTF-8 **без BOM** | — |
|
||||
|
||||
В репозиториях проектов — `.editorconfig` и `.gitattributes` (шаблоны есть в этом repo).
|
||||
|
||||
После `init-cursor --update` правило попадает во все проекты.
|
||||
|
||||
---
|
||||
|
||||
## Конфиги (`local/`)
|
||||
|
||||
| Файл | Назначение |
|
||||
@@ -112,3 +128,7 @@ Push: `git push kalinamall`
|
||||
| `git-user.conf` | git user.name / email |
|
||||
| `kalinamall-gitea.conf` | API kalinamall |
|
||||
| `papatramp-gitea.conf` | API home Gitea |
|
||||
|
||||
## Подключения на новом ПК
|
||||
|
||||
Если SSH/Gitea/GitHub/LAN ещё не настроены — см. rule **`machine-connectivity-bootstrap`** и `install.ps1` / `install.sh`.
|
||||
|
||||
Reference in New Issue
Block a user