diff --git a/shared/examplecheck.gradle b/shared/examplecheck.gradle
index 64a83c7..4e7bdc2 100644
--- a/shared/examplecheck.gradle
+++ b/shared/examplecheck.gradle
@@ -1,5 +1,5 @@
-def fileCheck = { file, folder ->
-    def folderNames = new groovy.json.JsonSlurper().parseText(file.text).collect { it.foldername }
+def fileCheck = { parsedJson, folder ->
+    def folderNames = parsedJson.collect { it.foldername }
     def folders = []
     folder.eachDir {
         folders << it.name
@@ -26,19 +26,57 @@
 
 task checkTemplates(type: Task) {
     doLast {
-        fileCheck(templateFile, templateDirectory)
+        def parsedJson = new groovy.json.JsonSlurper().parseText(templateFile.text)
+        fileCheck(parsedJson, templateDirectory)
+        parsedJson.each {
+            assert it.name != null
+            assert it.description != null
+            assert it.tags != null
+            assert it.foldername != null
+            assert it.gradlebase != null
+            assert it.commandversion != null
+            if (it.gradlebase == 'java') {
+                assert it.mainclass != null
+            }
+        }
     }
 }
 
 task checkExamples(type: Task) {
     doLast {
-        fileCheck(exampleFile, exampleDirectory)
+        def parsedJson = new groovy.json.JsonSlurper().parseText(exampleFile.text)
+        fileCheck(parsedJson, exampleDirectory)
+        parsedJson.each {
+            assert it.name != null
+            assert it.description != null
+            assert it.tags != null
+            assert it.foldername != null
+            assert it.gradlebase != null
+            assert it.commandversion != null
+            if (it.gradlebase == 'java') {
+                assert it.mainclass != null
+            }
+        }
     }
 }
 
 task checkCommands(type: Task) {
     doLast {
-        fileCheck(commandFile, commandDirectory)
+        def parsedJson = new groovy.json.JsonSlurper().parseText(commandFile.text)
+        fileCheck(parsedJson, commandDirectory)
+        parsedJson.each {
+            assert it.name != null
+            assert it.description != null
+            assert it.tags != null
+            assert it.foldername != null
+            assert it.replacename != null
+            if (project.isCppCommands) {
+                assert it.headers != null
+                assert !it.headers.isEmpty()
+                assert it.source != null
+                assert !it.source.isEmpty()
+            }
+        }
     }
 }
 
