by clay-good
Deterministic, local-first memory and guardrails for AI coding agents with no LLM in the hot path.
# Add to your Claude Code skills
git clone https://github.com/clay-good/OpenLoreLast scanned: 5/30/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-30T16:14:40.388Z",
"npmAuditRan": true,
"pipAuditRan": true
}OpenLore is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by clay-good. Deterministic, local-first memory and guardrails for AI coding agents with no LLM in the hot path. It has 286 GitHub stars.
Yes. OpenLore passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/clay-good/OpenLore" and add it to your Claude Code skills directory (see the Installation section above).
OpenLore is primarily written in TypeScript. It is open-source under clay-good on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh OpenLore against similar tools.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
AI coding agents are powerful but amnesiac and ungoverned: every task restarts by re-reading the same files, long sessions drift onto stale assumptions, and nothing warns the agent when a change is about to break a contract or cross a boundary.
OpenLore fixes both halves. It runs a one-time static analysis of your repo and keeps a live knowledge graph — call structure, types, tests, decisions, IaC, spec drift. Your agent queries it to start every task already oriented and to certify a change before it lands. It's deterministic and local-first — no LLM in the hot path — so the same question always returns the same grounded answer, and the agent is told when a fact goes stale instead of served a confident guess.
npm install -g openlore && openlore install
That one command auto-detects your agent (Claude Code, Cursor, Cline, Continue, AGENTS.md), wires it to call orient() automatically, registers the MCP server, and builds the index — no API key, no config, no questions. Then ask your agent:
orient("add a payment method")
…and it begins already knowing the relevant functions, their callers, matching specs, tests, and the risk of changing each — in a single call.
Zero config, everything discoverable. Core value needs no keys. Run
openlore featuresto see every opt-in capability (embeddings, the commit gate, the spec store…), whether it's active, and the one command to turn it on.
Two things, both deterministic and local — OpenLore remembers your architecture so every task starts oriented, and governs what the agent changes before it lands.
🧠 Memory — start every task already oriented
orient(task) returns the relevant functions, their callers, matching specs, tests, and insertion points in a single call (~430µs p50 on a 15k-node graph) — instead of a dozen exploratory file reads.🛡️ Governance — guardrails on what the agent changes
certify_public_surface classifies every changed export breaking / non-breaking / potentially-breaking and names the consumers each break hits. Conservative — never silently "safe."change_impact_certificate flags when a diff opens a new path into a boundary you declared (reachable after the change, not before).verify_claim returns confirmed / refuted / unverifiable with a citation, before an agent asserts "X is dead" or "Y is safe to change."openlore enforce blocks only on findings you mark blocking. Advisory by default, no API key.Full guardrail table with commands: Governance.
📊 Honest by construction — −26% agent round-trips on deep traces in large repos, with the losses published next to the wins. Every public claim traces to a command you can run.
The same task, twice. Ask an agent to add a flag to a command it has never seen:
| Without OpenLore | With OpenLore | |
|---|---|---|
| Opening move | grep a guessed name → open a file → wrong layer → open three more | orient("add a --since flag to the blast-radius command") |
| What it learns | file contents, one at a time, in whatever order it guessed | the functions, their callers, the matching specs, and the ranked insertion points — in one call |
| What it misses | the five callers living in files it never opened | every caller the graph can see |
| Before it commits | "looks right to me" | blast_radius → tests to run; certify_public_surface → the consumers this change breaks, by name |
The measured effect on deep, multi-hop tasks: 25 → 16 round-trips on excalidraw, −26% aggregate. Not magic — the difference between rediscovering structure per task and querying it. Full numbers, including where it doesn't pay off: Does it pay for itself?
Real output — openlore orient --json "add a --since flag to the blast-radius command", run on this repo (abridged):
{
"relevantFiles": ["src/cli/commands/blast-radius.ts", "src/core/services/mcp-handlers/blast-radius.ts"],
"relevantFunctions": [
{ "name": "computeBlastRadius", "filePath": "src/core/services/mcp-handlers/blast-radius.ts",
"signature": "async function computeBlastRadius(input: BlastRadiusInput): Promise<BlastRadiusBriefing>",
"fanIn": 5, "isHub": true, "language": "TypeScript" }
],
"callPaths": [
{ "function": "computeBlastRadius",
"callers": ["handleBlastRadius", "computeImpactCertificate", "runBlastRadiusCli",
"composeReview", "collectGovernanceFindings"] }
],
"insertionPoints": [
{ "rank": 2, "name": "computeBlastRadius", "role": "hub", "strategy": "cross_cutting_hook",
"reason": "computeBlastRadius is called by 5 functions -- adding logic here affects the entire callsite surface." }
],
"suggestedTools": ["record_decision", "analyze_impact", "get_subgraph", "check_spec_drift"]
}
The agent knows exactly where to look, what it touches, and what's risky to touch — before reading a single file. Every field is computed from the graph; nothing is inferred by a model.
OpenLore only earns its place if an agent with it reaches a correct answer for less total cost than the same agent without it. We measure that and publish it — wins and losses. Numbers from the Spec 14 agent benchmark (claude -p, sonnet, N=4 medians, pinned SHAs), measured 2026-06-01.
| Scenario | Cost Δ | Round-trips Δ | Correctness | Verdict |
|---|---|---|---|---|
| Large/unfamiliar repo · deep "how does X flow through Y" (its target) | −7% to −21% | −26% | 100% = 100% | ✅ helps — and the win grows with repo size |
| Small/familiar repo · shallow "who calls X" | task-dependent (Round 1: +43%) | +38% | 100% = 100% | ❌ often adds overhead — measure first |
Re-confirmed live 2026-06-03 (N=2): the deep-task win reproduces (okhttp −13%). The small/familiar case is task-dependent, not a flat loss — same repo class, opposite outcomes (chalk −32% win vs. express +59% loss). Don't guess from our repos — run
openlore proveon yours.
The win scales with cod