grill-me, grill-with-docs, improve-codebase-architecture, tdd and triage each had their routing boundary written into README.md, which nothing loads at runtime, while the gate still reported all five descriptions as boundary-less. The boundaries move into the descriptions; write-docs' clause, which said 'those have dedicated skills' without naming one, now names them. research had moved its body out and then read both references unconditionally -- the anti-goal ADR-0020 names, where the word count moves and the per-run context does not. Both loads are genuinely conditional now, with the topic list and the four literal sources.md field names inlined, since the provenance validator matches those literally. Also restores the promote-the-prototype anti-pattern to prototype's ui.md, which the gate does not measure, so deleting it bought nothing. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EJJrm5YmacbwMdzZpXcoti
bin
A place for things to be binned
Install
Claude Code:
claude plugin marketplace add <owner>/<repo>
claude plugin install bin@<marketplace-name>
GitHub Copilot CLI:
copilot plugin marketplace add <owner>/<repo>
copilot plugin install bin
Local (development):
# Claude Code
claude --plugin-dir ./plugins/bin
# GitHub Copilot CLI
copilot plugin install ./plugins/bin
Contents
| Component | Path | Description |
|---|---|---|
| Skills | .apm/skills/ → skills/ |
Slash commands available after install |
| MCP servers | .mcp.json |
The obsidian server (npx @bitbonsai/mcpvault@0.15.0 docs/), hand-authored at the plugin root |
.apm/ is the authoring source; skills/ is the generated mirror plugin hosts scan (ADR-0017). This plugin ships no agents. It is the only plugin here with a non-empty .mcp.json, which is why its compiled manifests are the only ones carrying an mcpServers block.
The two compiled manifests get that block by different routes. .claude-plugin/plugin.json gets it from apm itself: build_plugin_manifest's Claude branch calls collect_mcp_servers, which reads .mcp.json, sanitizes it, and inlines the resulting server objects. .github/plugin/plugin.json gets nothing from apm — the Copilot branch drops the field — so scripts/sync-plugin-content.sh's reinject_mcp_servers() puts it back, as the string ".mcp.json" rather than the resolved objects. Copilot's manifest schema types the field as "string or object — MCP server config path or inline definitions", and a path reference cannot carry a credential into a committed manifest. See ADR-0017's mcpServers amendment.
Author
Defame1297