mcpField
C
cellar

cellar

github.com/virtuslab開発102206 回インストール1 週間前に更新
リポジトリ

cellar について

cellar は JVM プロジェクト向けのコマンドラインスキルで、JAR を手作業で調べずに依存ライブラリや Maven アーティファクトの API を検索できます。Mill、sbt、scala-cli を検出し、座標を指定した外部アーティファクトの照会にも対応します。

主な機能

  1. 01シグネチャ・メンバー・ドキュメントの取得
  2. 02パッケージやクラスのシンボル一覧・検索
  3. 03Mill・sbt・scala-cli のプロジェクト検出
  4. 04Maven 座標による外部アーティファクト照会
  5. 05ソースコードと依存ツリーの取得

活用シーン

  1. 01コーディング前に依存 API を確認
  2. 02パッケージやクラスで利用可能なシンボルを検索
  3. 03プロジェクトをインポートせず Maven アーティファクトを調査
  4. 04依存元のソースや依存ツリーを確認

インストール

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

$npx skills add https://github.com/virtuslab/cellar --skill cellar

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

詳細

Cellar

推測したり、JAR ファイルを手動でダウンロード、展開、検索して型シグネチャを調べたりする代わりに、cellar を使って JVM 依存関係の API を検索できます。

前提条件

cellar --version を実行して、cellar が PATH にあることを確認します。見つからない場合は、インストールが必要です:https://github.com/VirtusLab/cellar#installation

プロジェクトを認識するコマンド(プロジェクトのルートから実行)

現在のプロジェクトのコードとすべての依存関係を検索します。Cellar はビルドツール(Mill、sbt、scala-cli)を自動検出します。

cellar get [--module <name>] <fqn>       # 単一のシンボル(シグネチャ、メンバー、ドキュメント)
cellar list [--module <name>] <package>  # パッケージまたはクラス内のシンボルを一覧表示
cellar search [--module <name>] <query>  # 大文字と小文字を区別しない部分一致検索
  • Mill/sbt プロジェクト:--module が必要です(例:--module lib、--module core)
  • scala-cli プロジェクト:--module は省略します
  • --test:テストスコープのクラスパスを検索します(sbt/scala-cli の場合。Mill では、--module foo.test のようにテストモジュールを直接指定します)
  • --no-cache:クラスパスのキャッシュをスキップし、ビルドツールから再抽出します
  • --java-home <path>:JRE クラスパスを上書きします
  • -l、--limit <N>:list/search の最大結果数(デフォルト:50)
  • --hide-inherited:型自体で宣言されたメンバーのみを表示します(get コマンド)
  • --group-inherited:宣言元の型ごとにセクション見出しでメンバーをグループ化します(get コマンド)
  • -v、--verbose/--debug:診断情報を stderr に出力します。想定したシンボルが見つからないと報告された場合に使用します。get コマンドで --verbose を指定すると、試した検索方法が表示されます。--debug を指定すると、どのコマンドでも解決されたクラスパスとビルドツールの検出情報が追加されます。

外部コマンド(任意の Maven 座標を検索)

明示的な座標(group:artifact:version)を指定して、公開済みの任意のアーティファクトを検索します。

cellar get-external <coordinate> <fqn>       # 単一のシンボル
cellar list-external <coordinate> <package>  # シンボルを一覧表示
cellar search-external <coordinate> <query>  # 名前で検索
cellar get-source <coordinate> <fqn>         # ソースコードを取得
cellar deps <coordinate>                     # 依存関係ツリー
  • 座標は明示的に指定する必要があります:group:artifact_3:version(:: 省略形は使えません)
  • sbt プラグインでは、Scala と sbt の完全なサフィックスを使用します:group:artifact_2.12_1.0:version(例:org.scala-native:sbt-scala-native_2.12_1.0:latest)
  • コンパイラープラグインや、Scala の完全なバージョンサフィックスを持つその他のアーティファクトでは、完全なバージョンを使用します:group:artifact_3.3.8:version
  • 最新リリースを解決するには、バージョンとして latest を使用します
  • -r、--repository <url>:追加の Maven リポジトリ(繰り返し指定可能)。~/.cellar/cellar.conf または .cellar/cellar.conf の maven.repositories で設定されたリポジトリに追加されます

