1
DEC-01
Mod is a layer, not the whole plugin
Mod is official Claude Code term v2.1.287+: in-process JS/TS, can redraw UI and rewrite tool calls, unsandboxed. Settings hooks, skills, and MCP are different layers. A plugin can contain all of them.
CML-TK/1.0 · companion of CML-WB/1.0 · 3 October 2026
Products, official extension surfaces, and the community packs that install through them. For Karolis Valickas. British English. Facts locked 3 October 2026. Gaps stay unverified.
flowchart TB products["Products"] surfaces["Official extension surfaces"] packs["Community packs via those surfaces"] routers["Routers under the client, not Anthropic"] products -->|"clients"| surfaces surfaces -->|"install through"| packs products -->|"may sit under"| routers
1. Read the five handoffs2. Scan the layer board3. Open the category4. Check gaps before a star count or a proxy repo
1
DEC-01
Mod is official Claude Code term v2.1.287+: in-process JS/TS, can redraw UI and rewrite tool calls, unsandboxed. Settings hooks, skills, and MCP are different layers. A plugin can contain all of them.
2
DEC-02
Distribution is marketplaces. Official claude-plugins-official auto-added. Community @claude-community. Author repos unreviewed. claude.ai has a separate directory that syncs into Claude Code.
3
DEC-03
Skills are the portable instruction pack. API version needs code execution, is workspace-scoped, different install path from a Claude Code skill file.
4
DEC-04
CLAUDE.md does not enforce. Hooks and mods do. Orgs can shut user mods off with disableAllHooks or allowManagedModsOnly while leaving skills and MCP loaded.
5
DEC-05
Model routing is the largest community fork and breaks when Claude Code request shape changes. Anthropic gateway is the supported version. Do not treat a router README as the Claude Code protocol.
flowchart TB
subgraph userLane["User lane"]
choose["Choose marketplace or author repo"]
end
subgraph ccLane["Claude Code lane"]
bundle["Plugin loads its parts"]
end
subgraph modelLane["Model lane"]
gate["Anthropic gateway supported"]
fork["Community router not Anthropic"]
end
choose --> bundle
bundle --> gate
bundle --> fork
flowchart TB official["claude-plugins-official auto-added"] community["Community @claude-community"] demo["Demo marketplace in claude-code"] authors["Author repos unreviewed"] web["claude.ai directory syncs in"] cc["Claude Code"] official --> cc community --> cc demo --> cc authors --> cc web --> cc
C-MOD · L-MOD
Official term, Claude Code v2.1.287+. In-process JS/TS. Can redraw UI and rewrite tool calls. Not sandboxed.
Drawing: terminal and Desktop Code tab. Not VS Code chat, claude -p, or cloud.
C-PLUGIN · L-PLUGIN
A bundle: skills, agents, hooks, MCP, LSP, monitors, bin/ on PATH, settings, mods. Skills namespaced /plugin:skill.
C-SKILL · L-SKILL
SKILL.md folder, staged load. API is a different path: POST /v1/skills, up to 20, needs code_execution_20250825, workspace-scoped.
C-HOOK · L-HOOK
Shell, HTTP, prompt, agent, or MCP-tool. Named events include PreToolUse, PostToolUse, Stop, PermissionDenied, InstructionsLoaded.
C-MCP · L-MCP
Product-wide connectors directory (Verified vs Community). Desktop bundles are .mcpb (was .dxt).
C-SDK · L-SDK
Old name Claude Code SDK. Custom tools and plugins have docs. TS SDK V2 session API is marked removed.
C-ROUTE · L-ROUTE
Sit under the official client and rewrite the model endpoint. Not Anthropic products. Supported path is the Anthropic gateway.
flowchart LR author["Author"] admin["Org admin"] user["Claude Code user"] ship["Ship a mod in a plugin"] lock["Leave skills and MCP, block user mods"] install["Install from a marketplace"] surfaces["Extension surfaces"] author --> ship ship --> surfaces admin --> lock lock --> surfaces user --> install install --> surfaces
flowchart LR md["CLAUDE.md is advisory"] hook["Hook can enforce"] mod["Mod can enforce"] org["Org can shut user mods off"] gap["Enforcement is not the file"] md --> gap hook --> gap mod --> gap org --> gap
flowchart TB cc["Claude Code"] gate["Anthropic gateway"] model["Model endpoint"] cc -->|"supported path"| gate gate --> model
flowchart TB cc["Claude Code"] router["Community router"] model["Rewritten model endpoint"] cc -->|"not an Anthropic product"| router router --> model
sequenceDiagram participant User participant Market as Marketplace participant Plugin participant Skill participant Hook participant Mod User->>Market: Install Market->>Plugin: Bundle Plugin->>Skill: /plugin:skill Plugin->>Hook: Settings hooks Plugin->>Mod: In-process handlers
| Card | What to use it for |
|---|---|
| User story | Author ships a mod in a plugin. User installs from a marketplace. Org admin can block user mods and still leave skills and MCP loaded. Roles from the survey, not a studied cohort. |
| Baseline | Official clients and their extension surfaces. No personal stack was in the survey. A router is under that baseline, not inside it. |
| Useful | Terminal and Desktop Code tab: a mod can redraw UI and rewrite tool calls, prompts, and the named UI pieces. |
| Fail | No drawing in VS Code chat, claude -p, or cloud. Not sandboxed. Function-hooks env var ignored from v2.1.287. Router breaks when the request shape changes. |
flowchart LR mod["In-process mod"] termOk["Terminal drawing works"] deskOk["Desktop Code tab drawing works"] vscNo["VS Code chat no drawing"] pipeNo["claude -p no drawing"] cloudNo["Cloud no drawing"] mod --> termOk mod --> deskOk mod --> vscNo mod --> pipeNo mod --> cloudNo
stateDiagram-v2 state "User mods" as userMods state "disableAllHooks" as blocked state "allowManagedModsOnly" as managed state "safe-mode flag" as safeMode state "Skills and MCP stay loaded" as skillsStay [*] --> userMods userMods --> blocked userMods --> managed userMods --> safeMode blocked --> skillsStay managed --> skillsStay
An author ships an in-process mod inside a plugin. Drawing is for the terminal and the Desktop Code tab.
Hooks, skills, and MCP stay different layers. A plugin can contain all of them, including the mod.
Watch, rewrite, or take over tool calls, prompts, and UI: panes, the band above the prompt, the spinner, tool rows.
Not sandboxed. No drawing in VS Code chat, claude -p, or cloud. CLAUDE_CODE_ENABLE_FUNCTION_HOOKS is ignored from v2.1.287.
| Name | Note | Badge |
|---|---|---|
| cc-plugin-diff | Built-in | ✓ |
| cc-plugin-agents-md | Built-in | ✓ |
| cc-plugin-telemetry | Built-in | ✓ |
| cc-plugin-sec-default | Built-in | ✓ |
| cc-plugin-you-should-know | Built-in, off by default | ✓ |
| Name | Note | Badge |
|---|---|---|
| token-weather | Named sample. Repo URL not fetched. | ?? |
| blast-radius | Named sample. Repo URL not fetched. | ?? |
| replay-theater | Named sample. Repo URL not fetched. | ?? |
flowchart TB file["SKILL.md folder staged load"] api["POST /v1/skills"] cc["Claude Code skill file"] ws["Workspace-scoped API skill"] exec["Needs code_execution_20250825"] file --> cc api --> ws api --> exec
flowchart LR kinds["shell HTTP prompt agent MCP-tool"] pre["PreToolUse"] post["PostToolUse"] stopEv["Stop"] denied["PermissionDenied"] loaded["InstructionsLoaded"] kinds --> pre kinds --> post kinds --> stopEv kinds --> denied kinds --> loaded
flowchart TB oldName["Old name Claude Code SDK"] agent["Claude Agent SDK"] tools["Custom tools doc"] plugs["Plugins doc"] removed["TS SDK V2 session API marked removed"] npm["npm names not confirmed"] oldName --> agent agent --> tools agent --> plugs agent --> removed agent --> npm
A Claude Code skill file loads from a folder. An API skill is posted, workspace-scoped, and needs code execution.
CLAUDE.md and path-scoped rules are advisory. Output style Concise was called out week 34 (17–21 August 2026).
A hook or a mod is what enforces. Week 14 adds a PermissionDenied hook and a per-tool MCP result cap, ceiling 500000.
Do not treat the Skills API and a SKILL.md file as the same install. Do not invent npm names for the Agent SDK. computer_toolset_20260801 is unverified.
sequenceDiagram participant User participant Market as Marketplace participant Plugin participant Skill participant Hook participant Mod User->>Market: Install Market->>Plugin: Bundle Plugin->>Skill: /plugin:skill Plugin->>Hook: Settings hooks Plugin->>Mod: In-process handlers
Seven categories on the Categories tab. The tables here are the full spec.
| Repo | Stars | Note | Badge | Source |
|---|---|---|---|---|
| anthropics/claude-plugins-official | 37348 | Official marketplace. Auto-added. Manifest schema v0.4 appears in this repo. | ~ | SRC-003 |
| anthropics/claude-code | 149161 | Official repo, not a community fork. Demo marketplace lives inside it. Star count is the repo, not a plugin census. | ~ | SRC-005 |
| obra/superpowers | 294849 | Author repo named in the survey. | ~ | SRC-006 |
| affaan-m/everything-claude-code | 272104 | Author repo named in the survey. | ~ | SRC-007 |
| wshobson/agents | 40174 | Author repo named in the survey. | ~ | SRC-008 |
| agentskills/agentskills | 25880 | Skills spec repo. | ~ | SRC-009 |
| anthropics/skills | 179515 | Marketplace name anthropic-agent-skills. Also named as a topic marketplace. | ~ | SRC-010 |
| modelcontextprotocol/servers | 90983 | MCP servers repo. | ~ | SRC-022 |
| modelcontextprotocol/mcpb | 2129 | MCPB repo. | ~ | SRC-023 |
| musistudio/claude-code-router | 37524 | Community router. Release v3.0.22 published 2026-08-24. npm @musistudio/claude-code-router. Gateway 127.0.0.1:3456. Described as now a multi-agent control plane. | ~ | SRC-031 |
| thedotmack/claude-mem | 95479 | Persistent cross-session memory plugin. | ~ | SRC-033 |
| Name | Note | Badge |
|---|---|---|
| cc-plugin-diff | Built-in | ✓ |
| cc-plugin-agents-md | Built-in | ✓ |
| cc-plugin-telemetry | Built-in | ✓ |
| cc-plugin-sec-default | Built-in | ✓ |
| cc-plugin-you-should-know | Built-in, off by default | ✓ |
| Name | Note | Badge |
|---|---|---|
| token-weather | Named sample. Repo URL not fetched. | ?? |
| blast-radius | Named sample. Repo URL not fetched. | ?? |
| replay-theater | Named sample. Repo URL not fetched. | ?? |
| Item | Badge |
|---|---|
| Kinds: shell, HTTP, prompt, agent, MCP-tool | ✓ |
| Events named: PreToolUse, PostToolUse, Stop, PermissionDenied, InstructionsLoaded | ✓ |
| Full hook event list was not copied from the page body (GAP-13) | ~ |
| Week 14 (v2.1.86–v2.1.91, 30 March–3 April 2026): PermissionDenied hook, defer on permissionDecision, maxResultSizeChars ceiling 500000 | ~ |
| Changelog also mentions asyncRewake, InstructionsLoaded, monitors | ~ |
| bin/ on PATH in v2.1.91, week of 30 March–3 April 2026 | ✓ |
These rows are the rest of the locked survey, so the HTML is not a thinner fact set.
| Topic | Fact | Badge |
|---|---|---|
| Skills API examples | The guide examples mention claude-opus-5-5. That is not a model review. | ✓ |
| Safe-mode flag | --safe-mode is a named org control. The survey does not say that skills and MCP stay loaded under it. | ~ |
| Computer use | CLI research preview on macOS Pro/Max, week 14. | ~ |
| Router release | v3.0.22 published 2026-08-24 (24 August 2026). npm @musistudio/claude-code-router. Gateway 127.0.0.1:3456. | ✓ |
| Plugin eval | Plugin eval is week 37. The survey does not say what it measured. | ~ |
| Indexed only | Agent teams, dynamic workflows, and channels are indexed at the llms.txt URL. The channels page is indexed, not summarised. | ~ |
| Community catalog | The survey's name is community catalog (that spelling): anthropics/claude-plugins-community. GitHub page not fetched. No URL here. | ?? |
| Reserved names | Reserved marketplace names are enforced. The names themselves were not listed. | ✓ |
flowchart TB survey["Survey 3 October 2026"] gh["GitHub API 403 no fork or pushed_at"] pages["Three GitHub pages not fetched"] modsWeek["Mods ship week not pinned"] toolset["computer_toolset_20260801 unverified"] proxies["Proxy repos search hits only"] survey --> gh survey --> pages survey --> modsWeek survey --> toolset survey --> proxies
| ID | Badge | Gap |
|---|---|---|
| GAP-01 | ?? | No pushed_at and no fork counts. GitHub API returned 403. |
| GAP-02 | ?? | Official marketplace plugin list was not enumerated. This page is not a plugin catalogue. |
| GAP-03 | ?? | anthropics/claude-plugins-community is named in the marketplaces doc. Its GitHub page was not fetched. No URL is given here. |
| GAP-04 | ?? | anthropics/knowledge-work-plugins is named as a topic marketplace. The repo was not fetched. No URL is given here. |
| GAP-05 | ?? | claude-code-playground is where samples token-weather, blast-radius, and replay-theater are named. The repo URL was not fetched. |
| GAP-06 | ?? | 1rgs/claude-code-proxy and fuergaosi233/claude-code-proxy were search hits only. Stars were not fetched. Not verified projects beyond that. |
| GAP-07 | ?? | skills.sh leaderboard counts were not taken. |
| GAP-08 | ?? | claude.ai Projects, custom instructions, and Cowork plugin pages were seen only via snippets. |
| GAP-09 | ?? | Mods ship week is not pinned. The What's New index stops at week 37 (7–11 September 2026) without a mods entry. No week-37 URL was in the survey. |
| GAP-10 | ?? | computer_toolset_20260801 was search synthesis and was not re-fetched. Unverified. Not treated as a real tool id. |
| GAP-11 | ?? | Agent SDK npm package names were not confirmed. None are listed. |
| GAP-12 | ~ | Star counts below are the survey figures and are unaudited. |
| GAP-13 | ~ | The full hook event list was not copied from the hooks page body. |
| GAP-14 | ?? | Agent SDK tool-use and computer-use pages were search hits and were not fully fetched. No URLs were recorded for them. |
| GAP-15 | ~ | The mods admin doc was linked and not fully fetched. |
| GAP-16 | ~ | The desktop-extensions page was not fully fetched. It is the source for the .dxt to .mcpb rename. |
| GAP-17 | ~ | Cowork custom connectors must be publicly reachable. That is a help-centre snippet, not a fully fetched page, and no URL was recorded. |
| GAP-18 | ~ | Handoff 5 says model routing is the largest community fork. Fork counts were not available (GAP-01). Other named repos have higher unaudited star counts. Stars are not forks. The handoff line is not a measured ranking. |
flowchart LR fetched["Page cited and treated as fetched"] partial["Snippet, index, or not fully fetched"] missing["Named in search, page not fetched"] fetched --> partial partial --> missing
This pass did not re-fetch pages. ✓ means the survey treats the URL as fetched. There is no ✓✓ or ✓✓✓.
DEC-01 to DEC-05 are the five handoffs. Nothing else was decided in this edition.