From d832f7f63ef6a7b1409440dcc46be0045cd41ca1 Mon Sep 17 00:00:00 2001 From: PTah Date: Sat, 4 Jul 2026 00:21:06 +1000 Subject: [PATCH] =?UTF-8?q?feat(rules):=20bootstrap=20SSH/Gitea/GitHub/LAN?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=20=D0=BE=D1=82=D1=81=D1=83=D1=82=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D0=B8=D0=B8=20=D0=BF=D0=BE=D0=B4=D0=BA=D0=BB=D1=8E?= =?UTF-8?q?=D1=87=D0=B5=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cursor/rules/00-always-read-rules.mdc | 5 +- .../rules/machine-connectivity-bootstrap.mdc | 88 +++++++++++++++++++ README.md | 4 + 3 files changed, 95 insertions(+), 2 deletions(-) create mode 100644 .cursor/rules/machine-connectivity-bootstrap.mdc diff --git a/.cursor/rules/00-always-read-rules.mdc b/.cursor/rules/00-always-read-rules.mdc index 2243da5..ea3b855 100644 --- a/.cursor/rules/00-always-read-rules.mdc +++ b/.cursor/rules/00-always-read-rules.mdc @@ -1,4 +1,4 @@ ---- +--- description: Перед работой — прочитай все применимые rules alwaysApply: true --- @@ -15,6 +15,7 @@ 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 | @@ -26,4 +27,4 @@ alwaysApply: true - **Не push**, не «доделывай быстрее». - Исправь (amend / filter / commit-tree), затем снова проверь лог. -Правила важнее скорости выполнения задачи. \ No newline at end of file +Правила важнее скорости выполнения задачи. diff --git a/.cursor/rules/machine-connectivity-bootstrap.mdc b/.cursor/rules/machine-connectivity-bootstrap.mdc new file mode 100644 index 0000000..c4a5688 --- /dev/null +++ b/.cursor/rules/machine-connectivity-bootstrap.mdc @@ -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/.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` — **не коммитить**. diff --git a/README.md b/README.md index 33e9957..c88a15c 100644 --- a/README.md +++ b/README.md @@ -128,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`.