Skip to content

Pluggable work providers #4

Description

@androidand

Pluggable work providers

Why

specsync currently shells out to gh directly. To support self-hosted trackers
and orchestrators that already own issue lifecycle, the projection target must be
an interface, not a hardcoded binary.

What

Introduce a WorkProvider interface (already present: Name, Push, Find)
and ship multiple implementations behind it:

  • github — the current gh CLI provider (default, zero infra).
  • mcp — an MCP client that delegates issue create/update/link to an external
    work-management MCP server, reusing its repo-relation knowledge.
  • vikunja / plane — self-hosted providers (later).

The provider is selected by flag/config; the core engine is unchanged.

Scope

  • Provider selection flag (-provider) and config resolution.
  • provider/mcp client implementation.
  • Capability interfaces (comments, sub-items, custom fields) detected by type
    assertion so a minimal provider need not implement everything.

Tasks

Tasks: Pluggable work providers

  • Extract the provider selection into a -provider flag (default: github)
  • Define capability interfaces: CommentCapable, SubItemCapable, CustomFieldCapable
  • Implement provider/mcp as an MCP client (stdio + HTTP transports)
  • Document the provider contract in the README
  • Add a fake provider for end-to-end tests of the sync engine

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions