53 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.
- Обновление ролей/локальных скиллов из сети: они по-прежнему из репозитория
обвязки.