Sets `disable-model-invocation: true`, so the host withholds caveman from the model-visible skill listing. It stops paying preload tax and can only be reached by typing /caveman. The reason is not the 287 characters. caveman's description was almost entirely a trigger list -- "caveman mode", "talk like caveman", "less tokens", "be brief" -- and "be brief" is a false-positive magnet: a user asking for brevity wants short answers, not dropped articles and `Respond terse like smart caveman`. Removing the skill from the router deletes the bad trigger. User's call, made explicitly. Safe to flag because the flag also hard-blocks the Skill tool, so any inbound route from another skill would break. Re-checked all 39 descriptions and bodies after four waves of retrofit rewrites: every mention of caveman is documentation, research notes or the lockfile. Nothing routes to it. The description is rewritten as human-facing text, since it is no longer a routing surface -- it now says how to turn the mode on and off rather than listing phrases for a reader that can no longer see it. The two remaining SUGGESTIONs are #108: the boundary-clause check fires on hand-invoked skills, which ADR-0020 contractually exempts. Advisory, and not to be "fixed" in the skill. Preload tax 10,002 -> 9,732 chars across 37 model-visible skills. Refs #99 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MWb5RQgCL1ye7cGp2RPb2u
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