ekos-knowledge
Skill26 starsChanged 10 days agoMITView on GitHub
Query the EKOS enterprise knowledge ledger through the ekos MCP tools (ekos_search, ekos_query, ekos_ekl, ekos_neighborhood, ekos_state, ekos_dependents, ekos_diff, ekos_status). Use this whenever the user asks what exists across their projects, about database tables/schemas, what depends on something, what would break if something changed, what changed recently in the workspace, who contributes to what, or any question spanning multiple repositories — even if they never say "ekos" or "knowledge ledger". Also use it when the user mentions EKOS, the ledger, compiled knowledge, or asks for an evidence-backed answer about their codebase estate.
In this repository4 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- memorySkill
- session-memorySkill
- text-to-sqlSkill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 79
Knowledge is a snapshot, not live: Check ekos_status /ekos_diff when currency matters, and say "as of the last build" when reporting.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Querying the EKOS knowledge ledger
EKOS is a compiler for enterprise knowledge: it scans projects (files, git history, SQL schemas), compiles what it finds into evidence-backed objects and relationships, and serves them read-only through MCP tools. Answers from these tools come with provenance — prefer them over guessing whenever a question is about what exists rather than what a specific line of code does.
Picking the right tool
| You need | Tool | Notes |
| An entry point from free text | ekos_search | BM25 over names, kinds, content excerpts + ai_overview prose, RRF-fused with an exact-name arm; 2–3 keywords, trailing * = prefix. mode: "hybrid" adds semantic (vector) matching when the workspace has [embeddings] built |
| A direct NL question with a compiled answer | ekos_query | Plans the question → fact lookups + graph traversals → a typed list of source-cited claims, no LLM. ekos_retrieve shows the plan + evidence + how the question was understood |
| A precise, filterable listing | ekos_ekl | EKL query language — see cheat sheet below; also SEMANTIC 'text', COUNT/GROUP BY, AS OF <ts> |
| What's connected to an object | ekos_neighborhood | BFS depth hops from an id |
| Impact: "what breaks if X changes?" | ekos_dependents | Incoming edges = dependents, outgoing = dependencies |
| Full detail + proof for one object | ekos_state | Object + relationships + evidence; at (RFC 3339) reconstructs the past |
| "What changed since T?" | ekos_diff | from required, to defaults to now; names resolved |
| Is there data / how much / how fresh | ekos_status | Cheap first call when unsure the ledger has anything |
The investigation pattern
Chain the tools — each answer feeds the next call:
- Locate the concept:
ekos_eklwhen you can name a kind,ekos_searchotherwise. Both return object ids — everything else keys off them. - Expand:
ekos_neighborhood(what's around it) orekos_dependents(directional impact) with the id from step 1. - Prove:
ekos_statereturns the evidence — the SQL fragment, commit, or file that justifies each conclusion. Cite it when the stakes warrant. - Hand off: evidence carries source paths. To read or edit the actual file, switch to your normal file tools (or a code-navigation MCP) with that path — EKOS tells you where and why, file tools do the rest.
Example — "can I safely rename the customers table?":
ekos_ekl "FIND Object WHERE kind = 'Table' AND name = 'customers'" → take id
→ ekos_dependents → report the FK holders as the blast radius, with
ekos_state evidence if the user wants proof.
EKL cheat sheet
FIND <Object|Relationship>
[WHERE <field> <op> <value> [AND ...]]
[FROM '<object name>']
[ORDER BY <field> [DESC]] [LIMIT <n>] [RETURN <col>, ...]- Operators:
= != < > <= >= CONTAINS; string values in single quotes. - Object kinds that exist in practice:
File,Table,Person,Entity; the taxonomy also definesDirectory,Service,Api,BusinessRule,BusinessConcept,Dataset,Column,Pipeline,Dashboard,Model,Prompt,Agent. - Relationship kinds:
ForeignKey,OwnedBy(contributor → commit),CoupledWith(files that change together),DependsOn,Contains,Calls,References,Extends. - Useful shapes:
FIND Object WHERE kind = 'Table' AND name CONTAINS 'order'FIND Relationship WHERE kind = 'ForeignKey' FROM 'orders'FIND Object WHERE kind = 'Person'— who contributes to the workspace
Honesty rules
- Knowledge is a snapshot, not live. Check
ekos_status/ekos_diffwhen currency matters, and say "as of the last build" when reporting. To refresh: runekos build && ekos recover && ekos compile && ekos commitin the workspace root (the directory containingekos.tomland.ekos/). - Empty results are answers. "The ledger has no X" is worth reporting —
distinguish "not scanned" (check
ekos_status) from "scanned, absent". - Don't use EKOS for symbol-level questions ("where is this function defined / who calls it") — that's line-precise work for LSP-based tools on live code. EKOS wins on cross-project, semantic, historical, and evidence questions; use each for what it's for.
- Tool errors come back as readable text (
isError: true) — bad EKL syntax or an unknown id is feedback to adjust the call, not a reason to abandon the tool.
Resolving paths — variables, not hardcoded locations
The ekos MCP server is registered at user scope and serves the workspace
root; the ledger lives in .ekos/ledger/ledger.db under that root. Resolve
every path from these variables (each falls back to a discoverable default):
# Estate root: nearest ancestor directory containing ekos.toml + .ekos/
WORKSPACE_ROOT="${WORKSPACE_ROOT:-$(d=$PWD; while [ "$d" != / ] && [ ! -f "$d/ekos.toml" ]; do d=$(dirname "$d"); done; echo "$d")}"
# The EKOS source checkout (a project inside the estate)
EKOS_ROOT="${EKOS_ROOT:-$WORKSPACE_ROOT/EKOS}"
# The CLI binary: PATH install wins, else the release build in the checkout
EKOS_BIN="${EKOS_BIN:-$(command -v ekos || echo "$EKOS_ROOT/ekos/target/release/ekos")}"Rebuild after changing EKOS itself:
cd "$EKOS_ROOT/ekos" && cargo build --release -p ekosDoes it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

