Skip to content
Back to skills

Hermes

ASecurity

Use LaPis persistent coding memory via the 'lapis' MCP server: memory-code/doc/save/search tools, repo indexing, and retrieval protocols.

  • 54 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 28, 2026
ai-agentsrustsqlrailsgitapidatabase

Works with

  • claude code
  • cli
  • api
  • mcp

Security analysis

A100/100

Scanned September 28, 2026

npx -y skills add GeneGulanesJr/LaPis --skill hermes --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Hermes?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Hermes
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/genegulanesjr-hermes/badge)](https://www.skillsdirectory.com/skills/genegulanesjr-hermes)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
name: lapis
description: "Use LaPis persistent coding memory via the 'lapis' MCP server: memory-code/doc/save/search tools, repo indexing, and retrieval protocols."
version: 1.0.0
author: LaPis
license: MIT
platforms: [linux, macos, windows]
metadata:
  hermes:
    tags: [memory, coding, mcp, lapis, sqlite, code-index]
    related_skills: [hermes-agent]
---

# LaPis — Persistent Coding Memory

LaPis is a local coding-memory stack (SQLite at `$LAPIS_HOME/.pi/memory/memory.db` — or `~/.pi/memory/memory.db` when `LAPIS_HOME` is unset; no cloud, no API keys) wired into Hermes as an MCP server named `lapis`. It is a persistent memory layer shared across tools (Pi, Claude Code, Hermes). Use it for code intelligence, doc navigation, and durable cross-session memory.

## Tools (MCP server `lapis` → `mcp_lapis_*`)

| Tool                                                     | Purpose                                                                                                                                                                                                                                                                             |
| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `mcp_lapis_memory_save`                                  | Save memory: `title`, `content`, `type` (decision/bugfix/architecture/pattern/discovery/config/preference/learning/manual), `scope` (project/personal), `topic_key`, `expires_in` (e.g. `7d`), `force`                                                                              |
| `mcp_lapis_memory_search`                                | Search memories: `query`, optional `type`/`scope` filters, `limit`                                                                                                                                                                                                                  |
| `mcp_lapis_memory_get` / `update` / `delete` / `related` | Full CRUD by ID + symbol-linked recall                                                                                                                                                                                                                                              |
| `mcp_lapis_memory_load_context`                          | Deep-dive on everything memory knows about a topic                                                                                                                                                                                                                                  |
| `mcp_lapis_memory_code`                                  | Code-index queries. **Modes:** `outline`, `callers`, `callees`, `blast-radius`, `dead-code`, `complexity`, `deps`, `churn`, `hotspots`, `cycles`, `importance`, `coupling`, `extractable`, `hierarchy`, `signal-chains`, `layer-violations`, `search`, `index-repo`, `reindex-repo` |
| `mcp_lapis_memory_doc`                                   | Doc-index queries. **Modes:** `search`, `outline`, `backlinks`, `broken-links`, `glossary`, `tutorial-path`, `code-examples`, `orphans`, `coverage`, `stale-pages`, `duplicates`, `index-docs`, `reindex-docs`                                                                      |
| `mcp_lapis_memory_sync_code_trust`                       | After git pull/checkout/merge/rebase: sync trust scores with changed code                                                                                                                                                                                                           |
| `mcp_lapis_index_status`                                 | Check progress of an async index job                                                                                                                                                                                                                                                |

## Retrieval protocol (indexed repos)

- **Code lookups → `mcp_lapis_memory_code`, not raw file reads.** Prefer `outline` on a file before reading it whole.
- Whole-file `read_file` on indexed code files is discouraged: run `memory-code` `outline` first; targeted reads with `offset`/`limit` are allowed for editing. (A `pre_tool_call` hook enforces this when the LaPis hooks are installed.)
- Semantic code queries → `memory-code` mode `search`. Exact single-symbol lookups → targeted grep is fine.
- **Docs → `mcp_lapis_memory_doc`**, not raw browsing.
- After git operations, run `memory_sync_code_trust`.

## Memory content format

```
**What**: <what happened / decision>
**Why**: <reasoning>
**Where**: <file/symbol/repo>
**Learned**: <lesson for the future>
```

Always `memory-search` before saving to avoid duplicates. Use `memory_update` (by ID) to correct an existing memory instead of adding a correction entry.

## Indexing a repo (first time)

- Via MCP: `mcp_lapis_memory_code` with mode `index-repo` (repo = repo root path or name)
- Via CLI: `lapis index-repo --path <absolute-path>` (or `index-repo-async` + poll `index-status`)
- Verify: `lapis list-code-repos`

## Scope & pitfalls

- **Memories are project-scoped by cwd** — run/query from the repo root so items attach to the right project.
- `LAPIS_HOME` pins the memory directory (set by `lapis hermes install` in the MCP server env) so the server and CLI always share one database even when the host process has a different `HOME`.
- Nothing indexed yet → `list-code-repos` returns `{"repos": [], "total": 0}`; index before relying on guardrails.
- Verify the install any time with: `lapis hermes doctor`.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…