From 774fa4c7244d85c5787b8e2946fac6a747b78be3 Mon Sep 17 00:00:00 2001 From: William Bergamin Date: Fri, 17 Jul 2026 16:08:43 -0400 Subject: [PATCH 1/3] feat: add unofficial Codex plugin surface Expose the Slack skills to Codex via a new .codex-plugin/plugin.json manifest and a repo-scoped .agents/plugins/marketplace.json for local installation. sync_versions.py now keeps the Codex manifest version in lockstep with the other plugin surfaces, and the maintainers guide documents how to test in Codex. The hosted MCP server is not yet wired into the Codex surface; this ships the skills only for now. Co-Authored-By: Claude --- .agents/plugins/marketplace.json | 20 +++++++++++++++++++ .changeset/add-codex-plugin-surface.md | 7 +++++++ .codex-plugin/plugin.json | 26 +++++++++++++++++++++++++ .github/maintainers_guide.md | 27 ++++++++++++++++++++++++++ scripts/sync_versions.py | 2 ++ 5 files changed, 82 insertions(+) create mode 100644 .agents/plugins/marketplace.json create mode 100644 .changeset/add-codex-plugin-surface.md create mode 100644 .codex-plugin/plugin.json diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json new file mode 100644 index 0000000..b3cf6f8 --- /dev/null +++ b/.agents/plugins/marketplace.json @@ -0,0 +1,20 @@ +{ + "name": "slack-dev", + "interface": { + "displayName": "Slack (dev)" + }, + "plugins": [ + { + "name": "slack", + "source": { + "source": "local", + "path": "./" + }, + "policy": { + "installation": "AVAILABLE", + "authentication": "ON_INSTALL" + }, + "category": "Developer Tools" + } + ] +} diff --git a/.changeset/add-codex-plugin-surface.md b/.changeset/add-codex-plugin-surface.md new file mode 100644 index 0000000..4c8610b --- /dev/null +++ b/.changeset/add-codex-plugin-surface.md @@ -0,0 +1,7 @@ +--- +"slack": minor +--- + +Add a Codex plugin surface. A new `.codex-plugin/plugin.json` manifest exposes the Slack skills to [Codex][codex], and a repo-scoped `.agents/plugins/marketplace.json` lets you install the plugin into Codex from a local checkout. The hosted MCP server is not yet wired into the Codex surface; skills only for now. + +[codex]: https://developers.openai.com/codex diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json new file mode 100644 index 0000000..c1fe1ca --- /dev/null +++ b/.codex-plugin/plugin.json @@ -0,0 +1,26 @@ +{ + "name": "slack", + "version": "1.1.0", + "description": "Slack integration for searching messages, sending communications, managing canvases, and more", + "author": { + "name": "Slack", + "url": "https://slack.com" + }, + "homepage": "https://github.com/slackapi/slack-skills-plugin", + "repository": "https://github.com/slackapi/slack-skills-plugin", + "license": "MIT", + "skills": "./skills/", + "interface": { + "displayName": "Slack", + "shortDescription": "Slack integration for searching messages, sending communications, managing canvases, and more", + "longDescription": "Slack integration for searching messages, sending communications, managing canvases, and more", + "developerName": "Slack", + "category": "Productivity", + "capabilities": [ + "Interactive", + "Read", + "Write" + ], + "websiteURL": "https://github.com/slackapi/slack-skills-plugin" + } +} diff --git a/.github/maintainers_guide.md b/.github/maintainers_guide.md index 51d0738..5e11290 100644 --- a/.github/maintainers_guide.md +++ b/.github/maintainers_guide.md @@ -15,6 +15,8 @@ Maintaining this repo requires: Code rather than traditional CLI tooling. - **[Cursor][cursor]**: an alternative agentic coding environment. Useful for verifying that skills and commands work outside Claude Code before release. +- **[Codex][codex-cli]**: another agentic coding environment. Useful for + verifying that the skills work outside Claude Code before release. - **Git**: standard version control. - **[GitHub CLI (`gh`)][gh-cli]**: for creating PRs as drafts and managing issues. @@ -134,6 +136,30 @@ This copies the plugin into `~/.cursor/plugins/slack@local` and registers it. To remove it, run `make cursor-uninstall`. (`make clean` also runs the Cursor uninstall, in addition to removing the virtualenv and other generated files.) +### Testing in Codex + +Codex loads plugins only from a marketplace. The repo ships a development marketplace at +`.agents/plugins/marketplace.json` that points at this checkout, so you can add +it as a local marketplace and install the plugin from it. + +Register the local marketplace and install the `slack` plugin: + +```sh +codex plugin marketplace add ./ +codex plugin add slack@slack-dev +``` + +`codex plugin list` shows the plugin; `codex /plugins` opens the same flow interactively. Start a new Codex session to pick up the plugin, then invoke a skill by name with a `$` mention, for example `$block-kit`. + +To remove it + +```sh +codex plugin remove slack@slack-dev +codex plugin marketplace remove slack-dev +``` + +Codex support currently ships only the skills; the hosted MCP server is not yet wired into the Codex surface. + --- ## Versioning @@ -215,6 +241,7 @@ Patch and minor updates are auto-approved and auto-merged via the [claude-code]: https://claude.ai/code [cursor]: https://cursor.com +[codex-cli]: https://developers.openai.com/codex/cli [gh-cli]: https://cli.github.com [conv-commits]: https://www.conventionalcommits.org [semver]: https://semver.org diff --git a/scripts/sync_versions.py b/scripts/sync_versions.py index 05494b8..b8ef430 100644 --- a/scripts/sync_versions.py +++ b/scripts/sync_versions.py @@ -11,6 +11,7 @@ PACKAGE_JSON_PATH = REPO_ROOT / "package.json" CLAUDE_PLUGIN_PATH = REPO_ROOT / ".claude-plugin" / "plugin.json" CURSOR_PLUGIN_PATH = REPO_ROOT / ".cursor-plugin" / "plugin.json" +CODEX_PLUGIN_PATH = REPO_ROOT / ".codex-plugin" / "plugin.json" def read_version(package_path: Path) -> str: @@ -32,6 +33,7 @@ def main() -> None: version = read_version(PACKAGE_JSON_PATH) write_version(CLAUDE_PLUGIN_PATH, version) write_version(CURSOR_PLUGIN_PATH, version) + write_version(CODEX_PLUGIN_PATH, version) if __name__ == "__main__": From 5354e75a595d169e93eeeffb7ecbf1a755668954 Mon Sep 17 00:00:00 2001 From: William Bergamin Date: Wed, 22 Jul 2026 11:35:19 -0400 Subject: [PATCH 2/3] docs: refine Codex plugin install-surface copy Replace the placeholder metadata in .codex-plugin/plugin.json, where description, shortDescription, and longDescription were all the same generic sentence. Give each field distinct, capability-accurate copy following Codex's documented field semantics, and point homepage at the publisher docs hub (docs.slack.dev) and websiteURL at the official Slack MCP server docs page. Co-Authored-By: Claude --- .codex-plugin/plugin.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index c1fe1ca..31f832d 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,19 +1,19 @@ { "name": "slack", "version": "1.1.0", - "description": "Slack integration for searching messages, sending communications, managing canvases, and more", + "description": "Bring Slack into your AI tools with a Slack MCP server and Slack skills", "author": { "name": "Slack", "url": "https://slack.com" }, - "homepage": "https://github.com/slackapi/slack-skills-plugin", + "homepage": "https://docs.slack.dev", "repository": "https://github.com/slackapi/slack-skills-plugin", "license": "MIT", "skills": "./skills/", "interface": { "displayName": "Slack", - "shortDescription": "Slack integration for searching messages, sending communications, managing canvases, and more", - "longDescription": "Slack integration for searching messages, sending communications, managing canvases, and more", + "shortDescription": "Slack MCP server and skills for your AI tools", + "longDescription": "Connect your AI tools to Slack through the Slack MCP server to search messages, files, and channels, send and schedule messages, read threads, and manage canvases. Includes skills for building Slack apps with the Slack CLI and Bolt, calling Web API methods, and composing Block Kit layouts.", "developerName": "Slack", "category": "Productivity", "capabilities": [ @@ -21,6 +21,6 @@ "Read", "Write" ], - "websiteURL": "https://github.com/slackapi/slack-skills-plugin" + "websiteURL": "https://docs.slack.dev/ai/mcp-server/" } } From 8805c702b278fb5e8dce52421a2aec621ff9eafc Mon Sep 17 00:00:00 2001 From: William Bergamin Date: Thu, 23 Jul 2026 13:41:54 -0400 Subject: [PATCH 3/3] fix: keep Codex plugin surface skills-only Set an empty mcpServers object in .codex-plugin/plugin.json so Codex does not fall back to reading the repo-root .mcp.json, which would silently load the Slack MCP server under Claude Code's OAuth client ID. Add the required interface.defaultPrompt so the manifest passes Codex's plugin validator, and rewrite the install-surface copy to describe the skills rather than an MCP server that isn't wired into this surface. Align the dev marketplace category with the manifest (Productivity). Co-Authored-By: Claude --- .agents/plugins/marketplace.json | 2 +- .codex-plugin/plugin.json | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json index b3cf6f8..f19f6e2 100644 --- a/.agents/plugins/marketplace.json +++ b/.agents/plugins/marketplace.json @@ -14,7 +14,7 @@ "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, - "category": "Developer Tools" + "category": "Productivity" } ] } diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 31f832d..53aaa8c 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "slack", "version": "1.1.0", - "description": "Bring Slack into your AI tools with a Slack MCP server and Slack skills", + "description": "Slack skills for building apps with the Slack CLI, Bolt, Web API, and Block Kit", "author": { "name": "Slack", "url": "https://slack.com" @@ -10,10 +10,12 @@ "repository": "https://github.com/slackapi/slack-skills-plugin", "license": "MIT", "skills": "./skills/", + "mcpServers": {}, "interface": { "displayName": "Slack", - "shortDescription": "Slack MCP server and skills for your AI tools", - "longDescription": "Connect your AI tools to Slack through the Slack MCP server to search messages, files, and channels, send and schedule messages, read threads, and manage canvases. Includes skills for building Slack apps with the Slack CLI and Bolt, calling Web API methods, and composing Block Kit layouts.", + "shortDescription": "Slack skills for your AI tools", + "longDescription": "Skills for building Slack apps with the Slack CLI and Bolt, calling Web API methods, and composing Block Kit layouts, plus skills for searching and messaging in Slack when a Slack MCP server is connected.", + "defaultPrompt": "Help me build a Slack app with the Slack CLI and Bolt.", "developerName": "Slack", "category": "Productivity", "capabilities": [