From notation-skills
巨大なリポジトリの構造を、固定ルールの DSL `repo-map v1` テキストに落とす Skill。 Turn a (possibly huge) repository into a fixed-grammar `repo-map v1` DSL — generation only, no drawing. ディレクトリ・パッケージ境界・代表的な依存関係を読み取り、認知負荷を下げる「地図の素」を 意味層(ノード・エッジ)とレイアウト層に分けて出力する。スコープ(root)と深度(0/1/2)で 大きさを制御し、まず粗く、必要に応じて範囲を絞って深掘りする。 次のような発話で起動する: 「このリポジトリを図解して」「アーキテクチャ地図を作って」「依存関係を DSL にして」 「モノレポの構造を可視化したい」「コードベースの全体像が欲しい」「repo-map を作って」 「構造をテキストで持ちたい」「どのパッケージが何に依存しているか地図にして」 「オンボーディング用の構造図を」「認知負荷を下げる地図がほしい」「この範囲を深掘りした地図に」。 出力は必ず `repo-map v1` テキスト。 禁止: DSL を出さずに Mermaid / Figma など図を直接生成しないこと(描画は `notation-render` の役割)。 リポジトリの全ファイルを列挙して DSL に埋め込まないこと(package / module 粒度に抽象化する)。
How this skill is triggered — by the user, by Claude, or both
Slash command
/notation-skills:repo-map-notationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
この Skill の仕事は**ただ 1 つ**——リポジトリ構造を `repo-map v1` という固定文法の **DSL テキストに変換すること**。HTML の座標規約は扱わない(それは [notation-render](../notation-render/SKILL.md))。図そのものも描かない。**出力は常に `# repo-map v1` で始まるテキスト**である。
repo-map v1 DSLこの Skill の仕事はただ 1 つ——リポジトリ構造を repo-map v1 という固定文法の DSL テキストに変換すること。HTML の座標規約は扱わない(それは notation-render)。図そのものも描かない。出力は常に # repo-map v1 で始まるテキストである。
設計の土台(なぜ DSL を正本にするか、意味とレイアウトを分けるか)は notation-core を参照。repo-map v1 の正式文法・検証コードは references/grammar.md が正本。
notation-render に渡す。depth は地図の粒度。大きいリポジトリほどまず粗く。
| depth | 粒度 | 主なノード種別 | こんなとき |
|---|---|---|---|
| 0 | システム全体 | system / external / datastore | 最初の俯瞰。サブシステムが数個見えれば十分 |
| 1 | パッケージ / トップ階層 | package(+ external / datastore) | モノレポの構成、主要コンポーネントと依存 |
| 2 | 主要ファイル群 | module / file-group | 範囲を絞った1 パッケージ内部の深掘り |
迷ったら depth 1 から。深掘りは「全体を depth 2 にする」のではなく「範囲を狭めて depth 2 にする」。詳しくは references/scope-and-depth.md。
DSL を書き始める前に、次をユーザーと合意する。ここを飛ばすと、大きすぎる・的外れな地図になる。
. か apps/web)。node_modules, dist, build, 生成物, ベンダ等。calls / imports / owns・reads / deploys / contains)。地図の素になる事実を集める。全ファイル走査は不要、代表例のサンプリングでよい。
package.json, go.mod, Cargo.toml, pyproject.toml, pom.xml 等。これらがある単位は、ほぼそのまま package ノードになる。import / require をサンプリングして、誰が誰を使うかの当たりを付ける(全数調査はしない)。集めた事実を、読める地図の大きさに畳む。
抽象化したノード・エッジを DSL にする前に、どの「ビュー」で見せるかを 1 つ決める。同じ閉じた文法でも、選ぶ kind/relation・focus・@layout の使い方で地図は別物になる。ここを飛ばすと、毎回「階層(contains)+ import 依存(imports)」の同じ形に無意識に落ち、STEP 0 で決めた「何が分かれば成功か」に答えない地図になる。
kind と relation の部分集合を絞る。focus の当て先と @layout(rank=/group=)の使い方も、そのパターンの戦略に合わせる。owns/deploys/reads/calls を主役にするビューを意図的に検討する。選んだビューに沿って、完全な repo-map v1 テキストを出力する。文法は references/grammar.md。出力前に自己バリデーション(下記)を必ず通す。
「この部分だけ深掘りして」と言われたら、全体を作り直さない。@meta root を対象に下げ、depth を上げ、その部分スコープだけの新しい DSLを全量で出す(原則「全量置換・範囲を絞る」)。
references/grammar.md の検証規則の要点。1 つでも引っかかれば直してから出す。
# repo-map v1。セクションは @meta → @nodes → @edges →(任意)@layout の順。@meta に root / depth(0|1|2) / generated がある。focus を使うならそのノードが存在する。@nodes に定義済み(未定義参照ゼロ)。id の重複なし。自己ループなし。kind は { system, package, module, file-group, external, datastore } のみ。relation は { contains, imports, calls, deploys, reads, owns } のみ。"..." で引用。path はラベル直後の唯一の裸トークン。@layout には rank= / group= 以外(意味情報)を入れていない。| ファイル | 中身 | いつ読む |
|---|---|---|
| references/grammar.md | repo-map v1 の正式文法・内部モデル・検証コード(正本) | DSL を書く・検証する全ての場面 |
| references/scope-and-depth.md | depth 0/1/2 の選び方、リポジトリ類型別ガイド | STEP 0 で粒度に迷ったとき |
| references/view-patterns.md | 固定文法のまま「見せ方」を変える 8 つのビューパターン(intent / 適する場面 / ノード・エッジ選択 / focus・レイアウト戦略 / 避けること)+設計意図 4 軸の AskUserQuestion テンプレ | STEP 0 で観点を確認し、STEP 3 でどのビューにするか選ぶとき |
| references/examples.md | 架空リポジトリの入力 → 出力 DSL 全文(4 例・各ビュー別) | 出力の形を確認したいとき |
npx claudepluginhub hirokita117/notation-skill --plugin notation-skillsGuides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Reference for writing and editing skills with predictable behavior, covering invocation models, description writing, and information hierarchy.