diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000..6a9364a
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1 @@
+configurations/*
diff --git a/CONFIG_FORMAT.md b/CONFIG_FORMAT.md
index 6879afa..3d69191 100644
--- a/CONFIG_FORMAT.md
+++ b/CONFIG_FORMAT.md
@@ -3,71 +3,74 @@
 ## Intent
 
 Configuration files are intended to represent the minimum amount of
-configuration required to describe a given piece of hardware.  As such, they are
+configuration required to describe a given piece of hardware. As such, they are
 intended to be simple, and are guided by the following principles.
 
-1. Configuration files should be easy to write.  If a tradeoff is to be made
+1. Configuration files should be easy to write. If a tradeoff is to be made
    between a config file being complex to write, and a reactor being complex to
-   write, the reactor will be the one to hold the complexity.  Why?
-    - Configuration files will get replicated and built to support hundreds of
-      systems over time, and scale linearly with the number of systems.  In
-      contrast, reactors tend to scale as a logarithm of system count, with each
-      new system supported adding fewer and fewer reactors.  As such, pushing
-      the complexity to the reactors leads to fewer lines of code overall, even
-      if the reactor itself contains more complex actions.
-    - Reactor writers tend to be domain experts on their subsystem, and
-      intimately understand the constraints that are emplaced on that subsystem.
-      Config file writers are generally building support for a wide range of
-      reactors on a single piece of hardware, and will generally have less
-      knowledge of each individual reactors constraints.
+   write, the reactor will be the one to hold the complexity. Why?
 
-2. Configuration files should trend toward one config file per physical piece
-   of hardware, and should avoid attempting to support multiple variations of a
+   - Configuration files will get replicated and built to support hundreds of
+     systems over time, and scale linearly with the number of systems. In
+     contrast, reactors tend to scale as a logarithm of system count, with each
+     new system supported adding fewer and fewer reactors. As such, pushing the
+     complexity to the reactors leads to fewer lines of code overall, even if
+     the reactor itself contains more complex actions.
+   - Reactor writers tend to be domain experts on their subsystem, and
+     intimately understand the constraints that are emplaced on that subsystem.
+     Config file writers are generally building support for a wide range of
+     reactors on a single piece of hardware, and will generally have less
+     knowledge of each individual reactors constraints.
+
+2. Configuration files should trend toward one config file per physical piece of
+   hardware, and should avoid attempting to support multiple variations of a
    given piece of hardware in a single file, even at the risk of duplicating
-   information.  Why?
-    - Hardware constraints, bugs, and oddities are generally found over time.
-      The initial commit of a configuration file is far from the final time that
-      changes will be submitted.  Having each individual piece of hardware in
-      its own file minimizes the change needed between different components when
-      bugs are found, or features are added.
-    - Having separate config files reduces the number of platforms that need to
-      be tested for any given config file change, thus limiting the "blast
-      radius" of particular kinds of changes, as well as making an explicit log
-      of what changed for a specific platform.
-    - Having one config file per piece of hardware makes it much easier and
-      clear for a user to determine if a piece of hardware is supported.
-    - Note: This is a "guideline" not a "rule".  There are many cases of
-      hardware that despite having different part numbers, are actually
-      physically identical, and as such, the config files will never differ.
-        - Example: SAS modules and cards made by the same company, on the same
-          process, and branded with different manufacturers and part numbers.
-        - Non-Example: Power supplies.  While all pmbus power supplies appear
-          similar, there tend to be significant differences in featuresets,
-          bugs, and OEM supported firmware features.  As such, they require
-          separate config files.
+   information. Why?
 
-3. Configuration files are not a long-term stable ABI.  Why?
-    - Configuration files occasionally need to modify their schema in pursuit of
-      simplicity, or based on a greater understanding of the system level
-      constraints.
-    - The repo will ensure that all schema changes are enacted such that the
-      files in the repo will not be broken as a result of the schema change, and
-      will be carried forward.  The recommended way to avoid merge problems is
-      to upstream your configurations.
-    - Note: This drives the requirement that config files shall not be checked
-      into OpenBMC meta layers.
+   - Hardware constraints, bugs, and oddities are generally found over time. The
+     initial commit of a configuration file is far from the final time that
+     changes will be submitted. Having each individual piece of hardware in its
+     own file minimizes the change needed between different components when bugs
+     are found, or features are added.
+   - Having separate config files reduces the number of platforms that need to
+     be tested for any given config file change, thus limiting the "blast
+     radius" of particular kinds of changes, as well as making an explicit log
+     of what changed for a specific platform.
+   - Having one config file per piece of hardware makes it much easier and clear
+     for a user to determine if a piece of hardware is supported.
+   - Note: This is a "guideline" not a "rule". There are many cases of hardware
+     that despite having different part numbers, are actually physically
+     identical, and as such, the config files will never differ.
+     - Example: SAS modules and cards made by the same company, on the same
+       process, and branded with different manufacturers and part numbers.
+     - Non-Example: Power supplies. While all pmbus power supplies appear
+       similar, there tend to be significant differences in featuresets, bugs,
+       and OEM supported firmware features. As such, they require separate
+       config files.
+
+3. Configuration files are not a long-term stable ABI. Why?
+
+   - Configuration files occasionally need to modify their schema in pursuit of
+     simplicity, or based on a greater understanding of the system level
+     constraints.
+   - The repo will ensure that all schema changes are enacted such that the
+     files in the repo will not be broken as a result of the schema change, and
+     will be carried forward. The recommended way to avoid merge problems is to
+     upstream your configurations.
+   - Note: This drives the requirement that config files shall not be checked
+     into OpenBMC meta layers.
 
 4. Configurations should represent only the things that are _different_ and
-   undetectable between platforms.  Why?
-    - There are many behaviors that the BMC has that are very easily detected
-      at runtime, or where the behavior can be identical between different
-      platforms.  Things like timeouts, protocol versions, and communcation
-      channels can generally be represented with a default that works for all
-      platforms, and doesn't need to be an entity-configurable parameter.  In
-      general, reducing the config files to _only_ the differences reduces
-      complexity, and explicitly bounds where dicsussion is needed for platform
-      differences, and where a difference is "supported" and "reasonable" to
-      maintain in the long run.
+   undetectable between platforms. Why?
+   - There are many behaviors that the BMC has that are very easily detected at
+     runtime, or where the behavior can be identical between different
+     platforms. Things like timeouts, protocol versions, and communcation
+     channels can generally be represented with a default that works for all
+     platforms, and doesn't need to be an entity-configurable parameter. In
+     general, reducing the config files to _only_ the differences reduces
+     complexity, and explicitly bounds where dicsussion is needed for platform
+     differences, and where a difference is "supported" and "reasonable" to
+     maintain in the long run.
 
 ## Configuration Syntax
 
@@ -77,28 +80,28 @@
 hardware modules into a single file if desired, it is recommended to divide them
 into multiple configuration files. For example, there may be a baseboard JSON
 file (describes all devices on the baseboard) and a chassis JSON file (describes
-devices attached to the chassis).  Other examples of entities might be
-removable power supplies, fans, and PCIe add in cards.
+devices attached to the chassis). Other examples of entities might be removable
+power supplies, fans, and PCIe add in cards.
 
 Within a configuration file, there is a JSON object which consists of multiple
 "string : value" pairs. This Entity Manager defines the following strings.
 
-| String    | Example Value                            | Description                              |
-| :-------- | ---------------------------------------- | ---------------------------------------- |
-| "Name"    | "X1000 1U Chassis"                       | Human readable name used for identification and sorting. |
-| "Probe"   | "xyz.openbmc_project.FruDevice({'BOARD_PRODUCT_NAME':'FFPANEL'})" | Statement which attempts to read from d-bus. The result determines if a configuration record should be applied. The value for probe can be set to “TRUE” in the case the record should always be applied, or set to more complex lookups, for instance a field in a FRU file that is exposed by the frudevice |
-| "Exposes" | [{"Name" : "CPU fan"}, ...]              | An array of JSON objects which are valid if the probe result is successful. These objects describe the devices BMC can interact. |
-| "Status"  | "disabled"                               | An indicator that allows for some records to be disabled by default. |
-| "Bind*"  | "2U System Fan connector 1"              | The record isn't complete and needs to be combined with another to be functional. The value is a unique reference to a record elsewhere. |
-| "DisableNode"| "Fan 1" | Sets the status of another Entity to disabled. |
+| String        | Example Value                                                     | Description                                                                                                                                                                                                                                                                                                   |
+| :------------ | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| "Name"        | "X1000 1U Chassis"                                                | Human readable name used for identification and sorting.                                                                                                                                                                                                                                                      |
+| "Probe"       | "xyz.openbmc_project.FruDevice({'BOARD_PRODUCT_NAME':'FFPANEL'})" | Statement which attempts to read from d-bus. The result determines if a configuration record should be applied. The value for probe can be set to “TRUE” in the case the record should always be applied, or set to more complex lookups, for instance a field in a FRU file that is exposed by the frudevice |
+| "Exposes"     | [{"Name" : "CPU fan"}, ...]                                       | An array of JSON objects which are valid if the probe result is successful. These objects describe the devices BMC can interact.                                                                                                                                                                              |
+| "Status"      | "disabled"                                                        | An indicator that allows for some records to be disabled by default.                                                                                                                                                                                                                                          |
+| "Bind\*"      | "2U System Fan connector 1"                                       | The record isn't complete and needs to be combined with another to be functional. The value is a unique reference to a record elsewhere.                                                                                                                                                                      |
+| "DisableNode" | "Fan 1"                                                           | Sets the status of another Entity to disabled.                                                                                                                                                                                                                                                                |
 
 Template strings in the form of "$identifier" may be used in configuration
 files. The following table describes the template strings currently defined.
 
-| Template String | Description                              |
-| :-------------- | :--------------------------------------- |
-| "$bus"          | During a I2C bus scan and when the "probe" command is successful, this template string is substituted with the bus number to which the device is connected. |
-| "$address"   | When the "probe" is successful, this template string is substituted with the (7-bit) I2C address of the FRU device. |
+| Template String | Description                                                                                                                                                                                                                         |
+| :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| "$bus"          | During a I2C bus scan and when the "probe" command is successful, this template string is substituted with the bus number to which the device is connected.                                                                         |
+| "$address"      | When the "probe" is successful, this template string is substituted with the (7-bit) I2C address of the FRU device.                                                                                                                 |
 | "$index"        | A run-tim enumeration. This template string is substituted with a unique index value when the "probe" command is successful. This allows multiple identical devices (e.g., HSBPs) to exist in a system but each with a unique name. |
 
 ## Configuration HowTos
@@ -212,7 +215,6 @@
 
 [Full Configuration](https://github.com/openbmc/entity-manager/blob/master/configurations/WFT_Baseboard.json)
 
-
 #### Configuration Records - Chassis Example
 
 Although fan connectors are considered a part of a baseboard, the physical fans
@@ -257,4 +259,3 @@
 The entity-manager can key off of different types and export devices for
 specific configurations. Once this is done, the baseboard temperature sensor
 daemon can scan the sensors.
-
diff --git a/README.md b/README.md
index ac331b1..e918497 100644
--- a/README.md
+++ b/README.md
@@ -1,17 +1,18 @@
 # Entity Manager
 
 Entity manager is a design for managing physical system components, and mapping
-them to software resources within the BMC.  Said resources are designed to allow
+them to software resources within the BMC. Said resources are designed to allow
 the flexible adjustment of the system at runtime, as well as the reduction in
 the number of independent system configurations one needs to create.
 
 ## Definitions
 
 ### Entity
+
 A server component that is physically separate, detectable through some means,
-and can be added or removed from a given OpenBMC system.  Said component can,
-and likely does contain multiple sub-components, but the component itself as a
-whole is referred to as an entity.
+and can be added or removed from a given OpenBMC system. Said component can, and
+likely does contain multiple sub-components, but the component itself as a whole
+is referred to as an entity.
 
 Note, this term is needed because most other terms that could've been used
 (Component, Field Replaceable Unit, or Assembly) are already overloaded in the
@@ -19,16 +20,18 @@
 entity encompasses.
 
 ### Exposes
-A particular feature of an Entity.  An Entity generally will have multiple
-Exposes records for the various features that component supports.  Some examples
+
+A particular feature of an Entity. An Entity generally will have multiple
+Exposes records for the various features that component supports. Some examples
 of features include, LM75 sensors, PID control parameters, or CPU information.
 
 ### Probe
-A set of rules for detecting a given entity.  Said rules generally take the form
+
+A set of rules for detecting a given entity. Said rules generally take the form
 of a D-Bus interface definition.
 
-
 ## Goals
+
 Entity manager has the following goals (unless you can think of better ones):
 
 1. Minimize the time and debugging required to "port" OpenBMC to new systems
@@ -38,18 +41,18 @@
    physically possible.
 
 ## Implementation
+
 A full BMC setup using Entity Manager consists of a few parts:
 
-1. **A detection daemon**  This is something that can be used to detect
-   components at runtime.  The most common of these, fru-device, is included in
+1. **A detection daemon** This is something that can be used to detect
+   components at runtime. The most common of these, fru-device, is included in
    the Entity-Manager repo, and scans all available I2C buses for IPMI FRU
-   EEPROM devices.  Other examples of detection daemons include:
-   **[peci-pcie](https://github.com/openbmc/peci-pcie):**
-   A daemon that utilizes the CPU bus to read in a list of PCIe devices from
-   the processor.
-   **[smbios-mdr](https://github.com/openbmc/smbios-mdr):**
-   A daemon that utilizes the x86 SMBIOS table specification to detect the
-   available systems dependencies from BIOS.
+   EEPROM devices. Other examples of detection daemons include:
+   **[peci-pcie](https://github.com/openbmc/peci-pcie):** A daemon that utilizes
+   the CPU bus to read in a list of PCIe devices from the processor.
+   **[smbios-mdr](https://github.com/openbmc/smbios-mdr):** A daemon that
+   utilizes the x86 SMBIOS table specification to detect the available systems
+   dependencies from BIOS.
 
    In many cases, the existing detection daemons are sufficient for a single
    system, but in cases where there is a superseding inventory control system in
@@ -59,71 +62,73 @@
    more readily, and system configurations can be "verified" rather than
    detected.
 
-2. **An entity manager configuration file**  Entity manager configuration files
+2. **An entity manager configuration file** Entity manager configuration files
    are located in the ./configurations directory in the entity manager
-   repository, and include one file per device supported.  Entities are
-   detected based on the "Probe" key in the json file.  The intention is that
-   this folder contains all hardware configurations that OpenBMC supports, to
-   allows an easy answer to "Is X device supported".  An EM configuration
-   contains a number of Exposes records that specify the specific features that
-   this Entity supports.  Once a component is detected, entity manager will
-   publish these Exposes records to D-Bus.
+   repository, and include one file per device supported. Entities are detected
+   based on the "Probe" key in the json file. The intention is that this folder
+   contains all hardware configurations that OpenBMC supports, to allows an easy
+   answer to "Is X device supported". An EM configuration contains a number of
+   Exposes records that specify the specific features that this Entity supports.
+   Once a component is detected, entity manager will publish these Exposes
+   records to D-Bus.
 
-3. **A reactor**  The reactors are things that take the entity manager
+3. **A reactor** The reactors are things that take the entity manager
    configurations, and use them to execute and enable the features that they
-   describe.  One example of this is dbus-sensors, which contains a suite of
+   describe. One example of this is dbus-sensors, which contains a suite of
    applications that input the Exposes records for sensor devices, then connect
    to the filesystem to create the sensors and scan loops to scan sensors for
-   those devices.  Other examples of reactors could include: CPU management
+   those devices. Other examples of reactors could include: CPU management
    daemons and Hot swap backplane management daemons, or drive daemons.
 
-**note:**  In some cases, a given daemon could be both a detection daemon and a
-reactor when architectures are multi-tiered.  An example of this might include a
+**note:** In some cases, a given daemon could be both a detection daemon and a
+reactor when architectures are multi-tiered. An example of this might include a
 hot swap backplane daemon, which both reacts to the hot swap being detected, and
 also creates detection records of what drives are present.
 
 ## Requirements
 
 1. Entity manager shall support the dynamic discovery of hardware at runtime,
-   using inventory interfaces.  The types of devices include, but are not
-   limited to hard drives, hot swap backplanes, baseboards, power supplies,
-   CPUs, and PCIe Add-in-cards.
+   using inventory interfaces. The types of devices include, but are not limited
+   to hard drives, hot swap backplanes, baseboards, power supplies, CPUs, and
+   PCIe Add-in-cards.
 
 2. Entity manager shall support the ability to add or remove support for
-   particular devices in a given binary image.  By default, entity manager will
+   particular devices in a given binary image. By default, entity manager will
    support all available and known working devices for all platforms.
 
-3. Entity manager shall provide data to D-Bus about a particular device such that
-   other daemons can create instances of the features being exposed.
+3. Entity manager shall provide data to D-Bus about a particular device such
+   that other daemons can create instances of the features being exposed.
 
 4. Entity manager shall support multiple detection runs, and shall do the
    minimal number of changes necessary when new components are detected or no
-   longer detected.  Some examples of re-detection events might include host
+   longer detected. Some examples of re-detection events might include host
    power on, drive plug/unplug, PSU plug/unplug.
 
 5. Entity manager shall have exactly one configuration file per supported device
-   model.  In some cases this will cause duplicated information between files,
+   model. In some cases this will cause duplicated information between files,
    but the ability to list and see all supported device models in a single
    place, as well as maintenance when devices do differ in the future is
    determined to be more important than duplication of configuration files.
 
-
 ### Explicitly out of scope
+
 1. Entity manager shall not directly participate in the detection of devices,
    and instead will rely on other D-Bus applications to publish interfaces that
    can be detected.
 2. Entity manager shall not directly participate in management of any specific
-   device.  This is requirement is intended to intentionally limit the size and
+   device. This is requirement is intended to intentionally limit the size and
    feature set of entity manager, to ensure it remains small, and effective to
    all users.
 
 ### Entity Manager Compatible Software
+
 **bmcweb** A webserver implementation that uses the inventory information from
-entity-manager to produce a Redfish compliant REST API.
-**intel-ipmi-oem** An implementation of the IPMI SDR, FRU, and Storage commands
-that utilize Entity Manager as the source of information.
+entity-manager to produce a Redfish compliant REST API. **intel-ipmi-oem** An
+implementation of the IPMI SDR, FRU, and Storage commands that utilize Entity
+Manager as the source of information.
 
 ## Additional Documentation
+
 1. **[Entity Manager DBus API](https://github.com/openbmc/entity-manager/blob/master/docs/entity_manager_dbus_api.md)**
 2. **[My First Sensor Example](https://github.com/openbmc/entity-manager/blob/master/docs/my_first_sensors.md)**
-3. **[Configuration File Schema](https://github.com/openbmc/entity-manager/tree/master/schemas)**
\ No newline at end of file
+3. **[Configuration File Schema](https://github.com/openbmc/entity-manager/tree/master/schemas)**
diff --git a/docs/entity_manager_dbus_api.md b/docs/entity_manager_dbus_api.md
index 0c034d8..0b50e2b 100644
--- a/docs/entity_manager_dbus_api.md
+++ b/docs/entity_manager_dbus_api.md
@@ -10,7 +10,7 @@
 
 ### Object Paths:
 
-#### Entities:  /xyz/openbmc_project/Inventory/Item/{Entity Type}/{Entity Name}
+#### Entities: /xyz/openbmc_project/Inventory/Item/{Entity Type}/{Entity Name}
 
 Entities are top level json objects that describe a piece of hardware. They are
 groups of configurations with few properties of their own, they are a container
@@ -22,7 +22,7 @@
 "global" system configuration. An example would be a TMP75 sensor that is
 exposed when the front panel is detected.
 
-__Example__:
+**Example**:
 
 ```
 /xyz/openbmc_project/Inventory/Item/Board/Intel_Front_Panel/Front_Panel_Temp
@@ -32,13 +32,14 @@
 
 #### xyz.openbmc_project.{InventoryType}
 
-See [upstream types](https://github.com/openbmc/phosphor-dbus-interfaces/tree/master/yaml/xyz/openbmc_project/Inventory/Item)
+See
+[upstream types](https://github.com/openbmc/phosphor-dbus-interfaces/tree/master/yaml/xyz/openbmc_project/Inventory/Item)
 
-* BMC
-* Board
-* Chassis
-* CPU
-* ...
+- BMC
+- Board
+- Chassis
+- CPU
+- ...
 
 These types closely align with Redfish types.
 
@@ -50,7 +51,6 @@
 
 std::string name: name of the inventory item
 
-
 #### xyz.openbmc_project.Configuration
 
 Configuration objects describe components owned by the Entity.
@@ -59,7 +59,7 @@
 
 Properties will contain all non-objects (simple types) exposed by the JSON.
 
- __Example__:
+**Example**:
 
 ```
 path: /xyz/openbmc_project/Inventory/Item/Board/Intel_Front_Panel/Front_Panel_Temp
@@ -80,7 +80,7 @@
 
 All members of the dictonary.
 
-__Example__:
+**Example**:
 
 ```
 path: /xyz/openbmc_project/Inventory/Item/Board/Intel_Front_Panel/Front_Panel_Temp
@@ -97,11 +97,11 @@
 objects may not have more than one level deep of dictionary or list of
 dictionary. It is possible to extend in the future to allow nearly infinite
 levels deep of dictonary with extending the
-__xyz.openbmc_project.Device.{Object}__ to allow
-__xyz.openbmc_project.Device.{Object}.{SubObject}.{SubObject}__ but that
+**xyz.openbmc_project.Device.{Object}** to allow
+**xyz.openbmc_project.Device.{Object}.{SubObject}.{SubObject}** but that
 complexity will be avoided until proven needed.
 
-__Example__:
+**Example**:
 
 Legal:
 
diff --git a/docs/my_first_sensors.md b/docs/my_first_sensors.md
index e306748..8e4cfc5 100644
--- a/docs/my_first_sensors.md
+++ b/docs/my_first_sensors.md
@@ -2,12 +2,12 @@
 
 This document is meant to bring you from nothing to using Entity-Manager with
 Dbus-Sensors to populate a plug-in card's sensor values on dbus. Once the sensor
-values are on dbus, they can be read via IPMI or Redfish (doing so is beyond
-the scope of this guide).
+values are on dbus, they can be read via IPMI or Redfish (doing so is beyond the
+scope of this guide).
 
-For the sake of this example, let's pretend there is a PCIe card that exposes
-an 24c02 eeprom and a tmp441 sensor. The PCIe slots are behind an smbus mux on
-the motherboard and are in a device-tree such as this:
+For the sake of this example, let's pretend there is a PCIe card that exposes an
+24c02 eeprom and a tmp441 sensor. The PCIe slots are behind an smbus mux on the
+motherboard and are in a device-tree such as this:
 
 ```
 aliases {
@@ -53,8 +53,8 @@
 ```
 
 The first daemon of interest that will run is the FruDevice portion of
-Entity-Manager. The exact layout of a FRU is beyond the scope of this guide,
-but assume the PCIe card's eeprom holds the following information:
+Entity-Manager. The exact layout of a FRU is beyond the scope of this guide, but
+assume the PCIe card's eeprom holds the following information:
 
 ```
 Product:
@@ -252,5 +252,5 @@
 There you are! You now have the two sensors from the two card instances on dbus.
 
 This can be more complex, for instance if your card has a mux you can add it to
-the configuration, which will trigger FruDevice to scan those new buses for
-more devices.
+the configuration, which will trigger FruDevice to scan those new buses for more
+devices.
diff --git a/schemas/README.md b/schemas/README.md
index 15bdf81..5b4ee81 100644
--- a/schemas/README.md
+++ b/schemas/README.md
@@ -1,73 +1,71 @@
-Entity manager configuration file schema
-----------------------------------------
+## Entity manager configuration file schema
 
 Entity manager configuration files are JSON documents and can be validated with
-a JSON schema[1].  This document provides an overview of the general structure
-of an entity manager configuration file.
+a JSON schema[1]. This document provides an overview of the general structure of
+an entity manager configuration file.
 
 An entity manager configuration file consists of one or more entity manager
-configurations.  This provides flexibility for system designers - the
+configurations. This provides flexibility for system designers - the
 configuration data for an entire platform or set of platforms can be expressed
-in a single file, or can be organized into several smaller files.  Thus, the
-top most schema describes a single object or an array of objects.
+in a single file, or can be organized into several smaller files. Thus, the top
+most schema describes a single object or an array of objects.
 
 To remain consistent with the OpenBMC CPP source code file name guidelines,
 entity manager configuration file and schema file names must be
 lower_snake_case.
 
-A single entity manager configuration
-----------------------------------------
+## A single entity manager configuration
+
 At its core entity manager simply exports objects onto DBus when a specific
-event occurs.  As such, an entity manager configuration provides a syntax for
+event occurs. As such, an entity manager configuration provides a syntax for
 describing the dbus interfaces to export, the object paths on which to add the
-interfaces and the event that should trigger the export.  This is accomplished
+interfaces and the event that should trigger the export. This is accomplished
 with four properties.
 
-Type
-----------------------------------------
-The type property identifies the type of the configuration.  When exported,
+## Type
+
+The type property identifies the type of the configuration. When exported,
 configuration data will be instantiated as grandchildren of
-/xyz/openbmc_project/inventory/system/<Type>.  For a comprehensive list of
+/xyz/openbmc_project/inventory/system/<Type>. For a comprehensive list of
 supported types, consult the schema (global.json).
 
-Name
-----------------------------------------
-The name property identifies the name of the configuration.  When exported,
+## Name
+
+The name property identifies the name of the configuration. When exported,
 configuration data will be instantiated as children of
-/xyz/openbmc_project/inventory/system/<Type>/<Name>.  Additionally, any DBus
+/xyz/openbmc_project/inventory/system/<Type>/<Name>. Additionally, any DBus
 interfaces listed in openbmc-dbus.json will be added on
 /xyz/openbmc_project/inventory/system/<Type>/<Name>.
 
-Probe
-----------------------------------------
-The probe property describes the event which will cause entity manager to
-export the configuration to DBus, making it available to other applications.
+## Probe
 
-Exposes
-----------------------------------------
+The probe property describes the event which will cause entity manager to export
+the configuration to DBus, making it available to other applications.
+
+## Exposes
+
 The exposes property describes the configuration data at its most specific
-level.  The exposes property is an array of heterogeneous configuration data.
+level. The exposes property is an array of heterogeneous configuration data.
 Each exposes element has its own schema which is outlined by the subschemas in
-the schemas directory.  Each schema must require a type and name (not to be
+the schemas directory. Each schema must require a type and name (not to be
 confused with the Type and Name properties of the parent JSON object) property
 since entity manager will construct the Dbus interface name and object path
 based on those properties:
 
 /xyz/openbmc_project/inventory/system/Board/RiserCard1/<Name>:
-   xyz.openbmc_project.Configuration.<Type>:
-     <remaining properties defined by exposes subschema>
+xyz.openbmc_project.Configuration.<Type>:
+<remaining properties defined by exposes subschema>
 
-Adding new exposes property subschema
-----------------------------------------
+## Adding new exposes property subschema
+
 New subschema for the exposes property must be added to the schema directory,
-and then referenced from global.json at /definitions/EMExposesElement.  Exposes
-element subschema must require a type and name property (the validator will
-fail otherwise) and should explicitly enumerate all properties and use
-additionalProperties so mistakes can be found
-during validation.
+and then referenced from global.json at /definitions/EMExposesElement. Exposes
+element subschema must require a type and name property (the validator will fail
+otherwise) and should explicitly enumerate all properties and use
+additionalProperties so mistakes can be found during validation.
 
-Adding new Dbus interfaces
-----------------------------------------
+## Adding new Dbus interfaces
+
 To export new interfaces on the configuration parent object e.g.:
 /xyz/openbmc_project/inventory/system/Board/RiserCard1 add additional subschema
 to openbmc-dbus.json.
diff --git a/schemas/global.json b/schemas/global.json
index 6b6382e..b6100bf 100644
--- a/schemas/global.json
+++ b/schemas/global.json
@@ -38,9 +38,7 @@
                         "when an element does not define a type property."
                     ],
                     "not": {
-                        "required": [
-                            "Type"
-                        ]
+                        "required": ["Type"]
                     },
                     "title": "Missing Type"
                 },
@@ -50,9 +48,7 @@
                         "when an element does not define a name property."
                     ],
                     "not": {
-                        "required": [
-                            "Name"
-                        ]
+                        "required": ["Name"]
                     },
                     "title": "Missing Name"
                 }
@@ -88,9 +84,7 @@
                     }
                 },
                 "Logging": {
-                    "enum": [
-                        "Off"
-                    ]
+                    "enum": ["Off"]
                 },
                 "Name": {
                     "description": [
@@ -130,12 +124,7 @@
                         "configurations will be instantiated as children of: ",
                         "/xyz/openbmc_project/configuration/<Type>"
                     ],
-                    "enum": [
-                        "Board",
-                        "Chassis",
-                        "NVMe",
-                        "PowerSupply"
-                    ]
+                    "enum": ["Board", "Chassis", "NVMe", "PowerSupply"]
                 },
                 "xyz.openbmc_project.Inventory.Decorator.Asset": {
                     "$ref": "openbmc-dbus.json#/definitions/xyz/openbmc_project/Inventory/Decorator/Asset"
@@ -159,12 +148,7 @@
                     "$ref": "openbmc-dbus.json#/definitions/xyz/openbmc_project/Inventory/Item/System"
                 }
             },
-            "required": [
-                "Exposes",
-                "Name",
-                "Probe",
-                "Type"
-            ]
+            "required": ["Exposes", "Name", "Probe", "Type"]
         }
     },
     "title": "Entity Manager Configuration File",
diff --git a/schemas/ibm.json b/schemas/ibm.json
index 84f9cd4..36b4370 100644
--- a/schemas/ibm.json
+++ b/schemas/ibm.json
@@ -17,9 +17,7 @@
                     "type": "string"
                 },
                 "Type": {
-                    "enum": [
-                        "IBMCFFPSConnector"
-                    ]
+                    "enum": ["IBMCFFPSConnector"]
                 },
                 "I2CBus": {
                     "description": [
@@ -67,7 +65,6 @@
                 "The recommended entry format is 'manufacturer,model' where",
                 "the manufacturer is a string describing the name of the",
                 "manufacturer and model specifies the model number."
-
             ],
             "type": "object",
             "properties": {
@@ -75,9 +72,7 @@
                     "type": "string"
                 },
                 "Type": {
-                    "enum": [
-                        "IBMCompatibleSystem"
-                    ]
+                    "enum": ["IBMCompatibleSystem"]
                 },
                 "Names": {
                     "type": "array",
@@ -92,11 +87,7 @@
                     }
                 }
             },
-            "required": [
-                "Name",
-                "Type",
-                "Names"
-            ]
+            "required": ["Name", "Type", "Names"]
         }
     }
 }
diff --git a/schemas/intel.json b/schemas/intel.json
index 193fc18..fe4c7e7 100644
--- a/schemas/intel.json
+++ b/schemas/intel.json
@@ -19,18 +19,10 @@
                     "type": "array"
                 },
                 "Type": {
-                    "enum": [
-                        "IntelFanConnector"
-                    ]
+                    "enum": ["IntelFanConnector"]
                 }
             },
-            "required": [
-                "Name",
-                "Type",
-                "Status",
-                "Pwm",
-                "Tachs"
-            ],
+            "required": ["Name", "Type", "Status", "Pwm", "Tachs"],
             "type": "object"
         }
     }
diff --git a/schemas/legacy.json b/schemas/legacy.json
index 47a6c7b..cabfe5c 100644
--- a/schemas/legacy.json
+++ b/schemas/legacy.json
@@ -388,18 +388,12 @@
                     "$ref": "#/definitions/Types/Type"
                 }
             },
-            "required": [
-                "Name",
-                "Type"
-            ],
+            "required": ["Name", "Type"],
             "type": "object"
         },
         "Types": {
             "Address": {
-                "type": [
-                    "string",
-                    "array"
-                ]
+                "type": ["string", "array"]
             },
             "AllowedFailures": {
                 "type": "number"
@@ -417,16 +411,10 @@
                 "type": "string"
             },
             "BridgeGpio": {
-                "type": [
-                    "number",
-                    "array"
-                ]
+                "type": ["number", "array"]
             },
             "Bus": {
-                "type": [
-                    "string",
-                    "number"
-                ]
+                "type": ["string", "number"]
             },
             "C1": {
                 "type": "number"
@@ -461,11 +449,7 @@
                         "type": "array"
                     }
                 },
-                "required": [
-                    "Name",
-                    "Pwm",
-                    "Tachs"
-                ],
+                "required": ["Name", "Pwm", "Tachs"],
                 "type": "object"
             },
             "CpuID": {
@@ -499,9 +483,7 @@
                 "type": "array"
             },
             "GpioPolarity": {
-                "enum": [
-                    "Low"
-                ]
+                "enum": ["Low"]
             },
             "Index": {
                 "type": "number"
@@ -635,10 +617,7 @@
                 "type": "object"
             },
             "PresenceGpio": {
-                "type": [
-                    "number",
-                    "array"
-                ]
+                "type": ["number", "array"]
             },
             "Pwm": {
                 "type": "number"
@@ -669,10 +648,7 @@
             },
             "Tachs": {
                 "items": {
-                    "type": [
-                        "number",
-                        "string"
-                    ]
+                    "type": ["number", "string"]
                 },
                 "type": "array"
             },
@@ -700,12 +676,7 @@
                             "type": "number"
                         }
                     },
-                    "required": [
-                        "Direction",
-                        "Name",
-                        "Severity",
-                        "Value"
-                    ],
+                    "required": ["Direction", "Name", "Severity", "Value"],
                     "type": "object"
                 },
                 "type": "array"
diff --git a/schemas/openbmc-dbus.json b/schemas/openbmc-dbus.json
index 8190b08..184d2f4 100644
--- a/schemas/openbmc-dbus.json
+++ b/schemas/openbmc-dbus.json
@@ -37,9 +37,7 @@
                                     "type": "string"
                                 }
                             },
-                            "required": [
-                                "AssetTag"
-                            ],
+                            "required": ["AssetTag"],
                             "type": "object"
                         }
                     },
@@ -52,9 +50,7 @@
                                         "type": "number"
                                     }
                                 },
-                                "required": [
-                                    "ProductId"
-                                ],
+                                "required": ["ProductId"],
                                 "type": "object"
                             }
                         },
diff --git a/schemas/pid_zone.json b/schemas/pid_zone.json
index 4e4e41a..3905c13 100644
--- a/schemas/pid_zone.json
+++ b/schemas/pid_zone.json
@@ -17,12 +17,7 @@
                     "type": "string"
                 }
             },
-            "required": [
-                "FailSafePercent",
-                "MinThermalOutput",
-                "Name",
-                "Type"
-            ]
+            "required": ["FailSafePercent", "MinThermalOutput", "Name", "Type"]
         }
     }
 }
diff --git a/schemas/virtual_sensor.json b/schemas/virtual_sensor.json
index 391f695..3584489 100644
--- a/schemas/virtual_sensor.json
+++ b/schemas/virtual_sensor.json
@@ -13,27 +13,19 @@
             "type": "object",
             "properties": {
                 "MaxValidInput": {
-                    "description": [
-                        "Maximum valid value of an input sensor"
-                    ],
+                    "description": ["Maximum valid value of an input sensor"],
                     "type": "number"
                 },
                 "MaxValue": {
-                    "description": [
-                        "Maximum sensor value"
-                    ],
+                    "description": ["Maximum sensor value"],
                     "$ref": "legacy.json#/definitions/Types/MaxValue"
                 },
                 "MinValidInput": {
-                    "description": [
-                        "Miniumum valid value of an input sensor"
-                    ],
+                    "description": ["Miniumum valid value of an input sensor"],
                     "type": "number"
                 },
                 "MinValue": {
-                    "description": [
-                        "Minimum sensor value"
-                    ],
+                    "description": ["Minimum sensor value"],
                     "$ref": "legacy.json#/definitions/Types/MinValue"
                 },
                 "Name": {
@@ -60,9 +52,7 @@
                         "The type of calculation this sensor uses."
                     ],
                     "type": "string",
-                    "enum": [
-                        "ModifiedMedian"
-                    ]
+                    "enum": ["ModifiedMedian"]
                 },
                 "Units": {
                     "description": [
@@ -72,12 +62,7 @@
                     "$ref": "legacy.json#/definitions/Types/Units"
                 }
             },
-            "required": [
-                "Name",
-                "Sensors",
-                "Type",
-                "Units"
-            ]
+            "required": ["Name", "Sensors", "Type", "Units"]
         }
     }
 }
diff --git a/scripts/validate_configs.py b/scripts/validate_configs.py
index 7d580c2..5ba8945 100755
--- a/scripts/validate_configs.py
+++ b/scripts/validate_configs.py
@@ -5,10 +5,11 @@
 """
 import argparse
 import json
-import jsonschema.validators
 import os
 import sys
 
+import jsonschema.validators
+
 DEFAULT_SCHEMA_FILENAME = "global.json"
 
 
@@ -17,24 +18,40 @@
         description="Entity manager configuration validator",
     )
     parser.add_argument(
-        "-s", "--schema", help=(
+        "-s",
+        "--schema",
+        help=(
             "Use the specified schema file instead of the default "
-            "(__file__/../../schemas/global.json)"))
+            "(__file__/../../schemas/global.json)"
+        ),
+    )
     parser.add_argument(
-        "-c", "--config", action='append', help=(
+        "-c",
+        "--config",
+        action="append",
+        help=(
             "Validate the specified configuration files (can be "
             "specified more than once) instead of the default "
-            "(__file__/../../configurations/**.json)"))
+            "(__file__/../../configurations/**.json)"
+        ),
+    )
     parser.add_argument(
-        "-e", "--expected-fails", help=(
+        "-e",
+        "--expected-fails",
+        help=(
             "A file with a list of configurations to ignore should "
-            "they fail to validate"))
+            "they fail to validate"
+        ),
+    )
     parser.add_argument(
-        "-k", "--continue", action='store_true', help=(
-            "keep validating after a failure"))
+        "-k",
+        "--continue",
+        action="store_true",
+        help="keep validating after a failure",
+    )
     parser.add_argument(
-        "-v", "--verbose", action='store_true', help=(
-            "be noisy"))
+        "-v", "--verbose", action="store_true", help="be noisy"
+    )
     args = parser.parse_args()
 
     schema_file = args.schema
@@ -42,11 +59,14 @@
         try:
             source_dir = os.path.realpath(__file__).split(os.sep)[:-2]
             schema_file = os.sep + os.path.join(
-                *source_dir, 'schemas', DEFAULT_SCHEMA_FILENAME)
+                *source_dir, "schemas", DEFAULT_SCHEMA_FILENAME
+            )
         except Exception:
             sys.stderr.write(
                 "Could not guess location of {}\n".format(
-                    DEFAULT_SCHEMA_FILENAME))
+                    DEFAULT_SCHEMA_FILENAME
+                )
+            )
             sys.exit(2)
 
     schema = {}
@@ -55,22 +75,22 @@
             schema = json.load(fd)
     except FileNotFoundError:
         sys.stderr.write(
-            "Could not read schema file '{}'\n".format(schema_file))
+            "Could not read schema file '{}'\n".format(schema_file)
+        )
         sys.exit(2)
 
     config_files = args.config or []
     if len(config_files) == 0:
         try:
             source_dir = os.path.realpath(__file__).split(os.sep)[:-2]
-            configs_dir = os.sep + os.path.join(*source_dir, 'configurations')
+            configs_dir = os.sep + os.path.join(*source_dir, "configurations")
             data = os.walk(configs_dir)
             for root, _, files in data:
                 for f in files:
-                    if f.endswith('.json'):
+                    if f.endswith(".json"):
                         config_files.append(os.path.join(root, f))
         except Exception:
-            sys.stderr.write(
-                "Could not guess location of configurations\n")
+            sys.stderr.write("Could not guess location of configurations\n")
             sys.exit(2)
 
     configs = []
@@ -80,7 +100,8 @@
                 configs.append(json.load(fd))
         except FileNotFoundError:
             sys.stderr.write(
-                    "Could not parse config file '{}'\n".format(config_file))
+                "Could not parse config file '{}'\n".format(config_file)
+            )
             sys.exit(2)
 
     expected_fails = []
@@ -91,12 +112,15 @@
                     expected_fails.append(line.strip())
         except Exception:
             sys.stderr.write(
-                    "Could not read expected fails file '{}'\n".format(
-                        args.expected_fails))
+                "Could not read expected fails file '{}'\n".format(
+                    args.expected_fails
+                )
+            )
             sys.exit(2)
 
     base_uri = "file://{}/".format(
-        os.path.split(os.path.realpath(schema_file))[0])
+        os.path.split(os.path.realpath(schema_file))[0]
+    )
     resolver = jsonschema.RefResolver(base_uri, schema)
     validator = jsonschema.Draft7Validator(schema, resolver=resolver)
 
