Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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",
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion plugins/opencloud/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion plugins/opencloud/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
7 changes: 6 additions & 1 deletion plugins/opencloud/README.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
9 changes: 7 additions & 2 deletions plugins/opencloud/skills/opencloud/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions plugins/opencloud/submission/claude-connector.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 6 additions & 4 deletions plugins/opencloud/submission/claude-plugin.md
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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.
Expand All @@ -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

Expand Down
10 changes: 6 additions & 4 deletions plugins/opencloud/submission/form-values.md
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion plugins/opencloud/submission/test-cases.md
Original file line number Diff line number Diff line change
@@ -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.

Expand Down
15 changes: 9 additions & 6 deletions scripts/opencloud-plugin-manifest.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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");
Expand All @@ -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,
Expand All @@ -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,
Expand Down Expand Up @@ -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/);
});
Loading