LayeredKB
Personal Knowledge Base(PKB)のワークスペースを,役割ごとの レイヤー に分けて表示する VS Code 拡張機能です.
PKB を CLI エージェント(Claude Code など)と一緒に運用すると,ワークスペースには性質の異なるファイルが混在します.
LayeredKB は開いているフォルダはそのままに,ユーザーが設定した層分けに従ってファイルやフォルダを 層ごとの独立したパネル に振り分けて表示します.
フォルダ構成を変える必要はありません.
┌ LayeredKB ───────────────┐
│ ▾ スキーマ層 12 │ .claude/, CLAUDE.md, AGENTS.md ...
│ ▾ オントロジー層 3 │ *.csv
│ ▾ ナレッジベース層 148 │ *.md
│ ▾ Raw データ層 902 │ ~/Google Drive/PKB-raw(Git 管理外)
│ ▾ その他 7 │ 上記以外
└──────────────────────────┘
| レイヤー |
役割 |
Git 管理 |
既定で含まれるもの |
| スキーマ層 |
CLI エージェントの振る舞いを規定する層 |
○ |
.claude/**, CLAUDE.md, AGENTS.md, .cursor/**, .codex/**, .gemini/**, .github/copilot-instructions.md, .mcp.json など |
| オントロジー層 |
この PKB のオントロジー |
○ |
**/*.csv, **/*.tsv, ontology/** |
| ナレッジベース層 |
メインの知見・情報 |
○ |
**/*.md, **/*.mdx |
| Raw データ層 |
Google Drive などの生データ置き場 |
× |
roots に指定したフォルダ配下の全ファイル(未設定なら空) |
| その他 |
どのレイヤーにも属さないファイル |
|
上記以外(layeredkb.showOtherLayer で非表示可) |
機能
- レイヤーごとのパネル: アクティビティバーの LayeredKB アイコンを開くと,各レイヤーが独立したパネル(ビュー)として並びます.パネルのタイトルにファイル数を表示します.
パネルはドラッグで並べ替え・エクスプローラーへの移動ができます.
- ワークスペース外フォルダ: レイヤーに
roots を指定すると,Google Drive など Git 管理外のフォルダを走査してそのパネルに表示します.
- 標準エクスプローラーの装飾: 各ファイルに所属レイヤーのバッジ(
S / O / K)と色を付けます(layeredkb.decorateExplorer で無効化可).
- コンパクトフォルダー: 子が 1 つしかないフォルダーは
a/b/c のように 1 行にまとめます.
- 自動更新: ファイルの追加・削除・設定変更を検知して再走査します(
roots のフォルダも監視します).
- ファイル操作: クリックで開く,右クリックで「横に開く」「エクスプローラーで表示」「OS で表示」「パスをコピー」.
- マルチルート対応: 複数のワークスペースフォルダはルート名を先頭に付けて表示します.
レイヤーのカスタマイズ
レイヤーは layeredkb.layers 設定で自由に定義できます(最大 8 個).上から順に評価され,最初に一致したレイヤーが採用されます(first-match-wins).
roots を持つレイヤーは指定フォルダだけを走査し,ワークスペース内ファイルの分類には参加しません.
.vscode/settings.json の例(Raw データ層に Google Drive のフォルダを割り当てる):
{
"layeredkb.layers": [
{
"id": "schema",
"label": "スキーマ層",
"icon": "law",
"badge": "S",
"color": "charts.purple",
"patterns": [".claude/**", "**/CLAUDE.md", "**/AGENTS.md", ".mcp.json"]
},
{
"id": "ontology",
"label": "オントロジー層",
"icon": "type-hierarchy",
"badge": "O",
"color": "charts.orange",
"patterns": ["ontology/**", "**/*.csv"]
},
{
"id": "knowledge",
"label": "ナレッジベース層",
"icon": "book",
"badge": "K",
"color": "charts.blue",
"patterns": ["**/*.md"]
},
{
"id": "raw",
"label": "Raw データ層",
"icon": "database",
"patterns": ["**/*"],
"roots": ["~/Google Drive/PKB-raw", "../raw-data"]
}
]
}
各レイヤーのフィールド:
| フィールド |
必須 |
説明 |
id |
○ |
一意な ID(other は予約済み) |
label |
○ |
パネルに表示する名前 |
patterns |
○ |
ルートからの相対 glob(**,ブレース展開可) |
roots |
|
走査するフォルダ(絶対パス,~,またはワークスペース相対パス).指定するとワークスペース外専用のレイヤーになる |
description |
|
ツールチップの説明 |
icon |
|
codicon の名前 |
badge |
|
標準エクスプローラーに出すバッジ(1〜2 文字) |
color |
|
標準エクスプローラーの装飾色(テーマカラー ID,例 charts.blue) |
その他の設定:
| 設定 |
既定値 |
説明 |
layeredkb.exclude |
node_modules, .git, dist, out |
走査から除外する glob(ワークスペースでは files.exclude に加えて適用) |
layeredkb.showOtherLayer |
true |
「その他」パネルを表示する |
layeredkb.compactFolders |
true |
コンパクトフォルダー表示 |
layeredkb.decorateExplorer |
true |
標準エクスプローラーにバッジと色を付ける |
開発
npm install
| コマンド |
内容 |
npm run watch |
esbuild と tsc の型チェックをウォッチ実行 |
npm run compile |
型チェック + Lint + バンドル(開発ビルド) |
npm run package |
型チェック + Lint + バンドル(本番ビルド,minify) |
npm run lint |
ESLint |
npm run check-types |
型チェックのみ |
npm run test:unit |
分類・ツリー構築ロジックの単体テスト(VS Code 不要) |
npm test |
拡張機能の統合テスト(VS Code を起動) |
VS Code でこのフォルダを開き,F5(Run Extension)で拡張機能ホストが起動します.
ディレクトリ構成
src/
├── extension.ts # エントリポイント(ビュー枠・コマンド・装飾の登録)
├── layers.ts # レイヤー定義・分類・ツリー構築(VS Code API 非依存)
├── config.ts # 設定の読み込みと検証
├── workspaceIndex.ts # ワークスペースと roots の走査,分類結果の保持
├── layerTreeProvider.ts # 1 レイヤー分の TreeDataProvider
├── explorerDecorations.ts # FileDecorationProvider
└── test/
├── extension.test.ts # 統合テスト
└── unit/ # 単体テスト
ビューは動的に追加できないため,package.json に 8 個のビュー枠(layeredkb.slot0〜slot7)を静的に宣言し,設定に応じてタイトルと表示/非表示を切り替えています.
公開
初回のみ: publisher と Personal Access Token の準備
- Azure DevOps にサインインし,組織を 1 つ作ります(無ければ).
- 右上のユーザー設定から Personal access tokens を開き,次の設定でトークンを作ります.
- Organization: All accessible organizations
- Scopes: Custom defined → Marketplace: Manage
- Marketplace の管理ページ で publisher を作ります.
ID は
package.json の publisher(del-taiseiozaki)と一致させてください.
- GitHub リポジトリの Settings → Secrets and variables → Actions に,2 で作ったトークンを
VSCE_PAT という名前で登録します.
リリース手順
package.json の version を上げて main にマージし,同じ番号のタグを push します.
Release ワークフローがビルド・テスト・パッケージ・Marketplace 公開・GitHub Release 作成まで行います.
npm version patch # 0.1.0 → 0.1.1(package.json を更新しコミットとタグを作る)
git push origin main --follow-tags
手元から直接公開する場合:
npx @vscode/vsce login del-taiseiozaki # トークンを入力
npx @vscode/vsce package # .vsix を生成(内容確認用)
npx @vscode/vsce publish # Marketplace へ公開
公開後,Marketplace に反映されるまで数分かかります.