hollis-labs

Go Providers — Development skill for Claude Code

Development community

Unified Go Provider interface over CLI/PTY-driven coding-agent adapters (Claude Code, Codex, opencode) with BootDirSpec plant-and-spawn, typed event streams, and decorator monitors.

How to install Go Providers

This entry records only its repository, not the path inside it, so there is no exact command to give. Open hollis-labs/go-providers and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Go Providers does

Unified Go Provider interface over CLI/PTY-driven coding-agent adapters (Claude Code, Codex, opencode) with BootDirSpec plant-and-spawn, typed event streams, and decorator monitors.

Alternatives in Development

  • Coding Agent Session Search — Unified TUI and CLI to index and search your local coding agent session history across 11+ providers (Codex, C 708 ★
  • Harnessrouter — HarnessRouter Community Edition: the self-hosted, Apache-2.0 edition of the unified interface for agent harnes 618 ★
  • Purpose — Orient yourself in pi-vs-cc — a collection of Pi coding agent extensions and agent specs that progressively de 527 ★

README

go-providers

`go-providers` is a Go library that provides a single `Provider` interface over a collection of CLI-bridge adapters (Claude Code, Codex, Gemini CLI, Aider, Copilot, Junie, Kiro, Opencode, Qwen) wrapped via PTY or plain subprocess. It also ships cross-cutting primitives for the adapter layer — a registry, cost monitoring, scope guarding, progress-loop detection, per-line typed events, boot-dir spec metadata, and a decorator pipeline that layers monitors on top of any underlying provider.

As of **v0.11.0** this library is **CLI/PTY-only** and no longer owns the shared LLM contracts or rate-budget primitives. Direct HTTP chat and embedding adapters were removed in v0.10.0; the shared transport-agnostic model types now live in `github.com/hollis-labs/go-llm-types`, and the shared provider contracts/rate-budget primitives live in `github.com/hollis-labs/go-llm-contracts`.

Status

Beta — the core `Provider` interface is stable. Public API is intentionally narrow now that the lib is CLI/PTY-only; smoke tests for the claude PTY/bare paths exist behind env-gated `*_SMOKE` tests.

Install

go get github.com/hollis-labs/go-providers

Usage

The minimum viable shape is: pick an adapter, materialize its `BootDirSpec` into a per-task tempdir, wire the adapter's flag fields from the planted layout, and call `StreamChat` through a transport bridge.

package main

import (
    "context"
    "fmt"
    "os"
    "path/filepath"

    llmtypes "github.com/hollis-labs/go-llm-types"
    "github.com/hollis-labs/go-providers/provider"
)

func main() {
    // 1. Construct the adapter (bare-mode Claude in this example).
    adapter := provider.NewClaudeAdapterBare()

    // 2. Materialize the BootDirSpec into a fresh tempdir.
    bootDir, _ := os.MkdirTemp("", "boot-claude-*")
    defer os.RemoveAll(bootDir)

    projectDir, _ := filepath.Abs(".")

    spec := adapter.BootDirSpec()
    pctx := provider.PlantContext{
        SystemPrompt: "You are a