Not in the top 1,000 by GitHub stars
geml-spec/geml
GEML is a lightweight markup language with uniform, addressable blocks and standard verbs. Easy for humans to read, safe for agents to mutate.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
geml-parser/bench/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Local scripts
7cd58e242c9e → 4ed4e001f427
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 7cd58e242c9e
No earlier version was observed for comparison.
geml-parser/skill/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
7cd58e242c9e → 4ed4e001f427
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 7cd58e242c9e
No earlier version was observed for comparison.
integrations/claude-plugin/skills/geml/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
7cd58e242c9e → 4ed4e001f427
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 7cd58e242c9e
No earlier version was observed for comparison.
integrations/claude-plugin/skills/geml-code-graph/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
7cd58e242c9e → 4ed4e001f427
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 7cd58e242c9e
No earlier version was observed for comparison.
integrations/codex-plugin/skills/geml/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
7cd58e242c9e → 4ed4e001f427
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 7cd58e242c9e
No earlier version was observed for comparison.
integrations/codex-plugin/skills/geml-code-graph/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
7cd58e242c9e → 4ed4e001f427
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 7cd58e242c9e
No earlier version was observed for comparison.
integrations/dsh-plugin/skills/geml/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
7cd58e242c9e → 4ed4e001f427
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 7cd58e242c9e
No earlier version was observed for comparison.
integrations/dsh-plugin/skills/geml-code-graph/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
7cd58e242c9e → 4ed4e001f427
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 7cd58e242c9e
No earlier version was observed for comparison.
integrations/grok-plugin/skills/geml/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
7cd58e242c9e → 4ed4e001f427
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 7cd58e242c9e
No earlier version was observed for comparison.
integrations/grok-plugin/skills/geml-code-graph/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
7cd58e242c9e → 4ed4e001f427
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 7cd58e242c9e
No earlier version was observed for comparison.
integrations/obsidian/skills/geml-vault/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
7cd58e242c9e → 4ed4e001f427
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 7cd58e242c9e
No earlier version was observed for comparison.
Verified commit 4ed4e001f42759e3f93ebf6eece3ceef8224d9af
git clone --filter=blob:none --no-checkout https://github.com/geml-spec/geml.git .hotskills/geml-spec-geml && git -C .hotskills/geml-spec-geml checkout --detach 4ed4e001f42759e3f93ebf6eece3ceef8224d9af
# Copy each selected skill directory from .hotskills/geml-spec-geml into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/geml-spec/geml.git .hotskills/geml-spec-geml && git -C .hotskills/geml-spec-geml checkout --detach 4ed4e001f42759e3f93ebf6eece3ceef8224d9af
# Copy each selected skill directory from .hotskills/geml-spec-geml into .gemini/skills/<skill-name>/Heat
1.7- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- bench
geml-parser/bench - geml
geml-parser/skill - geml
integrations/claude-plugin/skills/geml - geml-code-graph
integrations/claude-plugin/skills/geml-code-graph - geml
integrations/codex-plugin/skills/geml - geml-code-graph
integrations/codex-plugin/skills/geml-code-graph - geml
integrations/dsh-plugin/skills/geml - geml-code-graph
integrations/dsh-plugin/skills/geml-code-graph - geml
integrations/grok-plugin/skills/geml - geml-code-graph
integrations/grok-plugin/skills/geml-code-graph - geml-vault
integrations/obsidian/skills/geml-vault
How it works
When your agent uses it
What it loads into context
Frontmatter
0 tokensAlways available to the agent
SKILL.md
1,083 tokensWhen the skill is activated
Reference documents
1,584 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Metadata
- Headings & lists (ATX only)
- Inline
- Tables
- Diagrams & charts
- Math
- Things that are build ERRORS — avoid them
Scripts executed separately
fixtures.mjsscore.mjs
Files
../../.claude-plugin/marketplace.jsonasset593 bytes.gitignoreasset9 bytesRESULTS.mddoc5,528 bytesSKILL.mdcore3,380 bytesfixtures.mjsruns2,416 bytesscore.mjsruns8,187 bytes../../integrations/claude-plugin/.claude-plugin/plugin.jsonasset834 bytes../../integrations/claude-plugin/hooks/hooks.jsonasset230 bytes../../integrations/claude-plugin/hooks/hooks.jsonasset230 bytes../../integrations/codex-plugin/hooks/hooks.jsonasset294 bytes../../integrations/codex-plugin/hooks/hooks.jsonasset294 bytes
Read SKILL.md
# Writing GEML — one-page cheatsheet
GEML is plain text. Every structured thing is one **typed block**:
```
=== <type> {#id .class key=val}
<body>
===
```
The opening fence is **≥ 3** `=`. The **closing fence must be the same length**.
To nest a block inside a block, make the **outer fence longer**:
```
==== noteView the complete source on GitHubgeml
When your agent uses it
Address a document by its BLOCKS instead of reading it whole. Use for any long Markdown or documentation file — README, spec, guide, design doc, changelog — when the job is to find where something is documented, read one section, or change one section: `geml list`, `geml find` and `geml get` read Markdown directly and hand back the one block that matters, leaving the file the Markdown it already was. Skip it when the whole file is short enough to read anyway. Use it also to read, author, edit or validate GEML itself — .geml files, .gemlhistory sidecars, typed blocks, === fences, geml-chart, converting Markdown to GEML — where the output must parse cleanly (zero error diagnostics) against the reference parser.
What it loads into context
Frontmatter
191 tokensAlways available to the agent
SKILL.md
2,518 tokensWhen the skill is activated
Reference documents
1,856 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- A document that is NOT GEML — use this as a read layer
- A project moving TO GEML
- A GEML document — get the syntax right
- Golden rules (the things that are easy to get wrong)
- Validate every time
- Work blockwise (agent editing)
- Full reference — pull ONE section, not the whole file
Files
SKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesreferences/authoring.gemlasset20,427 bytesreferences/markdown-writes.mddoc6,843 bytes
Read SKILL.md
# Reading and editing documents blockwise
Two jobs. The first is the common one, and it needs none of GEML's syntax.
## A document that is NOT GEML — use this as a read layer
`geml list`, `geml find` and `geml get` read **Markdown** directly. Use them to
locate and read one block of a long document. Nothing is converted, nothing is
written, and the file stays exactly the Markdown it already was.
**Only when you would otherwise read the whole file to change part of it.** If
the file is short, or you already know the exact string to replace, open it the
ordinary way — the round trip costs more than it saves. What is saved is only
ever the part you did not have to read: on this project's own docs a `list` mapView the complete source on GitHubgeml
When your agent uses it
Address a document by its BLOCKS instead of reading it whole. Use for any long Markdown or documentation file — README, spec, guide, design doc, changelog — when the job is to find where something is documented, read one section, or change one section: `geml list`, `geml find` and `geml get` read Markdown directly and hand back the one block that matters, leaving the file the Markdown it already was. Skip it when the whole file is short enough to read anyway. Use it also to read, author, edit or validate GEML itself — .geml files, .gemlhistory sidecars, typed blocks, === fences, geml-chart, converting Markdown to GEML — where the output must parse cleanly (zero error diagnostics) against the reference parser.
What it loads into context
Frontmatter
191 tokensAlways available to the agent
SKILL.md
2,518 tokensWhen the skill is activated
Reference documents
1,856 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- A document that is NOT GEML — use this as a read layer
- A project moving TO GEML
- A GEML document — get the syntax right
- Golden rules (the things that are easy to get wrong)
- Validate every time
- Work blockwise (agent editing)
- Full reference — pull ONE section, not the whole file
Files
SKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesreferences/authoring.gemlasset20,427 bytesreferences/markdown-writes.mddoc6,843 bytes
Read SKILL.md
# Reading and editing documents blockwise
Two jobs. The first is the common one, and it needs none of GEML's syntax.
## A document that is NOT GEML — use this as a read layer
`geml list`, `geml find` and `geml get` read **Markdown** directly. Use them to
locate and read one block of a long document. Nothing is converted, nothing is
written, and the file stays exactly the Markdown it already was.
**Only when you would otherwise read the whole file to change part of it.** If
the file is short, or you already know the exact string to replace, open it the
ordinary way — the round trip costs more than it saves. What is saved is only
ever the part you did not have to read: on this project's own docs a `list` mapView the complete source on GitHubgeml-code-graph
When your agent uses it
Build, view, update, and navigate a project's call graph as GEML codemap documents. Use when asked to see/update/build a project's code graph or codemap (看下/更新下 code-graph), when asked "who calls X" / "what does X call" / to trace a call chain or impact path, or whenever a .geml/codemap/ directory with index.geml and _index/name-lookup.json exists. Detects the project's languages itself — never asks the user; viewing ends with the browser OPEN on the graph.
What it loads into context
Frontmatter
140 tokensAlways available to the agent
SKILL.md
3,786 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The moves
- Reading the tables
- "看下/更新下 X 项目的 code-graph" — the end-to-end move
- Keep it in sync on every commit (optional per-project hook)
Files
SKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytes
Read SKILL.md
# Code-graph navigation (codemap profile)
The call graph lives as **text documents, not a database**
([profile](https://github.com/geml-spec/geml/blob/main/spec/profiles/geml-codemap/geml-codemap-profile.md)):
one GEML document per container (module / dir /
file), each with ONE meta (`module`, `src`, `entry`, `resolution-default`),
empty-body `code` blocks per method, and up to three CSV edge tables —
`#calls` (out), `#called-by` (in), `#unresolved` (blind spots). The build's
`verify` has checked that every edge reference resolves.
## The moves
```sh
# 1. resolve a name — where does a symbol liveView the complete source on GitHubgeml
When your agent uses it
Address a document by its BLOCKS instead of reading it whole. Use for any long Markdown or documentation file — README, spec, guide, design doc, changelog — when the job is to find where something is documented, read one section, or change one section: `geml list`, `geml find` and `geml get` read Markdown directly and hand back the one block that matters, leaving the file the Markdown it already was. Skip it when the whole file is short enough to read anyway. Use it also to read, author, edit or validate GEML itself — .geml files, .gemlhistory sidecars, typed blocks, === fences, geml-chart, converting Markdown to GEML — where the output must parse cleanly (zero error diagnostics) against the reference parser.
What it loads into context
Frontmatter
191 tokensAlways available to the agent
SKILL.md
2,518 tokensWhen the skill is activated
Reference documents
1,856 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- A document that is NOT GEML — use this as a read layer
- A project moving TO GEML
- A GEML document — get the syntax right
- Golden rules (the things that are easy to get wrong)
- Validate every time
- Work blockwise (agent editing)
- Full reference — pull ONE section, not the whole file
Files
SKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesreferences/authoring.gemlasset20,427 bytesreferences/markdown-writes.mddoc6,843 bytes
Read SKILL.md
# Reading and editing documents blockwise
Two jobs. The first is the common one, and it needs none of GEML's syntax.
## A document that is NOT GEML — use this as a read layer
`geml list`, `geml find` and `geml get` read **Markdown** directly. Use them to
locate and read one block of a long document. Nothing is converted, nothing is
written, and the file stays exactly the Markdown it already was.
**Only when you would otherwise read the whole file to change part of it.** If
the file is short, or you already know the exact string to replace, open it the
ordinary way — the round trip costs more than it saves. What is saved is only
ever the part you did not have to read: on this project's own docs a `list` mapView the complete source on GitHubgeml-code-graph
When your agent uses it
Build, view, update, and navigate a project's call graph as GEML codemap documents. Use when asked to see/update/build a project's code graph or codemap (看下/更新下 code-graph), when asked "who calls X" / "what does X call" / to trace a call chain or impact path, or whenever a .geml/codemap/ directory with index.geml and _index/name-lookup.json exists. Detects the project's languages itself — never asks the user; viewing ends with the browser OPEN on the graph.
What it loads into context
Frontmatter
140 tokensAlways available to the agent
SKILL.md
3,786 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The moves
- Reading the tables
- "看下/更新下 X 项目的 code-graph" — the end-to-end move
- Keep it in sync on every commit (optional per-project hook)
Files
SKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytes
Read SKILL.md
# Code-graph navigation (codemap profile)
The call graph lives as **text documents, not a database**
([profile](https://github.com/geml-spec/geml/blob/main/spec/profiles/geml-codemap/geml-codemap-profile.md)):
one GEML document per container (module / dir /
file), each with ONE meta (`module`, `src`, `entry`, `resolution-default`),
empty-body `code` blocks per method, and up to three CSV edge tables —
`#calls` (out), `#called-by` (in), `#unresolved` (blind spots). The build's
`verify` has checked that every edge reference resolves.
## The moves
```sh
# 1. resolve a name — where does a symbol liveView the complete source on GitHubgeml
When your agent uses it
Address a document by its BLOCKS instead of reading it whole. Use for any long Markdown or documentation file — README, spec, guide, design doc, changelog — when the job is to find where something is documented, read one section, or change one section: `geml list`, `geml find` and `geml get` read Markdown directly and hand back the one block that matters, leaving the file the Markdown it already was. Skip it when the whole file is short enough to read anyway. Use it also to read, author, edit or validate GEML itself — .geml files, .gemlhistory sidecars, typed blocks, === fences, geml-chart, converting Markdown to GEML — where the output must parse cleanly (zero error diagnostics) against the reference parser.
What it loads into context
Frontmatter
191 tokensAlways available to the agent
SKILL.md
2,518 tokensWhen the skill is activated
Reference documents
1,856 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- A document that is NOT GEML — use this as a read layer
- A project moving TO GEML
- A GEML document — get the syntax right
- Golden rules (the things that are easy to get wrong)
- Validate every time
- Work blockwise (agent editing)
- Full reference — pull ONE section, not the whole file
Files
SKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesreferences/authoring.gemlasset20,427 bytesreferences/markdown-writes.mddoc6,843 bytes
Read SKILL.md
# Reading and editing documents blockwise
Two jobs. The first is the common one, and it needs none of GEML's syntax.
## A document that is NOT GEML — use this as a read layer
`geml list`, `geml find` and `geml get` read **Markdown** directly. Use them to
locate and read one block of a long document. Nothing is converted, nothing is
written, and the file stays exactly the Markdown it already was.
**Only when you would otherwise read the whole file to change part of it.** If
the file is short, or you already know the exact string to replace, open it the
ordinary way — the round trip costs more than it saves. What is saved is only
ever the part you did not have to read: on this project's own docs a `list` mapView the complete source on GitHubgeml-code-graph
When your agent uses it
Build, view, update, and navigate a project's call graph as GEML codemap documents. Use when asked to see/update/build a project's code graph or codemap (看下/更新下 code-graph), when asked "who calls X" / "what does X call" / to trace a call chain or impact path, or whenever a .geml/codemap/ directory with index.geml and _index/name-lookup.json exists. Detects the project's languages itself — never asks the user; viewing ends with the browser OPEN on the graph.
What it loads into context
Frontmatter
140 tokensAlways available to the agent
SKILL.md
3,786 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The moves
- Reading the tables
- "看下/更新下 X 项目的 code-graph" — the end-to-end move
- Keep it in sync on every commit (optional per-project hook)
Files
SKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytes
Read SKILL.md
# Code-graph navigation (codemap profile)
The call graph lives as **text documents, not a database**
([profile](https://github.com/geml-spec/geml/blob/main/spec/profiles/geml-codemap/geml-codemap-profile.md)):
one GEML document per container (module / dir /
file), each with ONE meta (`module`, `src`, `entry`, `resolution-default`),
empty-body `code` blocks per method, and up to three CSV edge tables —
`#calls` (out), `#called-by` (in), `#unresolved` (blind spots). The build's
`verify` has checked that every edge reference resolves.
## The moves
```sh
# 1. resolve a name — where does a symbol liveView the complete source on GitHubgeml
When your agent uses it
Address a document by its BLOCKS instead of reading it whole. Use for any long Markdown or documentation file — README, spec, guide, design doc, changelog — when the job is to find where something is documented, read one section, or change one section: `geml list`, `geml find` and `geml get` read Markdown directly and hand back the one block that matters, leaving the file the Markdown it already was. Skip it when the whole file is short enough to read anyway. Use it also to read, author, edit or validate GEML itself — .geml files, .gemlhistory sidecars, typed blocks, === fences, geml-chart, converting Markdown to GEML — where the output must parse cleanly (zero error diagnostics) against the reference parser.
What it loads into context
Frontmatter
191 tokensAlways available to the agent
SKILL.md
2,518 tokensWhen the skill is activated
Reference documents
1,856 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- A document that is NOT GEML — use this as a read layer
- A project moving TO GEML
- A GEML document — get the syntax right
- Golden rules (the things that are easy to get wrong)
- Validate every time
- Work blockwise (agent editing)
- Full reference — pull ONE section, not the whole file
Files
SKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesSKILL.mdcore9,508 bytesreferences/authoring.gemlasset20,427 bytesreferences/markdown-writes.mddoc6,843 bytes
Read SKILL.md
# Reading and editing documents blockwise
Two jobs. The first is the common one, and it needs none of GEML's syntax.
## A document that is NOT GEML — use this as a read layer
`geml list`, `geml find` and `geml get` read **Markdown** directly. Use them to
locate and read one block of a long document. Nothing is converted, nothing is
written, and the file stays exactly the Markdown it already was.
**Only when you would otherwise read the whole file to change part of it.** If
the file is short, or you already know the exact string to replace, open it the
ordinary way — the round trip costs more than it saves. What is saved is only
ever the part you did not have to read: on this project's own docs a `list` mapView the complete source on GitHubgeml-code-graph
When your agent uses it
Build, view, update, and navigate a project's call graph as GEML codemap documents. Use when asked to see/update/build a project's code graph or codemap (看下/更新下 code-graph), when asked "who calls X" / "what does X call" / to trace a call chain or impact path, or whenever a .geml/codemap/ directory with index.geml and _index/name-lookup.json exists. Detects the project's languages itself — never asks the user; viewing ends with the browser OPEN on the graph.
What it loads into context
Frontmatter
140 tokensAlways available to the agent
SKILL.md
3,786 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The moves
- Reading the tables
- "看下/更新下 X 项目的 code-graph" — the end-to-end move
- Keep it in sync on every commit (optional per-project hook)
Files
SKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytesSKILL.mdcore14,059 bytes
Read SKILL.md
# Code-graph navigation (codemap profile)
The call graph lives as **text documents, not a database**
([profile](https://github.com/geml-spec/geml/blob/main/spec/profiles/geml-codemap/geml-codemap-profile.md)):
one GEML document per container (module / dir /
file), each with ONE meta (`module`, `src`, `entry`, `resolution-default`),
empty-body `code` blocks per method, and up to three CSV edge tables —
`#calls` (out), `#called-by` (in), `#unresolved` (blind spots). The build's
`verify` has checked that every edge reference resolves.
## The moves
```sh
# 1. resolve a name — where does a symbol liveView the complete source on GitHubgeml-vault
When your agent uses it
Work a Markdown knowledge base — an Obsidian vault, a wiki, a docs tree — by BLOCK ADDRESS instead of by whole page. Use when the job is to find which page and which section says something, read that one section, add a line to an index or a log, or rewrite one section of a note: `geml find` answers with `file#address`, `geml get` hands back that block alone, and `geml set` / `geml add` change it in place while every other block, and the YAML frontmatter, stay byte-for-byte identical. Wikilinks, callouts and embeds are written through verbatim, so the file stays the Markdown Obsidian renders. No Obsidian process, no REST API, no plugin required. Triggers on: wiki, vault, knowledge base, second brain, ingest a source, update the index, append to the log, find which note says, edit one section of a note.
What it loads into context
Frontmatter
230 tokensAlways available to the agent
SKILL.md
1,628 tokensWhen the skill is activated
Reference documents
2,915 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Read: locate, then take one block
- Write: change one block
- The rules that keep this safe
- Using this with an existing vault convention
- Block history, when you want it
- The link graph
Files
SKILL.mdcore6,111 bytesSKILL.mdcore6,111 bytesSKILL.mdcore6,111 bytesSKILL.mdcore6,111 bytesreferences/claude-obsidian.mddoc3,596 bytesreferences/invariants.mddoc7,177 bytes
Read SKILL.md
# A Markdown vault, addressed by block
The pages stay Markdown. Nothing is converted. What changes is how you reach
into them: an **address** (`#entities`) instead of a line number, and a write
that touches one block instead of rewriting a file.
This buys three things `grep` + `Read` + `Edit` cannot give you:
1. **An address survives edits.** A line number stops being true the moment
anything above it changes. `#entities` does not.
2. **A write needs nothing read first.** No whole page pulled into context to
build an `old_string` that has to match exactly.
3. **It works offline.** No Obsidian running, no Local REST API, no API key.
View the complete source on GitHubSkills included
- geml
- geml
- geml-code-graph
- geml
- geml-code-graph
- geml
- geml-code-graph
- geml
- geml-code-graph
- geml-vault
Repository facts
- License
- MIT
- Created
- Jun 17, 2026
- Last pushed
- Nov 5, 2026
- Forks
- 4
- Open issues
- 1
- Project activity
- Active
Before you install
Local scriptsAutomated signals, not a guarantee
Checked Nov 6, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 53 notes
integrations/claude-plugin/hooks/hooks.json:1Analysis incomplete: Referenced executable target unavailable; not analyzedintegrations/codex-plugin/hooks/hooks.json:1Analysis incomplete: Referenced executable target unavailable; not analyzedgeml-parser/skill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedgeml-parser/skill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedgeml-parser/skill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedgeml-parser/skill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedintegrations/claude-plugin/skills/geml/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedintegrations/claude-plugin/skills/geml/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedintegrations/claude-plugin/skills/geml/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedintegrations/claude-plugin/skills/geml/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedintegrations/claude-plugin/skills/geml-code-graph/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedintegrations/claude-plugin/skills/geml-code-graph/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedintegrations/claude-plugin/skills/geml-code-graph/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedintegrations/claude-plugin/skills/geml-code-graph/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedintegrations/claude-plugin/skills/geml-code-graph/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedintegrations/claude-plugin/skills/geml-code-graph/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedintegrations/claude-plugin/skills/geml-code-graph/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedintegrations/codex-plugin/skills/geml/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedintegrations/codex-plugin/skills/geml/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedintegrations/codex-plugin/skills/geml/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 56 network referencesin 13 files: geml-code-graph/SKILL.md:16 geml-code-graph/SKILL.md:16 geml-code-graph/SKILL.md:16 and 10 more
- No hidden or obfuscated text
- No instruction overrides
- 2 executable scriptsin 2 files: bench/fixtures.mjs:1 bench/score.mjs:1
- No access to secrets
- No requests to vote in Hot
Show all 58 signals by file
.claude-plugin/marketplace.json
geml-parser/bench/SKILL.md
- Network accessline 56
## Inline `*em*` `**strong**` `` `code` `` `~~strike~~` `$a^2$` (inline math) `[text](https://x)` `[text](#id)` `[[#id]]` (auto text) `[^note]` `` - Network accessline 57
`*em*` `**strong**` `` `code` `` `~~strike~~` `$a^2$` (inline math) `[text](https://x)` `[text](#id)` `[[#id]]` (auto text) `[^note]` `` A reference to a missing id is a build **error**. Define a footnote with - Network accessline 58
`[text](https://x)` `[text](#id)` `[[#id]]` (auto text) `[^note]` ``
geml-parser/bench/fixtures.mjs
- Executable scriptline 1
Executable file
geml-parser/bench/score.mjs
- Executable scriptline 1
Executable file
geml-parser/skill/references/authoring.geml
- Network accessline 202
- Link: `[text](https://…)` · internal ref `[text](#id)` · auto-ref `[[#id]]` - Network accessline 398
Full normative spec, in the geml-spec repo (https://github.com/geml-spec/geml): `spec/GEML-spec.md` (English), - Network accessline 399
(https://github.com/geml-spec/geml): `spec/GEML-spec.md` (English),
integrations/claude-plugin/.claude-plugin/plugin.json
- Network accessline 5
"author": { "name": "geml-spec", "url": "https://github.com/geml-spec" - Network accessline 6
"name": "geml-spec", "url": "https://github.com/geml-spec" }, - Network accessline 7
"url": "https://github.com/geml-spec" - Network accessline 8
}, "homepage": "https://github.com/geml-spec/geml", "repository": "https://github.com/geml-spec/geml", - Network accessline 9
"homepage": "https://github.com/geml-spec/geml", - Network accessline 10
"repository": "https://github.com/geml-spec/geml",
integrations/claude-plugin/skills/geml-code-graph/SKILL.md
- Network accessline 16
The call graph lives as **text documents, not a database** ([profile](https://github.com/geml-spec/geml/blob/main/spec/profiles/geml-codemap/geml-codemap-profile.md)): - Network accessline 17
([profile](https://github.com/geml-spec/geml/blob/main/spec/profiles/geml-codemap/geml-codemap-profile.md)): - Network accessline 171
geml codemap serve <proj>/.geml/codemap --background # detached: SURVIVES the agent session; # http://localhost:8140, pages render live - Network accessline 172
# http://localhost:8140, pages render live - Network accessline 218
the graph's evolution and `geml revert .geml/codemap/<doc>.geml '#method' --rev -1` rolls one method's edges back. Language maturity tiers and the smoke-test gate: [DESIGN-geml-code-graph.md](https://github.com/geml-spec/geml/blob/main/docs - Network accessline 219
rolls one method's edges back. Language maturity tiers and the smoke-test gate: [DESIGN-geml-code-graph.md](https://github.com/geml-spec/geml/blob/main/docs/design/specs/geml-codemap/DESIGN-geml-code-graph.md) §3.4. An MCP wrapper exists (` - Network accessline 220
gate: [DESIGN-geml-code-graph.md](https://github.com/geml-spec/geml/blob/main/docs/design/specs/geml-codemap/DESIGN-geml-code-graph.md) §3.4. An MCP wrapper exists (`geml mcp --root <dir>`, which serves the four
integrations/claude-plugin/skills/geml/references/authoring.geml
- Network accessline 202
- Link: `[text](https://…)` · internal ref `[text](#id)` · auto-ref `[[#id]]` - Network accessline 398
Full normative spec, in the geml-spec repo (https://github.com/geml-spec/geml): `spec/GEML-spec.md` (English), - Network accessline 399
(https://github.com/geml-spec/geml): `spec/GEML-spec.md` (English),
integrations/codex-plugin/skills/geml-code-graph/SKILL.md
- Network accessline 16
The call graph lives as **text documents, not a database** ([profile](https://github.com/geml-spec/geml/blob/main/spec/profiles/geml-codemap/geml-codemap-profile.md)): - Network accessline 17
([profile](https://github.com/geml-spec/geml/blob/main/spec/profiles/geml-codemap/geml-codemap-profile.md)): - Network accessline 171
geml codemap serve <proj>/.geml/codemap --background # detached: SURVIVES the agent session; # http://localhost:8140, pages render live - Network accessline 172
# http://localhost:8140, pages render live - Network accessline 218
the graph's evolution and `geml revert .geml/codemap/<doc>.geml '#method' --rev -1` rolls one method's edges back. Language maturity tiers and the smoke-test gate: [DESIGN-geml-code-graph.md](https://github.com/geml-spec/geml/blob/main/docs - Network accessline 219
rolls one method's edges back. Language maturity tiers and the smoke-test gate: [DESIGN-geml-code-graph.md](https://github.com/geml-spec/geml/blob/main/docs/design/specs/geml-codemap/DESIGN-geml-code-graph.md) §3.4. An MCP wrapper exists (` - Network accessline 220
gate: [DESIGN-geml-code-graph.md](https://github.com/geml-spec/geml/blob/main/docs/design/specs/geml-codemap/DESIGN-geml-code-graph.md) §3.4. An MCP wrapper exists (`geml mcp --root <dir>`, which serves the four
integrations/codex-plugin/skills/geml/references/authoring.geml
- Network accessline 202
- Link: `[text](https://…)` · internal ref `[text](#id)` · auto-ref `[[#id]]` - Network accessline 398
Full normative spec, in the geml-spec repo (https://github.com/geml-spec/geml): `spec/GEML-spec.md` (English), - Network accessline 399
(https://github.com/geml-spec/geml): `spec/GEML-spec.md` (English),
integrations/dsh-plugin/skills/geml-code-graph/SKILL.md
- Network accessline 16
The call graph lives as **text documents, not a database** ([profile](https://github.com/geml-spec/geml/blob/main/spec/profiles/geml-codemap/geml-codemap-profile.md)): - Network accessline 17
([profile](https://github.com/geml-spec/geml/blob/main/spec/profiles/geml-codemap/geml-codemap-profile.md)): - Network accessline 171
geml codemap serve <proj>/.geml/codemap --background # detached: SURVIVES the agent session; # http://localhost:8140, pages render live - Network accessline 172
# http://localhost:8140, pages render live - Network accessline 218
the graph's evolution and `geml revert .geml/codemap/<doc>.geml '#method' --rev -1` rolls one method's edges back. Language maturity tiers and the smoke-test gate: [DESIGN-geml-code-graph.md](https://github.com/geml-spec/geml/blob/main/docs - Network accessline 219
rolls one method's edges back. Language maturity tiers and the smoke-test gate: [DESIGN-geml-code-graph.md](https://github.com/geml-spec/geml/blob/main/docs/design/specs/geml-codemap/DESIGN-geml-code-graph.md) §3.4. An MCP wrapper exists (` - Network accessline 220
gate: [DESIGN-geml-code-graph.md](https://github.com/geml-spec/geml/blob/main/docs/design/specs/geml-codemap/DESIGN-geml-code-graph.md) §3.4. An MCP wrapper exists (`geml mcp --root <dir>`, which serves the four
integrations/dsh-plugin/skills/geml/references/authoring.geml
- Network accessline 202
- Link: `[text](https://…)` · internal ref `[text](#id)` · auto-ref `[[#id]]` - Network accessline 398
Full normative spec, in the geml-spec repo (https://github.com/geml-spec/geml): `spec/GEML-spec.md` (English), - Network accessline 399
(https://github.com/geml-spec/geml): `spec/GEML-spec.md` (English),
integrations/grok-plugin/skills/geml-code-graph/SKILL.md
- Network accessline 16
The call graph lives as **text documents, not a database** ([profile](https://github.com/geml-spec/geml/blob/main/spec/profiles/geml-codemap/geml-codemap-profile.md)): - Network accessline 17
([profile](https://github.com/geml-spec/geml/blob/main/spec/profiles/geml-codemap/geml-codemap-profile.md)): - Network accessline 171
geml codemap serve <proj>/.geml/codemap --background # detached: SURVIVES the agent session; # http://localhost:8140, pages render live - Network accessline 172
# http://localhost:8140, pages render live - Network accessline 218
the graph's evolution and `geml revert .geml/codemap/<doc>.geml '#method' --rev -1` rolls one method's edges back. Language maturity tiers and the smoke-test gate: [DESIGN-geml-code-graph.md](https://github.com/geml-spec/geml/blob/main/docs - Network accessline 219
rolls one method's edges back. Language maturity tiers and the smoke-test gate: [DESIGN-geml-code-graph.md](https://github.com/geml-spec/geml/blob/main/docs/design/specs/geml-codemap/DESIGN-geml-code-graph.md) §3.4. An MCP wrapper exists (` - Network accessline 220
gate: [DESIGN-geml-code-graph.md](https://github.com/geml-spec/geml/blob/main/docs/design/specs/geml-codemap/DESIGN-geml-code-graph.md) §3.4. An MCP wrapper exists (`geml mcp --root <dir>`, which serves the four
integrations/grok-plugin/skills/geml/references/authoring.geml
- Network accessline 202
- Link: `[text](https://…)` · internal ref `[text](#id)` · auto-ref `[[#id]]` - Network accessline 398
Full normative spec, in the geml-spec repo (https://github.com/geml-spec/geml): `spec/GEML-spec.md` (English), - Network accessline 399
(https://github.com/geml-spec/geml): `spec/GEML-spec.md` (English),
integrations/obsidian/skills/geml-vault/references/claude-obsidian.md
- Network accessline 3
[`claude-obsidian`](https://github.com/AgriciDaniel/claude-obsidian) is a Claude
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 34 facts
- Network access in prose of the SKILL.mdbench/SKILL.md:56Low confidence
- Network access in prose of the SKILL.mdbench/SKILL.md:57Low confidence
- Network access in prose of the SKILL.mdbench/SKILL.md:58Low confidence
- Executable script in a comment of a file that runsbench/fixtures.mjs:1Low confidence
- Executable script in a comment of a file that runsbench/score.mjs:1Low confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:16Low confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:17Low confidence
- Network access in code of the SKILL.mdgeml-code-graph/SKILL.md:171High confidence
- Network access in code of the SKILL.mdgeml-code-graph/SKILL.md:172High confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:218Low confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:219Low confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:220Low confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:16Low confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:17Low confidence
- Network access in code of the SKILL.mdgeml-code-graph/SKILL.md:171High confidence
- Network access in code of the SKILL.mdgeml-code-graph/SKILL.md:172High confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:218Low confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:219Low confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:220Low confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:16Low confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:17Low confidence
- Network access in code of the SKILL.mdgeml-code-graph/SKILL.md:171High confidence
- Network access in code of the SKILL.mdgeml-code-graph/SKILL.md:172High confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:218Low confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:219Low confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:220Low confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:16Low confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:17Low confidence
- Network access in code of the SKILL.mdgeml-code-graph/SKILL.md:171High confidence
- Network access in code of the SKILL.mdgeml-code-graph/SKILL.md:172High confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:218Low confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:219Low confidence
- Network access in prose of the SKILL.mdgeml-code-graph/SKILL.md:220Low confidence
- Network access in prose of documentationgeml-vault/references/claude-obsidian.md:3Low confidence
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md geml-parser/skill/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md geml-parser/skill/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Native | Manifest gemini-extension.json | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md geml-parser/skill/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md geml-parser/skill/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.