diff --git a/buildroot/share/PlatformIO/scripts/schema.py b/buildroot/share/PlatformIO/scripts/schema.py
index 4ec81e42605..5316cb906ae 100755
--- a/buildroot/share/PlatformIO/scripts/schema.py
+++ b/buildroot/share/PlatformIO/scripts/schema.py
@@ -382,25 +382,40 @@ def main():
 		schema = None
 
 	if schema:
-		print("Generating JSON ...")
-		dump_json(schema, Path('schema.json'))
-		group_options(schema)
-		dump_json(schema, Path('schema_grouped.json'))
 
-		try:
-			import yaml
-		except ImportError:
-			print("Installing YAML module ...")
-			import subprocess
+		# Get the first command line argument
+		import sys
+		if len(sys.argv) > 1:
+			arg = sys.argv[1]
+		else:
+			arg = 'some'
+
+		# JSON schema
+		if arg in ['some', 'json', 'jsons']:
+			print("Generating JSON ...")
+			dump_json(schema, Path('schema.json'))
+
+		# JSON schema (wildcard names)
+		if arg in ['group', 'jsons']:
+			group_options(schema)
+			dump_json(schema, Path('schema_grouped.json'))
+
+		# YAML
+		if arg in ['some', 'yml', 'yaml']:
 			try:
-				subprocess.run(['python3', '-m', 'pip', 'install', 'pyyaml'])
 				import yaml
-			except:
-				print("Failed to install YAML module")
-				return
+			except ImportError:
+				print("Installing YAML module ...")
+				import subprocess
+				try:
+					subprocess.run(['python3', '-m', 'pip', 'install', 'pyyaml'])
+					import yaml
+				except:
+					print("Failed to install YAML module")
+					return
 
-		print("Generating YML ...")
-		dump_yaml(schema, Path('schema.yml'))
+			print("Generating YML ...")
+			dump_yaml(schema, Path('schema.yml'))
 
 if __name__ == '__main__':
 	main()