checking-files-with-lsp について
checking-files-with-lspは、コードや設定、Markdownファイルを検証するスキルです。miseで言語ツールを探し、種類に応じて選び、インストール状況を確認して対象ファイルを検査する手順を示します。
主な機能
- 01拡張子や内容からファイル形式を判定
- 02miseでLSPやリンターを検索
- 03言語サーバーを優先
- 04候補が複数なら順位付きで提示
- 05選んだツールを実行して結果を報告
活用シーン
- 01コードの構文や型の問題を確認
- 02YAML、TOML、JSONファイルを検証
- 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/リンターがありません」
- 次の順に代替手段を提案します:
- mise にない場合は、オンラインのパッケージマネージャー(npm、PyPI、cargo など)を確認する
- 汎用バリデーター(JSON 用の jq、YAML 用の yamllint など)を探す
- 基本的な構文チェック(言語組み込みのチェッカー)を行う
- 手順に沿って手動で検証する
- 次のように提案します:「別のソースからのインストールをお手伝いしましょうか?」
ステップ 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/リンターが利用できない場合:
- mise にない場合は、オンラインのパッケージマネージャー(npm、PyPI、cargo など)を確認します
- 汎用バリデーターを探します。JSON バリデーターや YAML チェッカーは、さまざまなプロジェクトで使えます
- 基本的な構文チェックを行います。一部の言語には、組み込みの構文チェッカーがあります
- 手動で検証します。手順に沿ったレビューのガイダンスを提示します
- インストールを提案します。「別のソースからのインストールをお手伝いしましょうか?」
実装手順
ユーザーがファイルを確認するのを手伝う場合:
- 「どのファイルを確認しますか?」と尋ねるか、対象を特定します
- 拡張子からファイルの種類を判定します
mise search <filetype>を実行します- 判断します:明らかな選択肢を使うか、優先順位を付けて選択肢を提示するか
- インストール状況を確認します:
mise list | grep <tool>(インストール済みか確認) - 必要であればインストールします:
mise install <selected-tool> - ツールが実行できることをテストします:LSP/リンターがエラーなく実行されることを確認します
- 実行します:適切なフラグを指定して、ツールをファイルに対して実行します
- 報告します:検証結果をユーザーに提示します
- 次のステップを提案します:「これらの問題を修正しますか?」または「もう一度チェックを実行しますか?」
トラブルシューティング
ツールはインストールできるが、実行できない:
- 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 が利用できる言語であれば、同じ手順を使えます