diff --git a/keyboards/handwired/novem/info.json b/keyboards/handwired/novem/keyboard.json
similarity index 90%
rename from keyboards/handwired/novem/info.json
rename to keyboards/handwired/novem/keyboard.json
index bc70d64ed44..bc4fe2c1c95 100644
--- a/keyboards/handwired/novem/info.json
+++ b/keyboards/handwired/novem/keyboard.json
@@ -15,6 +15,11 @@
     "diode_direction": "COL2ROW",
     "processor": "atmega32u4",
     "bootloader": "caterina",
+    "features": {
+        "bootmagic": false,
+        "mousekey": false,
+        "extrakey": false
+    },
     "layouts": {
         "LAYOUT": {
             "layout": [
diff --git a/keyboards/handwired/novem/rules.mk b/keyboards/handwired/novem/rules.mk
deleted file mode 100644
index ca9d24172d0..00000000000
--- a/keyboards/handwired/novem/rules.mk
+++ /dev/null
@@ -1,12 +0,0 @@
-# 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
diff --git a/keyboards/handwired/onekey/bluepill_f103c6/info.json b/keyboards/handwired/onekey/bluepill_f103c6/info.json
index 9460b43f5f4..4267222cfc9 100644
--- a/keyboards/handwired/onekey/bluepill_f103c6/info.json
+++ b/keyboards/handwired/onekey/bluepill_f103c6/info.json
@@ -15,5 +15,8 @@
     "apa102": {
         "data_pin": "A1",
         "clock_pin": "A2"
+    },
+    "build": {
+        "lto": true
     }
 }
diff --git a/keyboards/handwired/onekey/bluepill_f103c6/rules.mk b/keyboards/handwired/onekey/bluepill_f103c6/rules.mk
index 71bc488563a..c37cc1dc1fa 100644
--- a/keyboards/handwired/onekey/bluepill_f103c6/rules.mk
+++ b/keyboards/handwired/onekey/bluepill_f103c6/rules.mk
@@ -7,9 +7,6 @@ BOOTLOADER_TYPE = stm32duino
 DFU_ARGS = -d 1EAF:0003 -a 2 -R
 DFU_SUFFIX_ARGS = -v 1EAF -p 0003
 
-# LTO is required to fit the firmware into the available 24K of flash
-LTO_ENABLE = yes
-
 # EEPROM emulation not supported yet (need to implement a proper firmware size
 # check first, otherwise the chance of the EEPROM backing store overwriting
 # some part of the firmware code is really high).
diff --git a/keyboards/handwired/onekey/kb2040/info.json b/keyboards/handwired/onekey/kb2040/keyboard.json
similarity index 83%
rename from keyboards/handwired/onekey/kb2040/info.json
rename to keyboards/handwired/onekey/kb2040/keyboard.json
index 5c0c92ef5de..3c099342271 100644
--- a/keyboards/handwired/onekey/kb2040/info.json
+++ b/keyboards/handwired/onekey/kb2040/keyboard.json
@@ -8,5 +8,8 @@
     "ws2812": {
         "pin": "GP17",
         "driver": "vendor"
+    },
+    "features": {
+        "oled": true
     }
 }
diff --git a/keyboards/handwired/onekey/kb2040/rules.mk b/keyboards/handwired/onekey/kb2040/rules.mk
deleted file mode 100644
index dd68e9d3b09..00000000000
--- a/keyboards/handwired/onekey/kb2040/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-OLED_ENABLE = yes
diff --git a/keyboards/handwired/orbweaver/info.json b/keyboards/handwired/orbweaver/keyboard.json
similarity index 97%
rename from keyboards/handwired/orbweaver/info.json
rename to keyboards/handwired/orbweaver/keyboard.json
index 14c87182563..5ba08dfc2d5 100644
--- a/keyboards/handwired/orbweaver/info.json
+++ b/keyboards/handwired/orbweaver/keyboard.json
@@ -10,7 +10,8 @@
         "console": false,
         "extrakey": true,
         "mousekey": true,
-        "nkro": true
+        "nkro": true,
+        "rgb_matrix": true
     },
     "rgb_matrix": {
         "center_point": [40, 30],
diff --git a/keyboards/handwired/orbweaver/rules.mk b/keyboards/handwired/orbweaver/rules.mk
deleted file mode 100644
index 01f9d9397ae..00000000000
--- a/keyboards/handwired/orbweaver/rules.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-# Add support for 3731 RGB matrix controller
-RGB_MATRIX_ENABLE = yes
diff --git a/keyboards/handwired/ortho_brass/info.json b/keyboards/handwired/ortho_brass/info.json
index b2280b62040..5cd01b1f6d6 100644
--- a/keyboards/handwired/ortho_brass/info.json
+++ b/keyboards/handwired/ortho_brass/info.json
@@ -15,6 +15,12 @@
     "diode_direction": "COL2ROW",
     "processor": "atmega32u4",
     "bootloader": "qmk-dfu",
+    "features": {
+        "bootmagic": true,
+        "mousekey": false,
+        "extrakey": true,
+        "nkro": true
+    },
     "community_layouts": ["ortho_4x12"],
     "layout_aliases": {
         "LAYOUT": "LAYOUT_ortho_4x12"
diff --git a/keyboards/handwired/ortho_brass/rules.mk b/keyboards/handwired/ortho_brass/rules.mk
index 36acc6fd924..6642cf3a9c4 100644
--- a/keyboards/handwired/ortho_brass/rules.mk
+++ b/keyboards/handwired/ortho_brass/rules.mk
@@ -1,11 +1 @@
-# Build Options
-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 RGB underlight.
-
 RGBLIGHT_SUPPORTED = no
diff --git a/keyboards/handwired/osborne1/info.json b/keyboards/handwired/osborne1/keyboard.json
similarity index 98%
rename from keyboards/handwired/osborne1/info.json
rename to keyboards/handwired/osborne1/keyboard.json
index 2f613b5876d..8cbcb3cc8bb 100644
--- a/keyboards/handwired/osborne1/info.json
+++ b/keyboards/handwired/osborne1/keyboard.json
@@ -10,7 +10,8 @@
         "console": true,
         "extrakey": false,
         "mousekey": false,
-        "nkro": false
+        "nkro": false,
+        "bluetooth": true
     },
     "bluetooth": {
         "driver": "bluefruit_le"
diff --git a/keyboards/handwired/osborne1/rules.mk b/keyboards/handwired/osborne1/rules.mk
deleted file mode 100644
index 9ccac102c70..00000000000
--- a/keyboards/handwired/osborne1/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-BLUETOOTH_ENABLE = yes
diff --git a/keyboards/handwired/owlet60/info.json b/keyboards/handwired/owlet60/info.json
index f6bd2d2f239..8108f51985d 100644
--- a/keyboards/handwired/owlet60/info.json
+++ b/keyboards/handwired/owlet60/info.json
@@ -32,6 +32,13 @@
     },
     "processor": "atmega32u4",
     "bootloader": "caterina",
+    "features": {
+        "bootmagic": false,
+        "mousekey": false,
+        "extrakey": true,
+        "nkro": true,
+        "rgblight": true
+    },
     "debounce": 9,
     "community_layouts": ["alice", "alice_split_bs"],
     "layout_aliases": {
diff --git a/keyboards/handwired/owlet60/rules.mk b/keyboards/handwired/owlet60/rules.mk
index dd125034f29..09c02c88b0d 100644
--- a/keyboards/handwired/owlet60/rules.mk
+++ b/keyboards/handwired/owlet60/rules.mk
@@ -1,16 +1,3 @@
-# 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 = no           # Audio output
 CUSTOM_MATRIX = yes
-OLED_ENABLE = no
 
 SRC += matrix.c
diff --git a/keyboards/handwired/postageboard/mini/info.json b/keyboards/handwired/postageboard/mini/keyboard.json
similarity index 53%
rename from keyboards/handwired/postageboard/mini/info.json
rename to keyboards/handwired/postageboard/mini/keyboard.json
index b6944f2916d..13e83147bbd 100644
--- a/keyboards/handwired/postageboard/mini/info.json
+++ b/keyboards/handwired/postageboard/mini/keyboard.json
@@ -8,5 +8,12 @@
     },
     "diode_direction": "COL2ROW",
     "processor": "atmega32u4",
-    "bootloader": "atmel-dfu"
+    "bootloader": "atmel-dfu",
+    "features": {
+        "bootmagic": true,
+        "mousekey": true,
+        "extrakey": true,
+        "console": true,
+        "command": true
+    }
 }
