diff --git a/cmd/jiri/manifest_test.go b/cmd/jiri/manifest_test.go
index c68de29..fc503d1 100644
--- a/cmd/jiri/manifest_test.go
+++ b/cmd/jiri/manifest_test.go
@@ -10,6 +10,7 @@
 	"strings"
 	"testing"
 
+	"fuchsia.googlesource.com/jiri/cipd"
 	"fuchsia.googlesource.com/jiri/jiritest"
 )
 
@@ -41,7 +42,7 @@
 			historydepth="2"/>
 	</projects>
 	<packages>
-		<package name="the_package"
+		<package name="the_package/${platform}"
 			version="the_package_version"
 			path="path/to/the_package"
 			internal="false" />
@@ -93,7 +94,7 @@
 
 		// Compare stdout to the expected value.
 		if strings.Trim(stdout, " \n") != expectedValue {
-			t.Errorf("expected %s, got %s", expectedValue, stdout)
+			t.Errorf("expected %q, got %q", expectedValue, stdout)
 		}
 	}
 
@@ -220,28 +221,39 @@
 
 	t.Run("should read <package> attributes", func(t *testing.T) {
 		expectAttributeValue(t, []string{
-			"-element=the_package",
+			"-element=the_package/${platform}",
 			"-template={{.Name}}",
 			testManifestFile.Name(),
 		},
-			"the_package")
+			"the_package/${platform}")
 
 		expectAttributeValue(t, []string{
-			"-element=the_package",
+			"-element=the_package/${platform}",
 			"-template={{.Version}}",
 			testManifestFile.Name(),
 		},
 			"the_package_version")
 
 		expectAttributeValue(t, []string{
-			"-element=the_package",
+			"-element=the_package/${platform}",
 			"-template={{.Path}}",
 			testManifestFile.Name(),
 		},
 			"path/to/the_package")
 
+		var defaultPlatforms []string
+		for _, p := range cipd.DefaultPlatforms() {
+			defaultPlatforms = append(defaultPlatforms, p.String())
+		}
 		expectAttributeValue(t, []string{
-			"-element=the_package",
+			"-element=the_package/${platform}",
+			"-template={{.Platforms}}",
+			testManifestFile.Name(),
+		},
+			strings.Join(defaultPlatforms, ","))
+
+		expectAttributeValue(t, []string{
+			"-element=the_package/${platform}",
 			"-template={{.Internal}}",
 			testManifestFile.Name(),
 		},
diff --git a/project/manifest.go b/project/manifest.go
index 558ffd0..a40755d 100644
--- a/project/manifest.go
+++ b/project/manifest.go
@@ -204,6 +204,11 @@
 			return err
 		}
 	}
+	for index := range m.Packages {
+		if err := m.Packages[index].FillDefaults(); err != nil {
+			return err
+		}
+	}
 	return nil
 }
 
@@ -233,6 +238,11 @@
 			return err
 		}
 	}
+	for index := range m.Packages {
+		if err := m.Packages[index].unfillDefaults(); err != nil {
+			return err
+		}
+	}
 	return nil
 }
 
@@ -552,16 +562,26 @@
 // Package struct if it is not defined and path is using template.
 func (p *Package) FillDefaults() error {
 	if cipd.MustExpand(p.Name) && p.Platforms == "" {
-		for _, v := range cipd.DefaultPlatforms() {
-			p.Platforms += v.String() + ","
-		}
-		if p.Platforms[len(p.Platforms)-1] == ',' {
-			p.Platforms = p.Platforms[:len(p.Platforms)-1]
-		}
+		p.Platforms = p.defaultPlatforms()
 	}
 	return nil
 }
 
+func (p *Package) unfillDefaults() error {
+	if cipd.MustExpand(p.Name) && p.Platforms == p.defaultPlatforms() {
+		p.Platforms = ""
+	}
+	return nil
+}
+
+func (p *Package) defaultPlatforms() string {
+	var platforms []string
+	for _, v := range cipd.DefaultPlatforms() {
+		platforms = append(platforms, v.String())
+	}
+	return strings.Join(platforms, ",")
+}
+
 // GetPath returns the relative path that Package p should be
 // downloaded to.
 func (p *Package) GetPath() (string, error) {
