You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/cli/add.md
+5Lines changed: 5 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -44,6 +44,7 @@ The manifest, lockfile, and receipt are **never written ahead** of success. On f
44
44
| Registry name with version |`viper-plans@1.2.3`| Exact pin. |
45
45
| Registry name with `@latest`|`viper-plans@latest`| Re-resolves to the newest published version; `latest` is preserved verbatim in `facets.json` (the entry floats). Only a bare name pins. |
46
46
| Registry name with wildcard |`viper-plans@*`, `1.*`, `1.2.*`| Wildcard preserved in `facets.json`; resolved exact version goes in the lockfile. |
47
+
| Scoped registry name |`@scope/name`, `@scope/name@1.2.3`, `@scope/name@latest`, `@scope/name@1.*`| A scoped facet (`@scope/name`). The leading `@` marks the scope; a trailing `@` separates the version (so `@scope/name@1.2.3` pins `@scope/name` to `1.2.3`). Versioning and pinning rules are identical to unscoped names. |
Copy file name to clipboardExpand all lines: docs/cli/authoring/build.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,6 +26,8 @@ On success, the build writes output to `dist/`:
26
26
27
27
-`dist/<name>-<version>.facet` -- a self-contained archive (uncompressed tar containing `build-manifest.json` and `archive.tar.gz`)
28
28
29
+
For a scoped facet identity, the name's `/` renders as a nested path under `dist/`. For example, `@acme/cowsay` at `1.0.0` is written to `dist/@acme/cowsay-1.0.0.facet`; the build creates the required parent directories.
30
+
29
31
The `.facet` file is the single distributable artifact. The build manifest is embedded inside it. Use `--emit-manifest` to also write a loose copy of `build-manifest.json` to `dist/` for debugging or tooling integration.
30
32
31
33
If the build fails, errors are displayed inline under the failed pipeline stage, with a suggestion to run `facet edit` to fix the issues.
Copy file name to clipboardExpand all lines: docs/cli/authoring/create.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,10 +15,10 @@ If a `facet.json` already exists in the target directory, the command prompts fo
15
15
16
16
## Wizard flow
17
17
18
-
1.**Name** -- the facet name, in kebab-case (e.g., `my-facet`).
18
+
1.**Name** -- the facet identity. Either an unscoped name (`my-facet`) or a scoped name (`@scope/name`, e.g.`@acme/my-facet`). Each segment is kebab-case (a lowercase letter, then lowercase letters, digits, or hyphens).
19
19
2.**Description** -- a brief description of the facet.
20
20
3.**Version** -- defaults to `0.0.0`.
21
-
4.**Assets** -- add skills, agents, and commands by name. At least one asset is required. Each asset shows its description below the name -- press Enter to edit the name, or press ↓ during name editing to edit the description in your terminal editor.
21
+
4.**Assets** -- add skills, agents, and commands by name. Asset names are always plain kebab-case local identifiers (`code-review`) -- they are never scoped, even when the facet identity is. The first asset of each type defaults its name to the facet's unscoped name segment (`@acme/cowsay` suggests `cowsay`). At least one asset is required. Each asset shows its description below the name -- press Enter to edit the name, or press ↓ during name editing to edit the description in your terminal editor.
22
22
5.**Confirmation** -- review the summary and confirm.
Copy file name to clipboardExpand all lines: docs/guides/create-your-first-facet.md
+4-2Lines changed: 4 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,10 +17,10 @@ facet create my-facet
17
17
18
18
The [`facet create`](/cli/authoring/create) wizard walks you through four prompts:
19
19
20
-
1.**Name** -- kebab-case identifier for the facet (e.g., `my-facet`).
20
+
1.**Name** -- the facet identity: an unscoped name (`my-facet`) or a scoped name (`@scope/name`, e.g.`@acme/my-facet`). Each segment is kebab-case.
21
21
2.**Description** -- a brief summary of what the facet does.
22
22
3.**Version** -- defaults to `0.0.0`.
23
-
4.**Assets** -- add skills, agents, and commands by name. At least one asset is required.
23
+
4.**Assets** -- add skills, agents, and commands by name. Asset names are always plain kebab-case -- never scoped, even when the facet identity is. At least one asset is required.
24
24
25
25
After confirming, the wizard writes the project files.
26
26
</Step>
@@ -189,6 +189,8 @@ dist/
189
189
└── my-facet-0.0.0.facet
190
190
```
191
191
192
+
A scoped facet identity renders as a nested path: `@acme/my-facet` at `0.0.0` is written to `dist/@acme/my-facet-0.0.0.facet`.
193
+
192
194
The `.facet` file is the single distributable artifact. Use `--emit-manifest` to also write a loose `build-manifest.json` to `dist/` for debugging:
| Local path |`facet add ./local-facets/my-plans`|
70
71
71
72
A bare name (no version) resolves to the latest published version and writes the exact resolved version back to `facets.json`. Wildcards like `1.*` are preserved in `facets.json`; the specific resolved version goes in the lockfile.
72
73
@@ -90,12 +91,13 @@ The project manifest. Maps facet names to source specifiers:
90
91
{
91
92
"facets": {
92
93
"viper-plans": "1.2.3",
93
-
"rezi": "0.5.0"
94
+
"rezi": "0.5.0",
95
+
"@acme/deploy-tools": "2.0.0"
94
96
}
95
97
}
96
98
```
97
99
98
-
This is the source of truth for which facets belong to the project and at what version.
100
+
This is the source of truth for which facets belong to the project and at what version. Scoped facets (`@scope/name`) appear as keys verbatim, including the leading `@`.
Copy file name to clipboardExpand all lines: docs/guides/publish-a-facet.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -57,7 +57,7 @@ Build your facet before publishing. If you have not built yet, or if your source
57
57
facet build
58
58
```
59
59
60
-
See [`facet build`](/cli/authoring/build) for details on the 6-stage pipeline. The build writes `dist/<name>-<version>.facet`.
60
+
See [`facet build`](/cli/authoring/build) for details on the 6-stage pipeline. The build writes `dist/<name>-<version>.facet` (a scoped name renders as a nested path, e.g. `dist/@acme/cowsay-1.0.0.facet`).
| `name` | Yes | string | Facet name. MUST be non-empty.|
60
+
| `name` | Yes | string | Facet identity. An unscoped name (`cowsay`) or a scoped name (`@scope/name`). See [Schema Constraints](#schema-constraints). |
| `description` | No | string | Human-readable description. |
63
63
| `author` | No | string | Author name or identifier. |
64
64
65
-
The `name` and `version` fields MUST be present. A manifest missing either field MUST be rejected.
65
+
The `name` and `version` fields MUST be present. A manifest missing either field MUST be rejected. The `name` MUST be a valid facet identity: an unscoped name, or a scoped `@scope/name`, where each segment is a lowercase kebab-case slug (starts with a lowercase letter; lowercase letters, digits, and hyphens after; ends with a letter or digit). Asset names (skills, agents, commands) are validated independently as local kebab-case identifiers and are never scoped.
66
66
67
67
Consumers MUST tolerate unrecognized top-level fields. Unknown fields MUST be ignored -- not rejected.
0 commit comments