diff --git a/keyboards/handwired/postageboard/mini/rules.mk b/keyboards/handwired/postageboard/mini/rules.mk
deleted file mode 100644
index 309e55c9f4c..00000000000
--- a/keyboards/handwired/postageboard/mini/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 = 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
diff --git a/keyboards/handwired/postageboard/r1/info.json b/keyboards/handwired/postageboard/r1/keyboard.json
similarity index 53%
rename from keyboards/handwired/postageboard/r1/info.json
rename to keyboards/handwired/postageboard/r1/keyboard.json
index a1ea87df869..78ab5d028e0 100644
--- a/keyboards/handwired/postageboard/r1/info.json
+++ b/keyboards/handwired/postageboard/r1/keyboard.json
@@ -8,5 +8,12 @@
     },
     "diode_direction": "COL2ROW",
     "processor": "atmega32u4",
-    "bootloader": "atmel-dfu"
+    "bootloader": "atmel-dfu",
+    "features": {
+        "bootmagic": true,
+        "mousekey": true,
+        "extrakey": true,
+        "console": true,
+        "command": true
+    }
 }
diff --git a/keyboards/handwired/postageboard/r1/rules.mk b/keyboards/handwired/postageboard/r1/rules.mk
deleted file mode 100644
index 309e55c9f4c..00000000000
--- a/keyboards/handwired/postageboard/r1/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 = 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
diff --git a/keyboards/handwired/promethium/info.json b/keyboards/handwired/promethium/info.json
index c26325069b4..6ee1ed8ca19 100644
--- a/keyboards/handwired/promethium/info.json
+++ b/keyboards/handwired/promethium/info.json
@@ -16,6 +16,18 @@
   },
   "processor": "atmega32u4",
   "bootloader": "caterina",
