jankneumann

coordination-bridge

"HTTP fallback bridge for coordinator when MCP transport is unavailable"

jankneumann 4 1 Updated 1mo ago

Resources

1
GitHub

Install

npx skillscat add jankneumann/agentic-coding-tools/coordination-bridge

Install via the SkillsCat registry.

SKILL.md

Coordination Bridge Infrastructure Skill

Non-user-invocable infrastructure skill that provides HTTP fallback for the coordinator when MCP transport is unavailable.

Scripts

<skill-base-dir>/scripts/coordination_bridge.py

Detects coordinator availability and provides HTTP-based fallback operations.

Usage:

python3 "<skill-base-dir>/scripts/coordination_bridge.py" <command> [args]

Commands:

Command Arguments Description
detect Check coordinator availability, output JSON status
try_handoff_read [--agent-name NAME] [--limit N] Read latest handoff (HTTP fallback)
try_handoff_write --summary TEXT [--completed JSON] [--next-steps JSON] Write handoff document
try_recall [--tags TAG,...] [--limit N] Recall memories by tags
try_remember --event-type TYPE --summary TEXT [--tags TAG,...] Store a memory

Stdout (detect): JSON with COORDINATOR_AVAILABLE, transport, capabilities
Exit codes: 0 = success, 1 = coordinator unavailable or error

Issue backend (issue #429)

try_issue_* defaults to the coordinator HTTP API. Coordinator writes currently
return success with a generated UUID and then vanish from every subsequent read,
so the durable interim store is GitHub Issues in this repository.

Opt in:

COORDINATION_ISSUES_BACKEND=github
GITHUB_TOKEN=...                  # or GH_TOKEN / GITHUB_PAT
COORDINATION_GITHUB_REPO=owner/repo   # optional; GITHUB_REPOSITORY is also read

COORDINATION_ISSUES_BACKEND=github is required in GitHub Actions (where
GITHUB_TOKEN and GITHUB_REPOSITORY are always set) so CI does not silently
retarget onto live Issues. A failed GitHub write is a non-2xx that the bridge
surfaces; it never reports success: true for a discarded record.

depends_on is stored in the issue body (metadata comment + task list). Callers
(seed_tasks_from_md.py, the status renderer) are unchanged.

Work-Queue Truth / Projection Contract

The queue helpers this skill exposes (try_get_work → /work/claim,
try_complete_work, and the submit path) are a distribution/claim mechanism
only
. They are NOT a source of execution truth.

Contract: openspec/changes/<change-id>/loop-state.json (schema:
LoopState in skills/autopilot/scripts/autopilot.py) is the authoritative
execution state
— the source of truth for a run's current phase, iteration,
and package status. The coordinator work queue is a derived projection whose
entries are always re-derivable from loop-state. Truth flows loop-state → queue,
never queue → loop-state. A try_get_work / /work/claim result is a work
item to execute; it is never the record of what phase a run is in. No skill may
read authoritative phase/loop-state from the work queue.

This is the same asymmetry coordinator-task-status-renderer applies to the
tasks.md checkboxes (truth) vs. the rendered coordinator status block
(informational projection).

See the full contract — idempotent submission keyed by
(change_id, phase, iteration), outbox ordering (persist loop-state, then
enqueue), resume re-derivation, and tier applicability (claim atomicity is
exercised only in the coordinated tier) — in the repo guide
docs/guides/work-queue-truth-projection.md. The invariant is guarded by
skills/tests/coordination-bridge/test_work_queue_projection_invariant.py,
an AST check that follows the name a claim result is bound to and fails on any
read of phase / iteration / package status off it — whatever the variable is
called (change_id is exempt; a worker needs it to locate loop-state).

Categories