diff --git a/keyboards/palette1202/info.json b/keyboards/palette1202/keyboard.json
similarity index 87%
rename from keyboards/palette1202/info.json
rename to keyboards/palette1202/keyboard.json
index 99f43a73f2..db2a83573a 100644
--- a/keyboards/palette1202/info.json
+++ b/keyboards/palette1202/keyboard.json
@@ -8,6 +8,16 @@
     "pid": "0x1202",
     "device_version": "0.0.1"
   },
+  "features": {
+    "bootmagic": false,
+    "command": true,
+    "console": true,
+    "encoder": true,
+    "extrakey": true,
+    "mousekey": true,
+    "nkro": false,
+    "oled": true
+  },
   "matrix_pins": {
     "cols": ["C6", "D7", "E6", "B4", "B5"],
     "rows": ["B6", "B2", "B3"]
diff --git a/keyboards/palette1202/rules.mk b/keyboards/palette1202/rules.mk
index 8876586f4b..37d8ebf017 100644
--- a/keyboards/palette1202/rules.mk
+++ b/keyboards/palette1202/rules.mk
@@ -1,17 +1,2 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
-MOUSEKEY_ENABLE  = yes      # Mouse keys
-EXTRAKEY_ENABLE  = yes      # Audio control and System control
-CONSOLE_ENABLE   = yes      # Console for debug
-COMMAND_ENABLE   = yes      # Commands for debug and configuration
-NKRO_ENABLE = no            # Enable N-Key Rollover
-BACKLIGHT_ENABLE   = no     # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE    = no     # Enable keyboard RGB underglow
-AUDIO_ENABLE       = no     # Audio output
-ENCODER_ENABLE     = yes    # Enable support for rotary encoders
-OLED_ENABLE = yes
-
 # Additional code
 SRC += lib/oled_helper.c  # Adding OLED
diff --git a/keyboards/pearlboards/atlas/info.json b/keyboards/pearlboards/atlas/keyboard.json
similarity index 98%
rename from keyboards/pearlboards/atlas/info.json
rename to keyboards/pearlboards/atlas/keyboard.json
index 5433eb3c75..173a20892b 100644
--- a/keyboards/pearlboards/atlas/info.json
+++ b/keyboards/pearlboards/atlas/keyboard.json
@@ -8,6 +8,19 @@
         "pid": "0x6964",
         "device_version": "0.0.1"
     },
+    "build": {
+        "lto": true
+    },
+    "features": {
+        "audio": true,
+        "bootmagic": false,
+        "encoder": true,
+        "extrakey": true,
+        "haptic": true,
+        "mousekey": true,
+        "nkro": true,
+        "rgblight": true
+    },
     "matrix_pins": {
         "cols": ["D5", "D4", "C1", "C2", "C3", "C5", "C7", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "F7"],
         "rows": ["D6", "E1", "C0", "C4", "E3"]
diff --git a/keyboards/pearlboards/atlas/rules.mk b/keyboards/pearlboards/atlas/rules.mk
index 1dd174f436..dea510c2ab 100644
--- a/keyboards/pearlboards/atlas/rules.mk
+++ b/keyboards/pearlboards/atlas/rules.mk
@@ -1,17 +1 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = yes           # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
-AUDIO_ENABLE = yes          # Audio output
-ENCODER_ENABLE = yes
-HAPTIC_ENABLE = yes
 HAPTIC_DRIVER = drv2605l
-
-LTO_ENABLE = yes
diff --git a/keyboards/pearlboards/pearl/info.json b/keyboards/pearlboards/pearl/keyboard.json
similarity index 96%
rename from keyboards/pearlboards/pearl/info.json
rename to keyboards/pearlboards/pearl/keyboard.json
index 43dd3ad871..e2dddb8662 100644
--- a/keyboards/pearlboards/pearl/info.json
+++ b/keyboards/pearlboards/pearl/keyboard.json
@@ -8,6 +8,18 @@
         "pid": "0x6965",
         "device_version": "0.0.1"
     },
+    "build": {
+        "lto": true
+    },
+    "features": {
+        "audio": true,
+        "bootmagic": false,
+        "extrakey": true,
+        "haptic": true,
+        "mousekey": false,
+        "nkro": true,
+        "rgblight": true
+    },
     "matrix_pins": {
         "cols": ["D2", "F1", "F4", "F5", "F6", "C7", "B6", "B5", "B4", "D7", "D6", "D4", "D5"],
         "rows": ["D3", "F7", "F0", "E6"]
diff --git a/keyboards/pearlboards/pearl/rules.mk b/keyboards/pearlboards/pearl/rules.mk
index 83d6c3a33f..dea510c2ab 100644
--- a/keyboards/pearlboards/pearl/rules.mk
+++ b/keyboards/pearlboards/pearl/rules.mk
@@ -1,16 +1 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no        # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = yes           # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
-AUDIO_ENABLE = yes          # Audio output
-HAPTIC_ENABLE = yes
 HAPTIC_DRIVER = drv2605l
-
-LTO_ENABLE = yes
diff --git a/keyboards/pearlboards/zeus/info.json b/keyboards/pearlboards/zeus/keyboard.json
similarity index 99%
rename from keyboards/pearlboards/zeus/info.json
rename to keyboards/pearlboards/zeus/keyboard.json
index 3128b8c1d8..c77adfb5cf 100644
--- a/keyboards/pearlboards/zeus/info.json
+++ b/keyboards/pearlboards/zeus/keyboard.json
@@ -8,6 +8,19 @@
         "pid": "0x6966",
         "device_version": "0.0.1"
     },