+  "features": {
+    "bootmagic": false,
+    "mousekey": false,
+    "extrakey": true,
+    "nkro": true,
+    "ps2_mouse": true,
+    "ps2": true,
+    "bluetooth": true
+  },
+  "build": {
+    "lto": true
+  },
   "layouts": {
     "LAYOUT": {
       "layout": [
diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk
index d6b97ed8100..7f208800663 100644
--- a/keyboards/handwired/promethium/rules.mk
+++ b/keyboards/handwired/promethium/rules.mk
@@ -1,28 +1,11 @@
 # Processor frequency
 F_CPU = 8000000
 
-# 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
-AUDIO_ENABLE = no           # Audio output
-RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.
-PS2_MOUSE_ENABLE = yes
-PS2_ENABLE = yes
 PS2_DRIVER = interrupt
 CUSTOM_MATRIX = yes
-BLUETOOTH_ENABLE = yes
 
 WS2812_DRIVER_REQUIRED = yes
 ANALOG_DRIVER_REQUIRED = yes
 
 SRC += rgbsps.c
 SRC += matrix.c
-
-LTO_ENABLE = yes
diff --git a/keyboards/handwired/pterodactyl/info.json b/keyboards/handwired/pterodactyl/info.json
index ad83f34999d..fac20aeebe1 100644
--- a/keyboards/handwired/pterodactyl/info.json
+++ b/keyboards/handwired/pterodactyl/info.json
@@ -10,6 +10,15 @@
   },
   "processor": "atmega32u4",
   "bootloader": "caterina",
+  "features": {
+    "bootmagic": false,
+    "mousekey": false,
+    "extrakey": true,
+    "console": true,
+    "nkro": true,
+    "unicode": true,
+    "bluetooth": true
+  },
   "debounce": 0,
   "tapping": {
     "toggle": 1
diff --git a/keyboards/handwired/pterodactyl/rules.mk b/keyboards/handwired/pterodactyl/rules.mk
index 108e1498a83..e332a03eaac 100644
--- a/keyboards/handwired/pterodactyl/rules.mk
+++ b/keyboards/handwired/pterodactyl/rules.mk
@@ -1,21 +1,7 @@
 # Processor frequency
 F_CPU = 8000000
 
-# 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 = yes        # 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
-UNICODE_ENABLE = yes
 CUSTOM_MATRIX = yes
-BLUETOOTH_ENABLE = yes
 
 SRC += matrix.c
 I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/handwired/riblee_f401/info.json b/keyboards/handwired/riblee_f401/keyboard.json
similarity index 93%
rename from keyboards/handwired/riblee_f401/info.json
rename to keyboards/handwired/riblee_f401/keyboard.json
index 933973d5f39..18d46b55cd0 100644
--- a/keyboards/handwired/riblee_f401/info.json
+++ b/keyboards/handwired/riblee_f401/keyboard.json
@@ -6,7 +6,10 @@
     "usb": {
         "vid": "0xFEED",
         "pid": "0x002A",
-        "device_version": "0.0.1"
+        "device_version": "0.0.1",
+        "shared_endpoint": {
+             "keyboard": true
+        }
     },
     "tapping": {
         "term": 175
@@ -22,6 +25,13 @@
     },
     "processor": "STM32F401",
     "bootloader": "stm32-dfu",
+    "features": {
+        "bootmagic": true,
+        "mousekey": true,
+        "extrakey": true,
+        "nkro": true,
+        "backlight": true
+    },
     "board": "BLACKPILL_STM32_F401",
     "community_layouts": ["ortho_5x12"],
     "layouts": {
diff --git a/keyboards/handwired/riblee_f401/rules.mk b/keyboards/handwired/riblee_f401/rules.mk
deleted file mode 100644
index 4c2d255a184..00000000000
--- a/keyboards/handwired/riblee_f401/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
-KEYBOARD_SHARED_EP = yes
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = yes           # Enable N-Key Rollover
-BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
diff --git a/keyboards/handwired/riblee_f411/info.json b/keyboards/handwired/riblee_f411/keyboard.json
similarity index 94%
rename from keyboards/handwired/riblee_f411/info.json
rename to keyboards/handwired/riblee_f411/keyboard.json
index 1c957e99404..9c7df63b3e1 100644
--- a/keyboards/handwired/riblee_f411/info.json
+++ b/keyboards/handwired/riblee_f411/keyboard.json
@@ -6,7 +6,10 @@
     "usb": {
         "vid": "0xFEED",
         "pid": "0x002B",
-        "device_version": "0.0.1"
+        "device_version": "0.0.1",
+        "shared_endpoint": {
+             "keyboard": true
+        }
     },
     "tapping": {
         "term": 175
@@ -18,6 +21,12 @@
     "diode_direction": "COL2ROW",
     "processor": "STM32F411",
     "bootloader": "stm32-dfu",
+    "features": {
+        "bootmagic": false,
+        "mousekey": true,
+        "extrakey": true,
+        "nkro": true
+    },
     "board": "BLACKPILL_STM32_F411",
     "community_layouts": ["ortho_5x12"],
     "layouts": {
diff --git a/keyboards/handwired/riblee_f411/rules.mk b/keyboards/handwired/riblee_f411/rules.mk
deleted file mode 100644
index 4741169e4db..00000000000
--- a/keyboards/handwired/riblee_f411/rules.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-# 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
-KEYBOARD_SHARED_EP = yes    # Free up some extra endpoints - needed if console+mouse+extra
-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/handwired/scottokeebs/scottoslant/info.json b/keyboards/handwired/scottokeebs/scottoslant/keyboard.json
similarity index 98%
rename from keyboards/handwired/scottokeebs/scottoslant/info.json
rename to keyboards/handwired/scottokeebs/scottoslant/keyboard.json
index ebaa1b530c2..8c9de39cd6d 100644
--- a/keyboards/handwired/scottokeebs/scottoslant/info.json
+++ b/keyboards/handwired/scottokeebs/scottoslant/keyboard.json
@@ -12,6 +12,9 @@
         "mousekey": true,
         "nkro": true
     },
+    "build": {
+        "lto": true
+    },
     "matrix_pins": {
         "cols": ["D1", "D0", "D4", "C6", "D7", "E6", "B4", "B5", "F4", "F5"],
         "rows": ["B1", "B3", "B2", "B6"]
diff --git a/keyboards/handwired/scottokeebs/scottoslant/rules.mk b/keyboards/handwired/scottokeebs/scottoslant/rules.mk
deleted file mode 100644
index 4da205a168c..00000000000
--- a/keyboards/handwired/scottokeebs/scottoslant/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-LTO_ENABLE = yes
diff --git a/keyboards/handwired/slash/info.json b/keyboards/handwired/slash/info.json
index 95abaeb9c71..4fd99ebeee3 100644
--- a/keyboards/handwired/slash/info.json
+++ b/keyboards/handwired/slash/info.json
@@ -18,6 +18,12 @@
     "diode_direction": "COL2ROW",
     "processor": "atmega32u4",
     "bootloader": "caterina",
+    "features": {
+        "bootmagic": false,
+        "mousekey": true,
+        "extrakey": true,
+        "bluetooth": true
+    },
     "layouts": {
         "LAYOUT": {
             "layout": [
diff --git a/keyboards/handwired/slash/rules.mk b/keyboards/handwired/slash/rules.mk
index ca7f6f843fb..3437a35bdf1 100644
--- a/keyboards/handwired/slash/rules.mk
+++ b/keyboards/handwired/slash/rules.mk
@@ -1,16 +1,2 @@
 # Processor frequency
 F_CPU = 8000000
-
-# 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 = no            # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
-BLUETOOTH_ENABLE = yes
diff --git a/keyboards/handwired/split65/stm32/info.json b/keyboards/handwired/split65/stm32/info.json
index a9693b3a5b9..d49339da021 100644
--- a/keyboards/handwired/split65/stm32/info.json
+++ b/keyboards/handwired/split65/stm32/info.json
@@ -11,6 +11,13 @@
     },
     "processor": "STM32F303",
     "bootloader": "stm32-dfu",
+    "features": {
+        "bootmagic": false,
+        "mousekey": false,
+        "extrakey": false,
+        "audio": true,
+        "oled": true
+    },
     "board": "QMK_PROTON_C",
     "layouts": {
         "LAYOUT": {
diff --git a/keyboards/handwired/split65/stm32/rules.mk b/keyboards/handwired/split65/stm32/rules.mk
index 94186bf8c72..c6e29883213 100644
--- a/keyboards/handwired/split65/stm32/rules.mk
+++ b/keyboards/handwired/split65/stm32/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 = yes          # Audio output
-OLED_ENABLE = yes
 SERIAL_DRIVER = usart
diff --git a/keyboards/handwired/splittest/bluepill/keyboard.json b/keyboards/handwired/splittest/bluepill/keyboard.json
index 17b7f86a6f8..28e7d091f83 100644
--- a/keyboards/handwired/splittest/bluepill/keyboard.json
+++ b/keyboards/handwired/splittest/bluepill/keyboard.json
@@ -5,5 +5,11 @@
     },
     "diode_direction": "COL2ROW",
     "processor": "STM32F103",
-    "bootloader": "stm32duino"
+    "bootloader": "stm32duino",
+    "features": {
+        "bootmagic": false,
+        "mousekey": false,
+        "extrakey": false,
+        "console": true
+    }
 }
diff --git a/keyboards/handwired/splittest/promicro/keyboard.json b/keyboards/handwired/splittest/promicro/keyboard.json
index f3765207656..2f5929cc008 100644
--- a/keyboards/handwired/splittest/promicro/keyboard.json
+++ b/keyboards/handwired/splittest/promicro/keyboard.json
@@ -11,5 +11,11 @@
         "pin": "D3"
     },
     "processor": "atmega32u4",
-    "bootloader": "caterina"
+    "bootloader": "caterina",
+    "features": {
+        "bootmagic": false,
+        "mousekey": false,
+        "extrakey": false,
+        "console": true
+    }
 }
diff --git a/keyboards/handwired/splittest/rules.mk b/keyboards/handwired/splittest/rules.mk
index 8d00fcc579f..ae4d823b53e 100644
--- a/keyboards/handwired/splittest/rules.mk
+++ b/keyboards/handwired/splittest/rules.mk
@@ -1,13 +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 = 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
-AUDIO_ENABLE = no           # Audio output
-
 DEFAULT_FOLDER = handwired/splittest/promicro
diff --git a/keyboards/handwired/splittest/teensy_2/keyboard.json b/keyboards/handwired/splittest/teensy_2/keyboard.json
index 72e9d022b94..68ab3f92c4e 100644
--- a/keyboards/handwired/splittest/teensy_2/keyboard.json
+++ b/keyboards/handwired/splittest/teensy_2/keyboard.json
@@ -11,5 +11,11 @@
         "pin": "D3"
     },
     "processor": "atmega32u4",
-    "bootloader": "halfkay"
+    "bootloader": "halfkay",
+    "features": {
+        "bootmagic": false,
+        "mousekey": false,
+        "extrakey": false,
+        "console": true
+    }
 }
diff --git a/keyboards/handwired/trackpoint/info.json b/keyboards/handwired/trackpoint/info.json
index 92098b09c64..94ed022878f 100644
--- a/keyboards/handwired/trackpoint/info.json
+++ b/keyboards/handwired/trackpoint/info.json
@@ -15,6 +15,15 @@
     "diode_direction": "COL2ROW",
     "processor": "atmega32u4",
     "bootloader": "halfkay",
+    "features": {
+        "bootmagic": false,
+        "mousekey": true,
+        "extrakey": true,
+        "console": true,
+        "command": true,
+        "ps2": true,
+        "ps2_mouse": true
+    },
     "layouts": {
         "LAYOUT": {
             "layout": [
diff --git a/keyboards/handwired/trackpoint/rules.mk b/keyboards/handwired/trackpoint/rules.mk
index ca3836ef06b..74035c9903b 100644
--- a/keyboards/handwired/trackpoint/rules.mk
+++ b/keyboards/handwired/trackpoint/rules.mk
@@ -1,15 +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 = 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
-AUDIO_ENABLE = no           # Audio output
-
-PS2_MOUSE_ENABLE = yes
-PS2_ENABLE = yes
 PS2_DRIVER = usart
diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/info.json b/keyboards/handwired/tractyl_manuform/4x6_right/info.json
index aa01e763eb4..825c59ac725 100644
--- a/keyboards/handwired/tractyl_manuform/4x6_right/info.json
+++ b/keyboards/handwired/tractyl_manuform/4x6_right/info.json
@@ -29,6 +29,13 @@
     },
     "processor": "at90usb1286",
     "bootloader": "atmel-dfu",
+    "features": {
+        "bootmagic": true,
+        "mousekey": true,
+        "extrakey": true,
+        "nkro": true,
+        "pointing_device": true
+    },
     "layouts": {
         "LAYOUT_4x6_right": {
             "layout": [
diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/rules.mk b/keyboards/handwired/tractyl_manuform/4x6_right/rules.mk
index 0b23bdc61ff..0f3d0657aa4 100644
--- a/keyboards/handwired/tractyl_manuform/4x6_right/rules.mk
+++ b/keyboards/handwired/tractyl_manuform/4x6_right/rules.mk
@@ -1,17 +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 = no
-
-POINTING_DEVICE_ENABLE = yes
 POINTING_DEVICE_DRIVER = pmw3360
 MOUSE_SHARED_EP = yes
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/info.json b/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/keyboard.json
similarity index 88%
rename from keyboards/handwired/tractyl_manuform/5x6_right/elite_c/info.json
rename to keyboards/handwired/tractyl_manuform/5x6_right/elite_c/keyboard.json
index 92e0baace1f..e6c0e42bde9 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/info.json
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/keyboard.json
@@ -22,5 +22,8 @@
         "split_count": [10, 10]
     },
     "processor": "atmega32u4",
-    "bootloader": "atmel-dfu"
+    "bootloader": "atmel-dfu",
+    "build": {
+        "lto": true
+    }
 }
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/rules.mk
deleted file mode 100644
index 16c76d7f49b..00000000000
--- a/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/rules.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-LTO_ENABLE := yes
-RGBLIGHT_ENABLE = no
-OLED_ENABLE = no
-AUDIO_ENABLE = no
-ENCODER_ENABLE = no
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/info.json b/keyboards/handwired/tractyl_manuform/5x6_right/f303/info.json
index eafb77fce2b..0bcc02fd743 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/f303/info.json
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/info.json
@@ -22,5 +22,8 @@
         ]
     },
     "processor": "STM32F303",
-    "bootloader": "stm32-dfu"
+    "bootloader": "stm32-dfu",
+    "features": {
+        "console": true
+    }
 }
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/f303/rules.mk
index ab601e31f9a..23f790a1ad4 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/f303/rules.mk
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/rules.mk
@@ -1,5 +1,4 @@
 # KEYBOARD_SHARED_EP = yes
-CONSOLE_ENABLE     = yes
 
 SERIAL_DRIVER = usart
 AUDIO_DRIVER  = dac_additive
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/info.json b/keyboards/handwired/tractyl_manuform/5x6_right/f411/info.json
index e5a6dc6c7a2..3821f0380f2 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/info.json
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/info.json
@@ -26,5 +26,8 @@
     },
     "processor": "STM32F411",
     "bootloader": "stm32-dfu",
+    "features": {
+        "console": true
+    },
     "board": "BLACKPILL_STM32_F411"
 }
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk
index 0c4b05ee7e2..e75692030f7 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk
@@ -1,5 +1,4 @@
 KEYBOARD_SHARED_EP = yes
-CONSOLE_ENABLE     = yes
 MOUSE_SHARED_EP    = yes
 
 SERIAL_DRIVER = usart
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/info.json b/keyboards/handwired/tractyl_manuform/5x6_right/info.json
index c9fe6e89cff..b28f309fdbb 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/info.json
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/info.json
@@ -10,6 +10,14 @@
             "matrix": [6, 5]
         }
     },
