diff --git a/AGENTS.md b/AGENTS.md
index 221d9883d..d9a894c26 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -38,3 +38,25 @@ solely for version selection or skipping a cancelled, never-public candidate.
Preparation, review, and draft-only requests do not authorize public publication.
All CI, independent review, environment, artifact, draft/promotion, and immutable
tag requirements remain mandatory.
+
+## Where things live (repositories and sites)
+
+- `777genius/universal-agent-plugins` (this repo): CLI (`cli/`, `install/`),
+ landing (`landing/`, https://universal-agent-plugins.com/), public docs source
+ (`website/`, https://universal-agent-plugins.com/docs/en/).
+- `777genius/universal-agent-plugins-registry`: signed directory feeds
+ (`catalog/`, `registry/`). Its old site (`site/`) is retired:
+ https://777genius.github.io/universal-agent-plugins-registry/ shows a
+ "has moved" notice.
+- The Directory (plugin list and install buttons) is `landing/pages/plugins/`
+ in this repo, published at https://777genius.github.io/universal-agent-plugins/plugins/.
+- The landing build verifies the registry's signed feeds with
+ `cmd/agentplugins-registry-mirror`, so Directory data follows the registry.
+- Install buttons in the Directory and the landing catalog must match the
+ source kinds the released CLI accepts. Check `agentplugins skills add --help`
+ (or the release notes) before changing them.
+- Public docs are published only for `index`, `use/*`, `build/*`,
+ `guide/quickstart`, `reference/client-compatibility` and the authoring API.
+ Other `website/source/en` pages are archived and not published.
+- Pages under `use/` and `build/` are journey pages. They need released status
+ and routes in all five maintained locales (`en`, `ru`, `es`, `fr`, `zh`).
diff --git a/README.md b/README.md
index 3e0b77284..11a72e939 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@ Install and manage Agent Plugins 1.0 across your AI agents with one CLI.
**Keep a reproducible set of plugins and dependencies, and carry it to another
computer.** The manifest records what you need; the lockfile pins the exact
-packages to restore. This workflow is **SOURCE ONLY / UNRELEASED**; see
+packages to restore. This workflow ships in the published CLI; see
[Restore your plugin setup](#restore-your-plugin-setup). For the published
installer, start with the [Quick start](#quick-start).
@@ -137,9 +137,8 @@ selected agent.
## Restore your plugin setup
-**SOURCE ONLY / UNRELEASED:** these commands require a compatible CLI built from
-current source. The published CLI is not qualified for this workflow; the
-[Quick start](#quick-start) above covers released installation.
+These commands are part of the published CLI (`agentplugins` 0.1.90 and later).
+The [Quick start](#quick-start) above covers installation.
On the source computer, open a folder to use for the transfer and run:
@@ -162,12 +161,13 @@ Codex, OpenCode, Cursor and Gemini CLI.
Authentication, client settings, secrets and plugin data need separate setup
or backup. Transferring the files does not guarantee offline installation.
-See [Restore on another machine](docs/UAP_DEPENDENCIES.md#restore-on-another-machine)
+See [Restore on another machine](https://universal-agent-plugins.com/docs/en/use/manage.html#restore-on-another-machine)
for confirmation prompts, supported restore behavior and recovery.
-Source-build development: [install raw Agent Skills from GitHub or compatible HTTPS publishers](docs/AGENT_SKILLS_INSTALLER.md),
-including the local browser picker and versioned saved dependencies. This does not
-claim availability in an already published installer release.
+[Install Agent Skills](docs/AGENT_SKILLS_INSTALLER.md) with `agentplugins skills add`
+from a GitHub repository or from an HTTPS publisher that serves a `.well-known`
+Skills index. Publisher installs take an exact `--skill` name. The local browser
+picker and saved dependencies are included.
## Any Agent Plugins 1.0 package
diff --git a/docs/UAP_DEPENDENCIES.md b/docs/UAP_DEPENDENCIES.md
index 29d51c3fc..ad2ce1ccc 100644
--- a/docs/UAP_DEPENDENCIES.md
+++ b/docs/UAP_DEPENDENCIES.md
@@ -1,7 +1,8 @@
# UAP dependency environments
-**Unreleased:** this workflow is available in current source and has not been
-qualified as a published CLI release.
+**Released:** this workflow ships in the published CLI (`agentplugins` 0.1.90 and
+later). The restore guide is on the docs site:
+[Restore on another machine](https://universal-agent-plugins.com/docs/en/use/manage.html#restore-on-another-machine).
`agentplugins deps` manages one current-user environment in
`AGENTPLUGINS_HOME` (default: `os.UserConfigDir()/agentplugins`). `uap.toml` records intent and `uap.lock` records exact
@@ -237,8 +238,8 @@ repair keeps its existing signed-policy rules.
### Restore on another machine
-Use a compatible CLI built from current source; the transfer commands below
-remain unreleased. In the folder you want to carry to another machine, run:
+The transfer commands below ship in the published CLI. In the folder you want to
+carry to another machine, run:
```sh
agentplugins deps export
diff --git a/landing/components/registry/RegistryRestore.vue b/landing/components/registry/RegistryRestore.vue
index 61978cdfb..97dde3b0c 100644
--- a/landing/components/registry/RegistryRestore.vue
+++ b/landing/components/registry/RegistryRestore.vue
@@ -1,5 +1,6 @@
@@ -14,7 +15,7 @@ const { t } = useI18n();
{{ t('shell.restore.title') }}
{{ t('shell.restore.guide') }} ↗ {
const { locale, t } = useI18n();
@@ -11,6 +11,13 @@ export const useDocsLinks = () => {
const buildGuide = link('build');
const supportBoundary = link('supportBoundary');
const customLogicGuide = link('customLogicGuide');
+ // The restore section lives in the English manage page; the fragment is English-only.
+ const restoreGuide = computed(() => {
+ const docsHome = String(config.public.docsUrl || '');
+ const configured = docsHome ? `${docsHome}${docsAvailability.restoreOnAnotherMachine}` : undefined;
+ const { url } = resolveDocsLink('restoreOnAnotherMachine', 'en', configured);
+ return { url: `${url}#restore-on-another-machine` };
+ });
const docsLabel = (label: string, englishFallback = docs.value.englishFallback) =>
englishFallback ? t('shell.docs.englishLabel', { label }) : label;
@@ -20,6 +27,7 @@ export const useDocsLinks = () => {
buildGuideUrl: computed(() => buildGuide.value.url),
supportBoundaryUrl: computed(() => supportBoundary.value.url),
customLogicGuideUrl: computed(() => customLogicGuide.value.url),
+ restoreGuideUrl: computed(() => restoreGuide.value.url),
docsLabel,
quickstartEnglishFallback: computed(() => quickstart.value.englishFallback),
supportBoundaryEnglishFallback: computed(() => supportBoundary.value.englishFallback),
diff --git a/landing/data/docsAvailability.ts b/landing/data/docsAvailability.ts
index d22056de0..184b876b3 100644
--- a/landing/data/docsAvailability.ts
+++ b/landing/data/docsAvailability.ts
@@ -8,6 +8,7 @@ export const docsAvailability = {
// current support limits.
supportBoundary: 'build/',
customLogicGuide: 'guide/build-custom-plugin-logic.html',
+ restoreOnAnotherMachine: 'use/manage.html',
} as const;
export type DocsPageId = keyof typeof docsAvailability;
export const ownedDocsRoot = 'https://777genius.github.io/universal-agent-plugins/docs/';
diff --git a/landing/tests/browser/i18n-integration.spec.ts b/landing/tests/browser/i18n-integration.spec.ts
index 2229b2273..13d73d0ba 100644
--- a/landing/tests/browser/i18n-integration.spec.ts
+++ b/landing/tests/browser/i18n-integration.spec.ts
@@ -43,7 +43,7 @@ for (const locale of publishedLocales) {
]);
await expect(restore.getByRole('link', { name: copy.guide! })).toHaveAttribute(
'href',
- 'https://github.com/777genius/universal-agent-plugins/blob/main/docs/UAP_DEPENDENCIES.md#restore-on-another-machine',
+ /\/docs\/en\/use\/manage\.html#restore-on-another-machine$/,
);
if (locale === 'en' || locale === 'ar') {
await page.setViewportSize({ width: locale === 'ar' ? 390 : 1440, height: 1000 });
diff --git a/website/source/en/guide/quickstart.md b/website/source/en/guide/quickstart.md
index afb05b591..b0b8b6392 100644
--- a/website/source/en/guide/quickstart.md
+++ b/website/source/en/guide/quickstart.md
@@ -51,9 +51,8 @@ By default, the files live in `~/.config/agentplugins` on Linux
on macOS, or `%APPDATA%\agentplugins` on Windows. `AGENTPLUGINS_HOME` can select
another directory.
-**Current source, unreleased:** the transfer commands below require a compatible
-CLI built from current source; they are not yet qualified as a published CLI
-release. From a folder you want to carry to another machine, run:
+The transfer commands below ship in the published CLI. From a folder you want to
+carry to another machine, run:
```bash
agentplugins deps export
diff --git a/website/source/en/use/install.md b/website/source/en/use/install.md
index 82c58d36a..6d9e68629 100644
--- a/website/source/en/use/install.md
+++ b/website/source/en/use/install.md
@@ -98,4 +98,44 @@ candidates require an explicit path; more than 16 possible packages require it
before candidate fetching. An exact source is immutable: repair replays recorded
source, while moving to another exact source is a separate switch decision.
+## Install Agent Skills
+
+Agent Skills use the same CLI through the `skills` command group. Its `add`
+subcommand selects Skills from a public GitHub repository, a folder inside it,
+a `SKILL.md` URL, or an HTTPS publisher that serves a complete `.well-known`
+Skills index:
+
+```bash
+agentplugins skills add owner/repository --ui
+```
+
+`--ui` opens the bundled browser picker and needs an interactive terminal. The
+terminal picker is `--no-ui`. Explicit selections skip the picker:
+
+```bash
+agentplugins skills add owner/repository --skill review --skill pdf --target codex,claude --no-ui --yes
+```
+
+- `--skill` takes an exact Skill name and can repeat. If the name is ambiguous,
+ add `--path`.
+- `--path` selects one exact repository-relative Skill folder. Without it, the
+ repository root is used.
+- `--ref` names an exact Git ref when a URL boundary is ambiguous.
+- `--dry-run` shows the exact plan without changes.
+- JSON and non-interactive use require explicit `--skill` or `--path`, `--target`,
+ and `--yes`, except with `--dry-run`.
+- `--ui` cannot be combined with `--skill`, `--target`, or `--dry-run`.
+- For an HTTPS publisher, pass the publisher URL and an exact `--skill` name.
+ The publisher's index must list every file of the Skill.
+- The installation scope is `user` only in this release.
+
+Automated security findings can block an install. `--security-details` shows
+every finding in human output. `--accept-security-risk` continues past blocking
+findings and should be used only after review.
+
+Installed Skills are saved like other packages. They show up in
+`agentplugins list`, and you maintain them with `agentplugins update`,
+`agentplugins repair`, and `agentplugins remove`. See
+[maintaining installed plugins](./manage).
+
Continue with [maintaining installed plugins](./manage).
diff --git a/website/source/en/use/manage.md b/website/source/en/use/manage.md
index 24f7a66d5..cd2e5698d 100644
--- a/website/source/en/use/manage.md
+++ b/website/source/en/use/manage.md
@@ -87,6 +87,50 @@ agentplugins remove context7 --target codex,cursor
Removal changes files owned by the CLI. It does not revoke a service account,
uninstall an unrelated runtime, or delete an author's source directory.
+## Restore on another machine
+
+Carry your plugin set to another computer with `deps export` and `deps import`.
+The transfer contains only `uap.toml` and `uap.lock`. Installation on the
+destination then fetches the exact pinned packages.
+
+On the source machine, run this in the folder you want to carry:
+
+```bash
+agentplugins deps export
+```
+
+On the destination, install the target clients, then run:
+
+```bash
+agentplugins deps import
+agentplugins install --locked
+```
+
+Or import and restore in one step:
+
+```bash
+agentplugins deps import --install
+```
+
+- The optional `[directory]` argument overrides the exchange folder, which
+ defaults to the current folder. Export reads the global user environment;
+ import writes it. `AGENTPLUGINS_HOME` selects that environment.
+- Every copy shows a preview and needs a confirmation or `--yes`. `--dry-run`
+ previews without writing.
+- Import validates the pair strictly and offline. It refuses missing or
+ inconsistent files, stale locks, unsafe sources and excluded targets.
+- Store content, receipts, client profiles, settings, secrets and `PLUGIN_DATA`
+ are not transferred. Configure client profiles and authentication on the
+ destination, and back up `PLUGIN_DATA` separately.
+- Installation with an empty store fetches each exact pin and verifies its
+ package and manifest digests. It never selects newer versions. Missing source
+ bytes or mismatched digests fail the install.
+- If installation fails after import saved the agreement, fix the error and run
+ `agentplugins install --locked` again. If recovery is pending, run
+ `agentplugins deps recover` first.
+- Do not run `agentplugins deps lock` to recreate transferred pins. Moving
+ selectors could resolve differently.
+
## Report a problem clearly
Record the operation, package source, selected clients, result, and remaining