agentleFS
alexeybanalexeyban/EKOS/.claude/skills/ekos-knowledge/SKILL.md

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.

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
  1. Very specific:

    Knowledge is a snapshot, not live: Check ekos_status /ekos_diff when currency matters, and say "as of the last build" when reporting.

    line 79

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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 needToolNotes
An entry point from free textekos_searchBM25 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 answerekos_queryPlans 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 listingekos_eklEKL query language — see cheat sheet below; also SEMANTIC 'text', COUNT/GROUP BY, AS OF <ts>
What's connected to an objectekos_neighborhoodBFS depth hops from an id
Impact: "what breaks if X changes?"ekos_dependentsIncoming edges = dependents, outgoing = dependencies
Full detail + proof for one objectekos_stateObject + relationships + evidence; at (RFC 3339) reconstructs the past
"What changed since T?"ekos_difffrom required, to defaults to now; names resolved
Is there data / how much / how freshekos_statusCheap first call when unsure the ledger has anything

The investigation pattern

Chain the tools — each answer feeds the next call:

  1. Locate the concept: ekos_ekl when you can name a kind, ekos_search otherwise. Both return object ids — everything else keys off them.
  2. Expand: ekos_neighborhood (what's around it) or ekos_dependents (directional impact) with the id from step 1.
  3. Prove: ekos_state returns the evidence — the SQL fragment, commit, or file that justifies each conclusion. Cite it when the stakes warrant.
  4. 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 defines Directory, 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_diff when currency matters, and say "as of the last build" when reporting. To refresh: run ekos build && ekos recover && ekos compile && ekos commit in the workspace root (the directory containing ekos.toml and .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 ekos

Download now (ZIP)

Does 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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.