diff --git a/.github/workflows/verify-cli-installs.yml b/.github/workflows/verify-cli-installs.yml index 344eb57..4be6111 100644 --- a/.github/workflows/verify-cli-installs.yml +++ b/.github/workflows/verify-cli-installs.yml @@ -132,6 +132,36 @@ 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 + env: + DEVIN_VERSION: 3000.4.25 + DEVIN_LINUX_SHA256: 02ae86c4c502d5f1676175663dbed36ef2c0750a4e094c51294845228eeac5da + steps: + - name: Check out repository + uses: actions/checkout@v4 + - name: Install Devin CLI + run: | + 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 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 --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 runs-on: ubuntu-latest @@ -160,6 +190,7 @@ jobs: - claude - grok - cursor + - devin - portable runs-on: ubuntu-latest steps: @@ -170,4 +201,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" 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 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. diff --git a/tests/plugin.test.mjs b/tests/plugin.test.mjs index a680e21..621a682 100644 --- a/tests/plugin.test.mjs +++ b/tests/plugin.test.mjs @@ -155,3 +155,25 @@ 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_VERSION: 3000\.4\.25/); + assert.match(workflow, /sha256sum --check/); + assert.doesNotMatch(workflow, /cli\.devin\.ai\/install\.sh/); + 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/); +});