SaschaHeyer

Symphony Go — Testing skill for Claude Code

Testing community

A Go implementation of the Symphony specification — a long-running automation service that reads work from issue trackers, creates isolated workspaces, and runs AI coding agents for each.

How to install Symphony Go

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

What Symphony Go does

A Go implementation of the Symphony specification — a long-running automation service that reads work from issue trackers, creates isolated workspaces, and runs AI coding agents for each.

Alternatives in Testing

  • Fix Issue — by metabase - Addresses GitHub issues by taking issue number as parameter, analyzing context, implementing sol 46.5k ★
  • Langgraphjs — by langchain-ai - Offers comprehensive build and test commands with detailed TypeScript style guidelines, laye 2.7k ★
  • Spec Driven Develop — Spec-driven development workflow for AI coding agents: architecture-first planning, task decomposition, GitHub 975 ★

README

Symphony Go

A Go implementation of the [Symphony specification](../SPEC.md) — a long-running automation service that reads work from issue trackers, creates isolated workspaces, and runs AI coding agents for each issue.

Symphony supports two agent backends (**Gemini CLI** and **Claude Code**) and two issue trackers (**Linear** and **Jira Cloud**). Mix and match per workflow.

Architecture

![Symphony Go Architecture](symphony-go-architecture.png)

Agent Backends

Symphony supports two agent backends. Set the `backend` field in your WORKFLOW.md to choose:

Gemini CLI Claude Code
Config key backend: gemini (default) backend: claude
Protocol ACP — JSON-RPC 2.0 over stdio (long-running process) NDJSON stream — one CLI invocation per turn
Session model Single process, session persists in-memory --resume across invocations, persisted to .symphony-session-id
Tool access Client-side injection (ACP fs/terminal requests) MCP servers (configured externally via .mcp.json or user config)
Permission handling ACP session/request_permission auto-approve --permission-mode bypassPermissions flag
Default model gemini-3.1-pro-preview claude-sonnet-4-6
TTY requirement None Requires pseudo-TTY (script -q /dev/null wrapper, handled automatically)

Gemini CLI Setup

npm install -g @google/gemini-cli
gemini auth login

For Linear integration, install the MCP extension:

gemini extensions install @google/mcp-linear

Claude Code Setup

npm install -g @anthropic-ai/claude-code

For Linear integration, add the MCP server globally:

claude mcp add -s user --transport http linear-server https://mcp.linear.app/mcp

This makes the Linear MCP server available in all workspaces. Alternatively, write a `.mcp.json` file in the workspace via the `after_create` hook for a self-contained setup.

Issue T