Summary
Add a bundle install command that installs bundle assets into the current project's harness-native directory structure.
Functionality to implement
- Map assets to harness-native directories (e.g.
.claude/skills/, .claude/agents/, .mcp.json)
- Conflict detection with
InstallConflictError when files already exist
- JSON/TOML deep merge for tool config files (not overwrite)
--force flag to overwrite existing files
--harness flag to select target harness
- Track installations in
.musher/installed.json (registry infrastructure already exists in internal/bundle/install/)
Reference source (mush)
cmd/mush/bundle_install.go — CLI command and orchestration
internal/bundle/materialize.go — InstallFromCache(), conflict handling
internal/bundle/merge.go — MergeJSONDocs(), MergeTOMLDocs()
internal/bundle/mapper.go — AssetMapper interface for harness-native paths
Context
musher-cli already has the install registry tracking (internal/bundle/install/registry.go) and session materialization (internal/bundle/session/), but no CLI command to drive project-level installation.
Summary
Add a
bundle installcommand that installs bundle assets into the current project's harness-native directory structure.Functionality to implement
.claude/skills/,.claude/agents/,.mcp.json)InstallConflictErrorwhen files already exist--forceflag to overwrite existing files--harnessflag to select target harness.musher/installed.json(registry infrastructure already exists ininternal/bundle/install/)Reference source (mush)
cmd/mush/bundle_install.go— CLI command and orchestrationinternal/bundle/materialize.go—InstallFromCache(), conflict handlinginternal/bundle/merge.go—MergeJSONDocs(),MergeTOMLDocs()internal/bundle/mapper.go—AssetMapperinterface for harness-native pathsContext
musher-cli already has the install registry tracking (
internal/bundle/install/registry.go) and session materialization (internal/bundle/session/), but no CLI command to drive project-level installation.