From aafb566d7476434f5aabaf7840bf1468ad70710c Mon Sep 17 00:00:00 2001 From: Andrej Guran Date: Tue, 18 Aug 2026 21:51:10 +0000 Subject: [PATCH] docs: guide agents to browser development previews --- .claude-plugin/marketplace.json | 4 ++-- README.md | 6 +++--- package.json | 2 +- plugins/opencloud/.claude-plugin/plugin.json | 2 +- plugins/opencloud/.codex-plugin/plugin.json | 2 +- plugins/opencloud/README.md | 7 ++++++- plugins/opencloud/skills/opencloud/SKILL.md | 9 +++++++-- plugins/opencloud/submission/claude-connector.md | 4 ++-- plugins/opencloud/submission/claude-plugin.md | 10 ++++++---- plugins/opencloud/submission/form-values.md | 10 ++++++---- plugins/opencloud/submission/test-cases.md | 2 +- scripts/opencloud-plugin-manifest.test.mjs | 15 +++++++++------ 12 files changed, 45 insertions(+), 28 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index a806dbc..db15f47 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -2,7 +2,7 @@ "$schema": "https://anthropic.com/claude-code/marketplace.schema.json", "name": "opencloud-platform", "description": "Official OpenCloud plugins for building and operating full-stack applications.", - "version": "1.0.2", + "version": "1.0.3", "owner": { "name": "OpenCloud", "url": "https://opencloud.ai" @@ -12,7 +12,7 @@ "name": "opencloud", "source": "./plugins/opencloud", "displayName": "OpenCloud", - "version": "1.0.2", + "version": "1.0.3", "description": "Create, validate, deploy, and operate full-stack OpenCloud apps from Claude Code and Cowork.", "author": { "name": "OpenCloud", diff --git a/README.md b/README.md index ffd33ef..d6e8e93 100644 --- a/README.md +++ b/README.md @@ -29,8 +29,8 @@ Restart the ChatGPT desktop app, open **Plugins**, choose **OpenCloud Platform**, and install **OpenCloud**. Start a new conversation after enabling it and complete OAuth when prompted. -To test the immutable 1.0.2 release instead of tracking `main`, add the -marketplace with `--ref v1.0.2`. +To test the immutable 1.0.3 release instead of tracking `main`, add the +marketplace with `--ref v1.0.3`. ## Install for Claude Code and Cowork @@ -80,7 +80,7 @@ claude plugin validate . --strict ``` All client manifests and marketplace entries are released together. Version -1.0.2 is tagged as `v1.0.2`. +1.0.3 is tagged as `v1.0.3`. ## Support and legal diff --git a/package.json b/package.json index 92f05a9..c1a6e72 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "opencloud-agent-plugins", - "version": "1.0.2", + "version": "1.0.3", "private": true, "description": "Official OpenCloud plugin distribution for ChatGPT, Codex, and Claude.", "license": "MIT", diff --git a/plugins/opencloud/.claude-plugin/plugin.json b/plugins/opencloud/.claude-plugin/plugin.json index f957635..167e4bc 100644 --- a/plugins/opencloud/.claude-plugin/plugin.json +++ b/plugins/opencloud/.claude-plugin/plugin.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "opencloud", "displayName": "OpenCloud", - "version": "1.0.2", + "version": "1.0.3", "description": "Create, validate, deploy, and operate full-stack OpenCloud apps from Claude Code and Cowork.", "author": { "name": "OpenCloud", diff --git a/plugins/opencloud/.codex-plugin/plugin.json b/plugins/opencloud/.codex-plugin/plugin.json index 74d2ff8..700473e 100644 --- a/plugins/opencloud/.codex-plugin/plugin.json +++ b/plugins/opencloud/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "opencloud", - "version": "1.0.2", + "version": "1.0.3", "description": "Create, validate, deploy, and operate full-stack applications on OpenCloud from ChatGPT and Codex.", "author": { "name": "OpenCloud", diff --git a/plugins/opencloud/README.md b/plugins/opencloud/README.md index 07e4bc1..e44fb91 100644 --- a/plugins/opencloud/README.md +++ b/plugins/opencloud/README.md @@ -1,10 +1,15 @@ # OpenCloud plugin -OpenCloud 1.0.2 is one cross-client plugin package for creating, validating, +OpenCloud 1.0.3 is one cross-client plugin package for creating, validating, deploying, and operating full-stack OpenCloud apps. It bundles the hosted MCP connection and the exact-revision workflow skill; no local OpenCloud CLI is required. +For pre-deployment review, the skill directs agents to share the dev session's +authenticated `browserPreviewUrl`. It opens the isolated revision in a clearly +marked **Not live** shell with responsive viewport controls; an explicit +no-deploy request stops before promotion. + ## Package contents - `.codex-plugin/plugin.json` describes the ChatGPT and Codex plugin. diff --git a/plugins/opencloud/skills/opencloud/SKILL.md b/plugins/opencloud/skills/opencloud/SKILL.md index 98df3b7..2c7261e 100644 --- a/plugins/opencloud/skills/opencloud/SKILL.md +++ b/plugins/opencloud/skills/opencloud/SKILL.md @@ -66,8 +66,13 @@ Build only through source drafts: hashes. Never fabricate either value. 4. Call `validate_draft`; inspect every diagnostic and fix every error before continuing. -5. Call `start_dev_session` for that exact validated revision. After each later - source edit, validate and call `apply_dev_revision` again. +5. Call `start_dev_session` for that exact validated revision. If the user + wants to review it before deployment, give them `browserPreviewUrl`, never + the raw `previewUrl`. The owner/builder link opens a clearly marked **Not live** + window with Full size, Tablet, Mobile, and Reload tools around + isolated synthetic data. An explicit no-deploy request stops at this review + point and does not authorize promotion. After each later source edit, + validate and call `apply_dev_revision` again. 6. Inspect the preview with `request_dev_app` and, where needed, `mutate_dev_data`. Use only dummy development fixtures. 7. Exercise every declared Function with `invoke_dev_function`, then inspect diff --git a/plugins/opencloud/submission/claude-connector.md b/plugins/opencloud/submission/claude-connector.md index f023aae..adfc5ff 100644 --- a/plugins/opencloud/submission/claude-connector.md +++ b/plugins/opencloud/submission/claude-connector.md @@ -14,8 +14,8 @@ guidance; it does not create a second server. protected-resource discovery, dynamic client registration, and the `mcp:tools` scope - **Data access:** Read and write -- **MCP App UI:** None in version 1.0.2 -- **Allowed link URIs:** None requested in version 1.0.2; normal HTTPS URLs in +- **MCP App UI:** None in version 1.0.3 +- **Allowed link URIs:** None requested in version 1.0.3; normal HTTPS URLs in tool results do not use the MCP Apps `ui/open-link` capability ## Listing diff --git a/plugins/opencloud/submission/claude-plugin.md b/plugins/opencloud/submission/claude-plugin.md index 3737202..a5f9db0 100644 --- a/plugins/opencloud/submission/claude-plugin.md +++ b/plugins/opencloud/submission/claude-plugin.md @@ -1,4 +1,4 @@ -# Claude plugin 1.0.2 submission +# Claude plugin 1.0.3 submission Use these values for the Claude plugin directory submission. The plugin directory is distinct from the Claude Connectors Directory; submit both when @@ -7,7 +7,7 @@ OpenCloud should be discoverable as both a workflow package and a connector. ## Listing values - **Name:** OpenCloud -- **Version:** 1.0.2 +- **Version:** 1.0.3 - **Plugin identifier:** `opencloud` - **Description:** Create, validate, deploy, and operate full-stack OpenCloud apps from Claude Code and Cowork. @@ -26,12 +26,14 @@ OpenCloud should be discoverable as both a workflow package and a connector. ## Release notes -OpenCloud 1.0.2 publishes the Claude Code and Cowork plugin from the canonical +OpenCloud 1.0.3 publishes the Claude Code and Cowork plugin from the canonical public repository under the MIT License. The plugin supports creating, editing, validating, previewing, deploying, and operating OpenCloud apps through the production hosted MCP server. It bundles exact-revision promotion, isolated development verification, safe secret handling, durable operation tracking, -and production verification guidance. +and production verification guidance. Version 1.0.3 directs pre-deployment +human review through the authenticated `browserPreviewUrl` and stops before +promotion when the user explicitly declines deployment. ## Publication gates diff --git a/plugins/opencloud/submission/form-values.md b/plugins/opencloud/submission/form-values.md index b7a1b71..c781179 100644 --- a/plugins/opencloud/submission/form-values.md +++ b/plugins/opencloud/submission/form-values.md @@ -1,4 +1,4 @@ -# OpenCloud plugin 1.0.2 submission values +# OpenCloud plugin 1.0.3 submission values - **Submission type:** With MCP (MCP server plus bundled skill) - **MCP URL type:** Universal @@ -10,16 +10,18 @@ - **Terms of service:** `https://opencloud.ai/terms` - **Developer name:** OpenCloud - **Category:** Developer Tools -- **Custom UI:** None in version 1.0.2 +- **Custom UI:** None in version 1.0.3 ## Release notes -OpenCloud 1.0.2 publishes one installable ChatGPT and Codex plugin from the +OpenCloud 1.0.3 publishes one installable ChatGPT and Codex plugin from the canonical public repository under the MIT License. It supports creating, editing, validating, previewing, deploying, and operating OpenCloud apps through the production hosted MCP server. It bundles the exact-revision build workflow, safe secret handling, production verification requirements, and ChatGPT Remote -host boundary. +host boundary. Version 1.0.3 directs pre-deployment human review through the +authenticated `browserPreviewUrl` and stops before promotion when the user +explicitly declines deployment. Reviewer credentials belong only in the submission portal's protected fields. Do not copy credentials, one-time links, tokens, cookies, or secret-entry URLs diff --git a/plugins/opencloud/submission/test-cases.md b/plugins/opencloud/submission/test-cases.md index 78250d6..20bacb2 100644 --- a/plugins/opencloud/submission/test-cases.md +++ b/plugins/opencloud/submission/test-cases.md @@ -1,7 +1,7 @@ # OpenCloud plugin review test cases These are the exact five positive and three negative cases for the OpenCloud -1.0.2 submission. Run them with a dedicated reviewer account whose OAuth +1.0.3 submission. Run them with a dedicated reviewer account whose OAuth connection is already complete and does not require MFA, SMS, email approval, or private-network access. diff --git a/scripts/opencloud-plugin-manifest.test.mjs b/scripts/opencloud-plugin-manifest.test.mjs index ebfbbfc..f5e8f87 100644 --- a/scripts/opencloud-plugin-manifest.test.mjs +++ b/scripts/opencloud-plugin-manifest.test.mjs @@ -16,7 +16,7 @@ async function readJson(relativePath) { ); } -test("OpenCloud client manifests describe one canonical 1.0.2 package", async () => { +test("OpenCloud client manifests describe one canonical 1.0.3 package", async () => { const [ packageManifest, codexMarketplace, @@ -33,7 +33,7 @@ test("OpenCloud client manifests describe one canonical 1.0.2 package", async () readJson("plugins/opencloud/.mcp.json"), ]); - assert.equal(packageManifest.version, "1.0.2"); + assert.equal(packageManifest.version, "1.0.3"); assert.equal(packageManifest.license, "MIT"); assert.equal(codexMarketplace.name, "opencloud-platform"); @@ -53,19 +53,19 @@ test("OpenCloud client manifests describe one canonical 1.0.2 package", async () ); assert.equal(claudeMarketplace.name, "opencloud-platform"); - assert.equal(claudeMarketplace.version, "1.0.2"); + assert.equal(claudeMarketplace.version, "1.0.3"); assert.equal(claudeMarketplace.plugins.length, 1); const [entry] = claudeMarketplace.plugins; assert.equal(entry.name, "opencloud"); assert.equal(entry.source, "./plugins/opencloud"); - assert.equal(entry.version, "1.0.2"); + assert.equal(entry.version, "1.0.3"); assert.equal(entry.license, "MIT"); assert.equal(entry.strict, true); assert.equal(entry.defaultEnabled, false); assert.equal(codexManifest.name, "opencloud"); - assert.equal(codexManifest.version, "1.0.2"); + assert.equal(codexManifest.version, "1.0.3"); assert.equal(codexManifest.license, "MIT"); assert.equal( codexManifest.repository, @@ -83,7 +83,7 @@ test("OpenCloud client manifests describe one canonical 1.0.2 package", async () ); assert.equal(claudeManifest.name, "opencloud"); - assert.equal(claudeManifest.version, "1.0.2"); + assert.equal(claudeManifest.version, "1.0.3"); assert.equal(claudeManifest.license, "MIT"); assert.equal( claudeManifest.repository, @@ -125,4 +125,7 @@ test("OpenCloud package keeps every declared local component self-contained", as assert.match(skill, /^---\nname: opencloud\n/m); assert.match(skill, /Claude Code/); assert.match(skill, /Never request or reveal a password/); + assert.match(skill, /browserPreviewUrl/); + assert.match(skill, /Not live/); + assert.match(skill, /does not authorize promotion/); });