Customization
Open Modeling Language (OML)
The modeling vocabulary (element types, relationship types, properties, layers, and validations) is defined by the Open Modeling Language (OML). OML uses modeling configurations composed of modeling profiles: versioned, shareable artifacts that define what can be modeled in a project. Projects reference a modeling configuration (by id and version).
Customization is done by providing own baselines and profiles via admin-settings.
To understand how modeling languages are defined and how to use or compose configurations and profiles, see Open Modeling Language (OML) and the OML configuration reference with its examples. As starting point you can use OML examples.
For troubleshooting during customization you may find helpful the log outputs of the pods k5-designer-backend and k5-diagram-modeler-sevice. The names may differ for your installation from the standard.
Profiles
Creating Custom Profiles
To create a custom profile for your organization:
- Start with a template: Copy an existing profile YAML file from (profiles/profiles.md)
- Update metadata: Change the
id,version,name, anddescription - Define element types: Add your custom element types with properties and styles
- Define relationship types: Specify how elements can be connected
- Add property groups: Create reusable property groups for your elements
- Set up validations: Add rules to enforce consistency (optional)
- Reference in configuration: Add your profile to the main
k5-oml.yamlconfiguration
For detailed technical specifications, see the Open Modeling Language Reference.
Use the profile-id-version (e.g. my-profile-1.0.0.yaml) pattern for naming the profile files.
Recommended color scheme
For a consistent look and feel, use the accent colors from the table below when styling your diagrams.
| Color name | Hex | Preview |
|---|---|---|
pure black | #000000 | |
black | #6f6f6f | |
orange | #ba4e00 | |
blue | #0f62fe | |
green | #198038 | |
red | #da1e28 | |
purple | #8a3ffc | |
cyan | #0072c3 | |
teal | #007d79 | |
magenta | #d02670 | |
yellow | #8e6a00 | |
cool-gray | #697077 | |
warm-gray | #726e6e | |
white | #ffffff |
Recipes
Recipes are reusable artifacts that can be included in baselines and copied to project repositories. They consist of skills, commands, and rules that help guide implementation and enforce standards.
Creating Custom Recipes
To create custom recipes for your baseline:
- Create the recipes folder structure: Set up
recipes/skills/,recipes/commands/, andrecipes/rules/directories within your baseline - Add skills: Create markdown files (e.g.,
recipe-1.md) in theskillsfolder that describe how implementation should be generated - Add commands: Create markdown files in the
commandsfolder that define commands triggered in the prompt window - Add rules: Create markdown files in the
rulesfolder that define rules for validation and enforcement - Use naming conventions:
- All skills and those commands and rules, which are prefixed with
k5-(e.g.,k5-command-1.md,k5-rule-1.md), are automatically managed by the workbench - Non-prefixed files are user-managed
- All skills and those commands and rules, which are prefixed with
Commands and rules prefixed with k5- will be automatically managed by the workbench, ensuring they stay synchronized with baseline updates.
Baselines
Creating Custom Baselines
To create a custom baseline for your organization:
- Start with a template: Copy an existing baseline folder structure or use the structure shown below
- Update metadata: Change the
id,version,name, anddescriptionin the maink5-baseline.yamlconfiguration file - Update metadata: Change the
id,version,name, anddescriptionin the maink5-oml.yamlconfiguration file or use an existing one - Define layers: Add your custom layers in the
k5-oml.yamlfile (business, application, data, technology, organization, knowledge) - Reference profiles: Specify which profiles to include in your baseline by listing them in the
profilessection - Create recipes: Add, remove, alter skills, commands, and rules in the
recipesfolder structure (optional) - Add documentation: Create a
README.mdfile that describes the baseline and serves as a template for projects
Use the baseline-name-VERSION (e.g., my-baseline-1.0.0) pattern for naming the baseline folders.
Default profiles configuration
You can directly donwload the k5-oml.yaml for further customization. This file represents the included default configuration for OML.
Folder structure
A typical baseline is outlined in the following showing the folder structure:
baseline-name-VERSION/
├── k5-oml.yaml # Main modeling configuration (defines id, version, layers), references the profiles and systemDefinitions
├── k5-baseline.yaml # System definitions (link types, organizational roles) – optional if using default
├── recipes # Folder for the recipes, that are copied to the repository
│ └── skills # A folder containing skills
│ └── recipe-1.md # A skill / recipe that describes how implementation is generated
│ ├── commands # A folder containing commands
│ │ └── k5-command-1.md # A command that is triggered in the prompt window
│ └── rules # A folder containing rules
│ └── k5-rule-1.md # A command that is triggered in the prompt window
└── README.md # A readme file, that describes the baseline and is used for the project as template
Main configuration
The main configuration file k5-oml.yaml defines layers, references system definitions, and lists the profiles to include.
The systemDefinitions cannot be customized and must be reference like in the example.
id: "my-custom-model"
version: "1.0.0"
name: "Custom Modeling"
description: "A modeling configuration supporting the C4 Model and Architecture Governance"
layers:
- id: "business"
name: "Business Layer"
description: "Business processes, actors, and value streams"
- id: "application"
name: "Application Layer"
description: "Software applications and services"
- id: "data"
name: "Data Layer"
description: "Data structures, schemas, and storage"
- id: "technology"
name: "Technology Layer"
description: "Infrastructure, platforms, and technology components"
- id: "organization"
name: "Organization Layer"
description: "Organizational structure, teams, and locations"
- id: "knowledge"
name: "Knowledge Layer"
description: "Decisions, assumptions, requirements, and learnings"
systemDefinitions:
- id: "k5-oml-system"
version: "1.0.0"
profiles:
- id: "basic-shapes-profile"
version: "1.0.0"
- id: "my-profile"
version: "1.0.0"
- id: "ddd-profile"
version: "1.0.0"
# ... other profiles