Kenfigure™: a YAML spec to define Benchling configurations
Kenfigure: a YAML spec to define Benchling configurations
This approach provides a structured, accurate, reproducible, reviewable, and maintainable definition of your Benchling tenant configurations.
Because it is a structured human and machine readable format, it works exceptionally well with git and can therefore form the foundation of a top-notch change management process.
Kenfigure is highly useful solely as a standalone documentation tool, but I also use it for internal tools I’ve developed to programmatically deploy configurations, extract and document configurations, check against a set of schema quality rules and create dynamic ER diagrams. I created the spec for my internal tool use, but am making it publicly available since it is highly valuable as a way to document the source-of-truth for Benchling configurations even without leveraging any tools.
Here’s a very stripped down example:
Entity_schemas:
- Name: Chemical
  Description: A generic small molecule.
  Entity type: Molecule
  Prefix: CHEM
  System name: chemical
  Containable type: None
  Name template: []
  Constraint:
  - Canonical SMILES
  - CAS RN
  Naming options:
  - NEW_IDS
  # - Generate new registry IDs  # Long form is accepted, but I prefer the short form
  RegID chips: false
  RegID display: false
  Icon: small-molecule
  Access type: Registry-based
  Diagram:
    Group: Chemicals  # All entities with the same name are rendered in a group of that name
  Fields:
  - Name: CAS RN
    Description: If we don't have a SMILES, then a real or pseudo CAS RN drives uniqueness
    Tool tip: Create a pseudo CAS RN if no official number exists
    System name: cas_rn
    Type: Text
See examples/Chemical.yaml for a more complete annotated example.
Here are some benefits of documenting your Benchling configuration in kenfigure files in git. In no particular order: (Note that I’m included some benefits are required additional tooling that is not open source. I’ve left these bullet points here since it helps to show the future possibilities whether it’s with Go2 Software proprietary tools or others.)
jsonschemas directory.kenfigure.schema.json and this uses $ref to 
interpolate sub-schemas. This is done only for one-level for items in properties.
It is not otherwise hierarchical.kenfigure_flat.schema.json.
This file is the flattened version of the schema with all $ref keys
resolved from the top-level file in the properties section. This flat version
is for use with IDEs and sharing more generally so that there will be no
reference resolution hurdles. This allows us to keep the source files separate for manageability..vscode/settings.json to associate the schema file with YAML files in the listed locations.
    {
  "yaml.schemas": {
      "https://kenfigure.com/jsonschemas/latest/kenfigure.schema.json": [
          "*.yaml",
          "**/*.yaml"
      ]
  }
}
You may want to narrow the matching files ("*.yaml" and "**/*.yaml") by adding a more specific path prefix for your environment.
CTRL + space for typing completion. You can also hover to get various hints.See .cursor/rules/kenfigure.mdc in the GitHub repo for a Cursor rules file that that works well. Getting these rules optimized is an ongoing process, so check back for updates. Of course contributions are welcome too!
I have not yet testing using AGENT.md files, but I suspect you could readily adapt the above Cursor rules file.
If you use a different IDE, please create a pull request so we can document any applicable notes.
Here’s some doc for how to configure PyCharm for YAML editing with a custom schema.
Kenfigure™ is provided under the Open Data Commons Attribution License (ODC-BY 1.0).
You are free to use, adapt, and share this schema with proper attribution.
Commercial use of software tools that rely on this schema may require a separate license.
Please contact info@go2software.com for commercial licensing inquiries.
Kenfigure™ and Kenfiguration™ are trademarks of Go2 Software LLC.
Use of the names “Kenfigure” or “Kenfiguration” in derivative projects or commercial products is not permitted without permission.
Benchling is a trademark of Benchling, Inc.
© 2025 Go2 Software LLC. All rights reserved.