Managing agent capability distribution across dozens of repositories requires two sides of the same coin: a reliable client-side installer that provisions tools and skills onto local agent harnesses, and a central hub that maps which projects depend on which capabilities. In this window, both sides reached major milestones.
Agent Skill Installer shipped its v2.0.0 major release (v2.0.0). The major
bump introduced automated configuration and setup for custom Model Context
Protocol (MCP) tooling servers, including private documentation indexes and
Codex adapters (#348). As part of this transition, agent session analytics
were cut over to an internal ClickHouse sink (#355), cleanly deprecating the
external telemetry forwarder without carrying legacy dual-write overhead. Over
the subsequent week, fifteen quick patch releases landed to refine catalog
entries, add TTS voice generation skills (#370), and register the
scp-xr-pairing skill (#363) for orchestrating live Unity headset sessions.
In parallel, Project Hub tackled inter-project governance. As the number of
repos grew, simple parent-child task relationships were no longer enough. We
implemented ADR-010: Umbrella Scopes (#59), establishing high-level
umbrella projects as authoritative coordination boundaries.
To handle blockers and architectural pivots cleanly, we added migrations 018
and 019 for decision records (#62) and hold tracking (#61). When an
initiative gets blocked by an external dependency or an unreleased API, it is
formally tagged with a hold record that explains the blocker and points to the
unblocking prerequisite.
Finally, the project-hub-ui brought this data to life with an interactive
dependency web graph (#31). Instead of reading flat tables, operators can
inspect cross-project dependency webs visually and trigger disposition actions
like accepting, declining, or deferring interface requests directly from node
modals (#30).
Lessons learned
- Isolate platform-specific tag triggers from primary release pipelines. When
shipping cross-compiled Go binaries alongside native macOS bundles tagged with
-mac, naive CI triggers liketags: ['v*']inadvertently trigger full Linux release workflows twice. Constraining tag patterns prevents duplicate release drafts from clobbering published artifacts. - Track blocking holds and architectural decisions as queryable database records. Stashing blocked states in commit comments or markdown tags means you cannot query which projects are waiting on a specific dependency. Modeling holds as relational rows with foreign keys turns portfolio roadblocks into structured dashboards.
- Cut over telemetry sinks at major version boundaries rather than maintaining dual writers. Trying to bridge old and new telemetry backends with multiplexing code creates flaky network edge cases across agent runs. A major version bump is the right moment to cleanly drop retired sinks and switch to the new standard.
- Interactive dependency graphs must embed direct operational controls. An architecture diagram that only visualizes node connections is quickly abandoned. Integrating actionable controls — such as inline disposition dialogs that trigger real API state changes — makes the visualization an active command surface.