3.8 KiB
Raw Blame History

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