README: установка и обновление командами для терминала
Обновление вынесено отдельным разделом, потому что главное в нём — шагов два, и первого мало: marketplace update тянет git-клон, а снимки плагинов лежат в ~/.claude/plugins/cache/<маркетплейс>/<плагин>/<версия>/ и двигаются только plugin update. Один шаг без второго выглядит как «обновил, а ничего не изменилось». Проверено на этой машине, а не выведено из документации: - cd в проект обязателен — вызов двигает одну запись реестра; av-dev-git стоит в шести проектах, вызов из dev-skills поднял версию ровно в одном, и не в том, откуда звали; - plugin update идемпотентен: на свежем плагине говорит already at the latest version; - сниппет со списком установленного скопирован из README и выполнен через bash — работает как написано; - версия реестра это первые 12 знаков хеша коммита, поэтому в тексте git rev-parse HEAD | cut -c1-12, а не git log --oneline. У install и marketplace add умолчание scope — user, и без --scope project плагин уедет не туда, куда указывает settings.json проекта; сказано в самих командах. Абзац про снос проектных копий вернулся под «Подключение»: он про установку. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -97,16 +97,23 @@ openspec/
|
||||
## Подключение
|
||||
|
||||
Плагин подключается **на уровне проекта**, чтобы был активен у всех, кто
|
||||
открывает репозиторий:
|
||||
открывает репозиторий. Из терминала, в каталоге проекта:
|
||||
|
||||
```
|
||||
/plugin marketplace add https://git.vakhrushev.me/av/dev-skills.git --scope project
|
||||
/plugin install av-dev-pm@av-dev-skills --scope project
|
||||
/plugin install av-dev-pipeline@av-dev-skills --scope project
|
||||
/plugin install av-dev-git@av-dev-skills --scope project
|
||||
```bash
|
||||
cd /path/to/project
|
||||
|
||||
# маркетплейс: один раз на проект. --scope project кладёт его
|
||||
# в extraKnownMarketplaces этого репозитория (см. ниже), без флага — в user
|
||||
claude plugin marketplace add https://git.vakhrushev.me/av/dev-skills.git --scope project
|
||||
|
||||
# плагины: scope обязателен, умолчание у команды — user, а нам нужен project
|
||||
claude plugin install av-dev-pm@av-dev-skills --scope project
|
||||
claude plugin install av-dev-pipeline@av-dev-skills --scope project
|
||||
claude plugin install av-dev-git@av-dev-skills --scope project
|
||||
```
|
||||
|
||||
…или те же команды из терминала через `claude plugin …`. Обе формы дописывают в
|
||||
Те же команды изнутри Claude Code — со слешем: `/plugin marketplace add …`,
|
||||
`/plugin install … --scope project`. Обе формы дописывают в
|
||||
`.claude/settings.json` проекта то, что можно внести и руками:
|
||||
|
||||
```json
|
||||
@@ -124,17 +131,61 @@ openspec/
|
||||
}
|
||||
```
|
||||
|
||||
**Маркетплейс — git-клон удалённого репозитория, и он обновляется явно:**
|
||||
`claude plugin marketplace update av-dev-skills`. Локальные коммиты, не
|
||||
отправленные на origin, до него не доедут — это уже однажды выглядело как
|
||||
«плагин не работает».
|
||||
|
||||
**При установке в проект, где лежали проектные копии** скиллов и агентов
|
||||
(`.claude/skills/` — голые `task-pipeline`, `review-pipeline`, `task-batch`
|
||||
и с префиксом проекта `<проект>-task-pipeline`,
|
||||
`.claude/agents/<проект>-review-*.md`) — снеси их. Две копии одного скилла
|
||||
расходятся, и побеждает та, что короче названа.
|
||||
|
||||
## Обновление
|
||||
|
||||
**Обновление — два шага, и первого мало.** `marketplace update` тянет git-клон
|
||||
маркетплейса, но снимки плагинов лежат отдельно, в
|
||||
`~/.claude/plugins/cache/av-dev-skills/<плагин>/<версия>/`, и обновляются только
|
||||
командой `plugin update`. Один шаг без второго выглядит как «обновил, а ничего не
|
||||
изменилось» — так и было в первый раз.
|
||||
|
||||
```bash
|
||||
# 0. отправить свои коммиты: до клона доезжает только то, что на origin
|
||||
git -C /path/to/dev-skills push origin master
|
||||
|
||||
# 1. клон маркетплейса
|
||||
claude plugin marketplace update av-dev-skills
|
||||
|
||||
# 2. снимки плагинов — из каталога проекта, где они установлены
|
||||
cd /path/to/project
|
||||
claude plugin update av-dev-pm@av-dev-skills --scope project
|
||||
claude plugin update av-dev-pipeline@av-dev-skills --scope project
|
||||
claude plugin update av-dev-git@av-dev-skills --scope project
|
||||
```
|
||||
|
||||
**`cd` в проект обязателен, и это не педантизм.** Команда правит запись реестра, а
|
||||
записей столько, во скольких проектах плагин установлен; за вызов двигается
|
||||
**одна**. Запущенная не из проекта, она обновит какую-то из них — наблюдалось:
|
||||
`av-dev-git` стоял в шести проектах, один вызов поднял версию ровно в одном, и не
|
||||
в том, из которого звали. Проекты обновляются поштучно.
|
||||
|
||||
Что стоит и какой версии — одной командой:
|
||||
|
||||
```bash
|
||||
python3 - <<'EOF'
|
||||
import json, pathlib
|
||||
d = json.loads(pathlib.Path.home().joinpath(".claude/plugins/installed_plugins.json").read_text())
|
||||
for name, entries in sorted(d["plugins"].items()):
|
||||
if "av-dev" not in name:
|
||||
continue
|
||||
for e in entries:
|
||||
print(f"{e['version']:14} {name:30} {e.get('projectPath', e.get('scope', ''))}")
|
||||
EOF
|
||||
```
|
||||
|
||||
Версия — первые 12 знаков хеша коммита этого репозитория, так что сверяется
|
||||
глазами с `git rev-parse HEAD | cut -c1-12`. Команда идемпотентна: на уже свежем
|
||||
плагине скажет `already at the latest version`.
|
||||
|
||||
**Изменения применяются после перезапуска Claude Code** — работающая сессия
|
||||
держит скиллы в контексте и про новый снимок не знает.
|
||||
|
||||
## Структура репозитория
|
||||
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user