53 lines
3.8 KiB
Markdown
53 lines
3.8 KiB
Markdown
# Proposal: install сам тянет свежий superpowers с git
|
||
|
||
Issue: #67. Связано: #49 (закрыт), #48 (роадмап), change `dsh-install-source`.
|
||
Ответ владельца 24.10.2026: «а давай инстал будет тащить сам свежую версию с
|
||
гита».
|
||
|
||
## Why
|
||
|
||
После #49 install-time источник задаётся явно: `--superpowers-from`,
|
||
`$DSH_SUPERPOWERS_SOURCE` или ручной клон в `~/.dsh/superpowers`. Это снимает
|
||
зависимость от `~/.claude`, но перекладывает получение источника на человека и
|
||
не обновляет его: клон, сделанный полгода назад, остаётся «свежим» навсегда, а
|
||
`WARN: legacy superpowers source` на машине владельца так и висит, потому что
|
||
пиннинга нет.
|
||
|
||
Владелец хочет, чтобы `dsh/install.sh --skills` сам получал свежий superpowers:
|
||
первый запуск — клон, следующие — обновление. Явные флаги остаются для офлайна,
|
||
зеркал и отладки и сеть не трогают.
|
||
|
||
## What Changes
|
||
|
||
- **git — источник по умолчанию.** `--skills` клонирует
|
||
`https://github.com/obra/superpowers` в `$DSH_HOME/superpowers` (depth 1), если
|
||
клона нет, и обновляет `fetch --depth 1` + `reset --hard FETCH_HEAD`, если
|
||
есть. URL переопределяется `$DSH_SUPERPOWERS_REPO` (зеркала, локальные
|
||
репозитории в тестах).
|
||
- **Порядок источников:** явный источник (`--superpowers-from`,
|
||
`$DSH_SUPERPOWERS_SOURCE`) → git-клон (обновить/создать) → legacy-кэш Claude
|
||
Code → legacy `~/.claude/skills`. Ручная копия `~/.dsh/superpowers` без `.git`
|
||
используется как есть с `WARN` (совместимость с #49).
|
||
- **Сеть и ошибки.** Нет сети при существующем клоне — `WARN`, работа из кэша.
|
||
Нет сети, нет клона, нет других источников — `FAIL` с кодом 1 и подсказкой
|
||
`--superpowers-from`. Оборванный клон не оставляется на диске.
|
||
- **`--check` остаётся офлайновым:** не клонирует и не обновляет, показывает
|
||
`ok: superpowers source (<path>, git <sha>)` для git-клона, `WARN` для ручной
|
||
копии без `.git`, legacy и «нет источника» — как в #49.
|
||
- **Тесты без сети:** локальный git-репозиторий через `DSH_SUPERPOWERS_REPO`
|
||
(`file://`), проверка первого клона, обновления до нового коммита, офлайна и
|
||
`--check`.
|
||
- **Документация.** README/PORT: quick start без ручного клона, офлайн-путь,
|
||
`DSH_SUPERPOWERS_REPO`, `--check` с sha.
|
||
|
||
## Non-goals
|
||
|
||
- Вендоринг superpowers в репозиторий — отклонён в #49 (D-1) и остаётся
|
||
отклонённым.
|
||
- Пиннинг тега/коммита и проверка подписи: «свежая версия» = последний коммит
|
||
default-ветки; воспроизводимость установки обеспечивается глубиной 1 и
|
||
записанным sha в выводе, а не неизменностью источника.
|
||
- Субмодули и LFS в клоне superpowers.
|
||
- Обновление ролей/локальных скиллов из сети: они по-прежнему из репозитория
|
||
обвязки.
|