索引のキー・型・必須・既定と、点検が返すずれの種類の一覧
使う側が文書のメタデータと用語を書く YAML のファイルの形。
場所は設定の index で決める(索引の場所)。
mdmark はブラウザでファイルを読まない。
使う側のサーバーが読んだオブジェクトを、mount・render・collectReferences・checkIndex に渡す(API)。
形は、リポジトリの schemas/mdmark.index.schema.json(JSON Schema draft 2020-12)で縛る。
書き方の手順は 索引と用語集を書く。
| 名前 | キー | 説明 |
|---|---|---|
| 最上位のキー | schema・docs・terms・tags |
索引の版と、文書・用語・タグの語彙の並び |
| 文書 | docs[] |
索引に載せる文書 1 つのメタデータ |
| 用語 | terms[] |
索引に載せる用語 1 つ。本文に出たら意味のツールチップを付ける |
| タグの語彙 | tags[] |
索引に載せるタグ 1 つと、その説明・別名・振り替え先 |
| 点検が返すずれ | kind |
checkIndex が返すずれの種類 |
ここに挙げたキー以外は書けない。
| キー | 型 | 必須 | 説明 |
|---|---|---|---|
schema |
整数 | 必須 | 索引の版。今は 1 |
docs |
文書の並び | 必須 | 索引に載せる文書 |
terms |
用語の並び | 任意 | 索引に載せる用語 |
tags |
タグの語彙の並び | 任意 | 索引に載せるタグの語彙 |
schema: 1
docs:
- id: arch
path: 設計/arch.md
title: アーキテクチャ
description: 全体の構成と依存の向き
aliases: [構成図]
tags: [設計, { name: topic:mcp, main: true }]
related:
- to: api
type: requires
when: 公開関数の仕様を確かめるとき
- id: api
path: api.md
title: API
terms:
- id: workspace
term: ワークスペース
aliases: [WS]
meaning: 話し合いの記録を置くフォルダ
avoid: [作業場]
tags:
- name: topic:mcp
group: topic
description: "含める: MCP のツールの作り方。含めない: Claude Code の設定。例: find_docs の引数"
aliases: [MCP]
- name: 設計
group: kind
索引に載せた文書 1 つのメタデータ。
| キー | 型 | 必須 | 既定 | 説明 |
|---|---|---|---|---|
id |
文字列 | 必須 | なし | 文書の ID。docs の中で一意。空にできない |
path |
文字列 | 必須 | なし | 文書のパス。索引のファイルのあるフォルダからの相対パスで、区切りは /。docs の中で一意。空にできない |
title |
文字列 | 必須 | なし | 文書の題。関連文書のリンクの文字に出す。空にできない |
description |
文字列 | 任意 | なし | 1 文の概要。ツールチップの「関連文書」に出す |
aliases |
文字列の並び | 任意 | [] |
本文での呼び名。本文に出たら、その語のツールチップの「関連文書」にこの文書を出し、被参照にも数える。要素は空にできない |
tags |
タグの並び | 任意 | [] |
タグ。描くことには使わず、MCP の find_docs の絞り込みと並びに使う。要素はタグの名前の文字列か、name(必須・空にできない文字列)と main(主題のタグか。任意・既定 false)を持つオブジェクト。文字列の要素は main: false と同じ。タグの語彙(最上位の tags)を記載した索引では、点検が語彙とのずれを知らせる(タグのずれ) |
related |
関連の並び | 任意 | [] |
この文書から他の文書への関連。要素は関連のオブジェクトか、関連する文書の id の文字列(関連の要素)。件数の上限は置かない。to(文字列の要素はその文字列)をこの文書からその文書への参照として数える。索引に無い id は点検が知らせる |
docs[].related のオブジェクトの要素のキー。
ここに挙げたキー以外は書けない。
| キー | 型 | 必須 | 説明 |
|---|---|---|---|
to |
文字列 | 必須 | 相手の文書の id。空にできない |
type |
文字列 | 必須 | 関係の種類。requires・references・replaces・part_of・change_together のどれか |
when |
文字列 | 必須 | いつ読むかの 1 文。空にできない |
paths |
文字列の並び | 任意 | 関連が当たるファイルの glob の並び。要素は空にできない |
関係の種類は次のとおり。
逆向きの名前は、MCP の find_docs の related_to が、相手から見た関係として返す。
type |
意味 | 逆向きの名前 |
|---|---|---|
requires |
相手を先に読まないと分からない | required_by |
references |
相手を必要なときに引く | referenced_by |
replaces |
相手を置き換えた | replaced_by |
part_of |
相手の一部をなす | has_part |
change_together |
片方を直したらもう片方も直す | change_together |
関連は片側だけに記載し、逆向きは find_docs が出す。
change_together だけは、両側に記載する。
片側にしか記載していない change_together は、点検が one_sided_change_together で知らせる。
文字列の要素も読める。
type と when を持たない関連として扱い、点検が untyped_related でオブジェクトへの書き換えを求める。
索引に載せた用語 1 つ。本文に出たら意味のツールチップを付ける。
| キー | 型 | 必須 | 既定 | 説明 |
|---|---|---|---|---|
id |
文字列 | 必須 | なし | 用語の ID。terms の中で一意。節ごとに最初の 1 回だけ下線を付ける単位。空にできない |
term |
文字列 | 必須 | なし | 用語の語。空にできない |
aliases |
文字列の並び | 任意 | [] |
別名。本文に出たら、用語と同じツールチップを出す。要素は空にできない |
meaning |
文字列 | 必須 | なし | 意味。ツールチップの「用語」に出す。空にできない |
avoid |
文字列の並び | 任意 | [] |
やめた言い方。索引の文書の本文に出たら、点検が avoided_term で知らせる。描いた文書では、本文に出たやめた言い方に波線のマーカーを付け、見出し「代わりの用語」に用語の語と意味を出したツールチップを出す。要素は空にできない |
題・意味・概要は Markdown として解析せず、文字として出す。
索引に載せたタグ 1 つと、その説明・別名・振り替え先。
語彙は索引に 1 つだけ置き、同じ name のタグをグループごとに別に定義しない。
文書の tags と、MCP の find_docs・list_tags に渡すタグは、この name と aliases に突き合わせる。
| キー | 型 | 必須 | 既定 | 説明 |
|---|---|---|---|---|
name |
文字列 | 必須 | なし | タグの名前。語彙の中で一意にする。空にできない。重なっても Schema は拒まず、点検が duplicate_tag で知らせる |
group |
文字列 | 任意 | なし | タグのグループ(topic・kind・scope・tool など)。空にできない |
description |
文字列 | 任意 | なし | タグを付ける文書の「含める / 含めない / 例」。MCP の list_tags が返す |
aliases |
文字列の並び | 任意 | [] |
タグの別名。文書の tags と find_docs に渡した別名は、このタグの name として扱う。要素は空にできない |
deprecated |
文字列 | 任意 | なし | やめたタグのとき、代わりに使うタグの name。書いたタグはやめたタグになる。空にできない |
説明は Markdown として解析せず、文字として出す。
checkIndex が返すずれ 1 件の kind。
一覧の並びは、この表の順。
kind |
意味 | where |
|---|---|---|
schema |
索引が Schema に合わない。必須のキーの欠け・型の違い・docs[].id・docs[].path・terms[].id の重なり・知らないキーを、合わないところごとに返す |
合わないキーのパス(docs[1].path)。最上位は schema |
missing_doc |
索引にあって、文書が見つからない | 索引の docs[].path |
orphan_doc |
文書があって、索引に無い | 空文字 |
broken_ref |
related の id(オブジェクトの要素は to)が索引に無い |
索引の docs[].related[](オブジェクトの要素は docs[].related[].to) |
untyped_related |
related の要素が type と when を持たない文字列。to・type・when を持つオブジェクトへの書き換えを求める。文字列の要素ごとに 1 件 |
索引の docs[].related[] |
one_sided_change_together |
change_together の相手が索引にあるのに、相手の related に自分を to とする change_together が無い。片側だけに記載した要素ごとに 1 件 |
索引の docs[].related[] |
related_link_overlap |
change_together でない related の相手を、自分の本文でもリンクしている。文字列の要素を含む。要素ごとに 1 件 |
索引の docs[].related[] |
missed_change_together |
change_together の組のうち、片方の文書だけが比べる基準から変わっている。組ごとに 1 件。基準を渡したときだけ返す |
空文字 |
duplicate_term |
用語の語か別名が、NFKC・英字の小文字化・前後の空白の除去で正規化した後に重なっている。索引の terms どうし・索引の terms と用語集の表・用語集の表どうしで、重なり 1 組ごとに 1 件 |
組の後の側の場所(下記) |
avoided_term |
索引の文書の本文に、用語のやめた言い方(索引の用語の avoid と、用語集の表の avoid= の列)が出ている。出た行とやめた言い方の組ごとに 1 件 |
やめた言い方が出た文書の中の行(8 行目) |
duplicate_tag |
タグの語彙の name が重なっている。2 つ目以降に出た同じ name ごとに 1 件 |
語彙の tags[2].name |
tag_alias_conflict |
タグの語彙の aliases が、別のタグの name か aliases と重なっている。別名ごとに 1 件 |
語彙の tags[1].aliases[0] |
broken_tag_replacement |
タグの語彙の deprecated の振り替え先が、語彙のどの name にも当たらない |
語彙の tags[4].deprecated |
unregistered_tag |
文書のタグが、語彙の name にも aliases にも当たらない。語彙に足すか、近いタグに直す候補 |
索引の docs[0].tags[1] |
deprecated_tag |
文書のタグが、やめたタグ(deprecated を持つタグ)に当たる |
索引の docs[0].tags[2] |
duplicate_term の file と where は、重なった組のうち後の側を指す。
後の側は、索引、索引の docs の順の文書の順で、後に出た方。
索引の側は、file が indexFile、where が terms[1].term か terms[1].aliases[0] の形になる。
用語集の表の側は、file が文書のパス、where が表のその行の文書の中の行番号(12 行目)になる。
message に、後の側に記載した表記と、もう片方の場所を書く。
avoided_term の file は、やめた言い方が出た文書のパス。
message に、やめた言い方と、代わりに使う用語の語を書く。
用語集の表のやめた言い方は、表を持たない文書も含めて、索引の全ての文書で探す。
同じやめた言い方が複数の用語にあるときは、索引の terms、索引の docs の順の文書の表の順で、先の用語の語を書く。
索引の docs にあって documents に渡された文書だけを探し、索引に無い文書は探さない。
探す範囲と語の切れ目は文書の別名と同じで、コード・リンク・見出し・用語集の表の中は探さない。
やめた言い方と本文の文字は、正規化して比べる。
やめた言い方が用語の語・別名の一部として出たところ(ワーク をやめた言い方にしたときの ワークスペース)は数えない。
同じ行に同じやめた言い方が 2 回出ても 1 件で、行が違えば別の件になる。
related_link_overlap は、本文を渡していない文書では確かめない。
リンクの比べ方は被参照と同じで、本文でリンクしている相手は、related から外すか本文のリンクを外して、どちらか一方にする。
missed_change_together の file は、変わっていない側の文書のパス。
message に、変わった側の文書のパスと、変わっていない側も直すか確かめることを書く。
組は向きを問わず 1 回だけ確かめ、相手が索引に無い組は確かめない。
比べる基準から変わった文書のパスを渡すのは、checkIndex の changedPaths、mdmark check の --base、MCP の check の base(API・CLI・MCP)。
file は、索引のずれが indexFile、文書のずれがその文書のパス。
message に、ずれの内容と直す場所を日本語の 1 文で書く。
duplicate_tag・tag_alias_conflict・broken_tag_replacement・unregistered_tag・deprecated_tag は、索引がタグの語彙(最上位の tags)を記載しているときだけ返す。
語彙を記載していない索引では、タグのずれを返さない。
どれも文書の読み込みを止めず、描くことには効かない。
文書のタグは、語彙の name か aliases に同じ文字で当たれば、そのタグの name として扱う。
同じ name・別名が複数あるときは、語彙の並びで先のタグに当てる。
tag_alias_conflict の message に、重なった先のタグの name を書く。
unregistered_tag の message に、近いタグを書く。
近いタグは、やめたタグでないタグの name と aliases のうち、文書のタグとの編集距離(文字の挿入・削除・置換の回数)が 2 以下で最も小さいもので、同じ距離なら語彙の並びで先のタグ。
当たるものが無いときは、近いタグが無いことと、語彙に足すか文書のタグを直すことを書く。
deprecated_tag の message に、振り替え先のタグを書く。