feat: add home-configs with auto-deployed Claude skills
- Move GLOBAL_RULES.md to home-configs/ as single source of truth - Add el-review and el-review-heavy skills for GitLab-style branch diff review - Update ai-setup.sh to deploy skills to ~/.claude/skills/ - Update README and tests for new paths
This commit is contained in:
21
README.md
21
README.md
@@ -24,6 +24,25 @@
|
||||
|
||||
Все генерируемые standalone-скрипты полностью перезаписываются текущей эталонной версией из `ai-setup.sh`. Старое содержимое не сливается и не дописывается.
|
||||
|
||||
## Структура конфигов
|
||||
|
||||
Все конфиги, которые разворачиваются в домашнюю директорию, живут в папке `home-configs/`:
|
||||
|
||||
```
|
||||
home-configs/
|
||||
├── GLOBAL_RULES.md # глобальные правила для всех агентов
|
||||
└── claude/
|
||||
└── skills/ # кастомные скиллы для Claude Code
|
||||
├── el-review/
|
||||
│ └── SKILL.md
|
||||
└── el-review-heavy/
|
||||
└── SKILL.md
|
||||
```
|
||||
|
||||
При запуске `ai-setup.sh`:
|
||||
- `GLOBAL_RULES.md` копируется в `~/.config/ai-setup/global_rules.md` и рассылается в нативные rule-файлы (`~/.claude/CLAUDE.md`, `~/.codex/AGENTS.md` и т.д.)
|
||||
- Скиллы из `home-configs/claude/skills/` копируются в `~/.claude/skills/`
|
||||
|
||||
Также скрипт при отсутствии скачивает `~/.local/bin/claude-code-proxy`, но текущий `ai-gpt` запускает нативный Codex CLI и не использует старую proxy-логику через `ANTHROPIC_BASE_URL`.
|
||||
|
||||
## Установка
|
||||
@@ -65,7 +84,7 @@ exec bash
|
||||
|
||||
- DeepSeek key хранится в `~/.config/ai-setup/deepseek_key` с правами `600`.
|
||||
- Kimi key хранится в `~/.config/ai-setup/kimi_key` с правами `600`.
|
||||
- Исходник глобальных правил лежит в `GLOBAL_RULES.md`.
|
||||
- Исходник глобальных правил лежит в `home-configs/GLOBAL_RULES.md`.
|
||||
- При запуске глобальные правила пишутся в `~/.config/ai-setup/global_rules.md`.
|
||||
|
||||
При запуске `ai-setup.sh` сразу обновляются native rule-файлы:
|
||||
|
||||
19
ai-setup.sh
19
ai-setup.sh
@@ -9,7 +9,7 @@ BIN_DIR="$HOME/.local/bin"
|
||||
NPM_GLOBAL="$HOME/.npm-global"
|
||||
PROXY_BIN="$BIN_DIR/claude-code-proxy"
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
GLOBAL_RULES_SOURCE="$SCRIPT_DIR/GLOBAL_RULES.md"
|
||||
GLOBAL_RULES_SOURCE="$SCRIPT_DIR/home-configs/GLOBAL_RULES.md"
|
||||
|
||||
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; NC='\033[0m'
|
||||
info() { echo -e "${CYAN}[INFO]${NC} $*"; }
|
||||
@@ -207,6 +207,23 @@ cp "$CONFIG_DIR/global_rules.md" "$HOME/.claude/CLAUDE.md"
|
||||
cp "$CONFIG_DIR/global_rules.md" "$HOME/.gemini/GEMINI.md"
|
||||
success "Native rule-файлы обновлены"
|
||||
|
||||
# ── 6.6. Деплой Claude skills ────────────────────────────────
|
||||
info "Обновляю Claude skills..."
|
||||
SKILLS_SRC="$SCRIPT_DIR/home-configs/claude/skills"
|
||||
SKILLS_DST="$HOME/.claude/skills"
|
||||
if [ -d "$SKILLS_SRC" ]; then
|
||||
mkdir -p "$SKILLS_DST"
|
||||
for skill_dir in "$SKILLS_SRC"/*; do
|
||||
[ -d "$skill_dir" ] || continue
|
||||
skill_name=$(basename "$skill_dir")
|
||||
mkdir -p "$SKILLS_DST/$skill_name"
|
||||
cp -r "$skill_dir/"* "$SKILLS_DST/$skill_name/"
|
||||
done
|
||||
success "Claude skills обновлены"
|
||||
else
|
||||
info "Папка со skills не найдена, пропускаю"
|
||||
fi
|
||||
|
||||
# ── 7. Очистка старых функций из .bashrc / .zshrc ───────────
|
||||
clean_rc() {
|
||||
local rc_file="$1"
|
||||
|
||||
48
home-configs/claude/skills/el-review-heavy/SKILL.md
Normal file
48
home-configs/claude/skills/el-review-heavy/SKILL.md
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
name: el-review-heavy
|
||||
description: Use when пользователь запрашивает тяжелое code-review между двумя Git-ветками с диффом в стиле GitLab (от merge-base)
|
||||
---
|
||||
|
||||
# Eltex Review Heavy
|
||||
|
||||
## Overview
|
||||
|
||||
Тяжелое ревью диффа между двумя Git-ветками в стиле GitLab Merge Request (от merge-base). Запускает полный `/code-review` с кучей агентов.
|
||||
|
||||
## When to Use
|
||||
|
||||
- Пользователь просит "поревьюй ветку feature относительно master" тщательно
|
||||
- Нужен дифф как на GitLab (без лишних изменений из целевой ветки)
|
||||
- Формат вызова: `/el-review-heavy <наша-ветка-с-изменениями> <целевая-ветка>`
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Определи аргументы:
|
||||
- `source` — первая ветка (наша, с изменениями, которую ревьюим)
|
||||
- `target` — вторая ветка (целевая, в которую мерж-реквест)
|
||||
2. Выполни `git fetch origin` — обнови remote refs
|
||||
3. Если текущая checkout-ветка == `source`, выполни `git pull --ff-only origin source` — обнови локальную ветку
|
||||
4. Построй дифф от merge-base: `git diff origin/target...origin/source > /tmp/el-review-heavy.diff` (три точки!)
|
||||
5. Прочитай файл `/tmp/el-review-heavy.diff`
|
||||
6. Запусти скилл `code-review` с этим файлом как аргумент
|
||||
7. Полученные findings переформатируй:
|
||||
- Пронумеруй проблемы
|
||||
- Оставь только критические замечания
|
||||
- Для каждой предложи готовый дифф с исправлением
|
||||
- Объясни простым языком
|
||||
|
||||
## Формат вывода
|
||||
|
||||
```
|
||||
## Проблема N: [краткое название]
|
||||
|
||||
**Где:** `file.kt:123`
|
||||
|
||||
**Что не так:** простым языком, зачем это плохо
|
||||
|
||||
**Исправление:**
|
||||
```diff
|
||||
- старая строка
|
||||
+ новая строка
|
||||
```
|
||||
```
|
||||
48
home-configs/claude/skills/el-review/SKILL.md
Normal file
48
home-configs/claude/skills/el-review/SKILL.md
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
name: el-review
|
||||
description: Use when пользователь запрашивает легкое code-review между двумя Git-ветками с диффом в стиле GitLab (от merge-base)
|
||||
---
|
||||
|
||||
# Eltex Review
|
||||
|
||||
## Overview
|
||||
|
||||
Легкое ревью диффа между двумя Git-ветками в стиле GitLab Merge Request (от merge-base). Запускает быстрый `/review` вместо тяжелого `/code-review`.
|
||||
|
||||
## When to Use
|
||||
|
||||
- Пользователь просит "поревьюй ветку feature относительно master" быстро
|
||||
- Нужен дифф как на GitLab (без лишних изменений из целевой ветки)
|
||||
- Формат вызова: `/el-review <наша-ветка-с-изменениями> <целевая-ветка>`
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Определи аргументы:
|
||||
- `source` — первая ветка (наша, с изменениями, которую ревьюим)
|
||||
- `target` — вторая ветка (целевая, в которую мерж-реквест)
|
||||
2. Выполни `git fetch origin` — обнови remote refs
|
||||
3. Если текущая checkout-ветка == `source`, выполни `git pull --ff-only origin source` — обнови локальную ветку
|
||||
4. Построй дифф от merge-base: `git diff origin/target...origin/source > /tmp/el-review.diff` (три точки!)
|
||||
5. Прочитай файл `/tmp/el-review.diff`
|
||||
6. Запусти скилл `review` с этим файлом как аргумент
|
||||
7. Полученные findings переформатируй:
|
||||
- Пронумеруй проблемы
|
||||
- Оставь только критические замечания
|
||||
- Для каждой предложи готовый дифф с исправлением
|
||||
- Объясни простым языком
|
||||
|
||||
## Формат вывода
|
||||
|
||||
```
|
||||
## Проблема N: [краткое название]
|
||||
|
||||
**Где:** `file.kt:123`
|
||||
|
||||
**Что не так:** простым языком, зачем это плохо
|
||||
|
||||
**Исправление:**
|
||||
```diff
|
||||
- старая строка
|
||||
+ новая строка
|
||||
```
|
||||
```
|
||||
@@ -5,7 +5,7 @@
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT="$(cd "$(dirname "$0")/.." && pwd)/ai-setup.sh"
|
||||
GLOBAL_RULES_SOURCE="$(cd "$(dirname "$0")/.." && pwd)/GLOBAL_RULES.md"
|
||||
GLOBAL_RULES_SOURCE="$(cd "$(dirname "$0")/.." && pwd)/home-configs/GLOBAL_RULES.md"
|
||||
PASS=0; FAIL=0
|
||||
|
||||
ok() { echo "[PASS] $1"; PASS=$((PASS+1)); }
|
||||
|
||||
Reference in New Issue
Block a user