まだAIに別ファイルのヘルパーを勝手に呼ばれてる?「declscope」

declscope
Go のパッケージの中に、ファイル単位の private を持ち込んで検査する Linter
GitHub公式サイト
公開
正式公開 2026-09-14(リポジトリ作成 2026-09-12、Zenn 告知 2026-09-16)
作り手
mpyw(個人)
対応
CLI(Go)
言語
英語
価格
無料(MIT ライセンス)
評価
GitHub のスター 37(2026-10-06)

どんなアプリか

declscope holds each declaration to the file that declares it. Another file may not use it. This is the private that Go has no word for, checked at build time.

mpyw さん、declscope 公式サイト・GitHub の README

Go の可視性は「エクスポートされた名前」と「されていない名前」の2段階で、下の段はパッケージ内のすべてのファイルから見えます。declscope は、宣言・メソッド・構造体フィールドにファイル単位とパッケージ単位のスコープを付け、別のファイルからの使用を検査するコマンドラインの Linter です。

README は AI エージェントを念頭に置いています。エージェントはスコープ内にある非公開のヘルパーを呼び、非公開のフィールドに書き込みます。declscope はそうした境界越えを見つけると、何を越えたかと直し方を示し、判断はソースに書き残されて次のエージェントが読める、と説明しています。

境界越えへの答えは2つです。呼び出しを同じ名前空間の中に移して境界を保つか、//declscope:package と書いて意図して共有するかで、後者は -fix が挿入します。

README は、Go で境界を引く Linter を3つの規模で整理しています。パッケージ間の import を見る depguard、プログラム全体の到達可能性を見る deadcode に対し、declscope はひとつのパッケージの中を受け持ちます。

料金とデータの置き場所

GitHub で MIT ライセンスのもとに公開されています。

入れる前に

推奨のインストール方法は mise で、ビルド済みのバイナリが入るため Go は要りません。go tool や go install で入れる場合は Go 1.27 以上が必要です。

go vet 経由で動かす場合、設定ファイルやベースラインファイルを変えても go vet のキャッシュには反映されません。変更後は一度 -a を付けて実行する必要があります。declscope を直接実行する場合は影響を受けません。

-fix は常にスコープを広げる方向にしか直さず、宣言を別のファイルへ移すことはありません。境界を保ちたいときは、呼び出しを自分で移します。

既存のコードベースには、今ある違反を記録する baseline サブコマンドが用意されています。skill install では AI エージェント向けのスキルを入れられます。設定ファイルの未知のキーはエラーになります。