Line CLI
Claude Code compatibility
Use Claude Code plugins, marketplaces, skills, agents, hooks and MCP servers in Line CLI, and bring over an existing setup with line import claude.
Line CLI reads Claude Code plugins and marketplaces as they are, so you can use the plugins you already have. Everything from a plugin follows Line's trust model: installed plugins stay off until you review and enable them.
Bring over your setup
line import claude --dry-run # show what would be imported, change nothing
line import claude # show each item, then apply itLine reads ~/.claude (or CLAUDE_CONFIG_DIR) and never overwrites anything already in Line:
| Claude Code | Line |
|---|---|
~/.claude/skills/<name>/SKILL.md | ~/.line/skills/<name>/ |
~/.claude/agents/*.md | ~/.line/agents/ (tool names are translated) |
MCP servers (user scope, ~/.claude.json) | ~/.line/mcp.json |
Hooks in ~/.claude/settings.json | Line's hooks, shown command by command |
~/.claude/CLAUDE.md | ~/.line/LINE.md, only when Line has none |
| Known marketplaces | Line marketplaces, pinned at their current commit |
Installed Claude Code plugins are listed with the command that installs each one in Line. They aren't installed automatically, because each needs its own review and enable step. -y applies everything without asking per item.
In a project, Line follows LINE.md, AGENTS.md or CLAUDE.md at the root.
Plugins
| Piece | In Line |
|---|---|
.claude-plugin/plugin.json (name, version, description, author, license, commands, agents, hooks, mcpServers) | Read. With no manifest, the folder name is the plugin name |
commands/*.md (front matter description, argument-hint, allowed-tools, model) | /<plugin>:<command>, or /<command> when no other plugin uses the name. $ARGUMENTS, $1…$9, and @file attaches a file |
agents/*.md | Sub-agents named <plugin>:<agent>; tool names are translated |
skills/<name>/SKILL.md | Available while the plugin is enabled |
hooks/hooks.json | PreToolUse, PostToolUse, UserPromptSubmit, Stop, SessionStart, SessionEnd, PreCompact, SubagentStop, Notification |
.mcp.json / mcpServers | Started when the plugin is enabled |
${CLAUDE_PLUGIN_ROOT}, ${CLAUDE_PLUGIN_DATA}, ${CLAUDE_PROJECT_DIR} | Set for hooks and MCP servers |
userConfig, bin/, .lsp.json, themes/, output-styles/ | Not yet (planned for 1.1) |
Inline !command in a command file runs only after you approve the exact commands, every time and in any mode, and your deny rules still apply. Its output replaces it in the prompt.
Hooks
Hooks from Claude Code plugins see Claude Code tool names (Bash, Read, Write, Edit, Glob, Grep, WebFetch, Task…) in their matchers and in their stdin JSON (tool_name, tool_input.file_path, tool_input.command).
- Exit code 2 blocks the call.
- JSON output is understood:
permissionDecisiondenyorask,decision: "block",continue: falseandadditionalContext. allownever skips Line's own approval.- PreToolUse runs before the permission prompt.
- A hook that runs past its timeout (60 seconds by default) is stopped together with everything it started.
Marketplaces
Claude Code marketplaces (marketplace.json) work as Line marketplaces:
line plugin marketplace add <owner/repo | git URL | folder>
line plugin install <name>@<marketplace>See Plugins and marketplaces for updating, removing and the full trust model.