diff --git a/metadata/app/schema.go b/metadata/app/schema.go
index e02de24a3869d75f63f57597f73410629eef800b..570cd971a6e7be0d4b7ceb8ed698326d2e1b8445 100644
--- a/metadata/app/schema.go
+++ b/metadata/app/schema.go
@@ -16,12 +16,13 @@
 package app
 
 import (
-	"encoding/json"
 	"fmt"
+
+	"github.com/ghodss/yaml"
 )
 
 const (
-	DefaultAPIVersion = "0.1"
+	DefaultAPIVersion = "0.0.1"
 	Kind              = "ksonnet.io/app"
 	DefaultVersion    = "0.0.1"
 )
@@ -46,7 +47,7 @@ type Spec struct {
 }
 
 func (s *Spec) Marshal() ([]byte, error) {
-	return json.MarshalIndent(s, "", "  ")
+	return yaml.Marshal(s)
 }
 
 func (s *Spec) GetRegistryRef(name string) (*RegistryRefSpec, bool) {
@@ -79,7 +80,7 @@ type RepositorySpec struct {
 }
 
 type RegistryRefSpec struct {
-	Name       string
+	Name       string          `json:"-"`
 	Protocol   string          `json:"protocol"`
 	URI        string          `json:"uri"`
 	GitVersion *GitVersionSpec `json:"gitVersion"`
diff --git a/metadata/manager.go b/metadata/manager.go
index 9aa1dc6a14fc55e1cf7db0e9c916a7e3fd0cdc0c..19f6dd6e508c131c607018432fb3c9acb77769d9 100644
--- a/metadata/manager.go
+++ b/metadata/manager.go
@@ -16,7 +16,6 @@
 package metadata
 
 import (
-	"encoding/json"
 	"fmt"
 	"os"
 	"os/user"
@@ -24,6 +23,7 @@ import (
 	"path/filepath"
 	"strings"
 
+	"github.com/ghodss/yaml"
 	"github.com/ksonnet/ksonnet/metadata/app"
 	param "github.com/ksonnet/ksonnet/metadata/params"
 	"github.com/ksonnet/ksonnet/metadata/registry"
@@ -299,7 +299,7 @@ func (m *manager) AppSpec() (*app.Spec, error) {
 	}
 
 	schema := app.Spec{}
-	err = json.Unmarshal(bytes, &schema)
+	err = yaml.Unmarshal(bytes, &schema)
 	if err != nil {
 		return nil, err
 	}
diff --git a/metadata/parts/schema.go b/metadata/parts/schema.go
index 0c28790d011d1495f47997f0989335a6c9fa7b45..990d90650bd75b8693844209b83c9690223d92c6 100644
--- a/metadata/parts/schema.go
+++ b/metadata/parts/schema.go
@@ -15,7 +15,9 @@
 
 package parts
 
-import "encoding/json"
+import (
+	"github.com/ghodss/yaml"
+)
 
 const (
 	DefaultApiVersion = "0.1"
@@ -40,7 +42,7 @@ type Spec struct {
 }
 
 func (s *Spec) Marshal() ([]byte, error) {
-	return json.MarshalIndent(s, "", "  ")
+	return yaml.Marshal(s)
 }
 
 type ContributorSpec struct {
diff --git a/metadata/registry.go b/metadata/registry.go
index f0ab341a759f2d13912588d4973e8066c2304702..27cfddbb28b59489a7eeeece7864091956a3be60 100644
--- a/metadata/registry.go
+++ b/metadata/registry.go
@@ -1,11 +1,11 @@
 package metadata
 
 import (
-	"encoding/json"
 	"fmt"
 	"os"
 	"path/filepath"
 
+	"github.com/ghodss/yaml"
 	"github.com/ksonnet/ksonnet/metadata/app"
 	"github.com/ksonnet/ksonnet/metadata/parts"
 	"github.com/ksonnet/ksonnet/metadata/registry"
@@ -254,7 +254,7 @@ func (m *manager) registrySpecFromFile(path AbsPath) (*registry.Spec, bool, erro
 		}
 
 		registrySpec := registry.Spec{}
-		err = json.Unmarshal(registrySpecBytes, &registrySpec)
+		err = yaml.Unmarshal(registrySpecBytes, &registrySpec)
 		if err != nil {
 			return nil, false, err
 		}
diff --git a/metadata/registry/schema.go b/metadata/registry/schema.go
index 92b5a24ad71a5da63953f6e942b828d9e7109ece..a4ce51ffa6e194bc54fc1d93f6522b512c6219b5 100644
--- a/metadata/registry/schema.go
+++ b/metadata/registry/schema.go
@@ -16,8 +16,7 @@
 package registry
 
 import (
-	"encoding/json"
-
+	"github.com/ghodss/yaml"
 	"github.com/ksonnet/ksonnet/metadata/app"
 )
 
@@ -34,7 +33,7 @@ type Spec struct {
 }
 
 func (s *Spec) Marshal() ([]byte, error) {
-	return json.MarshalIndent(s, "", "  ")
+	return yaml.Marshal(s)
 }
 
 type Specs []*Spec
diff --git a/metadata/registry_managers.go b/metadata/registry_managers.go
index 438d3ed03cf0823692c2c6c0cee0492d86e70c2b..78f53736fd947ccce0ff0ae23e0f12ca7974688f 100644
--- a/metadata/registry_managers.go
+++ b/metadata/registry_managers.go
@@ -2,12 +2,12 @@ package metadata
 
 import (
 	"context"
-	"encoding/json"
 	"fmt"
 	"net/url"
 	"path"
 	"strings"
 
+	"github.com/ghodss/yaml"
 	"github.com/google/go-github/github"
 	"github.com/ksonnet/ksonnet/metadata/app"
 	"github.com/ksonnet/ksonnet/metadata/parts"
@@ -99,7 +99,7 @@ func (gh *gitHubRegistryManager) FetchRegistrySpec() (*registry.Spec, error) {
 
 	// Deserialize, return.
 	registrySpec := registry.Spec{}
-	err = json.Unmarshal([]byte(registrySpecText), &registrySpec)
+	err = yaml.Unmarshal([]byte(registrySpecText), &registrySpec)
 	if err != nil {
 		return nil, err
 	}
@@ -150,7 +150,7 @@ func (gh *gitHubRegistryManager) ResolveLibrary(libID, libAlias, libRefSpec stri
 	}
 
 	parts := parts.Spec{}
-	json.Unmarshal([]byte(partsSpecText), &parts)
+	yaml.Unmarshal([]byte(partsSpecText), &parts)
 
 	refSpec := app.LibraryRefSpec{
 		Name:     libAlias,
diff --git a/prototype/interface.go b/prototype/interface.go
index c7243e75364692e1bdc92a50090a1f3f262c6ca4..782884b6e5ae6993dc64007436c73f431b8db1f4 100644
--- a/prototype/interface.go
+++ b/prototype/interface.go
@@ -1,12 +1,12 @@
 package prototype
 
-import "encoding/json"
+import "github.com/ghodss/yaml"
 
 // Unmarshal takes the bytes of a JSON-encoded prototype specification, and
 // deserializes them to a `SpecificationSchema`.
 func Unmarshal(bytes []byte) (*SpecificationSchema, error) {
 	var p SpecificationSchema
-	err := json.Unmarshal(bytes, &p)
+	err := yaml.Unmarshal(bytes, &p)
 	if err != nil {
 		return nil, err
 	}