+    "features": {
+        "bootmagic": true,
+        "mousekey": true,
+        "extrakey": true,
+        "nkro": true,
+        "swap_hands": true,
+        "pointing_device": true
+    },
     "layouts": {
         "LAYOUT_5x6_right": {
             "layout": [
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/rules.mk
index 220a361a4cc..b7f7c949ec4 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/rules.mk
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/rules.mk
@@ -1,18 +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
-SWAP_HANDS_ENABLE = yes
-
-POINTING_DEVICE_ENABLE = yes
 POINTING_DEVICE_DRIVER = pmw3360
 MOUSE_SHARED_EP = yes
 
diff --git a/keyboards/handwired/twadlee/tp69/info.json b/keyboards/handwired/twadlee/tp69/info.json
index afd79a9bcc6..27e0325f92d 100644
--- a/keyboards/handwired/twadlee/tp69/info.json
+++ b/keyboards/handwired/twadlee/tp69/info.json
@@ -15,6 +15,13 @@
     "diode_direction": "COL2ROW",
     "processor": "MKL26Z64",
     "bootloader": "halfkay",
+    "features": {
+        "bootmagic": false,
+        "mousekey": true,
+        "extrakey": true,
+        "console": true,
+        "command": true
+    },
     "layouts": {
         "LAYOUT": {
             "layout": [
diff --git a/keyboards/handwired/twadlee/tp69/rules.mk b/keyboards/handwired/twadlee/tp69/rules.mk
index b73afc0e44a..43b04f34f77 100644
--- a/keyboards/handwired/twadlee/tp69/rules.mk
+++ b/keyboards/handwired/twadlee/tp69/rules.mk
@@ -1,16 +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 = 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
-PS2_MOUSE_ENABLE = no
-
 USE_CHIBIOS_CONTRIB = yes
-
diff --git a/keyboards/handwired/unk/rev1/keyboard.json b/keyboards/handwired/unk/rev1/keyboard.json
index fc1cfc90b72..acaca15f3b3 100644
--- a/keyboards/handwired/unk/rev1/keyboard.json
+++ b/keyboards/handwired/unk/rev1/keyboard.json
@@ -31,6 +31,12 @@
     },
     "processor": "atmega32u4",
     "bootloader": "caterina",
+    "features": {
+        "bootmagic": false,
+        "mousekey": true,
+        "extrakey": true,
+        "command": true
+    },
     "layouts": {
         "LAYOUT": {
             "layout": [
diff --git a/keyboards/handwired/unk/rules.mk b/keyboards/handwired/unk/rules.mk
index a03f28dbf5f..d4536e0cbb6 100644
--- a/keyboards/handwired/unk/rules.mk
+++ b/keyboards/handwired/unk/rules.mk
@@ -1,14 +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 = 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
-
 DEFAULT_FOLDER = handwired/unk/rev1
diff --git a/keyboards/handwired/uthol/rev3/info.json b/keyboards/handwired/uthol/rev3/info.json
index dbbce9139dc..a90e7a4a895 100644
--- a/keyboards/handwired/uthol/rev3/info.json
+++ b/keyboards/handwired/uthol/rev3/info.json
@@ -39,5 +39,14 @@
     },
     "processor": "STM32F401",
     "bootloader": "stm32-dfu",
+    "features": {
+        "bootmagic": true,
+        "nkro": true,
+        "oled": true,
+        "wpm": true,
+        "extrakey": true,
+        "encoder": true,
+        "rgblight": true
+    },
     "board": "BLACKPILL_STM32_F401"
 }
diff --git a/keyboards/handwired/uthol/rev3/rules.mk b/keyboards/handwired/uthol/rev3/rules.mk
index 1577cf8a775..1071cf62ee3 100644
--- a/keyboards/handwired/uthol/rev3/rules.mk
+++ b/keyboards/handwired/uthol/rev3/rules.mk
@@ -1,11 +1 @@
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes
-NKRO_ENABLE = yes
 KEYBOARD_SHARED_EP = yes
-OLED_ENABLE = yes
-WPM_ENABLE = yes
-EXTRAKEY_ENABLE = yes
-ENCODER_ENABLE = yes
-RGBLIGHT_ENABLE = yes
diff --git a/keyboards/handwired/wulkan/info.json b/keyboards/handwired/wulkan/info.json
index 9bb1d9cd940..b6823af5396 100644
--- a/keyboards/handwired/wulkan/info.json
+++ b/keyboards/handwired/wulkan/info.json
@@ -16,6 +16,12 @@
     "diode_direction": "COL2ROW",
     "processor": "STM32F303",
     "bootloader": "stm32-dfu",
+    "features": {
+        "bootmagic": true,
+        "mousekey": true,
+        "extrakey": true,
+        "nkro": true
+    },
     "board": "QMK_PROTON_C",
     "community_layouts": ["ortho_4x12"],
     "layout_aliases": {
diff --git a/keyboards/handwired/wulkan/rules.mk b/keyboards/handwired/wulkan/rules.mk
index e664c345408..934dd273a65 100644
--- a/keyboards/handwired/wulkan/rules.mk
+++ b/keyboards/handwired/wulkan/rules.mk
@@ -1,13 +1 @@
-# Build Options
-#   change yes to no to disable
-#
-BACKLIGHT_ENABLE = no
-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
-AUDIO_ENABLE = no
-RGBLIGHT_ENABLE = no
 NO_SUSPEND_POWER_DOWN = yes
diff --git a/keyboards/handwired/xealous/rev1/keyboard.json b/keyboards/handwired/xealous/rev1/keyboard.json
index 001cd82074c..9f926a36021 100644
--- a/keyboards/handwired/xealous/rev1/keyboard.json
+++ b/keyboards/handwired/xealous/rev1/keyboard.json
@@ -22,6 +22,15 @@
   },
   "processor": "atmega32u4",
   "bootloader": "caterina",
+  "features": {
+    "bootmagic": false,
+    "mousekey": false,
+    "extrakey": true,
+    "console": true,
+    "command": true,
+    "nkro": true,
+    "audio": true
+  },
   "layouts": {
     "LAYOUT": {
       "layout": [
diff --git a/keyboards/handwired/xealous/rules.mk b/keyboards/handwired/xealous/rules.mk
index aa77674920d..4a97d066df7 100644
--- a/keyboards/handwired/xealous/rules.mk
+++ b/keyboards/handwired/xealous/rules.mk
@@ -1,16 +1,3 @@
-# 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 = 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
-RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.
-
 SRC += matrix.c
 
 DEFAULT_FOLDER = handwired/xealous/rev1