Skip to content

Feature request: Add Devin Desktop Support to OpenSpec #1168

Closed

Description

@mehdishahdoost

Summary

Windsurf has been rebranded to Devin Desktop, the new flagship AI coding assistant from Cognition. This feature request is for adding support for Devin Desktop to OpenSpec, enabling users to transition from Windsurf seamlessly.

Problem Statement

  • Windsurf → Devin Desktop Transition: Users who previously used Windsurf are now transitioning to Devin Desktop
  • Same Workflow System: Devin Desktop uses the same Cascade workflow system as Windsurf, making it a natural migration path
  • Current Gap: OpenSpec currently supports Windsurf but not Devin Desktop. Users need a way to continue using OpenSpec with their new tool without manual migration
  • User Impact: Users cannot run openspec init --tools devin or generate .devin/workflows/ files

Proposed Solution

Add Devin Desktop support to OpenSpec by:

  1. Create a Devin adapter that generates commands in .devin/workflows/opsx-<id>.md
  2. Register the adapter in the command adapter registry
  3. Update documentation to include Devin Desktop in the supported tools list
  4. Ensure CLI update command refreshes existing Devin workflows

Benefits

  • ✅ Enables users to transition from Windsurf to Devin Desktop
  • ✅ Maintains backward compatibility with existing Windsurf support
  • ✅ Leverages proven adapter pattern (already used for Windsurf)
  • ✅ Reduces complexity by reusing existing infrastructure
  • ✅ Provides clear migration path for users

Technical Details

What Changes

  • Add Devin Desktop (devin) to the CLI tool picker (openspec init)
  • Create a new Devin adapter that generates commands in .devin/workflows/opsx-<id>.md
  • Register the adapter in the command adapter registry
  • Update docs/supported-tools.md to include Devin Desktop
  • Ensure openspec update refreshes existing Devin workflows

Impact

  • Specs: cli-init, cli-update, command-generation
  • Code:
    • src/core/command-generation/adapters/devin.ts (new adapter)
    • src/core/command-generation/registry.ts (register adapter)
    • src/core/command-generation/adapters/index.ts (export adapter)
    • CLI tool selection logic
  • Docs: docs/supported-tools.md
  • Tests: init/update integration coverage for Devin Desktop workflows

Related Information

  • Windsurf Adapter Reference: src/core/command-generation/adapters/windsurf.ts
  • Supported Tools Documentation: docs/supported-tools.md
  • Contributing Guidelines: README.md "Contributing" section
  • Devin Desktop: https://www.devin.ai/

Implementation Status

This feature request has an associated pull request with:

  • ✅ Complete OpenSpec proposal with detailed specifications
  • ✅ Full implementation of Devin Desktop adapter
  • ✅ Updated documentation
  • ✅ Professional commit messages

See linked PR for implementation details.

#1167

Acceptance Criteria

  • Devin adapter created and registered
  • openspec init --tools devin works correctly
  • .devin/workflows/opsx-*.md files are generated
  • openspec update refreshes Devin workflows
  • Documentation updated with Devin Desktop entry
  • Tests pass for Devin adapter
  • Backward compatibility with Windsurf maintained

Additional Context

Windsurf's rebranding to Devin Desktop is a significant change in the AI coding assistant landscape. By adding Devin Desktop support to OpenSpec, we enable a smooth transition for users who want to continue using OpenSpec with their new tool.

The implementation closely mirrors the existing Windsurf adapter, reducing complexity and risk while maintaining consistency across the tool ecosystem.

