sysml
sysml is a knowledge-graph toolkit for SysML v2 and a study instrument: a way to try, on real models, how a language model might work a large one without reading it whole. kebnf takes the same study to the grammar.
One Rust binary, sysml, runs as a clap CLI for people and CI or as a stdio MCP server for agents; both delegate to sysml-core. Parsing comes from tree-sitter-sysml, a grammar I also maintain.
- A walker turns parsed files into elements and typed relationships;
indexwrites the graph once. - The CLI emits JSON on stdout, so commands pipe into each other; the MCP server exposes the same functions as tools.
skillprints a page of commands with purpose and example, an agent’s way into the CLI without a tool schema.
Progressive disclosure is the shape of the command set.
planclassifies a question and writes the commands that answer it.searchscores elements on name, kind, documentation and relationship text.inspecttakes one exact name and returns its kind, layer, members and relationships.tracewalks relationships outward for a chosen number of hops.l0is names and kinds,l1adds the line,l2the file and span;checkreports counts until--detail.
Meta-modeling appears as rules the graph is held to.
- A vocabulary lists every element and relationship kind the walker produces; tests fail by name when the grammar adds one it lacks.
- Element kinds are classified into RFLP layers, so
searchandqueryfilter by layer. check metamodelenforces the language’s constraints: satisfy and verify targets must be requirements, allocations run logical to physical, ports carry a type.
CI templates gate a consuming project’s .sysml changes: validation with a completeness badge, and a merge-request diff of base against head.
Measuring whether any of this helps a model is sysml-bench‘s job. Vector search is an optional feature, off by default; every command runs without it.