← ClaudeAtlas

language-serverslisted

Set up Serena language servers, once per project. Use when this repository has no Serena languages or the session start notice reports a mismatch: detects languages, writes .serena/project.yml, verifies each server, checks Claude Code LSP(言語サーバを設定・Serenaの言語を直す).
devbasex/ai-plugins · ★ 1 · AI & Automation · score 65
Install: claude install-skill devbasex/ai-plugins
# 言語サーバを設定する **この Skill はプロジェクト(リポジトリ)ごとに実行する。利用者単位で 1 回ではない。** 言語の設定(`.serena/project.yml`)はリポジトリごとに持つため、プラグインを入れただけでは どのリポジトリにも言語サーバは設定されない。打ち直すのは、セッションの開始の通知が 食い違い(設定に無い言語・欠けた LSP)を知らせたときである。 | 何が | 単位 | | --- | --- | | この Skill の実行(言語の検出・`project.yml` の書き込み・1 言語ずつの起動の検証) | プロジェクト | | `project.yml` を追跡するか | プロジェクト(追跡すれば、同じリポジトリの他の利用者は打たずに済む) | | 言語サーバの本体と Claude Code の LSP プラグインの導入 | 利用者(マシン・コンテナ)。この Skill は欠けを示すだけで入れない | 判断の要らない手順はすべて `scripts/serena-lsp.py` が行う。この Skill が持つのは、次の 4 つの 判断だけである。 1. 導入のコマンドを打つか(利用者に確認する) 2. `.serena/project.yml` を追跡するか(利用者に確認する) 3. 検証に失敗した言語の原因と次の手 4. 検出の誤りを名指しで直すか(`--only`) ## 1. プラグインルートを決める Claude Code だけが `${CLAUDE_PLUGIN_ROOT}` を置き換える。Codex では、**打つ前に `<この Skill のディレクトリ>` をランタイムから渡された実際のパスへ置き換える**。Kiro CLI は installer が張った `.kiro/skills/language-servers` の symlink で当たる。 ```bash PLUGIN_ROOT='${CLAUDE_PLUGIN_ROOT}' case "$PLUGIN_ROOT" in '$'*) PLUGIN_ROOT= ;; esac ROOT= for candidate in \ ${PLUGIN_ROOT:+"$PLUGIN_ROOT/skills/language-servers"} \ "<この Skill のディレクトリ>" \ ".kiro/skills/language-servers" do # symlink のまま上がると .kiro/ を指すため、実体へ解決してから 2 つ上がる dir=$(cd -P "$candidate" 2>/dev/null && pwd) || continue [ -f "$dir/../../scripts/serena-lsp.py" ] || continue ROOT=$(cd "$dir/../.." && pwd) break done [ -n "$ROOT" ] || { echo "mcp-serena のプラグインルートを解決できない" >&2; exit 1; } echo "$ROOT" ``` 以降のコマンドは、同じシェルか、`ROOT` を上の値で置き換えて打つ。 ## 2. 検出して書き、1 言語ずつ検証する ```bash python3 "$ROOT/scripts/serena-lsp.py" configure --root . --json