+    "build": {
+        "lto": true
+    },
+    "features": {
+        "audio": true,
+        "bootmagic": false,
+        "encoder": true,
+        "extrakey": true,
+        "haptic": true,
+        "mousekey": true,
+        "nkro": true,
+        "rgblight": true
+    },
     "matrix_pins": {
         "cols": ["F1", "F2", "F3", "F4", "F5", "F6", "F7", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "C7", "C2", "C0"],
         "rows": ["F0", "C1", "E1", "E0", "D7", "D6"]
diff --git a/keyboards/pearlboards/zeus/rules.mk b/keyboards/pearlboards/zeus/rules.mk
index 5cb2d9b649..34900998f7 100644
--- a/keyboards/pearlboards/zeus/rules.mk
+++ b/keyboards/pearlboards/zeus/rules.mk
@@ -1,17 +1 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = yes           # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
-AUDIO_ENABLE = yes          # Audio output
-ENCODER_ENABLE = yes        # Rotary encoder
-HAPTIC_ENABLE = yes         # Rumble feefback
 HAPTIC_DRIVER = drv2605l    # Rumble motor
-
-LTO_ENABLE = yes            # Link time optimization
diff --git a/keyboards/peej/rosaline/ortho/info.json b/keyboards/peej/rosaline/ortho/keyboard.json
similarity index 96%
rename from keyboards/peej/rosaline/ortho/info.json
rename to keyboards/peej/rosaline/ortho/keyboard.json
index 9fb9d3cb40..49c3b9fb92 100644
--- a/keyboards/peej/rosaline/ortho/info.json
+++ b/keyboards/peej/rosaline/ortho/keyboard.json
@@ -9,6 +9,12 @@
     "device_version": "0.0.1",
     "max_power": 100
   },
+  "features": {
+    "bootmagic": true,
+    "extrakey": true,
+    "mousekey": true,
+    "nkro": false
+  },
   "matrix_pins": {
     "cols": ["B0", "D7", "D6", "C2", "D4", "D1", "D0", "C1"],
     "rows": ["C0", "B5", "B4", "B3", "B2", "B1", "C3", "D5"]
diff --git a/keyboards/peej/rosaline/ortho/rules.mk b/keyboards/peej/rosaline/ortho/rules.mk
deleted file mode 100644
index ab2c49da70..0000000000
--- a/keyboards/peej/rosaline/ortho/rules.mk
+++ /dev/null
@@ -1,12 +0,0 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = no            # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
diff --git a/keyboards/peej/rosaline/staggered/info.json b/keyboards/peej/rosaline/staggered/keyboard.json
similarity index 98%
rename from keyboards/peej/rosaline/staggered/info.json
rename to keyboards/peej/rosaline/staggered/keyboard.json
index 0679203163..ed4de2313f 100644
--- a/keyboards/peej/rosaline/staggered/info.json
+++ b/keyboards/peej/rosaline/staggered/keyboard.json
@@ -9,6 +9,12 @@
         "device_version": "0.0.1",
         "max_power": 100
     },
+    "features": {
+        "bootmagic": true,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": false
+    },
     "matrix_pins": {
         "cols": ["B0", "D7", "D6", "C2", "D4", "D1", "D0", "C1"],
         "rows": ["C0", "B5", "B4", "B3", "B2", "B1", "C3", "D5"]
diff --git a/keyboards/peej/rosaline/staggered/rules.mk b/keyboards/peej/rosaline/staggered/rules.mk
deleted file mode 100644
index ab2c49da70..0000000000
--- a/keyboards/peej/rosaline/staggered/rules.mk
+++ /dev/null
@@ -1,12 +0,0 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = no            # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
diff --git a/keyboards/peranekofactory/tone/rev1/config.h b/keyboards/peranekofactory/tone/rev1/config.h
deleted file mode 100644
index bbe3b73627..0000000000
--- a/keyboards/peranekofactory/tone/rev1/config.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-Copyright 2021 peraneko
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
-/*
- * Feature disable options
- *  These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-//#define NO_DEBUG
-
-/* disable print */
-//#define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
diff --git a/keyboards/peranekofactory/tone/rev2/info.json b/keyboards/peranekofactory/tone/rev1/keyboard.json
similarity index 82%
rename from keyboards/peranekofactory/tone/rev2/info.json
rename to keyboards/peranekofactory/tone/rev1/keyboard.json
index 67e08be688..fb7b41b27a 100644
--- a/keyboards/peranekofactory/tone/rev2/info.json
+++ b/keyboards/peranekofactory/tone/rev1/keyboard.json
@@ -8,12 +8,23 @@
         "pid": "0x0000",
         "device_version": "0.0.1"
     },
+    "features": {
+        "bootmagic": true,
+        "encoder": true,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": false
+    },
     "encoder": {
         "rotary": [
             {"pin_a": "B5", "pin_b": "B4"}
         ]
     },
     "qmk": {
+        "locking": {
+            "enabled": true,
+            "resync": true
+        },
         "tap_keycode_delay": 100
     },
     "processor": "atmega32u4",
diff --git a/keyboards/peranekofactory/tone/rev1/rules.mk b/keyboards/peranekofactory/tone/rev1/rules.mk
deleted file mode 100644
index b03b6fa905..0000000000
--- a/keyboards/peranekofactory/tone/rev1/rules.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = no            # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
-ENCODER_ENABLE = yes
diff --git a/keyboards/peranekofactory/tone/rev2/config.h b/keyboards/peranekofactory/tone/rev2/config.h
deleted file mode 100644
index bbe3b73627..0000000000
--- a/keyboards/peranekofactory/tone/rev2/config.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-Copyright 2021 peraneko
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
-/*
- * Feature disable options
- *  These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-//#define NO_DEBUG
-
-/* disable print */
-//#define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
diff --git a/keyboards/peranekofactory/tone/rev1/info.json b/keyboards/peranekofactory/tone/rev2/keyboard.json
similarity index 82%
rename from keyboards/peranekofactory/tone/rev1/info.json
rename to keyboards/peranekofactory/tone/rev2/keyboard.json
index 67e08be688..fb7b41b27a 100644
--- a/keyboards/peranekofactory/tone/rev1/info.json
+++ b/keyboards/peranekofactory/tone/rev2/keyboard.json
@@ -8,12 +8,23 @@
         "pid": "0x0000",
         "device_version": "0.0.1"
     },