ワークフロー

  1. パッケージがわからない場合 → cellar search/cellar search-external
  2. パッケージはわかるが、型がわからない場合 → cellar list/cellar list-external
  3. 型がわかっている場合 → cellar get/cellar get-external
  4. 実装が必要な場合 → cellar get-source

例

# Look up a Scala 3 trait
cellar get-external org.typelevel:cats-core_3:2.10.0 cats.Monad

# Look up a Java class
cellar get-external org.apache.commons:commons-lang3:3.14.0 org.apache.commons.lang3.StringUtils

# List a package
cellar list-external io.circe:circe-core_3:0.14.6 io.circe

# Search for a method
cellar search-external org.typelevel:cats-core_3:2.10.0 flatMap

# Get source code
cellar get-source org.typelevel:cats-core_3:2.10.0 cats.Monad

# Dependency tree
cellar deps org.typelevel:cats-effect_3:3.5.4

# sbt plugin (use full Scala + sbt suffix)
cellar deps org.scala-native:sbt-scala-native_2.12_1.0:latest

# Project-aware (from a Mill project root)
cellar get --module lib cats.Monad
cellar list --module core cats
cellar search --module lib flatMap

出力例

cellar get-external --hide-inherited org.typelevel:cats-core_3:2.10.0 cats.Monad

## cats.Monad
```scala
trait Monad[F[_]] extends FlatMap[F] with Applicative[F]
```
**Supertypes:** cats.Applicative, cats.InvariantMonoidal, cats.FlatMap, cats.FlatMapArityFunctions, cats.Apply, cats.ApplyArityFunctions, cats.InvariantSemigroupal, cats.Semigroupal, cats.Functor, cats.Invariant, java.io.Serializable

Monad.
Allows composition of dependent effectful functions.
See: [[http://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf Monads for functional programming]]
Must obey the laws defined in cats.laws.MonadLaws.

**Origin:** cats.Monad
**Members:**
```scala
def iterateWhile[A](f: F[A])(p: A => Boolean): F[A]
def untilM[G[_], A](f: F[A])(cond: => F[Boolean])(implicit G: Alternative[G]): F[G[A]]
def ifElseM[A](branches: (F[Boolean], F[A])*)(els: F[A]): F[A]
def iterateUntilM[A](init: A)(f: A => F[A])(p: A => Boolean): F[A]
def map[A, B](fa: F[A])(f: A => B): F[B]
def whileM_[A](p: F[Boolean])(body: => F[A]): F[Unit]
def whileM[G[_], A](p: F[Boolean])(body: => F[A])(implicit G: Alternative[G]): F[G[A]]
def untilM_[A](f: F[A])(cond: => F[Boolean]): F[Unit]
def iterateUntil[A](f: F[A])(p: A => Boolean): F[A]
def iterateWhileM[A](init: A)(f: A => F[A])(p: A => Boolean): F[A]
```
**Companion members:**
```scala
trait Ops[F[_], A] extends Serializable
object ops
def apply[F[_]](implicit instance: Monad[F]): Monad[F]
trait ToMonadOps extends Serializable
object nonInheritedOps extends ToMonadOps
trait AllOps[F[_], A] extends Ops[F, A] with FlatMap.AllOps[F, A] with Applicative.AllOps[F, A]
```

**Supertypes:** には、線形化順序(メンバー検索で使われる順序)に並んだすべての祖先が表示されます。

メンバー出力の選択
  • デフォルト:継承されたものを含め、その型で呼び出せるすべてのメンバーを表示します。呼び出せるメンバーを探すときに使用します。
  • --hide-inherited:型自体が宣言するメンバーのみを表示します。サブタイプで追加されたメンバーを調べる場合や、出力全体が大きすぎる場合に使用します。
  • --group-inherited:// Declared on/// Inherited from の見出しの下にメンバーを表示します。ドキュメントを読んだり、オーバーライド対象を探したりするために、宣言元の親型を知りたい場合に使用します。

Metals MCP も利用できる場合

外部依存関係の API の検索にのみcellar を優先してください(cellar の get-external と Metals の inspect/get-docs の比較):cellar はプロジェクトのインポートが不要で、公開されている任意の Maven 座標で動作します。それ以外のすべてのタスク(定義へ移動、参照の検索、名前変更、診断、コンパイル)には Metals を使用してください。

出力

  • stdout:Markdown — そのまま利用できます
  • stderr:診断情報(警告、切り詰めに関する通知)
  • 終了コード 0:成功、終了コード 1:エラー

コメント