5.3 KiB
5.3 KiB
Proposal: установка DSH без зависимости от ~/.claude
Issue: #49 (роадмап порта — #48). Источники:
dsh/PORT.md, разделы 3 (deferred), 5 (install), 7 (risks: «~/.claudedependence»);- issue #37/#38: runtime-отвязка skills и roles от
~/.claude— сделана; - ответ владельца 24.10.2026 на вопрос о источнике superpowers: «нормально так»
(явный путь/
DSH_SUPERPOWERS_SOURCE, без вендоринга в репозиторий).
Why
После #37/#38 DSH не зависит от ~/.claude в runtime: bootstrap читает
~/.dsh/skills, роли — ~/.dsh/roles, --skills --roles копируют файлы.
Осталась зависимость на этапе установки: dsh/install.sh --skills берёт
superpowers только из кэша плагина Claude Code
(~/.claude/plugins/cache/claude-plugins-official/superpowers/*/skills).
Практические следствия:
- на машине без Claude Code свежая установка не может поставить superpowers:
--skillsпечатаетWARNи молча ничего не копирует, bootstrap остаётся пустым (superpowers bootstrap skill not found; skipping injection); - после отката/удаления Claude Code установка воспроизводится только из уже
лежащих копий в
~/.dsh/skills— то есть «повторяемая установка» существует лишь пока никто не удалил~/.dsh; - acceptance порта (#48, DoD) требует пройти полный цикл в чистом проекте, где
CC-харнес не участвует, — сейчас первый шаг цикла упирается в
~/.claude; - в установленных инструкциях
~/.dsh/AGENTS.mdостались пути~/.claude/roles/<r>.md(унаследованы изglobal/CLAUDE.md, общего с CC): adapter и skillroleих перекрывают, но текст путает агента и человека.
What Changes
- Источник superpowers задаётся при установке.
dsh/install.sh --skillsразрешает источник в порядке:--superpowers-from <dir>→DSH_SUPERPOWERS_SOURCE→ пиннинг$DSH_HOME/superpowers/skills→ (legacy) кэш Claude Code → (legacy)~/.claude/skills. Явно заданный, но невалидный источник —FAIL, а не тихий откат на legacy. - Нет источника — нет тихого WARN. Если
~/.dsh/skillsуже содержитusing-superpowers, повторный--skillsпредупреждает и сохраняет копии (идемпотентность). Если копий нет —FAILс готовой командойgit clone … ~/.dsh/superpowers, код возврата 1. Локальные скиллы обвязки (role,sdd) ставятся в обоих случаях. --checkпоказывает источник.ok: superpowers source (<path>)для явного/пиннинга,WARN: legacy superpowers sourceдля~/.claude,WARNс подсказкой, когда источника нет.- Legacy-пути остаются fallback'ом с предупреждением. Runtime-порядок
~/.dsh→~/.claudeне меняется; bundle один раз за процесс пишет в лог, что bootstrap/роли взяты из legacy-источника. Удаление fallback'ов — не эта задача (см. design, D-2). - Установленные инструкции DSH не ссылаются на
~/.claude.install_globalзаменяет в копии~/.claude/roles→~/.dsh/rolesи явно говорит, что проектныйCLAUDE.md/AGENTS.md— формат инструкций DSH, а не runtime Claude Code.global/CLAUDE.mdв репозитории не меняется: его читает и CC. - Тесты без DSH runtime. Чистый temp
HOMEбез~/.claude: установка с--superpowers-from, bootstrap с этим HOME,FAIL/WARNпри отсутствии источника, legacy-предупреждения, содержимоеAGENTS.md. - Документация.
dsh/README.md(quick start с получением источника, known limits),dsh/PORT.md(§3, §5, §7, §8).
Non-goals
- Вендоринг superpowers в репозиторий обвязки: апстрим живёт своей версией, копия в репозитории стареет молча (design, D-1).
git cloneвнутриinstall.sh: установка не должна требовать сети.- Удаление legacy-fallback'ов из
bootstrap.js/index.js: обратная совместимость машин, где--skills --rolesещё не перезапускали (D-2). - Проектный слой ролей, briefing, harness-check, harness-doctor — свои фазы #48.