+    "features": {
+        "bootmagic": true,
+        "encoder": true,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": false
+    },
     "encoder": {
         "rotary": [
             {"pin_a": "B5", "pin_b": "B4"}
         ]
     },
     "qmk": {
+        "locking": {
+            "enabled": true,
+            "resync": true
+        },
         "tap_keycode_delay": 100
     },
     "processor": "atmega32u4",
diff --git a/keyboards/peranekofactory/tone/rev2/rules.mk b/keyboards/peranekofactory/tone/rev2/rules.mk
deleted file mode 100644
index b03b6fa905..0000000000
--- a/keyboards/peranekofactory/tone/rev2/rules.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = no            # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
-ENCODER_ENABLE = yes
diff --git a/keyboards/percent/canoe_gen2/canoe_gen2.c b/keyboards/percent/canoe_gen2/canoe_gen2.c
index e5beff54a3..d174d01876 100644
--- a/keyboards/percent/canoe_gen2/canoe_gen2.c
+++ b/keyboards/percent/canoe_gen2/canoe_gen2.c
@@ -20,6 +20,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 void keyboard_pre_init_kb(void) {
   setPinOutput(E6);
   writePinHigh(E6);
+
+  keyboard_pre_init_user();
 }
 
 bool led_update_kb(led_t led_state) {
diff --git a/keyboards/percent/canoe_gen2/config.h b/keyboards/percent/canoe_gen2/config.h
deleted file mode 100644
index 1f54b79bd0..0000000000
--- a/keyboards/percent/canoe_gen2/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-Copyright 2020 Evy Dekkers
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/percent/canoe_gen2/info.json b/keyboards/percent/canoe_gen2/keyboard.json
similarity index 97%
rename from keyboards/percent/canoe_gen2/info.json
rename to keyboards/percent/canoe_gen2/keyboard.json
index 0fe5d0e894..0b6ece2613 100644
--- a/keyboards/percent/canoe_gen2/info.json
+++ b/keyboards/percent/canoe_gen2/keyboard.json
@@ -8,6 +8,20 @@
         "pid": "0x89F0",
         "device_version": "0.0.1"
     },
+    "features": {
+        "bootmagic": true,
+        "console": true,
+        "extrakey": true,
+        "mousekey": false,
+        "nkro": false,
+        "rgb_matrix": true
+    },
+    "qmk": {
+        "locking": {
+            "enabled": true,
+            "resync": true
+        }
+    },
     "ws2812": {
         "pin": "B7"
     },
diff --git a/keyboards/percent/canoe_gen2/rules.mk b/keyboards/percent/canoe_gen2/rules.mk
index d399c10822..942ef4c5db 100644
--- a/keyboards/percent/canoe_gen2/rules.mk
+++ b/keyboards/percent/canoe_gen2/rules.mk
@@ -1,15 +1 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no        # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = yes        # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = no            # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
-RGB_MATRIX_ENABLE = yes
-
 RGB_MATRIX_CUSTOM_KB = yes
diff --git a/keyboards/phage_studio/pila87/info.json b/keyboards/phage_studio/pila87/keyboard.json
similarity index 98%
rename from keyboards/phage_studio/pila87/info.json
rename to keyboards/phage_studio/pila87/keyboard.json
index 4d12cf2573..fbdf5f637a 100644
--- a/keyboards/phage_studio/pila87/info.json
+++ b/keyboards/phage_studio/pila87/keyboard.json
@@ -8,6 +8,13 @@
         "pid": "0x5887",
         "device_version": "0.0.1"
     },
+    "features": {
+        "bootmagic": true,
+        "extrakey": true,
+        "mousekey": false,
+        "nkro": true,
+        "rgb_matrix": true
+    },
     "rgb_matrix": {
         "animations": {
             "alphas_mods": true,
diff --git a/keyboards/phage_studio/pila87/rules.mk b/keyboards/phage_studio/pila87/rules.mk
index 25fb7ed8c0..6f0a3736a7 100644
--- a/keyboards/phage_studio/pila87/rules.mk
+++ b/keyboards/phage_studio/pila87/rules.mk
@@ -1,18 +1,2 @@
 # Configure for 128K flash
 MCU_LDSCRIPT = STM32F103xB
-
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no        # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = yes           # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
-
-# RGB Matrix enabled
-RGB_MATRIX_ENABLE = yes
diff --git a/keyboards/phase_studio/titan65/hotswap/info.json b/keyboards/phase_studio/titan65/hotswap/keyboard.json
similarity index 96%
rename from keyboards/phase_studio/titan65/hotswap/info.json
rename to keyboards/phase_studio/titan65/hotswap/keyboard.json
index 2c1f3e2854..8bf3152b90 100644
--- a/keyboards/phase_studio/titan65/hotswap/info.json
+++ b/keyboards/phase_studio/titan65/hotswap/keyboard.json
@@ -8,6 +8,13 @@
         "pid": "0xBB91",
         "device_version": "0.0.1"
     },
+    "features": {
+        "bootmagic": true,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": true,
+        "rgb_matrix": true
+    },
     "ws2812": {
         "pin": "E6"
     },
diff --git a/keyboards/phase_studio/titan65/hotswap/rules.mk b/keyboards/phase_studio/titan65/hotswap/rules.mk
index 871008928e..5813081a71 100644
--- a/keyboards/phase_studio/titan65/hotswap/rules.mk
+++ b/keyboards/phase_studio/titan65/hotswap/rules.mk
@@ -1,16 +1,2 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = yes           # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no       # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
-RGB_MATRIX_ENABLE = yes
-
 AUDIO_SUPPORTED = no
 RGBLIGHT_SUPPORTED = no
diff --git a/keyboards/phase_studio/titan65/soldered/info.json b/keyboards/phase_studio/titan65/soldered/keyboard.json
similarity index 99%
rename from keyboards/phase_studio/titan65/soldered/info.json
rename to keyboards/phase_studio/titan65/soldered/keyboard.json
index ad1b8c07b5..c60c689932 100644
--- a/keyboards/phase_studio/titan65/soldered/info.json
+++ b/keyboards/phase_studio/titan65/soldered/keyboard.json
@@ -8,6 +8,12 @@
         "pid": "0xBB92",
         "device_version": "0.0.1"
     },
