II.
Page JSON
Structured · livepage:process-gaps-GAP-L1-P0-claude-code-plugin-component-types
GAP-L1-P0-claude-code-plugin-component-types json
Inspect the normalized record payload exactly as the atlas UI reads it.
{
"id": "page:process-gaps-GAP-L1-P0-claude-code-plugin-component-types",
"_kind": "Page",
"_file": "wiki/process/gaps/GAP-L1-P0-claude-code-plugin-component-types.md",
"_cluster": "wiki",
"attributes": {
"nodeKind": "Page",
"title": "GAP-L1-P0-claude-code-plugin-component-types",
"displayName": "GAP-L1-P0-claude-code-plugin-component-types",
"slug": "process/gaps/GAP-L1-P0-claude-code-plugin-component-types",
"articlePath": "wiki/process/gaps/GAP-L1-P0-claude-code-plugin-component-types.md",
"article": "# GAP-L1-P0-claude-code-plugin-component-types\n\n| Field | Value |\n|---|---|\n| id | gap:claude-code-plugin-component-types |\n| title | Claude Code plugin format adds LSP servers, background monitors, bin/, settings.json, .claude-plugin/plugin.json — not in schema |\n| level | 1 |\n| priority | P0 |\n| discoveredAt | 2026-04-28T00:00:00Z |\n| source | https://code.claude.com/docs/en/plugins |\n| status | closed |\n| owner | tbd |\n\n## Current state\nThe `Plugin` and `NativeExtension` NodeKinds enumerate `contains_skill`, `contains_subagent`, `contains_tool_server` edges. There is no representation of:\n- **LSP servers** (`.lsp.json`) — a new component type giving Claude real-time code intelligence\n- **Background monitors** (`monitors/monitors.json`) — long-running stdout-emitting processes that surface notifications\n- **`bin/` directory** — plugin-provided executables added to PATH\n- **Plugin-shipped `settings.json`** — currently scoped to `agent` and `subagentStatusLine`\n- **`.claude-plugin/plugin.json`** manifest path (current example uses `plugin.json` at root)\n- **Skills vs. commands distinction** — Claude Code now treats `commands/` as legacy \"flat markdown skills\" and `skills/` as the canonical form\n- **`disable-model-invocation`** frontmatter on SKILL.md\n- **`/reload-plugins`** lifecycle event\n\n## Desired state\n- New NodeKinds: `LSPServer`, `BackgroundMonitor`, `BinaryProvider`.\n- New edges: `Plugin contains_lsp_server LSPServer`, `Plugin contains_monitor BackgroundMonitor`, `Plugin contains_bin BinaryProvider`, `Plugin ships_settings SettingsTemplate`.\n- Extend `Skill` with `disableModelInvocation: bool`, `argumentsToken: string` (e.g. `$ARGUMENTS`), `entrypoint` enum to distinguish `SKILL.md` vs flat-markdown-command.\n- Extend `Plugin` with `manifestPath` attribute (`.claude-plugin/plugin.json`).\n- Add `HookSurface` instances for `ReloadPlugins`, `MonitorEvent`.\n\n## Evidence\n- https://code.claude.com/docs/en/plugins (\"LSP servers\", \"Background monitors\", \"bin/\", \"settings.json\", \".claude-plugin/\")\n- https://code.claude.com/docs/en/plugins-reference\n\n## Propagation status\n- Level 1: open\n- Level 2: not-started — `02-node-kinds/extensions-plugins.md` needs three new sections; `coverage-checklist.md` Plugin section needs three new rows\n- Level 3+: cascade\n\n## Propagation chain\n- Level 1: add NodeKinds + edges + 1 example each in `schema/examples/extensions/`.\n- Level 2: update 02-node-kinds/extensions-plugins.md and 03-edge-kinds.md.\n\n## Notes\nLSP and background monitors are entirely new component types — they don't fit any existing NodeKind. This is real Claude Code product surface evolution, P0.\n\n## Resolution (2026-04-28)\nClosed. NodeKinds `LSPServer`, `BackgroundMonitor`, `BinaryProvider`, `SettingsTemplate` were added in earlier passes (per the user-provided audit hint). Edges `Plugin contains_lsp_server`, `Plugin contains_monitor`, `Plugin contains_bin`, `Plugin ships_settings` are present in `03-edge-kinds.md`.\n",
"documents": []
},
"outgoingEdges": [],
"incomingEdges": []
}