{
  "schemaVersion": "1.0",
  "item": {
    "slug": "lsp",
    "name": "LSP Code Navigation",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/AdamNaghs/lsp",
    "canonicalUrl": "https://clawhub.ai/AdamNaghs/lsp",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/lsp",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=lsp",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/lsp-query.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/lsp"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/lsp",
    "agentPageUrl": "https://openagent3.xyz/skills/lsp/agent",
    "manifestUrl": "https://openagent3.xyz/skills/lsp/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/lsp/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "LSP Code Navigation",
        "body": "Multi-language LSP client that manages per-language background daemons. Auto-detects the language from file extension and routes queries to the correct server. Each server lazy-starts on first use and idles out after 5 minutes of inactivity.\n\nUse this instead of grep/read when you need to:\n\nFind where something is defined\nFind all usages of a symbol\nGet type signatures or docstrings\nList all classes/functions in a file\nCheck for type errors before running code\nSearch for a symbol across an entire workspace"
      },
      {
        "title": "Supported Languages",
        "body": "LanguageServerExtensionsInstallPythonpyright-langserver.py, .pyi, .pyxnpm install -g pyrightTypeScript/JStypescript-language-server.ts, .tsx, .js, .jsx, .mjs, .cjsnpm install -g typescript-language-server typescriptRustrust-analyzer.rsrustup component add rust-analyzerGogopls.gogo install golang.org/x/tools/gopls@latestC/C++clangd.c, .h, .cpp, .cc, .hppapt install clangd or brew install llvmBashbash-language-server.sh, .bash, .zshnpm install -g bash-language-serverJavajdtls.javaeclipse.jdt.lsCSSvscode-css-language-server.css, .scss, .lessnpm install -g vscode-langservers-extractedHTMLvscode-html-language-server.html, .htmnpm install -g vscode-langservers-extractedJSONvscode-json-language-server.json, .jsoncnpm install -g vscode-langservers-extracted\n\nOnly install the servers you need. The skill auto-detects which are available and reports helpful install commands for missing ones."
      },
      {
        "title": "Prerequisites",
        "body": "Python 3.10+ (for the client script itself -- stdlib only, no pip deps)\nAt least one language server installed (see table above)"
      },
      {
        "title": "Installation",
        "body": "The skill includes a Python script at {baseDir}/scripts/lsp-query.py. This is the LSP client -- it manages background daemons and handles all queries.\n\nTo make it callable as lsp-query from anywhere, symlink it into your PATH:\n\nln -sf {baseDir}/scripts/lsp-query.py /usr/local/bin/lsp-query\n# or:\nln -sf {baseDir}/scripts/lsp-query.py ~/.npm-global/bin/lsp-query\n\nAlternatively, invoke it directly:\n\n{baseDir}/scripts/lsp-query.py <command> [args...]"
      },
      {
        "title": "Configuration",
        "body": "Set LSP_WORKSPACE to the repo root before querying. If unset, defaults to the git root or cwd."
      },
      {
        "title": "Commands",
        "body": "All line and column numbers are 1-indexed (human-friendly, matching editor display)."
      },
      {
        "title": "Go to Definition",
        "body": "lsp-query definition /path/to/file.py <line> <col>"
      },
      {
        "title": "Find References",
        "body": "lsp-query references /path/to/file.py <line> <col>"
      },
      {
        "title": "Hover (Type Info)",
        "body": "lsp-query hover /path/to/file.py <line> <col>"
      },
      {
        "title": "Document Symbols",
        "body": "lsp-query symbols /path/to/file.py"
      },
      {
        "title": "Workspace Symbol Search",
        "body": "lsp-query workspace-symbols \"ClassName\""
      },
      {
        "title": "Diagnostics",
        "body": "lsp-query diagnostics /path/to/file.py"
      },
      {
        "title": "Completions",
        "body": "lsp-query completions /path/to/file.py <line> <col>"
      },
      {
        "title": "Signature Help",
        "body": "lsp-query signature /path/to/file.py <line> <col>"
      },
      {
        "title": "Rename Preview",
        "body": "lsp-query rename /path/to/file.py <line> <col> new_name"
      },
      {
        "title": "Server Management",
        "body": "lsp-query languages                    # Show all supported languages + install status\nlsp-query servers                      # List running language daemons\nlsp-query shutdown                     # Stop all daemons\nlsp-query shutdown python              # Stop just the Python daemon"
      },
      {
        "title": "What's Included",
        "body": "{baseDir}/\n├── SKILL.md              # This file\n└── scripts/\n    └── lsp-query.py      # Python script -- multi-language LSP client + daemon manager\n\nlsp-query.py is a self-contained Python script (~850 lines, stdlib only, no pip dependencies). It:\n\nForks a single background daemon process on first use\nThe daemon lazy-starts language servers as needed (e.g., pyright for .py, typescript-language-server for .ts)\nCommunicates with the daemon over a Unix socket (~/.cache/lsp-query/daemon.sock)\nTranslates CLI commands into LSP JSON-RPC requests and prints human-readable results\nEach language server auto-stops after 5 minutes idle; the daemon itself stops when all servers are idle"
      },
      {
        "title": "Environment Variables",
        "body": "VariableDefaultDescriptionLSP_WORKSPACEgit root or cwdWorkspace root for LSP serversLSP_SERVERauto per languageOverride server command for ALL languagesLSP_LANGauto from extensionForce a specific language (bypass detection)LSP_TIMEOUT300Server idle timeout in secondsLSP_SOCK~/.cache/lsp-query/daemon.sockUnix socket path"
      },
      {
        "title": "Examples",
        "body": "export LSP_WORKSPACE=/path/to/repo\n\n# Python\nlsp-query symbols src/model.py\nlsp-query hover src/model.py 42 10\nlsp-query references src/model.py 42 10\n\n# TypeScript (auto-detected from .ts extension)\nlsp-query symbols src/index.ts\nlsp-query definition src/app.tsx 15 8\n\n# Rust\nlsp-query symbols src/main.rs\nlsp-query diagnostics src/lib.rs\n\n# Check what's available\nlsp-query languages\nlsp-query servers"
      },
      {
        "title": "Troubleshooting",
        "body": "\"Server not found for X\": The language server binary isn't installed. The error message includes the install command.\n\"could not connect to LSP daemon\": Daemon failed to start. Verify Python 3.10+ is available.\nImport errors in diagnostics: Expected when packages aren't installed in the current Python environment. These resolve on machines with the correct venv.\nStale results: Run lsp-query shutdown to restart all servers fresh.\nSlow first query per language: Each server takes 1-2 seconds to cold-start. Subsequent queries to the same language are ~200ms.\nWrong language detected: Use LSP_LANG=rust lsp-query symbols myfile to force."
      }
    ],
    "body": "LSP Code Navigation\n\nMulti-language LSP client that manages per-language background daemons. Auto-detects the language from file extension and routes queries to the correct server. Each server lazy-starts on first use and idles out after 5 minutes of inactivity.\n\nUse this instead of grep/read when you need to:\n\nFind where something is defined\nFind all usages of a symbol\nGet type signatures or docstrings\nList all classes/functions in a file\nCheck for type errors before running code\nSearch for a symbol across an entire workspace\nSupported Languages\nLanguage\tServer\tExtensions\tInstall\nPython\tpyright-langserver\t.py, .pyi, .pyx\tnpm install -g pyright\nTypeScript/JS\ttypescript-language-server\t.ts, .tsx, .js, .jsx, .mjs, .cjs\tnpm install -g typescript-language-server typescript\nRust\trust-analyzer\t.rs\trustup component add rust-analyzer\nGo\tgopls\t.go\tgo install golang.org/x/tools/gopls@latest\nC/C++\tclangd\t.c, .h, .cpp, .cc, .hpp\tapt install clangd or brew install llvm\nBash\tbash-language-server\t.sh, .bash, .zsh\tnpm install -g bash-language-server\nJava\tjdtls\t.java\teclipse.jdt.ls\nCSS\tvscode-css-language-server\t.css, .scss, .less\tnpm install -g vscode-langservers-extracted\nHTML\tvscode-html-language-server\t.html, .htm\tnpm install -g vscode-langservers-extracted\nJSON\tvscode-json-language-server\t.json, .jsonc\tnpm install -g vscode-langservers-extracted\n\nOnly install the servers you need. The skill auto-detects which are available and reports helpful install commands for missing ones.\n\nSetup\nPrerequisites\nPython 3.10+ (for the client script itself -- stdlib only, no pip deps)\nAt least one language server installed (see table above)\nInstallation\n\nThe skill includes a Python script at {baseDir}/scripts/lsp-query.py. This is the LSP client -- it manages background daemons and handles all queries.\n\nTo make it callable as lsp-query from anywhere, symlink it into your PATH:\n\nln -sf {baseDir}/scripts/lsp-query.py /usr/local/bin/lsp-query\n# or:\nln -sf {baseDir}/scripts/lsp-query.py ~/.npm-global/bin/lsp-query\n\n\nAlternatively, invoke it directly:\n\n{baseDir}/scripts/lsp-query.py <command> [args...]\n\nConfiguration\n\nSet LSP_WORKSPACE to the repo root before querying. If unset, defaults to the git root or cwd.\n\nCommands\n\nAll line and column numbers are 1-indexed (human-friendly, matching editor display).\n\nGo to Definition\nlsp-query definition /path/to/file.py <line> <col>\n\nFind References\nlsp-query references /path/to/file.py <line> <col>\n\nHover (Type Info)\nlsp-query hover /path/to/file.py <line> <col>\n\nDocument Symbols\nlsp-query symbols /path/to/file.py\n\nWorkspace Symbol Search\nlsp-query workspace-symbols \"ClassName\"\n\nDiagnostics\nlsp-query diagnostics /path/to/file.py\n\nCompletions\nlsp-query completions /path/to/file.py <line> <col>\n\nSignature Help\nlsp-query signature /path/to/file.py <line> <col>\n\nRename Preview\nlsp-query rename /path/to/file.py <line> <col> new_name\n\nServer Management\nlsp-query languages                    # Show all supported languages + install status\nlsp-query servers                      # List running language daemons\nlsp-query shutdown                     # Stop all daemons\nlsp-query shutdown python              # Stop just the Python daemon\n\nWhat's Included\n{baseDir}/\n├── SKILL.md              # This file\n└── scripts/\n    └── lsp-query.py      # Python script -- multi-language LSP client + daemon manager\n\n\nlsp-query.py is a self-contained Python script (~850 lines, stdlib only, no pip dependencies). It:\n\nForks a single background daemon process on first use\nThe daemon lazy-starts language servers as needed (e.g., pyright for .py, typescript-language-server for .ts)\nCommunicates with the daemon over a Unix socket (~/.cache/lsp-query/daemon.sock)\nTranslates CLI commands into LSP JSON-RPC requests and prints human-readable results\nEach language server auto-stops after 5 minutes idle; the daemon itself stops when all servers are idle\nEnvironment Variables\nVariable\tDefault\tDescription\nLSP_WORKSPACE\tgit root or cwd\tWorkspace root for LSP servers\nLSP_SERVER\tauto per language\tOverride server command for ALL languages\nLSP_LANG\tauto from extension\tForce a specific language (bypass detection)\nLSP_TIMEOUT\t300\tServer idle timeout in seconds\nLSP_SOCK\t~/.cache/lsp-query/daemon.sock\tUnix socket path\nExamples\nexport LSP_WORKSPACE=/path/to/repo\n\n# Python\nlsp-query symbols src/model.py\nlsp-query hover src/model.py 42 10\nlsp-query references src/model.py 42 10\n\n# TypeScript (auto-detected from .ts extension)\nlsp-query symbols src/index.ts\nlsp-query definition src/app.tsx 15 8\n\n# Rust\nlsp-query symbols src/main.rs\nlsp-query diagnostics src/lib.rs\n\n# Check what's available\nlsp-query languages\nlsp-query servers\n\nTroubleshooting\n\"Server not found for X\": The language server binary isn't installed. The error message includes the install command.\n\"could not connect to LSP daemon\": Daemon failed to start. Verify Python 3.10+ is available.\nImport errors in diagnostics: Expected when packages aren't installed in the current Python environment. These resolve on machines with the correct venv.\nStale results: Run lsp-query shutdown to restart all servers fresh.\nSlow first query per language: Each server takes 1-2 seconds to cold-start. Subsequent queries to the same language are ~200ms.\nWrong language detected: Use LSP_LANG=rust lsp-query symbols myfile to force."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/AdamNaghs/lsp",
    "publisherUrl": "https://clawhub.ai/AdamNaghs/lsp",
    "owner": "AdamNaghs",
    "version": "2.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/lsp",
    "downloadUrl": "https://openagent3.xyz/downloads/lsp",
    "agentUrl": "https://openagent3.xyz/skills/lsp/agent",
    "manifestUrl": "https://openagent3.xyz/skills/lsp/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/lsp/agent.md"
  }
}