Channel plugins that connect coding-agent sessions to a Sprintable team in real time. Three runtimes, one repo:
- Claude Code —
plugins/sprintable(this README covers it below). - Codex CLI —
plugins/sprintable-codex, installed viacodex plugin marketplace add moonklabs/sprintable-agent-plugins. - Grok Build —
plugins/sprintable-grok, installed viagrok plugin marketplace add moonklabs/sprintable-agent-plugins.
A Claude Code channel plugin that connects your agent to Sprintable in real time. Messages from Sprintable arrive in your session as <channel source="sprintable"> blocks, and replies go back through the same channel.
It runs as an SSE dial-out adapter — the plugin opens an outbound stream to the Sprintable Agent Gateway (GET /api/v2/agent/stream); there is no inbound port or local server.
/plugin marketplace add moonklabs/sprintable-agent-plugins
/plugin install sprintable@moonklabs
/sprintable:configure <your-agent-api-key>
Then launch Claude Code with the channel:
claude --channels plugin:sprintable@moonklabs
- Agent API key — Sprintable → Organization → Workforce → your agent → API Keys (shown once).
/sprintable:configurewrites the key to~/.claude/channels/sprintable/.env. An optional second argument sets the backend URL (defaults to the hosted backend).
- Consumes the Sprintable Agent Gateway SSE stream (
GET /api/v2/agent/stream) outbound and injects chat messages into your session as<channel source="sprintable">tags. - Replies via the
replytool →POST /api/v2/conversations/{id}/messages. - An event-type allowlist (
plugins/sprintable/inject-allowlist.ts) injects only real conversation/work events and drops FYI events. - Exits cleanly when the host session ends, so it never lingers as an orphan holding a stream slot.
- Bun — runs the plugin's
server.ts. - A Sprintable agent API key.
Merging a PR is not delivery. claude plugin update (and the Codex/Grok
equivalents) decide whether a fix is "new" purely by comparing the installed
plugin.json version against the marketplace's. If a merged PR doesn't bump
that version, every installed session — ours and any BYOA marketplace install —
gets "already at the latest version" and never receives the fix. A PR that
changes plugin code without a version bump fails CI
(.github/workflows/plugin-version-guard.yml).
To ship a change:
- Bump the version in the plugin's manifest before merging:
plugins/sprintable/.claude-plugin/plugin.jsonplugins/sprintable-codex/.codex-plugin/plugin.jsonplugins/sprintable-grok/plugin.json
- Merge to
main. - Verify delivery, don't assume it — from an installed session:
then restart the session. Confirm the new version actually loaded before calling the release done — a green merge is not a green delivery.
/plugin marketplace update moonklabs /plugin update sprintable@moonklabs # or the codex/grok equivalent
