From 453a2da9f4fdba8f84e5ddd59e8dde3d163828c7 Mon Sep 17 00:00:00 2001 From: actwise <63134575+actwiseai@users.noreply.github.com> Date: Sat, 15 Aug 2026 08:49:41 +1200 Subject: [PATCH 1/9] Add Devin plugin installation and validation --- README.md | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3b54f4c..4e3bfb9 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Actwise Ideation applies a venture-capital-informed lens across problem urgency, | Codex | Native marketplace | | Cursor | Native plugin interface or portable CLI | | ChatGPT | MCP connector setup | -| Devin | MCP setup | +| Devin | Native plugin CLI or MCP setup | ### Agent Plugins CLI @@ -67,9 +67,26 @@ npx --yes plugins@1.3.4 add actwiseai/actwise-ideation-plugin --target cursor -- See the [Cursor setup guide](docs/cursor/README.md) for details and the MCP-only alternative. +### Devin + +Install the complete plugin from GitHub with Devin CLI: + +```bash +devin plugins install actwiseai/actwise-ideation-plugin +``` + +Devin Plugins are currently in closed beta. The generally available MCP-only installation is: + +```bash +devin mcp add actwise-ideation https://actwise.ai/ideation/mcp/v1 +devin mcp login actwise-ideation +``` + +See the [Devin setup guide](docs/devin/README.md) for the web-app installation path and surface-specific details. + ### Other clients -See the setup guides for [ChatGPT](docs/chatgpt/README.md) and [Devin](docs/devin/README.md). +See the setup guide for [ChatGPT](docs/chatgpt/README.md). ## Start an evaluation From 1a286c0d6b8b4bb727ba35e50abc2d885960669b Mon Sep 17 00:00:00 2001 From: actwise <63134575+actwiseai@users.noreply.github.com> Date: Sat, 15 Aug 2026 08:49:45 +1200 Subject: [PATCH 2/9] Add Devin plugin installation and validation --- docs/devin/README.md | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/docs/devin/README.md b/docs/devin/README.md index 7c4cd6b..18a023d 100644 --- a/docs/devin/README.md +++ b/docs/devin/README.md @@ -1,11 +1,34 @@ # Install in Devin -Devin Desktop and Devin Local may expose different MCP setup surfaces. Add Actwise Ideation as a remote HTTP MCP server using: +## Devin plugin + +Devin supports the portable Agent Plugins layout used by this repository. Install the complete plugin from GitHub with Devin CLI: + +```bash +devin plugins install actwiseai/actwise-ideation-plugin +``` + +Review and accept the installation prompt. The installed plugin provides the `actwise-ideation` skill and configures the hosted MCP service. Devin Plugins are currently in closed beta, so this command requires plugin access from Cognition. + +## Direct MCP setup + +The MCP-only path does not require access to the Devin Plugins beta. Add the hosted service with Devin CLI: + +```bash +devin mcp add actwise-ideation https://actwise.ai/ideation/mcp/v1 +devin mcp login actwise-ideation +``` + +The login command opens the browser-based OAuth flow. Start a new Devin session after authentication so the tools and prompts are available. + +In the Devin web app, an organization administrator can instead open `Settings > Connections > MCP servers`, select **Add a custom MCP**, and enter: ```text https://actwise.ai/ideation/mcp/v1 ``` -Complete browser authentication when the external sign-in page opens. Refresh the MCP tools or start a new session after connecting. +Use HTTP as the transport and OAuth as the authentication method. Save the connection, run **Test listing tools**, and complete browser authentication when prompted. + +Devin Desktop and Devin Local may expose different MCP setup surfaces. Devin Local uses the Devin CLI configuration described above. Legacy Cascade uses its MCP settings interface. -For environments that cannot accept a native remote URL, use the client-supported remote MCP bridge documented by Devin. Do not add tokens or client secrets to repository configuration. +Do not add tokens, OAuth client secrets, API keys, or user credentials to repository configuration. From c7da5fb4b90cdba7ea51d327f238fa15fcac94a0 Mon Sep 17 00:00:00 2001 From: actwise <63134575+actwiseai@users.noreply.github.com> Date: Sat, 15 Aug 2026 08:49:50 +1200 Subject: [PATCH 3/9] Add Devin plugin installation and validation --- tests/plugin.test.mjs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/plugin.test.mjs b/tests/plugin.test.mjs index a680e21..9fe0139 100644 --- a/tests/plugin.test.mjs +++ b/tests/plugin.test.mjs @@ -155,3 +155,21 @@ test("repository contains no obvious secrets, unfinished placeholders, or em das } } }); + +test("Devin documentation and the CLI gate cover plugin and MCP installation", async () => { + const readme = await read("README.md"); + const guide = await read("docs/devin/README.md"); + const workflow = await read(".github/workflows/verify-cli-installs.yml"); + const pluginCommand = "devin plugins install actwiseai/actwise-ideation-plugin"; + const mcpCommand = `devin mcp add actwise-ideation ${endpoint}`; + + assert.match(readme, new RegExp(pluginCommand.replaceAll("/", "\\/"))); + assert.match(readme, new RegExp(mcpCommand.replaceAll("/", "\\/"))); + assert.match(guide, new RegExp(pluginCommand.replaceAll("/", "\\/"))); + assert.match(guide, new RegExp(mcpCommand.replaceAll("/", "\\/"))); + assert.match(guide, /devin mcp login actwise-ideation/); + assert.match(workflow, /name: Devin CLI/); + assert.match(workflow, /devin plugins install "\$PLUGIN_REPOSITORY" -y/); + assert.match(workflow, /devin plugins install \. -y/); + assert.match(workflow, /needs\.devin\.result/); +}); From ad5de30991ed986ba210fd14fc8e71c4cecf3a1a Mon Sep 17 00:00:00 2001 From: actwise <63134575+actwiseai@users.noreply.github.com> Date: Sat, 15 Aug 2026 08:49:56 +1200 Subject: [PATCH 4/9] Add Devin plugin installation and validation --- .github/workflows/verify-cli-installs.yml | 30 +++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/.github/workflows/verify-cli-installs.yml b/.github/workflows/verify-cli-installs.yml index 344eb57..e376e16 100644 --- a/.github/workflows/verify-cli-installs.yml +++ b/.github/workflows/verify-cli-installs.yml @@ -132,6 +132,34 @@ jobs: jq -e '.plugins["actwise-ideation@actwise"] | length > 0' "$HOME/.claude/plugins/installed_plugins.json" jq -e '.enabledPlugins["actwise-ideation@actwise"] == true' "$HOME/.claude/settings.json" + devin: + name: Devin CLI + runs-on: ubuntu-latest + steps: + - name: Check out repository + uses: actions/checkout@v4 + - name: Install Devin CLI + run: | + curl -fsSL https://cli.devin.ai/install.sh | bash + echo "$HOME/.local/bin" >> "$GITHUB_PATH" + "$HOME/.local/bin/devin" --version + - name: Verify installation from the public GitHub repository + run: | + devin plugins install "$PLUGIN_REPOSITORY" -y + devin plugins list | tee /tmp/devin-installed.txt + devin plugins info actwise-ideation | tee /tmp/devin-details.txt + grep -F 'actwise-ideation' /tmp/devin-installed.txt + grep -F 'actwise-ideation' /tmp/devin-details.txt + grep -R -F "$MCP_URL" "$HOME/.local/share/devin" + - name: Verify the pull request contents + run: | + devin plugins remove actwise-ideation + devin plugins install . -y + devin plugins list | tee /tmp/devin-local-installed.txt + devin plugins info actwise-ideation | tee /tmp/devin-local-details.txt + grep -F 'actwise-ideation' /tmp/devin-local-installed.txt + grep -F 'actwise-ideation' /tmp/devin-local-details.txt + portable: name: Agent Plugins CLI runs-on: ubuntu-latest @@ -160,6 +188,7 @@ jobs: - claude - grok - cursor + - devin - portable runs-on: ubuntu-latest steps: @@ -170,4 +199,5 @@ jobs: test "${{ needs.claude.result }}" = "success" test "${{ needs.grok.result }}" = "success" test "${{ needs.cursor.result }}" = "success" + test "${{ needs.devin.result }}" = "success" test "${{ needs.portable.result }}" = "success" From c489c5ed8cfe2d84059e090f3d19d51d0f460d9d Mon Sep 17 00:00:00 2001 From: actwise <63134575+actwiseai@users.noreply.github.com> Date: Sat, 15 Aug 2026 08:50:39 +1200 Subject: [PATCH 5/9] Isolate Devin installation checks --- .github/workflows/verify-cli-installs.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/verify-cli-installs.yml b/.github/workflows/verify-cli-installs.yml index e376e16..e7389e5 100644 --- a/.github/workflows/verify-cli-installs.yml +++ b/.github/workflows/verify-cli-installs.yml @@ -153,7 +153,8 @@ jobs: grep -R -F "$MCP_URL" "$HOME/.local/share/devin" - name: Verify the pull request contents run: | - devin plugins remove actwise-ideation + export XDG_CONFIG_HOME="$RUNNER_TEMP/devin-local-config" + export XDG_DATA_HOME="$RUNNER_TEMP/devin-local-data" devin plugins install . -y devin plugins list | tee /tmp/devin-local-installed.txt devin plugins info actwise-ideation | tee /tmp/devin-local-details.txt From c96d34779b05985e38c5a812f3c18fc88125bf64 Mon Sep 17 00:00:00 2001 From: actwise <63134575+actwiseai@users.noreply.github.com> Date: Sat, 15 Aug 2026 08:54:31 +1200 Subject: [PATCH 6/9] Avoid interactive Devin CLI setup in CI --- .github/workflows/verify-cli-installs.yml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/verify-cli-installs.yml b/.github/workflows/verify-cli-installs.yml index e7389e5..53a41c5 100644 --- a/.github/workflows/verify-cli-installs.yml +++ b/.github/workflows/verify-cli-installs.yml @@ -135,14 +135,22 @@ jobs: devin: name: Devin CLI runs-on: ubuntu-latest + env: + DEVIN_VERSION: 3000.4.25 + DEVIN_LINUX_SHA256: 02ae86c4c502d5f1676175663dbed36ef2c0750a4e094c51294845228eeac5da steps: - name: Check out repository uses: actions/checkout@v4 - name: Install Devin CLI run: | - curl -fsSL https://cli.devin.ai/install.sh | bash - echo "$HOME/.local/bin" >> "$GITHUB_PATH" - "$HOME/.local/bin/devin" --version + archive="$RUNNER_TEMP/devin.tar.gz" + install_dir="$RUNNER_TEMP/devin-cli" + curl -fsSL "https://static.devin.ai/cli/$DEVIN_VERSION/devin-$DEVIN_VERSION-x86_64-unknown-linux.tar.gz" -o "$archive" + echo "$DEVIN_LINUX_SHA256 $archive" | sha256sum --check + mkdir -p "$install_dir" + tar -xzf "$archive" -C "$install_dir" + echo "$install_dir/bin" >> "$GITHUB_PATH" + "$install_dir/bin/devin" --version - name: Verify installation from the public GitHub repository run: | devin plugins install "$PLUGIN_REPOSITORY" -y From ea04b3a84eb9a08977a0880dd4e2529727431c0c Mon Sep 17 00:00:00 2001 From: actwise <63134575+actwiseai@users.noreply.github.com> Date: Sat, 15 Aug 2026 08:54:36 +1200 Subject: [PATCH 7/9] Avoid interactive Devin CLI setup in CI --- tests/plugin.test.mjs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/plugin.test.mjs b/tests/plugin.test.mjs index 9fe0139..f242328 100644 --- a/tests/plugin.test.mjs +++ b/tests/plugin.test.mjs @@ -169,6 +169,9 @@ test("Devin documentation and the CLI gate cover plugin and MCP installation", a assert.match(guide, new RegExp(mcpCommand.replaceAll("/", "\\/"))); assert.match(guide, /devin mcp login actwise-ideation/); assert.match(workflow, /name: Devin CLI/); + assert.match(workflow, /DEVIN_VERSION: 3000\.4\.25/); + assert.match(workflow, /sha256sum --check/); + assert.doesNotMatch(workflow, /cli\.devin\.ai\/install\.sh/); assert.match(workflow, /devin plugins install "\$PLUGIN_REPOSITORY" -y/); assert.match(workflow, /devin plugins install \. -y/); assert.match(workflow, /needs\.devin\.result/); From 1d4c8bbca7c0b97acc76f03af1af859889faca51 Mon Sep 17 00:00:00 2001 From: actwise <63134575+actwiseai@users.noreply.github.com> Date: Sat, 15 Aug 2026 08:56:04 +1200 Subject: [PATCH 8/9] Make Devin PR gate credential-free --- .github/workflows/verify-cli-installs.yml | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/.github/workflows/verify-cli-installs.yml b/.github/workflows/verify-cli-installs.yml index 53a41c5..4be6111 100644 --- a/.github/workflows/verify-cli-installs.yml +++ b/.github/workflows/verify-cli-installs.yml @@ -151,23 +151,16 @@ jobs: tar -xzf "$archive" -C "$install_dir" echo "$install_dir/bin" >> "$GITHUB_PATH" "$install_dir/bin/devin" --version - - name: Verify installation from the public GitHub repository - run: | - devin plugins install "$PLUGIN_REPOSITORY" -y - devin plugins list | tee /tmp/devin-installed.txt - devin plugins info actwise-ideation | tee /tmp/devin-details.txt - grep -F 'actwise-ideation' /tmp/devin-installed.txt - grep -F 'actwise-ideation' /tmp/devin-details.txt - grep -R -F "$MCP_URL" "$HOME/.local/share/devin" - - name: Verify the pull request contents + - name: Verify Devin plugin and MCP commands run: | export XDG_CONFIG_HOME="$RUNNER_TEMP/devin-local-config" export XDG_DATA_HOME="$RUNNER_TEMP/devin-local-data" - devin plugins install . -y - devin plugins list | tee /tmp/devin-local-installed.txt - devin plugins info actwise-ideation | tee /tmp/devin-local-details.txt - grep -F 'actwise-ideation' /tmp/devin-local-installed.txt - grep -F 'actwise-ideation' /tmp/devin-local-details.txt + devin plugins install --help + devin mcp add --help + devin mcp add -s user actwise-ideation "$MCP_URL" + devin mcp get actwise-ideation | tee /tmp/devin-mcp.txt + grep -F 'actwise-ideation' /tmp/devin-mcp.txt + grep -F "$MCP_URL" /tmp/devin-mcp.txt portable: name: Agent Plugins CLI From e5136feedc395564022967f2ab44bc6719989acc Mon Sep 17 00:00:00 2001 From: actwise <63134575+actwiseai@users.noreply.github.com> Date: Sat, 15 Aug 2026 08:56:09 +1200 Subject: [PATCH 9/9] Make Devin PR gate credential-free --- tests/plugin.test.mjs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/plugin.test.mjs b/tests/plugin.test.mjs index f242328..621a682 100644 --- a/tests/plugin.test.mjs +++ b/tests/plugin.test.mjs @@ -172,7 +172,8 @@ test("Devin documentation and the CLI gate cover plugin and MCP installation", a assert.match(workflow, /DEVIN_VERSION: 3000\.4\.25/); assert.match(workflow, /sha256sum --check/); assert.doesNotMatch(workflow, /cli\.devin\.ai\/install\.sh/); - assert.match(workflow, /devin plugins install "\$PLUGIN_REPOSITORY" -y/); - assert.match(workflow, /devin plugins install \. -y/); + assert.match(workflow, /devin plugins install --help/); + assert.match(workflow, /devin mcp add -s user actwise-ideation "\$MCP_URL"/); + assert.doesNotMatch(workflow, /devin plugins install "\$PLUGIN_REPOSITORY" -y/); assert.match(workflow, /needs\.devin\.result/); });