sysml-start — Project Overview
A text-first, docs-as-code SysML2 modeling workflow optimized for VS Code and easy onboarding of systems engineers. Model artifacts live in Git as plain text. Rendered diagrams and a navigable HTML documentation site are a day-1 capability.
Goals
Store all model artifacts as plain text files in Git
Enable editing in VS Code (or any text editor) without a GUI modeling tool
Render diagrams as SVG on day 1, embedded directly in Markdown documentation
Support command-line validate / render / build operations
Enable automated CI validation and doc generation via GitHub Actions
Structure the repository so an AI agent can draft artifacts and a human can review/approve via pull requests
Stakeholders
Stakeholder |
Role |
|---|---|
Systems Engineer |
Authors and reviews model artifacts |
AI Agent |
Drafts model artifacts, views, and documentation |
V&V Reviewer (Human) |
Reviews AI-drafted content via GitHub PR; approves or requests changes |
Documentation Consumer |
Reads rendered HTML docs with embedded diagrams |
CI System |
Automatically validates and builds on every push and pull request |
Artifact Flow
Model Files (.sysml)
│
▼
validate-model script
│
▼
render-diagrams script ──► generated/diagrams/*.svg
│
▼
build-docs script ──► generated/docs/index.html
docs/*.md (with embedded SVG links)
Model files in model/ are the source of truth. Views in model/views/ define which diagram
perspectives are rendered. The scripts/render-diagrams script reads the model and view
definitions and produces SVG files. The scripts/build-docs script assembles those SVGs and the
Markdown documents into a navigable HTML output.
Rendering Pipeline
model/*.sysml + model/views/*.sysml
│
│ SysMLInteractive REPL (OMG SysML v2 Pilot JAR)
│ %viz <element> → @startuml...@enduml (PlantUML + sysmlbw skin)
▼
tools/SysMLRender.java (PlantUML Java API — skin resolved from JAR classpath)
│
▼
generated/diagrams/context.svg
generated/diagrams/artifact-flow.svg
generated/diagrams/requirements.svg
│
│ (embedded in docs/workflow.md via Markdown image links)
▼
Rendered in VS Code Markdown Preview / GitHub / HTML export
The same pipeline applies to every view file. Adding a new view requires:
Creating a new
model/views/<name>-view.sysmlfileAdding a
%viz <element>line and output filename inscripts/render-diagramsEmbedding the resulting SVG in the appropriate Markdown document
What is Real vs Placeholder
Item |
Status |
|---|---|
|
Real — valid SysML v2 syntax, verified by the OMG Pilot kernel |
|
Real — loads all files into the OMG Pilot REPL, reports errors |
|
Real — generates SVGs via OMG Pilot |
|
Real — builds a navigable HTML site via Sphinx + MyST ( |
Generated SVG diagrams |
Real — laid out by GraphViz via the bundled PlantUML renderer |
GitHub Actions workflows |
Real — installs Java 21 + GraphViz, runs |
Next Steps
[ ] Add more model views (e.g., internal block, sequence, state machine)
Acknowledgements
OMG SysML v2 Pilot Implementation — the open-source reference implementation of the SysML v2 standard. This project uses the Pilot JAR for model validation and diagram rendering via the
SysMLInteractiveREPL and%vizcommands.PlantUML — diagram rendering engine bundled within the Pilot JAR.
GraphViz — graph layout engine used by PlantUML for SVG output.
Sphinx with MyST Parser — documentation toolchain used by
scripts/build-docs.sphinx-rtd-theme — Read the Docs theme for Sphinx HTML output.