Activity

  1. mehdishahdoost commented on Jun 4, 2026

    @mehdishahdoost
    ContributorAuthor

    PR: #1167

  2. clay-good commented on Aug 3, 2026

    @clay-good
    Collaborator

    Implemented and merged in #1167, so this feature request is complete.

    Merge proof: #1167 (merged as 1637856c423f2e84457652d1ab58885fe9744fb2). The implementation replaces the old Windsurf target with devin, writes the requested .devin/ surfaces, keeps --tools windsurf as a backward-compatible alias, and provides a guarded migration for existing .windsurf/ installs.

    The current supported-tools reference records both generated paths and the compatibility behavior:

    • Devin paths:
      | Tool (ID) | Skills path pattern | Command path pattern |
      |-----------|---------------------|----------------------|
      | Amazon Q Developer (`amazon-q`) | `.amazonq/skills/openspec-*/SKILL.md` | `.amazonq/prompts/opsx-<id>.md` |
      | Antigravity (`antigravity`) | `.agent/skills/openspec-*/SKILL.md` | `.agent/workflows/opsx-<id>.md` |
      | Auggie (`auggie`) | `.augment/skills/openspec-*/SKILL.md` | `.augment/commands/opsx-<id>.md` |
      | IBM Bob Shell (`bob`) | `.bob/skills/openspec-*/SKILL.md` | `.bob/commands/opsx-<id>.md` |
      | Claude Code (`claude`) | `.claude/skills/openspec-*/SKILL.md` | `.claude/commands/opsx/<id>.md` |
      | Cline (`cline`) | `.cline/skills/openspec-*/SKILL.md` | `.clinerules/workflows/opsx-<id>.md` |
      | CodeArts (`codeartsagent`) | `.codeartsdoer/skills/openspec-*/SKILL.md` | Not generated (no command adapter; use skill-based `/openspec-*` invocations) |
      | CodeBuddy (`codebuddy`) | `.codebuddy/skills/openspec-*/SKILL.md` | `.codebuddy/commands/opsx/<id>.md` |
      | Codex (`codex`) | `.codex/skills/openspec-*/SKILL.md` | Not generated (skills-only; use `.codex/skills/openspec-*`) |
      | Devin Desktop, formerly Windsurf (`devin`) | `.devin/skills/openspec-*/SKILL.md` | `.devin/workflows/opsx-<id>.md`\*\*\*\* |
      | ForgeCode (`forgecode`) | `.forge/skills/openspec-*/SKILL.md` | Not generated (no command adapter; use skill-based `/openspec-*` invocations) |
    • Windsurf alias and migration behavior:
      \*\* GitHub Copilot prompt files are recognized as custom slash commands in IDE extensions (VS Code, JetBrains, Visual Studio). Copilot CLI does not currently consume `.github/prompts/*.prompt.md` directly.
      \*\*\* Hermes loads skills from `~/.hermes/skills/` by default. To use project-local OpenSpec skills, add the project `.hermes/skills/` directory to `skills.external_dirs` in `~/.hermes/config.yaml`; Hermes then exposes skills with user-facing slash invocations such as `/openspec-propose`.
      \*\*\*\* Windsurf was [rebranded to Devin Desktop](https://docs.devin.ai/desktop/devin-desktop-faq) on June 2, 2026, and its config directory moved: `.devin/` is the preferred read + write location, `.windsurf/` a legacy read-only fallback. OpenSpec follows the rename — the tool id is `devin`, and `--tools windsurf` still resolves to it so existing setup scripts keep working. A project still holding OpenSpec files in `.windsurf/` is offered the move on the next `openspec update`; declining leaves them in place, and files you wrote yourself are never touched. Workflows are invoked by filename, so `.devin/workflows/opsx-apply.md` is `/opsx-apply`. The [Devin Local agent does not support workflows](https://docs.devin.ai/desktop/devin-local) — only skills, and it does not read `.windsurf/` at all — so whenever OpenSpec writes Devin skills it keeps their bodies, and the getting-started hint, on `/openspec-*` skill invocations, which work on both agents. Under commands-only delivery no skills are written and both fall back to `/opsx-*`.

    I also reproduced the acceptance path on current main (45cca5db):

    openspec init --tools devin
    Created: Devin Desktop (formerly Windsurf)
    6 skills and 6 commands in .devin/
    

    The generated files include .devin/skills/openspec-*/SKILL.md and .devin/workflows/opsx-*.md. Focused available-tools, init, profile, and CLI E2E coverage passes on current main: 146 tests passed.

    Thanks for filing this and for the implementation in #1167.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions