Engraph
devwhodevs/engraph
Index and search document collections using hybrid semantic + graph + full-text search.
Search, read and maintain nub's knowledge graph under wiki/ with the lat CLI — the design and research corpus, cross-linked and checked.
$ npx skills add nubjs/nub --skill lat-md -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nubjs/nub lat-md --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/nubjs/nub.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/lat-md .claude/skills/lat-md && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "lat-md" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/lat-md into .claude/skills/lat-md/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lat-md", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/nubjs/nub/tree/main/.claude/skills/lat-mdType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add nubjs/nub --skill lat-md -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nubjs/nub lat-md --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nubjs/nub.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/lat-md .agents/skills/lat-md && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "lat-md" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/lat-md into .agents/skills/lat-md/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lat-md", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nubjs/nub --skill lat-md -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nubjs/nub lat-md --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nubjs/nub.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/lat-md .cursor/skills/lat-md && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "lat-md" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/lat-md into .cursor/skills/lat-md/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lat-md", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/nubjs/nub.git --path .claude/skills/lat-md--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add nubjs/nub --skill lat-md -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nubjs/nub lat-md --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nubjs/nub.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/lat-md .gemini/skills/lat-md && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "lat-md" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/lat-md into .gemini/skills/lat-md/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lat-md", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install nubjs/nub lat-mdInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add nubjs/nub --skill lat-md -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/nubjs/nub.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/lat-md .github/skills/lat-md && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "lat-md" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/lat-md into .github/skills/lat-md/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lat-md", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nubjs/nub --skill lat-md -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install nubjs/nub lat-md --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nubjs/nub.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/lat-md .opencode/skills/lat-md && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "lat-md" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/lat-md into .opencode/skills/lat-md/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lat-md", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
lat-mdSearch, read and maintain nub's knowledge graph under wiki/ with the lat CLI — the design and research corpus, cross-linked and checked.
Lat Md is an agent skill from nubjs/nub. Search, read and maintain nub's knowledge graph under wiki/ with the lat CLI — the design and research corpus, cross-linked and checked. Invoke (via the Skill tool) before designing or changing anything non-trivial, to find the decision that already governs it instead of re-deriving it; and after any change that alters architecture, behavior or test coverage, because lat check is a CI gate and a stale wiki link now fails the build. Carries the commands, the section-id syntax, the two rules that make a section…
Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Knowledge Management, covering Knowledge graphs, Test coverage and Building AI agents. It works with Rust and npm. The repository describes itself as: The fast all-in-one Node.js toolkit. The licence is MIT.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 568e73a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npmFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Lat Md loads about 2.4k tokens when it runs. Until then it costs about 171 tokens; SKILL.md has 1,268 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from nubjs/nub at commit 568e73a, republished under its MIT licence (© nubjs). 1,268 words, ~2,429 tokens.
.claude/skills/lat-md/SKILL.md (or your agent's skills folder).The design and research corpus in wiki/ is a lat.md graph: cross-linked markdown, with lat check enforcing that every link and code reference still resolves. The repo root carries a lat.md symlink pointing at wiki/, because lat finds its graph by that directory name.
The package scripts fetch an exact Lat version outside the root dependency tree. nub run lat:check runs the same graph gate as CI; nub run lat <command> exposes the full CLI without a global install. The pin in package.json is checked against both MCP configurations by scripts/lat.test.mjs.
Do not invoke bare lat. It is not installed globally. Run commands from the repository root with nub run lat, or use the MCP tools. With only Node/npm installed, npm run --silent lat -- <command> is equivalent.
Run nub run lat:index once in each new checkout or worktree. It invokes reindex --local --yes, builds the index, and records a local-backend preference for that checkout. This is an explicit local-machine setup operation, not a Nub build. Initial indexing can take several minutes; warm searches only embed new or changed sections.
wiki/.cache/vectors.db contains section text and local MiniLM embeddings. Only the graph is indexed, not all source files or internal/. Do not commit the cache or move private documents into the public wiki to make them searchable.nub run lat:index after cache corruption or a backend mismatch. Do not run it before every query: normal search already refreshes changed sections. Run nub run lat config to find the user-level preference file; there is no API key to configure for local search.rg) on PATH. Lat uses it for check, refs, and section; its fallback can traverse large nested checkouts and is much slower. GitHub's Ubuntu runner already supplies it..mcp.json configures Claude; .codex/config.toml configures Codex. Both launch the pinned Lat MCP server and expose lat_search, lat_section, lat_locate, lat_refs, lat_expand, and lat_check. Restart the agent after config changes and approve the project MCP server if prompted. The CLI fallback works in sessions that have not reloaded.scripts/lat-prompt.mjs hook. It directs nontrivial tasks to the graph without fetching packages or embedding anything during prompt submission. Do not enable Lat's generated stop hook: it counts lat.md/ diffs rather than this repo's tracked wiki/ paths and can attribute unrelated shared-tree changes to the current task.Read the graph first. A grep over crates/ tells you what the code does; the graph tells you why, and what was already tried and rejected. Both matter, and the second is the one you cannot recover by reading source.
CI executes the navigation examples below against this graph. A separate small-fixture test builds local embeddings, searches, refreshes edited content, and calls the MCP server; it does not rebuild the entire wiki index. Section ids are real; substitute your own.
nub run lat search "why is the user's Node spawned instead of embedded" # semantic search
nub run lat locate "Two tiers" # find a section by name
nub run lat section "architecture#Architecture#Turning it off" # print a section with its links
nub run lat refs "architecture#Architecture#Composition" # incoming references
nub run lat expand "fix [[compat-mode-tests]]" # resolve references in a prompt
nub run lat check # the graph gateThree gates run it for you, cheapest first: .githooks/pre-commit when the staged changes touch wiki/ or this skill, .githooks/pre-push unconditionally (so a symbol rename that orphans a doc link is caught even though no doc was edited), and the lat-check job on pull requests to main. Both hooks warn rather than block if the checker cannot run, and both take NUB_SKIP_LAT_CHECK=1.
After a change that alters architecture, behavior, or test coverage, update the graph in the same commit and run nub run lat:check. CI runs on main pushes and on the ci label for pull requests targeting main; opening or pushing a PR alone does not request a run. Stacked PRs based on another branch do not run this workflow.
A section id is the file path with the .md dropped, then each heading — design/architecture#Architecture#Composition. A bare filename works when it is unique: architecture#Architecture#Composition. The path is relative to the graph directory under the name lat resolves it by, which is lat.md, so the full form lat prints in its own diagnostics is lat.md/design/architecture#…. The on-disk name is not interchangeable: research/cold-start#… and lat.md/research/cold-start#… both exit 0, while wiki/research/cold-start#… exits 1.
[[target]] or [[target|alias]], pointing at a section or at a source symbol.[[crates/nub-core/src/node/spawn.rs#PATH_SHIM_PREFIX]] — repo-root-relative, unlike a section id, and lat check verifies the symbol exists. That example is deliberately one the graph already uses (wiki/design/architecture.md links it), so renaming the constant fails the gate rather than rotting this file.// @lat: [[section-id]] in Rust, TypeScript or JavaScript; # @lat: [[section-id]] in Python. It ties an implementation or a test back to the section that specifies it.What the gate cannot see: a path written as plain text (wiki/foo.md in a comment) and an ordinary [text](foo.md) markdown link. Only [[wiki links]] and @lat: references are validated. That blind spot is how 36 dead wiki/ paths accumulated in this repo, 21 citation sites of which had to be swept out of Rust comments by hand. If you want a reference to stay true, write it in one of the two checked forms.
Keep @lat: comments to places where the link earns its line — a subsystem entry point, or a test that covers a named spec. They are subject to nub's ordinary comment discipline: sparse and dense, never narration.
[[wiki links]]. It is the summary that lat search and lat section print, so put the substance in it and the detail in the paragraphs below.Every directory also needs an index file named after it — wiki/research/research.md lists every document in wiki/research/, and lat check fails if one is missing.
lat init, and lat will ask you to twice. A passing run still prints Warning: No init version recorded — run lat init to set up agent hooks and configuration. — expected here, and safe to ignore. A checkout where the root lat.md symlink did not materialise fails instead with No lat.md directory found / Run `lat init` to create one. and exits 1; the fix is restoring the symlink (git checkout -- lat.md, or git config core.symlinks true on Windows), never lat init. Running it writes an instruction block into both AGENTS.md and CLAUDE.md, and in this repo CLAUDE.md is a symlink to AGENTS.md — Node writes through a symlink, so the second write lands on top of the first inside the tracked, public, Codex-shared AGENTS.md. Edit that file by hand instead..agents/skills/. lat init puts its own skill there, and .githooks/pre-push refuses any push with a SKILL.md under that path, because a rival skill tree once drifted for weeks. This file is the skill; .claude/skills/ is the only skills directory.mod block cannot be linked. lat's Rust extractor walks only top-level items, so [[…rs#some_unit_test]] fails for the 972 #[test] functions that live in #[cfg(test)] mod tests, and for any item in an inline mod. Top-level functions, structs, enums, traits, consts, type aliases and impl methods all resolve. @lat: comments are a plain comment scan and work anywhere, including inside mod tests — so test specs are unaffected.© nubjs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/lat-md of nubjs/nub.
Open the folder on GitHubat commit 568e73a
Lat Md next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Lat Md this skillnubjs/nub | 4.4k | — | ~2.4k | Automated safety check: Pass | MIT | |
| Engraphdevwhodevs/engraph | 171 | — | ~792 | Automated safety check: Pass | MIT | |
| Cortexdb Memory Openclawliliang-cn/cortexdb | 274 | — | ~1.6k | Automated safety check: Pass | MIT | |
| HypatiaMarchLiu/hypatia | 239 | — | ~7.9k | Automated safety check: Notes | MIT | |
| Neo4j Document Import Skillneo4j-contrib/neo4j-skills | 114 | — | ~5.4k | Automated safety check: Notes | MIT | |
| Neo4j Graphrag Skillneo4j-contrib/neo4j-skills | 114 | — | ~4.2k | Automated safety check: Notes | MIT |
devwhodevs/engraph
Index and search document collections using hybrid semantic + graph + full-text search.
liliang-cn/cortexdb
Give a Node.js agent (such as OpenClaw) durable, local-first memory plus a queryable SPARQL knowledge graph, backed by CortexDB through its gRPC sidecar and the cortexdb-client npm package.
MarchLiu/hypatia
Interact with the Hypatia AI memory system using natural language.
neo4j-contrib/neo4j-skills
Ingests unstructured and semi-structured documents into Neo4j as a knowledge graph.
neo4j-contrib/neo4j-skills
Build GraphRAG retrieval pipelines on Neo4j using the neo4j-graphrag Python package (v1.22.0+).
dotnet/skills
Statically pairs source files with test files to list code that no test references, using Roslyn for C# or tree-sitter for many languages, with no build.
nubjs/nub
Diagnose and clear CPU, memory, and disk contention on the maintainer's dev host.
nubjs/nub
Reclaim disk on the maintainer's Mac when the volume is full or filling — ENOSPC, "no space left on device", a failed build or agent harness, or a routine sweep of Rust build residue.
nubjs/nub
Build a performance chart for nubjs.com — the SVG bar figures in blog posts, docs pages and social posts (a runtime augmentation against plain node, an install or dispatch comparison, a cross-tool…
nubjs/nub
A skill your agent uses when running a compatibility/parity AUDIT — enumerating where nub diverges from a reference it claims parity with (pnpm CLI grammar, a lockfile format, a Node behavior, a…
nubjs/nub
Run ad-hoc Nub tests and debugging probes on real local Linux guests.
nubjs/nub
Performance-trace Nub package-manager installs using the existing phase timings, structured diagnostics, and sampling-profiler workflow.
Categories
Search, read and maintain nub's knowledge graph under wiki/ with the lat CLI — the design and research corpus, cross-linked and checked. Lat Md is an agent skill from nubjs/nub. Search, read and maintain nub's knowledge graph under wiki/ with the lat CLI — the design and research corpus, cross-linked and checked.
Lat Md fits situations like: tasks that involve Knowledge graphs; tasks that involve Test coverage; tasks that involve Building AI agents.
Run `npx skills add nubjs/nub --skill lat-md -a claude-code`. Or copy the skill folder (.claude/skills/lat-md in nubjs/nub) into .claude/skills/lat-md in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nubjs/nub --skill lat-md -a codex`. Or copy the skill folder (.claude/skills/lat-md in nubjs/nub) into .agents/skills/lat-md in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nubjs/nub --skill lat-md -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/lat-md, .gemini/skills/lat-md, .github/skills/lat-md and .opencode/skills/lat-md in your project.
Going by SKILL.md and its folder, Lat Md needs the command-line tools its instructions call (npm).
SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Lat Md is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.4k tokens (SKILL.md is roughly 9.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Lat Md: Engraph (devwhodevs/engraph, 171 stars), Cortexdb Memory Openclaw (liliang-cn/cortexdb, 274 stars), Hypatia (MarchLiu/hypatia, 239 stars) and Neo4j Document Import Skill (neo4j-contrib/neo4j-skills, 114 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
nubjs (a GitHub organization) maintains it in nubjs/nub, which has 4,375 GitHub stars. The repository holds 31 skills in this directory. The repository was last updated on October 9, 2026.
Source: nubjs/nub on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.