# M126 Bundle A — alwaysLoad MCP + plugin prune

Closes #1541 (alwaysLoad MCP servers) and #1544 (claude plugin prune wiring). CC 2.1.121 features.
CC 2.1.121 files 14 prod code unchanged 66/66 existing tests pass

## #1541 — alwaysLoad MCP config

CC 2.1.121 added `"alwaysLoad": true` to MCP server config — flagged servers stay in the tool registry from session start. Skills no longer need to `ToolSearch`-probe before using these servers' tools.

### Before .mcp.json

    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"],
      "env": { "MEMORY_FILE": ".claude/memory/memory.json" }
    }

### After .mcp.json

    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"],
      "env": { "MEMORY_FILE": ".claude/memory/memory.json" },
      "alwaysLoad": true  // CC 2.1.121+
    }

`alwaysLoad` is set on memory, context7, and sequential-thinking — the universally-needed T2 trio. Tavily, fal, 21st-dev-magic stay deferred (feature-specific, API-key-gated).

### Before 9 skills × probe

    # STEP 0: Probe MCPs at skill start
    ToolSearch(query="select:mcp__memory__search_nodes")
    Write(".claude/chain/capabilities.json", ...)

    if capabilities.memory:
        mcp__memory__search_nodes(query="...")

### After 9 skills × annotated

    # memory is alwaysLoad in .mcp.json (CC 2.1.121+, #1541) —
    # probe below kept as fallback for older CC:
    ToolSearch(query="select:mcp__memory__search_nodes")
    Write(".claude/chain/capabilities.json", ...)

    if capabilities.memory:
        mcp__memory__search_nodes(query="...")

Skills with inline probes touched: `explore, assess, fix-issue, implement, brainstorm, verify, review-pr, cover, expect`. The probe stays for CC < 2.1.121 fallback (the unknown `alwaysLoad` key is silently ignored on older CC). Canonical pattern updated in `chain-patterns/references/mcp-detection.md` + `rules/probe-before-use.md`.

## #1544 — claude plugin prune wiring

CC 2.1.121 added `claude plugin prune` to remove orphaned auto-installed plugin dependencies. `claude plugin uninstall <name> --prune` cascades.

Where | What
--- | ---
/ork:doctor | New audit step: detect orphans via `claude plugin list --json`; suggest `claude plugin prune`
/ork:dream | New Phase 7: Plugin Housekeeping — runs prune weekly (tracked via `.claude/state/last-prune.txt`)
/ork:setup | Phase 5 cleanup tip mentions `--prune` cascade and the new `plugin prune` command

## Decision matrix — which skill probes vs. directly invokes

MCP | alwaysLoad | Tier | Why
--- | --- | --- | ---
memory | ✓ | T2 | Used by every reflective skill (assess, explore, fix-issue, etc.)
context7 | ✓ | T2 | Used by implement, fix-issue, cover for live docs lookup
sequential-thinking | ✓ | T2 | Used by brainstorm, plan-heavy skills
tavily | — | T3 | Web research only; API-key gated; defer until needed
21st-dev-magic | — | T3 | UI generation only; API-key gated; defer
fal | — | T3 | Multimodal generation; API-key gated; defer
agentation | — | T3 | Disabled by default; opt-in via UI annotations workflow
ork-elicit | — | T2 | Plugin-internal; loads on-demand from plugin entry