+    "features": {
+        "bootmagic": true,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": true
+    },
     "matrix_pins": {
         "cols": ["D3", "D5", "D4", "D6", "D7", "B4", "B5", "F6", "F5", "F4", "F1", "F0", "B0", "B1", "B2", "B3"],
         "rows": ["B6", "C6", "C7", "F7", "E6"]
diff --git a/keyboards/phase_studio/titan65/soldered/rules.mk b/keyboards/phase_studio/titan65/soldered/rules.mk
index ad3fad5cb5..5203005979 100644
--- a/keyboards/phase_studio/titan65/soldered/rules.mk
+++ b/keyboards/phase_studio/titan65/soldered/rules.mk
@@ -1,17 +1,3 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = yes           # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no       # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
-
-
 AUDIO_SUPPORTED = no
 RGBLIGHT_SUPPORTED = no
 RGB_MATRIX_SUPPORTED = no
diff --git a/keyboards/phoenix/info.json b/keyboards/phoenix/keyboard.json
similarity index 97%
rename from keyboards/phoenix/info.json
rename to keyboards/phoenix/keyboard.json
index c6a55a973a..b6dd359966 100644
--- a/keyboards/phoenix/info.json
+++ b/keyboards/phoenix/keyboard.json
@@ -6,7 +6,16 @@
     "usb": {
         "vid": "0x456B",
         "pid": "0x0001",
-        "device_version": "0.0.1"
+        "device_version": "0.0.1",
+        "shared_endpoint": {
+            "keyboard": true
+        }
+    },
+    "features": {
+        "bootmagic": true,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": true
     },
     "matrix_pins": {
         "cols": ["B10", "B12", "B13", "B14", "B15", "A8", "A10"],
diff --git a/keyboards/phoenix/rules.mk b/keyboards/phoenix/rules.mk
index 1e98eb214a..c6e2988321 100644
--- a/keyboards/phoenix/rules.mk
+++ b/keyboards/phoenix/rules.mk
@@ -1,17 +1 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = yes           # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
-STENO_ENABLE = no
 SERIAL_DRIVER = usart
-KEYBOARD_SHARED_EP = yes
-
-OPT_DEFS += -DSTM32_DMA_REQUIRED=TRUE
diff --git a/keyboards/pica40/rev2/info.json b/keyboards/pica40/rev2/keyboard.json
similarity index 100%
rename from keyboards/pica40/rev2/info.json
rename to keyboards/pica40/rev2/keyboard.json
diff --git a/keyboards/pierce/info.json b/keyboards/pierce/keyboard.json
similarity index 95%
rename from keyboards/pierce/info.json
rename to keyboards/pierce/keyboard.json
index 971b9939cf..ca6bb48425 100644
--- a/keyboards/pierce/info.json
+++ b/keyboards/pierce/keyboard.json
@@ -8,6 +8,12 @@
         "pid": "0x6060",
         "device_version": "0.0.1"
     },
+    "features": {
+        "bootmagic": true,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": true
+    },
     "processor": "atmega32u4",
     "bootloader": "atmel-dfu",
     "community_layouts": ["split_3x5_3"],
diff --git a/keyboards/pierce/rules.mk b/keyboards/pierce/rules.mk
index 660bba3c3f..721c8fd903 100644
--- a/keyboards/pierce/rules.mk
+++ b/keyboards/pierce/rules.mk
@@ -1,16 +1,3 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = yes           # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
-
 CUSTOM_MATRIX = lite
 SRC += matrix.c
 QUANTUM_LIB_SRC += i2c_slave.c
diff --git a/keyboards/pinky/info.json b/keyboards/pinky/info.json
index 2b9790e84e..7fb7f9efe6 100644
--- a/keyboards/pinky/info.json
+++ b/keyboards/pinky/info.json
@@ -1,4 +1,10 @@
 {
+    "features": {
+        "bootmagic": false,
+        "extrakey": false,
+        "mousekey": false,
+        "nkro": false
+    },
     "split": {
         "enabled": true
     }
diff --git a/keyboards/pinky/rules.mk b/keyboards/pinky/rules.mk
index 0329fc8dd5..89b708f68f 100644
--- a/keyboards/pinky/rules.mk
+++ b/keyboards/pinky/rules.mk
@@ -1,14 +1 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no        # Mouse keys
-EXTRAKEY_ENABLE = no        # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = no            # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
-
 DEFAULT_FOLDER = pinky/3
diff --git a/keyboards/pizzakeyboards/slice65/info.json b/keyboards/pizzakeyboards/slice65/keyboard.json
similarity index 100%
rename from keyboards/pizzakeyboards/slice65/info.json
rename to keyboards/pizzakeyboards/slice65/keyboard.json
diff --git a/keyboards/planck/ez/glow/info.json b/keyboards/planck/ez/glow/keyboard.json
similarity index 62%
rename from keyboards/planck/ez/glow/info.json
rename to keyboards/planck/ez/glow/keyboard.json
index 4852258570..6c957b165b 100644
--- a/keyboards/planck/ez/glow/info.json
+++ b/keyboards/planck/ez/glow/keyboard.json
@@ -2,5 +2,8 @@
     "keyboard_name": "Planck EZ Glow",
     "usb": {
         "pid": "0xC6CF"
+    },
+    "features": {
+        "rgb_matrix": true
     }
 }
diff --git a/keyboards/planck/ez/glow/rules.mk b/keyboards/planck/ez/glow/rules.mk
deleted file mode 100644
index aad92997d0..0000000000
--- a/keyboards/planck/ez/glow/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-RGB_MATRIX_ENABLE = yes
diff --git a/keyboards/planck/ez/info.json b/keyboards/planck/ez/info.json
index 044e187c4b..4244b4d83d 100644
--- a/keyboards/planck/ez/info.json
+++ b/keyboards/planck/ez/info.json
@@ -4,7 +4,20 @@
   "maintainer": "jackhumbert",
   "usb": {
     "vid": "0x3297",
-    "device_version": "0.0.1"
+    "device_version": "0.0.1",
+    "shared_endpoint": {
+      "mouse": false
+    }
+  },
+  "features": {
+    "audio": true,
+    "bootmagic": true,
+    "command": true,
+    "console": true,
+    "encoder": true,
+    "extrakey": true,
+    "mousekey": true,
+    "nkro": true
   },
   "rgb_matrix": {
     "animations": {
diff --git a/keyboards/planck/ez/rules.mk b/keyboards/planck/ez/rules.mk
index 97f68215f8..6cdb6ed4c2 100644
--- a/keyboards/planck/ez/rules.mk
+++ b/keyboards/planck/ez/rules.mk
@@ -1,22 +1,6 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = yes        # Console for debug
-COMMAND_ENABLE = yes        # Commands for debug and configuration
-NKRO_ENABLE = yes           # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-AUDIO_ENABLE = yes          # Audio output
 AUDIO_DRIVER = dac_additive
-RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.
-
-ENCODER_ENABLE = yes
 
 RGBLIGHT_SUPPORTED = no
 BAKCLIGHT_SUPPORTED = no
 
-MOUSE_SHARED_EP = no
-
 DEFAULT_FOLDER = planck/ez/base
diff --git a/keyboards/planck/rev6_drop/info.json b/keyboards/planck/rev6_drop/keyboard.json
similarity index 98%
rename from keyboards/planck/rev6_drop/info.json
rename to keyboards/planck/rev6_drop/keyboard.json
index aff2eef5d7..ff301f8c86 100644
--- a/keyboards/planck/rev6_drop/info.json
+++ b/keyboards/planck/rev6_drop/keyboard.json
@@ -8,6 +8,18 @@
     "pid": "0xA4F9",
     "device_version": "0.0.6"
   },
+  "features": {
+    "audio": true,
+    "bootmagic": true,
+    "command": true,
+    "console": true,
+    "dip_switch": true,
+    "encoder": true,
+    "extrakey": true,
+    "mousekey": true,
+    "nkro": true,
+    "rgblight": true
+  },
   "rgblight": {
     "led_count": 9
   },
diff --git a/keyboards/planck/rev6_drop/rules.mk b/keyboards/planck/rev6_drop/rules.mk
index 022a5ccd53..30ce5d293b 100644
--- a/keyboards/planck/rev6_drop/rules.mk
+++ b/keyboards/planck/rev6_drop/rules.mk
@@ -1,19 +1,2 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = yes        # Console for debug
-COMMAND_ENABLE = yes        # Commands for debug and configuration
-NKRO_ENABLE = yes           # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
-AUDIO_ENABLE = yes          # Audio output
 CUSTOM_MATRIX = lite
-# Do not enable RGB_MATRIX_ENABLE together with RGBLIGHT_ENABLE
-RGB_MATRIX_ENABLE = no
-ENCODER_ENABLE = yes
-DIP_SWITCH_ENABLE = yes
-
 SRC += matrix.c
diff --git a/keyboards/planck/rev7/info.json b/keyboards/planck/rev7/keyboard.json
similarity index 99%
rename from keyboards/planck/rev7/info.json
rename to keyboards/planck/rev7/keyboard.json
index d674af98d1..691394d5d5 100644
--- a/keyboards/planck/rev7/info.json
+++ b/keyboards/planck/rev7/keyboard.json
@@ -42,6 +42,7 @@
     "command": true,
     "console": true,
     "encoder": true,
+    "dip_switch": true,
     "extrakey": true,
     "mousekey": true,
     "nkro": true,
diff --git a/keyboards/planck/rev7/rules.mk b/keyboards/planck/rev7/rules.mk
index 04b21019ae..30ce5d293b 100644
--- a/keyboards/planck/rev7/rules.mk
+++ b/keyboards/planck/rev7/rules.mk
@@ -1,7 +1,2 @@
-# Build Options
-#   change yes to no to disable
-#
 CUSTOM_MATRIX = lite
-DIP_SWITCH_ENABLE = yes
-
 SRC += matrix.c
diff --git a/keyboards/planck/thk/info.json b/keyboards/planck/thk/keyboard.json
similarity index 97%
rename from keyboards/planck/thk/info.json
rename to keyboards/planck/thk/keyboard.json
index 24b8d5f0a5..b2c07ca0f0 100644
--- a/keyboards/planck/thk/info.json
+++ b/keyboards/planck/thk/keyboard.json
@@ -8,6 +8,14 @@
     "pid": "0x25A7",
     "device_version": "0.0.1"
   },
+  "features": {
+    "bootmagic": true,
+    "dip_switch": true,
+    "encoder": true,
+    "extrakey": true,
+    "mousekey": true,
+    "nkro": false
+  },
   "matrix_pins": {
     "cols": ["D7", "C2", "C3", "C4", "C5", "C6", "C7", "A3", "A2", "A1", "A0", "B0"],
     "rows": ["A7", "A6", "A5", "A4"]
diff --git a/keyboards/planck/thk/rules.mk b/keyboards/planck/thk/rules.mk
index 417fb95129..c2ee0bc86f 100644
--- a/keyboards/planck/thk/rules.mk
+++ b/keyboards/planck/thk/rules.mk
@@ -1,17 +1,2 @@
 # Processor frequency
 F_CPU = 16000000
-
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = no            # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
-ENCODER_ENABLE = yes
-DIP_SWITCH_ENABLE = yes
diff --git a/keyboards/ploopyco/mouse/info.json b/keyboards/ploopyco/mouse/keyboard.json
similarity index 100%
rename from keyboards/ploopyco/mouse/info.json
rename to keyboards/ploopyco/mouse/keyboard.json
diff --git a/keyboards/pmk/posey_split/v4/info.json b/keyboards/pmk/posey_split/v4/keyboard.json
similarity index 100%
rename from keyboards/pmk/posey_split/v4/info.json
rename to keyboards/pmk/posey_split/v4/keyboard.json
diff --git a/keyboards/pmk/posey_split/v5/info.json b/keyboards/pmk/posey_split/v5/keyboard.json
similarity index 100%
rename from keyboards/pmk/posey_split/v5/info.json
rename to keyboards/pmk/posey_split/v5/keyboard.json
diff --git a/keyboards/pmk/recore/v3/info.json b/keyboards/pmk/recore/v3/keyboard.json
similarity index 100%
rename from keyboards/pmk/recore/v3/info.json
rename to keyboards/pmk/recore/v3/keyboard.json
diff --git a/keyboards/preonic/rev3_drop/info.json b/keyboards/preonic/rev3_drop/keyboard.json
similarity index 98%
rename from keyboards/preonic/rev3_drop/info.json
rename to keyboards/preonic/rev3_drop/keyboard.json
index 79487deaab..f1cf1dfec1 100644
--- a/keyboards/preonic/rev3_drop/info.json
+++ b/keyboards/preonic/rev3_drop/keyboard.json
@@ -6,6 +6,18 @@
         "pid": "0xA649",
         "device_version": "0.0.3"
     },
+    "features": {
+        "audio": true,
+        "bootmagic": true,
+        "command": true,
+        "console": true,
+        "dip_switch": true,
+        "encoder": true,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": true,
+        "rgblight": true
+    },
     "rgblight": {
         "led_count": 9,
         "animations": {
diff --git a/keyboards/preonic/rev3_drop/rules.mk b/keyboards/preonic/rev3_drop/rules.mk
index d3ff068813..8784813b33 100644
--- a/keyboards/preonic/rev3_drop/rules.mk
+++ b/keyboards/preonic/rev3_drop/rules.mk
@@ -1,20 +1,2 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = yes        # Console for debug
-COMMAND_ENABLE = yes        # Commands for debug and configuration
-NKRO_ENABLE = yes           # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
-AUDIO_ENABLE = yes          # Audio output
 CUSTOM_MATRIX = yes
-ENCODER_ENABLE = yes
-DIP_SWITCH_ENABLE = yes
-
-# Do not enable RGB_MATRIX_ENABLE together with RGBLIGHT_ENABLE
-RGB_MATRIX_ENABLE = no
-
 SRC += matrix.c
diff --git a/keyboards/primekb/prime_e/config.h b/keyboards/primekb/prime_e/config.h
deleted file mode 100644
index 6c8ce4c0ea..0000000000
--- a/keyboards/primekb/prime_e/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-Copyright 2019 Holten Campbell
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/primekb/prime_e/info.json b/keyboards/primekb/prime_e/info.json
index 44b8227fb6..e7ed77e403 100644
--- a/keyboards/primekb/prime_e/info.json
+++ b/keyboards/primekb/prime_e/info.json
@@ -13,6 +13,12 @@
     "mousekey": false,
     "nkro": true
   },
+  "qmk": {
+    "locking": {
+      "enabled": true,
+      "resync": true
+    }
+  },
   "matrix_pins": {
     "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "D6", "D4", "D5", "D3", "D2", "D1", "D0"],
     "rows": ["E6", "C7", "B5", "B4"]
diff --git a/keyboards/primekb/prime_e/rgb/info.json b/keyboards/primekb/prime_e/rgb/keyboard.json
similarity index 91%
rename from keyboards/primekb/prime_e/rgb/info.json
rename to keyboards/primekb/prime_e/rgb/keyboard.json
index 998331ad89..f1cb67358c 100644
--- a/keyboards/primekb/prime_e/rgb/info.json
+++ b/keyboards/primekb/prime_e/rgb/keyboard.json
@@ -4,6 +4,9 @@
         "pid": "0x0052",
         "device_version": "0.0.1"
     },
+    "features": {
+        "rgblight": true
+    },
     "rgblight": {
         "led_count": 8,
         "animations": {
diff --git a/keyboards/primekb/prime_e/rgb/rules.mk b/keyboards/primekb/prime_e/rgb/rules.mk
deleted file mode 100644
index 725c0cebcc..0000000000
--- a/keyboards/primekb/prime_e/rgb/rules.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-BACKLIGHT_ENABLE = no
-RGBLIGHT_ENABLE = yes
diff --git a/keyboards/primekb/prime_e/std/info.json b/keyboards/primekb/prime_e/std/keyboard.json
similarity index 78%
rename from keyboards/primekb/prime_e/std/info.json
rename to keyboards/primekb/prime_e/std/keyboard.json
index b6078c9d7a..989ff941b5 100644
--- a/keyboards/primekb/prime_e/std/info.json
+++ b/keyboards/primekb/prime_e/std/keyboard.json
@@ -4,6 +4,9 @@
         "pid": "0x0051",
         "device_version": "0.0.1"
     },
+    "features": {
+        "backlight": true
+    },
     "backlight": {
         "pin": "B7",
         "levels": 5
diff --git a/keyboards/primekb/prime_e/std/rules.mk b/keyboards/primekb/prime_e/std/rules.mk
deleted file mode 100644
index f938676f44..0000000000
--- a/keyboards/primekb/prime_e/std/rules.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-BACKLIGHT_ENABLE = yes
-RGBLIGHT_ENABLE = no
diff --git a/keyboards/primekb/prime_l/config.h b/keyboards/primekb/prime_l/config.h
deleted file mode 100644
index 053bc6236a..0000000000
--- a/keyboards/primekb/prime_l/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-Copyright 2018 Jumail Mundekkat
-Copyright 2020 Holten Campbell
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/primekb/prime_l/info.json b/keyboards/primekb/prime_l/info.json
index 52d6713914..ed905f2b0b 100644
--- a/keyboards/primekb/prime_l/info.json
+++ b/keyboards/primekb/prime_l/info.json
@@ -10,6 +10,12 @@
     "mousekey": true,
     "nkro": true
   },
+  "qmk": {
+    "locking": {
+      "enabled": true,
+      "resync": true
+    }
+  },
   "usb": {
     "vid": "0x5052"
   },
diff --git a/keyboards/primekb/prime_l/v1/info.json b/keyboards/primekb/prime_l/v1/keyboard.json
similarity index 99%
rename from keyboards/primekb/prime_l/v1/info.json
rename to keyboards/primekb/prime_l/v1/keyboard.json
index c68d992943..c14d18ece3 100644
--- a/keyboards/primekb/prime_l/v1/info.json
+++ b/keyboards/primekb/prime_l/v1/keyboard.json
@@ -6,6 +6,9 @@
     "pid": "0x504C",
     "device_version": "0.0.1"
   },
+  "features": {
+    "backlight": true
+  },
   "matrix_pins": {
     "cols": ["D2", "D3", "D5", "D4", "D6", "D7", "B4", "B5", "C7", "C6", "F7", "F6", "F5", "F4", "F1", "F0"],
     "rows": ["D1", "D0", "B7", "B3", "B2"]
diff --git a/keyboards/primekb/prime_l/v1/rules.mk b/keyboards/primekb/prime_l/v1/rules.mk
deleted file mode 100644
index 54a2685bf6..0000000000
--- a/keyboards/primekb/prime_l/v1/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-BACKLIGHT_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/primekb/prime_l/v2/info.json b/keyboards/primekb/prime_l/v2/keyboard.json
similarity index 100%
rename from keyboards/primekb/prime_l/v2/info.json
rename to keyboards/primekb/prime_l/v2/keyboard.json
diff --git a/keyboards/primekb/prime_l/v2/rules.mk b/keyboards/primekb/prime_l/v2/rules.mk
deleted file mode 100644
index f845616741..0000000000
--- a/keyboards/primekb/prime_l/v2/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-BACKLIGHT_ENABLE = no
\ No newline at end of file
diff --git a/keyboards/printedpad/info.json b/keyboards/printedpad/keyboard.json
similarity index 100%
rename from keyboards/printedpad/info.json
rename to keyboards/printedpad/keyboard.json
diff --git a/keyboards/program_yoink/config.h b/keyboards/program_yoink/config.h
deleted file mode 100644
index dcf558fdf7..0000000000
--- a/keyboards/program_yoink/config.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-Copyright 2020 melonbred
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
diff --git a/keyboards/program_yoink/info.json b/keyboards/program_yoink/info.json
new file mode 100644
index 0000000000..36a2befc70
--- /dev/null
+++ b/keyboards/program_yoink/info.json
@@ -0,0 +1,16 @@
+{
+    "features": {
+        "bootmagic": true,
+        "encoder": true,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": false,
+        "rgblight": true
+    },
+    "qmk": {
+        "locking": {
+            "enabled": true,
+            "resync": true
+        }
+    }
+}
\ No newline at end of file
diff --git a/keyboards/program_yoink/rules.mk b/keyboards/program_yoink/rules.mk
index 1d2265b833..a7cc1a2dbf 100644
--- a/keyboards/program_yoink/rules.mk
+++ b/keyboards/program_yoink/rules.mk
@@ -1,15 +1 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = no            # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
-ENCODER_ENABLE = yes        # Enable rotary encoder
-
 DEFAULT_FOLDER = program_yoink/staggered
diff --git a/keyboards/projectkb/alice/rev1/info.json b/keyboards/projectkb/alice/rev1/keyboard.json
similarity index 75%
rename from keyboards/projectkb/alice/rev1/info.json
rename to keyboards/projectkb/alice/rev1/keyboard.json
index 1157fb13ae..1e97746ee8 100644
--- a/keyboards/projectkb/alice/rev1/info.json
+++ b/keyboards/projectkb/alice/rev1/keyboard.json
@@ -1,4 +1,14 @@
 {
+    "features": {
+        "backlight": true,
+        "bootmagic": true,
+        "command": true,
+        "console": true,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": true,
+        "rgblight": true
+    },
     "rgblight": {
         "led_count": 14,
         "animations": {
diff --git a/keyboards/projectkb/alice/rev1/rules.mk b/keyboards/projectkb/alice/rev1/rules.mk
deleted file mode 100644
index f689205b38..0000000000
--- a/keyboards/projectkb/alice/rev1/rules.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = yes        # Console for debug
-COMMAND_ENABLE = yes        # Commands for debug and configuration
-NKRO_ENABLE = yes           # Enable N-Key Rollover
-BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
-
diff --git a/keyboards/projectkb/alice/rev2/info.json b/keyboards/projectkb/alice/rev2/keyboard.json
similarity index 75%
rename from keyboards/projectkb/alice/rev2/info.json
rename to keyboards/projectkb/alice/rev2/keyboard.json
index be97136ccd..0ed3b88ea2 100644
--- a/keyboards/projectkb/alice/rev2/info.json
+++ b/keyboards/projectkb/alice/rev2/keyboard.json
@@ -1,4 +1,14 @@
 {
+    "features": {
+        "backlight": true,
+        "bootmagic": true,
+        "command": true,
+        "console": true,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": true,
+        "rgblight": true
+    },
     "rgblight": {
         "led_count": 14,
         "animations": {
diff --git a/keyboards/projectkb/alice/rev2/rules.mk b/keyboards/projectkb/alice/rev2/rules.mk
deleted file mode 100644
index f689205b38..0000000000
--- a/keyboards/projectkb/alice/rev2/rules.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = yes        # Console for debug
-COMMAND_ENABLE = yes        # Commands for debug and configuration
-NKRO_ENABLE = yes           # Enable N-Key Rollover
-BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
-
diff --git a/keyboards/prototypist/oceanographer/info.json b/keyboards/prototypist/oceanographer/keyboard.json
similarity index 98%
rename from keyboards/prototypist/oceanographer/info.json
rename to keyboards/prototypist/oceanographer/keyboard.json
index d7117d6abc..8b0209d451 100644
--- a/keyboards/prototypist/oceanographer/info.json
+++ b/keyboards/prototypist/oceanographer/keyboard.json
@@ -4,13 +4,18 @@
     "maintainer": "Anjheos",
     "bootloader": "atmel-dfu",
     "diode_direction": "COL2ROW",
+    "build": {
+        "lto": true
+    },
     "features": {
+        "audio": true,
         "bootmagic": true,
-        "command": false,
-        "console": false,
+        "encoder": true,
         "extrakey": true,
         "mousekey": false,
-        "nkro": true
+        "nkro": true,
+        "oled": true,
+        "rgblight": true
     },
     "encoder": {
         "rotary": [
diff --git a/keyboards/prototypist/oceanographer/rules.mk b/keyboards/prototypist/oceanographer/rules.mk
deleted file mode 100644
index e18a6cecee..0000000000
--- a/keyboards/prototypist/oceanographer/rules.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-OLED_ENABLE = yes
-AUDIO_ENABLE = yes
-LTO_ENABLE = yes
-RGBLIGHT_ENABLE = yes
-ENCODER_ENABLE = yes
diff --git a/keyboards/protozoa/cassini/info.json b/keyboards/protozoa/cassini/keyboard.json
similarity index 99%
rename from keyboards/protozoa/cassini/info.json
rename to keyboards/protozoa/cassini/keyboard.json
index 079679be43..696480024f 100644
--- a/keyboards/protozoa/cassini/info.json
+++ b/keyboards/protozoa/cassini/keyboard.json
@@ -8,6 +8,12 @@
         "pid": "0x4341",
         "device_version": "0.0.1"
     },
+    "features": {
+        "bootmagic": true,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": true
+    },
     "matrix_pins": {
         "cols": ["A1", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "B2", "B10", "B11", "B12", "B13", "B14"],
         "rows": ["A2", "B9", "B8", "B5", "B4"]
diff --git a/keyboards/protozoa/cassini/rules.mk b/keyboards/protozoa/cassini/rules.mk
index 7c0709f41e..0ab54aaaf7 100644
--- a/keyboards/protozoa/cassini/rules.mk
+++ b/keyboards/protozoa/cassini/rules.mk
@@ -1,15 +1,2 @@
 # Wildcard to allow APM32 MCU
 DFU_SUFFIX_ARGS = -v FFFF -p FFFF
-
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = yes           # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
diff --git a/keyboards/protozoa/event_horizon/info.json b/keyboards/protozoa/event_horizon/keyboard.json
similarity index 100%
rename from keyboards/protozoa/event_horizon/info.json
rename to keyboards/protozoa/event_horizon/keyboard.json
diff --git a/keyboards/protozoa/p01/info.json b/keyboards/protozoa/p01/keyboard.json
similarity index 99%
rename from keyboards/protozoa/p01/info.json
rename to keyboards/protozoa/p01/keyboard.json
index f414d6d71a..4b45385552 100644
--- a/keyboards/protozoa/p01/info.json
+++ b/keyboards/protozoa/p01/keyboard.json
@@ -8,6 +8,14 @@
         "pid": "0x5031",
         "device_version": "0.0.1"
     },
+    "features": {
+        "bootmagic": true,
+        "encoder": true,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": true,
+        "rgblight": true
+    },
     "rgblight": {
         "saturation_steps": 8,
         "brightness_steps": 8,
diff --git a/keyboards/protozoa/p01/rules.mk b/keyboards/protozoa/p01/rules.mk
index adb0000e01..0ab54aaaf7 100644
--- a/keyboards/protozoa/p01/rules.mk
+++ b/keyboards/protozoa/p01/rules.mk
@@ -1,16 +1,2 @@
 # Wildcard to allow APM32 MCU
 DFU_SUFFIX_ARGS = -v FFFF -p FFFF
-
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = yes           # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
-ENCODER_ENABLE = yes        # Encoder support
diff --git a/keyboards/punk75/info.json b/keyboards/punk75/keyboard.json
similarity index 96%
rename from keyboards/punk75/info.json
rename to keyboards/punk75/keyboard.json
index 81f2bcc818..5c1bd94a5e 100644
--- a/keyboards/punk75/info.json
+++ b/keyboards/punk75/keyboard.json
@@ -8,6 +8,13 @@
         "pid": "0x0001",
         "device_version": "0.0.1"
     },
+    "features": {
+        "bootmagic": false,
+        "encoder": true,
+        "extrakey": true,
+        "mousekey": false,
+        "nkro": false
+    },
     "matrix_pins": {
         "cols": ["C2", "C3", "C6", "C5", "C4", "A7", "A6", "A5", "A4", "B4", "A3", "B3", "A2", "B2", "A1"],
         "rows": ["D6", "D5", "C1", "C0", "D7"]
diff --git a/keyboards/punk75/rules.mk b/keyboards/punk75/rules.mk
index 362b5c8e08..c2ee0bc86f 100644
--- a/keyboards/punk75/rules.mk
+++ b/keyboards/punk75/rules.mk
@@ -1,16 +1,2 @@
 # Processor frequency
 F_CPU = 16000000
-
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no        # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = no            # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
-ENCODER_ENABLE = yes        # Enable rotary encoders support