mcpField
C
checking-files-with-lsp

checking-files-with-lsp

github.com/zenobi-usテスト・品質6845 回インストール今日更新
リポジトリ

checking-files-with-lsp について

checking-files-with-lspは、コードや設定、Markdownファイルを検証するスキルです。miseで言語ツールを探し、種類に応じて選び、インストール状況を確認して対象ファイルを検査する手順を示します。

主な機能

  1. 01拡張子や内容からファイル形式を判定
  2. 02miseでLSPやリンターを検索
  3. 03言語サーバーを優先
  4. 04候補が複数なら順位付きで提示
  5. 05選んだツールを実行して結果を報告

活用シーン

  1. 01コードの構文や型の問題を確認
  2. 02YAML、TOML、JSONファイルを検証
  3. 03Markdownの書式やリンクの問題を検出

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/zenobi-us/dotfiles --skill checking-files-with-lsp

インストール後、Claude Code で/checking-files-with-lspを入力して読み込まれたか確認します。

詳細

LSP によるファイルのチェック

概要

ファイルの構造やコード品質を検証、チェック、把握する必要がある場合は、言語サーバーとリンターを使って体系的に実施します。このスキルでは、ファイルの種類を特定し、利用可能な LSP/リンターツールを mise で検索して、適切なツールを選択し、チェックを実行するという、信頼性の高いワークフローを提供します。

基本原則: 手作業で確認するのではなく、言語に適したツールに検証を任せます。ツールの検出と選択を自動化します。

使用する場面

次のような場合にこのスキルを使用します:

  • 構文エラー、型の問題、スタイル上の問題がないかコードファイルをチェックする
  • 設定ファイル(YAML、TOML、JSON、KDL など)を検証する
  • 見慣れないファイルのコード構造や品質を把握する
  • Markdown ファイルの書式やリンクの問題を検証する
  • ファイルにどのような問題があるかをすばやく把握する

次のような場合には使用しません:

  • 内容を理解するためにファイルを読むだけの場合(検証は不要)
  • テストスイート全体を実行する場合(これは検証ではなくテストです)
  • コードの動作を分析する場合(これは検証ではなくデバッグです)

ワークフロー

ステップ 1:ファイルの種類を特定する

ファイル拡張子から言語/種類を判断します:

.lua     → lua
.ts/.tsx → typescript
.py      → python
.go      → go
.rs      → rust
.md      → markdown
.json    → json
.yaml    → yaml
.toml    → toml
.kdl     → kdl

拡張子が不明、または存在しない場合は、ファイルのシバンや内容のパターンを調べます。

ステップ 2:mise で LSP/リンターを検索する

実行します:mise search <filetype>

その言語で利用できる言語サーバー、リンター、フォーマッターがすべて表示されます。

出力例:

mise search lua
lua-language-server    (most popular)
stylua                 (formatter)

mise search python
pyright
pylance
python-language-server
black
ruff
ステップ 3:適切なツールを選択する

ツールの種類に基づいて優先順位を付けます: 言語サーバー(LSP)> リンター > フォーマッター

LSP は最も包括的な検証を提供します。リンターはスタイルや品質の問題を検出します。フォーマッターは検証の用途では優先度が低くなります。

明らかな選択肢が 1 つの場合:

  • 自動的に選択します(例:Lua では lua-language-server のみ)
  • インストール状況を確認します:mise list | grep <tool>(一覧にない場合はインストールします)
  • インストールします:mise install lua-language-server
  • ファイルに対して実行します

選択肢が複数ある場合:

  • 優先順位で絞り込みます:最初に LSP を表示し、次にリンターを表示して、フォーマッターは省きます
  • 人気順に並べます:最も利用されているツールを先にします(GitHub のスター数を基準とし、同数の場合は npm/PyPI のダウンロード数で判断します)
  • 順位付きリストをユーザーに提示します(ツールの種類と簡単な説明を添えます)
  • 番号またはアルファベットでユーザーに選んでもらいます
  • 選択されたツールのインストール状況を確認し、必要に応じてインストールします
  • ファイルに対して実行します

ツールが見つからない場合:

  • ユーザーに明確に伝えます:「mise には [filetype] で利用できる LSP/リンターがありません」
  • 次の順に代替手段を提案します:
    1. mise にない場合は、オンラインのパッケージマネージャー(npm、PyPI、cargo など)を確認する
    2. 汎用バリデーター(JSON 用の jq、YAML 用の yamllint など)を探す
    3. 基本的な構文チェック(言語組み込みのチェッカー)を行う
    4. 手順に沿って手動で検証する
  • 次のように提案します:「別のソースからのインストールをお手伝いしましょうか?」
ステップ 4:検証を実行する

選択したツールをファイルに対して実行し、エラー、警告、スタイル上の問題、提案を含む結果を返します。

クイックリファレンス

タスク操作
ファイルの種類を特定する主な判断材料としてファイル拡張子を使用する
ツールを探すmise search <filetype>
明らかな選択肢をインストールするmise install <tool>(自動選択)
選択肢を提示するユーザーが選べるよう、順位付きリストを提示する
検証を実行するファイルパスを指定してツールを実行する

よくある間違い

間違い:ファイルの種類を判定しない

  • 誤り:「コードファイルだから、どの言語サーバーでも使えます」
  • 正解:ファイルの種類によって、適用する LSP が決まります。誤った LSP を使うと、誤ったエラーが表示されます

間違い:複数の LSP がある場合に、適当に選ぶ

  • 誤り:「最初のものを試せばいいでしょう」または「どれも同じです」
  • 正解:LSP によって確認する項目が異なります。人気の高いものから順に選びます。種類で絞り込みます:LSP > リンター > フォーマッター
  • 例外なし: 複数の選択肢がある場合は、推測せずにユーザーに提示する必要があります

間違い:LSP がインストール済みだと思い込む

  • 誤り:「lua-language-server を実行してみます……」
  • 正解:まず必ず mise search で確認します。インストール前に mise list を確認します。必要であればインストールします

間違い:システム要件を確認しない

  • 誤り:「LSP をインストールすれば動きます」
  • 正解:LSP によってはランタイムの依存関係(Python、Node など)が必要です。結果を報告する前に、LSP が実行できることをテストします

間違い:LSP が使えない場合に諦める

  • 誤り:「この言語用のツールがないので、検証できません」
  • 正解:次の順に代替手段を探します:オンラインのパッケージマネージャー → 汎用バリデーター → 構文チェック → 手動でのガイダンス

間違い:ツールの種類を混同する

  • 誤り:検証において、フォーマッターとリンターを同等に扱う
  • 正解:LSP > リンター > フォーマッターの順に優先します。ツールの種類を最初の絞り込み条件として使います

検証の代替手段

mise で LSP/リンターが利用できない場合:

  1. mise にない場合は、オンラインのパッケージマネージャー(npm、PyPI、cargo など)を確認します
  2. 汎用バリデーターを探します。JSON バリデーターや YAML チェッカーは、さまざまなプロジェクトで使えます
  3. 基本的な構文チェックを行います。一部の言語には、組み込みの構文チェッカーがあります
  4. 手動で検証します。手順に沿ったレビューのガイダンスを提示します
  5. インストールを提案します。「別のソースからのインストールをお手伝いしましょうか?」

実装手順

ユーザーがファイルを確認するのを手伝う場合:

  1. 「どのファイルを確認しますか?」と尋ねるか、対象を特定します
  2. 拡張子からファイルの種類を判定します
  3. mise search <filetype> を実行します
  4. 判断します:明らかな選択肢を使うか、優先順位を付けて選択肢を提示するか
  5. インストール状況を確認します:mise list | grep <tool>(インストール済みか確認)
  6. 必要であればインストールします:mise install <selected-tool>
  7. ツールが実行できることをテストします:LSP/リンターがエラーなく実行されることを確認します
  8. 実行します:適切なフラグを指定して、ツールをファイルに対して実行します
  9. 報告します:検証結果をユーザーに提示します
  10. 次のステップを提案します:「これらの問題を修正しますか?」または「もう一度チェックを実行しますか?」

トラブルシューティング

ツールはインストールできるが、実行できない:

  • LSP によってはランタイムの依存関係が必要です(ツールによって Python が必要な場合や、Node が必要な場合があります)
  • ランタイム要件について、LSP のドキュメントを確認します
  • 例:python-language-server は Python がインストールされている必要があります
  • 次のコマンドで確認します:mise exec <tool> -- <tool> --version

Mise の検索結果がない:

  • その言語が mise のデータベースに登録されていない可能性があります
  • 別のパッケージマネージャーを試します:npm(JavaScript)、PyPI(Python)、cargo(Rust)
  • または、汎用バリデーターを使います:jq(JSON)、yamllint(YAML)

LSP がエラーを検出するが、ツールが目的に合っていない:

  • 選択したツールが誤っています(LSP ではなくフォーマッターを選択したなど)
  • ステップ 3 に戻り、種類の優先順位(LSP > リンター)で絞り込みます
  • リストから別の選択肢を選ぶよう、ユーザーに依頼します

ファイルの拡張子が一般的でない:

  • フォールバックとして、ファイルの内容(シバン、ヘッダー)を調べます
  • 例:実行可能なシェルスクリプトには、.sh 拡張子がないことがよくあります
  • mise で検索する前に、内容を確認してファイルの種類を特定します

実際の効果

  • 高速な検証:よくある問題について、手動でコードレビューする必要がありません
  • 一貫したチェック:毎回同じツールと基準で確認できます
  • 問題の発見:手動での確認では見逃す問題を見つけられます
  • 自動化:ワークフロー、CI/CD、pre-commit フックに組み込めます
  • 言語を問わない:LSP が利用できる言語であれば、同じ手順を使えます

コメント