Package Agent Extension banner
symposium-dev symposium-dev

Package Agent Extension

Productivity community

Description

Reusable GH action workflow for packaging an ACP agent extension

Installation

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

README

package-agent-extension

Reusable GitHub workflow for building and releasing Symposium agent extensions.

Builds cross-platform binaries (macOS, Linux, Windows) and uploads them to GitHub releases with an `extension.json` manifest for the ACP registry.

Usage

Create `.github/workflows/release.yml` in your extension repository:

name: Release

on:
  release:
    types: [published]

jobs:
  build:
    permissions:
      contents: write
    uses: symposium-dev/package-agent-extension/.github/workflows/build.yml@v1
    with:
      musl: true  # Use musl for static Linux binaries
    secrets: inherit

Inputs

Input Required Default Description
manifest No ./Cargo.toml Path to Cargo.toml
musl Yes - Use musl for Linux builds (static linking)
extra_args No [] Additional args to append (JSON array)
extra_env No {} Additional env vars to merge (JSON object)

The `extra_args` and `extra_env` inputs are merged with values from `Cargo.toml`. This is useful for secrets that only live in CI:

jobs:
  build:
    permissions:
      contents: write
    uses: symposium-dev/package-agent-extension/.github/workflows/build.yml@v1
    with:
      musl: true
      extra_env: '{"API_KEY": "${{ secrets.API_KEY }}"}'

Cargo.toml Metadata

The workflow reads package metadata from your `Cargo.toml`. Configure runtime behavior via `[package.metadata.symposium]`:

[package]
name = "my-extension"
version = "0.1.0"
description = "An agent extension for X"

[package.metadata.symposium]
binary = "my-ext"              # Optional: defaults to package name
args = ["--acp", "--verbose"]  # Optional: arguments passed when spawning
env = { API_KEY = "default" }  # Optional: environment variables

All fields are optional. The generated `extension.json` includes these values so Symposium knows how to spawn the extension.

Targets

The workflow build