Skip to content

[FEATURE] TargetProfile: plugin-bin-contract abstraction for multi-harness bin/ deployment #2044

Description

@sergio-sisternes-epam

Is your feature request related to a problem? Please describe.

Plugin bin/ deployment is currently hard-wired to Claude Code's skills-directory plugin contract. As new harnesses adopt executable-deployment patterns (e.g. Codex CLI, Gemini CLI), each harness will need its own bin/ placement, PATH setup, and reload mechanism. Without an abstraction, the _deploy_plugin_bin function will grow per-harness branches and the gate logic (deny, scope, trust-posture) will be duplicated.

This was identified as item 6 in the advisory review panel on PR #1591 (tracked in #1620).

Describe the solution you'd like

Introduce a TargetProfile (or similar) abstraction that encapsulates the per-harness bin/ deployment contract:

  • bin_dir(project_root, scope) -- where to place executables for this harness
  • bin_path_mechanism -- how the harness discovers deployed bins (PATH env, config entry, manifest)
  • reload_hint -- user-facing instruction to activate new executables (e.g. /reload-plugins, restart)
  • requires_plugin_manifest -- whether the harness needs .claude-plugin/plugin.json or equivalent
  • supported_scopes -- which install scopes (user, project) support bin/ deployment

Each TargetProfile would implement the contract for its harness, and _deploy_plugin_bin would delegate to the active profile instead of hard-coding Claude-specific logic.

Describe alternatives you've considered

  • Keep the current approach and add per-harness if branches as needed (simpler short-term, scales poorly).
  • Use a registry/dict mapping harness names to deployment functions (lighter than a full class hierarchy, but less extensible).

Additional context

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/marketplacemarketplace.json schema, federation, authoring suite, source parity.area/multi-targetMulti-target deploy spec, target directory creation, agent surface routing.status/needs-designDirection approved, design discussion required before code.status/triagedInitial agentic triage complete; pending maintainer ratification (silence = approval).theme/portabilityOne manifest, every target. Multi-target deploy, marketplace, packaging, install.type/featureNew capability, new flag, new primitive.

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions