Do not write negative `skeleton` id(skeleton is not assigned).
Also ensure `inverseBindMatrices` should not be -2 or other negative values.
diff --git a/tiny_gltf.h b/tiny_gltf.h
index 15d738c..0aa9b76 100644
--- a/tiny_gltf.h
+++ b/tiny_gltf.h
@@ -7243,11 +7243,17 @@
 }
 
 static void SerializeGltfSkin(Skin &skin, json &o) {
-  if (skin.inverseBindMatrices != -1)
-    SerializeNumberProperty("inverseBindMatrices", skin.inverseBindMatrices, o);
-
+  // required
   SerializeNumberArrayProperty<int>("joints", skin.joints, o);
-  SerializeNumberProperty("skeleton", skin.skeleton, o);
+
+  if (skin.inverseBindMatrices >= 0) {
+    SerializeNumberProperty("inverseBindMatrices", skin.inverseBindMatrices, o);
+  }
+
+  if (skin.skeleton >= 0) {
+    SerializeNumberProperty("skeleton", skin.skeleton, o);
+  }
+
   if (skin.name.size()) {
     SerializeStringProperty("name", skin.name, o);
   }