claude-harness/docs/superpowers/plans/2026-10-24-dsh-decouple.md

2.9 KiB
Raw Blame History

DSH decouple from ~/.claude — план

Ветка: feat/37-dsh-decouple (issue #37). Спека/дизайн: dsh/PORT.md.

Цель

Сделать DSH-порт независимым от установки Claude Code: superpowers skills и роли лежат в ~/.dsh, а ~/.claude используется только как fallback.

Scope

  1. dsh/install.sh: копировать skills (не symlink), добавить --roles, включить роли в --all.
  2. dsh/bundle/index.js: resolveRolesDir — ~/.dsh/roles → ~/.claude/roles → repo roles/.
  3. dsh/bundle/lib/bootstrap.js: ~/.dsh/skills раньше кэша ~/.claude.
  4. Тесты: install-копирование, приоритет ролей, приоритет bootstrap.
  5. README/PORT: новый порядок установки и fallback.

Non-goals

  • Проектные роли <cwd>/.dsh/roles — отдельная задача.
  • Vendor superpowers в репозиторий; пока копируем из установленного кэша.
  • OpenSpec, SDD, briefing.

Задачи

  • Task 1: install.sh копирует skills и роли
    • Files: dsh/install.sh
    • --skills: rm -rf dest + cp -R source, не ln -sfn.
    • --roles: cp $ROOT/roles/*.md в $DSH_HOME/roles.
    • --all включает --roles.
    • Проверка: bash dsh/install.sh --skills --roles с temp DSH_HOME.
  • Task 2: приоритет ~/.dsh/roles
    • Files: dsh/bundle/index.js, dsh/bundle/lib/role.js
    • resolveRolesDir(bundleDir, configured, home): ~/.dsh/roles → ~/.claude/roles → repo.
    • role.js default rolesDir = ~/.dsh/roles.
    • Проверка: unit-тест с temp home, где оба каталога существуют.
  • Task 3: приоритет ~/.dsh/skills
    • Files: dsh/bundle/lib/bootstrap.js
    • superpowersCandidates: env → ~/.dsh/skills → ~/.agents/skills → ~/.claude cache → ~/.claude/skills.
    • Проверка: unit-тест с temp home, где есть и .dsh, и .claude cache.
  • Task 4: тест install.sh
    • Files: dsh/tests/install.test.mjs
    • Fake superpowers cache в temp HOME; запуск --skills --roles; проверка, что skill — real directory, роли скопированы; повторный запуск.
  • Task 5: документация
    • Files: dsh/README.md, dsh/PORT.md
    • --roles, копирование, fallback.
  • Task 6: прогон и коммит
    • bash dsh/tests/run.sh — все тесты.
    • bash tests/run.sh — регрессий нет.
    • Commit, push, PR.

Acceptance

  • В temp HOME с только ~/.dsh bootstrap и /role dev работают.
  • bash dsh/tests/run.sh зелёный.
  • dsh/install.sh --all создаёт real copies, не symlinks.