From a81316b5260b30bb3959471e03c6bc24ce70469a Mon Sep 17 00:00:00 2001 From: Kevin Lee Date: Tue, 26 May 2026 17:58:37 -0700 Subject: [PATCH 1/3] Add Dropbox plugin --- .agents/plugins/marketplace.json | 12 +++++++ plugins/dropbox/.app.json | 7 ++++ plugins/dropbox/.codex-plugin/plugin.json | 42 ++++++++++++++++++++++ plugins/dropbox/assets/app-icon.png | Bin 0 -> 10298 bytes plugins/dropbox/assets/dropbox.svg | 7 ++++ plugins/dropbox/skills/dropbox/SKILL.md | 29 +++++++++++++++ 6 files changed, 97 insertions(+) create mode 100644 plugins/dropbox/.app.json create mode 100644 plugins/dropbox/.codex-plugin/plugin.json create mode 100644 plugins/dropbox/assets/app-icon.png create mode 100644 plugins/dropbox/assets/dropbox.svg create mode 100644 plugins/dropbox/skills/dropbox/SKILL.md diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json index 8d7e23d8..71c8deef 100644 --- a/.agents/plugins/marketplace.json +++ b/.agents/plugins/marketplace.json @@ -1501,6 +1501,18 @@ "authentication": "ON_INSTALL" }, "category": "Productivity" + }, + { + "name": "dropbox", + "source": { + "source": "local", + "path": "./plugins/dropbox" + }, + "policy": { + "installation": "AVAILABLE", + "authentication": "ON_INSTALL" + }, + "category": "Productivity" } ] } diff --git a/plugins/dropbox/.app.json b/plugins/dropbox/.app.json new file mode 100644 index 00000000..9de4c572 --- /dev/null +++ b/plugins/dropbox/.app.json @@ -0,0 +1,7 @@ +{ + "apps": { + "dropbox": { + "id": "asdk_app_69b31dc2110c8191b8b47dc98fe5a052" + } + } +} diff --git a/plugins/dropbox/.codex-plugin/plugin.json b/plugins/dropbox/.codex-plugin/plugin.json new file mode 100644 index 00000000..ae2fea39 --- /dev/null +++ b/plugins/dropbox/.codex-plugin/plugin.json @@ -0,0 +1,42 @@ +{ + "name": "dropbox", + "version": "0.1.0", + "description": "Work with Dropbox using the configured Dropbox app connector.", + "author": { + "name": "OpenAI", + "email": "support@openai.com", + "url": "https://openai.com/" + }, + "homepage": "https://www.dropbox.com/", + "repository": "https://github.com/openai/plugins", + "license": "MIT", + "keywords": [ + "dropbox", + "files", + "documents", + "storage" + ], + "skills": "./skills/", + "apps": "./.app.json", + "interface": { + "displayName": "Dropbox", + "shortDescription": "Work with Dropbox files", + "longDescription": "Use Dropbox to find files, summarize stored content, and write files back through the connected Dropbox app.", + "developerName": "OpenAI", + "category": "Productivity", + "capabilities": [ + "Interactive", + "Write" + ], + "websiteURL": "https://www.dropbox.com/", + "privacyPolicyURL": "https://www.dropbox.com/privacy", + "termsOfServiceURL": "https://www.dropbox.com/terms", + "defaultPrompt": [ + "Find Dropbox files, summarize the relevant content, or write files back to Dropbox" + ], + "brandColor": "#0061FF", + "composerIcon": "./assets/app-icon.png", + "logo": "./assets/app-icon.png", + "screenshots": [] + } +} diff --git a/plugins/dropbox/assets/app-icon.png b/plugins/dropbox/assets/app-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..35843be92d47c6d5e86f61e33691910583505abd GIT binary patch literal 10298 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 g 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 PfB^YV%F;EGCV~G4627e> literal 0 HcmV?d00001 diff --git a/plugins/dropbox/assets/dropbox.svg b/plugins/dropbox/assets/dropbox.svg new file mode 100644 index 00000000..c8b41aa3 --- /dev/null +++ b/plugins/dropbox/assets/dropbox.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/plugins/dropbox/skills/dropbox/SKILL.md b/plugins/dropbox/skills/dropbox/SKILL.md new file mode 100644 index 00000000..5b9642a3 --- /dev/null +++ b/plugins/dropbox/skills/dropbox/SKILL.md @@ -0,0 +1,29 @@ +--- +name: dropbox +description: Work with Dropbox through the configured Dropbox app connector. Use when the user wants to find, inspect, preview, summarize, create, or organize Dropbox files and folders. +--- + +# Dropbox + +Use the Dropbox app connector for Dropbox file and folder work. Ground the target with Dropbox discovery before reading or mutating it, keep retrieval narrow, and verify writes with follow-up metadata or listing when the available tools support it. + +## Workflow + +1. Identify the Dropbox target from a path, file ID, folder listing, metadata lookup, or search result. +2. Prefer read-only discovery before fetches, previews, or writes. +3. Use the narrowest tool that matches the request: search for text discovery, metadata or folder listing for navigation, preview for inspect/open tasks, and fetch for extracted file text. +4. Before Dropbox writes, summarize the exact mutation plan and get explicit user confirmation when the tool or request changes Dropbox state. +5. After a successful write, report the returned Dropbox path or ID and verify the result when practical. + +## Internal Skill Guidance + +- **Path and ID discovery:** For `list_folder`, `get_file_metadata`, `file_preview`, and `fetch`, use paths or IDs returned by Dropbox discovery calls; when a target is not found or cannot be resolved, rediscover it instead of retrying a guessed locator. +- **Search vs. navigation:** Use `search.query` for text terms, not known Dropbox paths; use folder listing or metadata lookup when the user provides a path or file ID. +- **Fetch eligibility:** Call `fetch` only on files, and avoid full extraction for files known to be too large, unsupported, or not text-extractable; use metadata/preview or report the limitation instead of repeating the failed fetch. +- **Create conflicts:** Before `create_file` or `create_folder`, inspect the intended destination when practical; if it already exists, reuse it, select a new name, or obtain overwrite intent rather than retrying the same create. + +## Write Safety + +- Treat file creation, folder creation, sharing, moves, renames, and deletes as Dropbox mutations. +- Do not widen sharing or overwrite an existing target unless the user clearly asked for that outcome. +- Preserve returned `id:` and `ns:` locators for follow-on Dropbox calls instead of reconstructing paths manually. From 2d96ae91a2b8038d979f4a48078d507e4de5f1cd Mon Sep 17 00:00:00 2001 From: Kevin Lee Date: Wed, 27 May 2026 11:02:33 -0700 Subject: [PATCH 2/3] Update Dropbox starter prompts --- plugins/dropbox/.codex-plugin/plugin.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/dropbox/.codex-plugin/plugin.json b/plugins/dropbox/.codex-plugin/plugin.json index ae2fea39..70c98845 100644 --- a/plugins/dropbox/.codex-plugin/plugin.json +++ b/plugins/dropbox/.codex-plugin/plugin.json @@ -32,7 +32,9 @@ "privacyPolicyURL": "https://www.dropbox.com/privacy", "termsOfServiceURL": "https://www.dropbox.com/terms", "defaultPrompt": [ - "Find Dropbox files, summarize the relevant content, or write files back to Dropbox" + "Find my document and summarize it", + "Generate a shareable link for this PDF", + "Save this chat as a file in my Dropbox" ], "brandColor": "#0061FF", "composerIcon": "./assets/app-icon.png", From e80acc66e7534b218c2f283a8dcaad2e0aa4cfc8 Mon Sep 17 00:00:00 2001 From: Kevin Lee Date: Wed, 27 May 2026 11:16:58 -0700 Subject: [PATCH 3/3] Remove Dropbox skill scaffold --- plugins/dropbox/.codex-plugin/plugin.json | 1 - plugins/dropbox/skills/dropbox/SKILL.md | 29 ----------------------- 2 files changed, 30 deletions(-) delete mode 100644 plugins/dropbox/skills/dropbox/SKILL.md diff --git a/plugins/dropbox/.codex-plugin/plugin.json b/plugins/dropbox/.codex-plugin/plugin.json index 70c98845..08bb8457 100644 --- a/plugins/dropbox/.codex-plugin/plugin.json +++ b/plugins/dropbox/.codex-plugin/plugin.json @@ -16,7 +16,6 @@ "documents", "storage" ], - "skills": "./skills/", "apps": "./.app.json", "interface": { "displayName": "Dropbox", diff --git a/plugins/dropbox/skills/dropbox/SKILL.md b/plugins/dropbox/skills/dropbox/SKILL.md deleted file mode 100644 index 5b9642a3..00000000 --- a/plugins/dropbox/skills/dropbox/SKILL.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -name: dropbox -description: Work with Dropbox through the configured Dropbox app connector. Use when the user wants to find, inspect, preview, summarize, create, or organize Dropbox files and folders. ---- - -# Dropbox - -Use the Dropbox app connector for Dropbox file and folder work. Ground the target with Dropbox discovery before reading or mutating it, keep retrieval narrow, and verify writes with follow-up metadata or listing when the available tools support it. - -## Workflow - -1. Identify the Dropbox target from a path, file ID, folder listing, metadata lookup, or search result. -2. Prefer read-only discovery before fetches, previews, or writes. -3. Use the narrowest tool that matches the request: search for text discovery, metadata or folder listing for navigation, preview for inspect/open tasks, and fetch for extracted file text. -4. Before Dropbox writes, summarize the exact mutation plan and get explicit user confirmation when the tool or request changes Dropbox state. -5. After a successful write, report the returned Dropbox path or ID and verify the result when practical. - -## Internal Skill Guidance - -- **Path and ID discovery:** For `list_folder`, `get_file_metadata`, `file_preview`, and `fetch`, use paths or IDs returned by Dropbox discovery calls; when a target is not found or cannot be resolved, rediscover it instead of retrying a guessed locator. -- **Search vs. navigation:** Use `search.query` for text terms, not known Dropbox paths; use folder listing or metadata lookup when the user provides a path or file ID. -- **Fetch eligibility:** Call `fetch` only on files, and avoid full extraction for files known to be too large, unsupported, or not text-extractable; use metadata/preview or report the limitation instead of repeating the failed fetch. -- **Create conflicts:** Before `create_file` or `create_folder`, inspect the intended destination when practical; if it already exists, reuse it, select a new name, or obtain overwrite intent rather than retrying the same create. - -## Write Safety - -- Treat file creation, folder creation, sharing, moves, renames, and deletes as Dropbox mutations. -- Do not widen sharing or overwrite an existing target unless the user clearly asked for that outcome. -- Preserve returned `id:` and `ns:` locators for follow-on Dropbox calls instead of reconstructing paths manually.