Two releases, seven merged PRs across junior and sentry-mcp, plus infrastructure work in skills.
*Junior's message ingress no longer forces users into threads they've declined.*
Thread routing in junior was not checking whether users had opted out of subscribed-thread notifications. @dcramer's #107 adds that decision point to the routing layer, so a user's explicit opt-out now stays opted-out when messages arrive. This fixes the class of bug where routing logic and notification preferences live in separate codebases and sync lazily.
*Silent thread exits in the message queue are now logged.*
@dcramer's #92 instruments the queue-to-thread handoff to detect when work is enqueued but never processed. The diagnostics log which jobs fell through, making it obvious when the thread pool size is too small or a consumer died without error. Before this, dropped messages just disappeared from logs entirely.
*Plugin-level tool registration prevents tool collisions across integrations.*
When multiple MCP plugins export tools with the same name, junior had no isolation mechanism. @dcramer's #93 adds plugin-scoped tool support, so each plugin can define its own tool namespace without shadowing others. This is table-stakes for a multi-skill agent architecture.
*Missing authentication no longer requires per-skill error handling.*
@dcramer's #106 refactors auth error responses so any skill can surface the same guidance when credentials are absent or invalid. Previously, each integration had to catch and reformat its own auth failures. Now junior speaks a single dialect of "you need to authenticate."
*Observability hooks added for production monitoring of MCP latency and quota.*
The sentry-mcp cloudflare workers deployment lacked visibility into response times and rate-limit exhaustion. @dcramer's #848 emits metrics at the handler level, making it possible to alert on slow MCP calls or upstream quota pressure. Version 0.30.0 ships with this instrumentation live.
*MCP schema cleanup prevents overpromising capabilities.*
Root-level resource metadata in sentry-mcp was advertising protected fields that tools shouldn't expose. @dcramer's #839 strips that metadata from the schema, ensuring LLMs don't attempt to access attributes that require explicit tool support.
*Portable path handling removes OS-specific branches from skill definitions.*
@dcramer's #103 abstracts path construction so the skill-writer no longer needs to know whether it's running on Windows or Unix. This unblocks cross-platform skill development and reduces boilerplate in skill implementations.
*Bottle data distinguishes between vintages and standard releases.*
@dcramer's #295 adds release awareness to peated's bottle precision model, so the database can track whether a bottle is a year-specific vintage or a consistent standard release. This prepares the schema for finer-grained whisky metadata.
Your GitHub week, turned into something worth reading.
Generate your dispatch →