Skip to content

Retire/remove windsurf (Windsurf) integration — absorbed into Cognition's Devin #3168

Closed

Description

@mnriem

The `Windsurf` integration (`src/specify_cli/integrations/windsurf/`) targets a product that no longer operates standalone.

  • `windsurf.com` now issues a permanent redirect to `devin.ai/desktop` (Cognition). The Windsurf IDE brand has been absorbed following acquisition; `codeium.com` -> `windsurf.com` -> `devin.ai/desktop`.

Suggested action: confirm and, if appropriate, deprecate/remove the `windsurf` integration (subpackage, registry entry, catalog entry, and `tests/integrations/test_integration_windsurf.py`).

Activity

  1. github-actions commented on Jun 25, 2026

    @github-actions
    Contributor

    Bug assessment — windsurf-product-absorbed: Likely valid, needs reproduction · severity low


    Bug Assessment: Windsurf Integration — Product Absorbed by Cognition

    Report (summarized)

    Reported by @mnriem. The windsurf integration (src/specify_cli/integrations/windsurf/) targets the Windsurf IDE, a product that the reporter claims no longer operates independently: windsurf.com now redirects to devin.ai/desktop following Codeium's acquisition by Cognition (maker of Devin). The suggested action is to confirm the redirect and, if accurate, deprecate or remove the integration (subpackage, registry entry, catalog entry, and test file).

    Symptom

    The windsurf integration scaffolds files into .windsurf/workflows/ and .windsurf/rules/specify-rules.md for a product brand that may no longer be independently active. If windsurf.com redirects to devin.ai/desktop, users who look up the integration will be directed to a product under a different identity. Meanwhile a separate devin integration (DevinIntegration) already exists in the registry, targeting Cognition's current CLI offering.

    Reproduction

    1. Check whether (windsurf.com/redacted) issues a permanent redirect to (devin.ai/redacted) (or any Cognition-owned URL).
    2. Confirm whether the Windsurf IDE still ships independent updates and configuration under .windsurf/.
    3. If confirmed absorbed: run specify init --integration windsurf and observe that the integration scaffolds for a product users can no longer find or install as "Windsurf."

    [NEEDS CLARIFICATION: Whether Windsurf's .windsurf/ configuration directory is still supported in the IDE or has been deprecated in favor of .devin/.]

    Suspected Code Paths

    • src/specify_cli/integrations/windsurf/__init__.py:6-22 — WindsurfIntegration class declaration; install_url: None so no broken URL in Python config, but the product name itself is potentially stale.
    • src/specify_cli/integrations/__init__.py:84 — import of WindsurfIntegration
    • src/specify_cli/integrations/__init__.py:123 — registration of WindsurfIntegration() in the global registry
    • integrations/catalog.json:51-60 — catalog entry with "id": "windsurf", "description": "Windsurf IDE workflow integration"
    • docs/reference/integrations.md:42 — live link `[Windsurf]((windsurf.com/redacted) — this URL may redirect to Cognition
    • docs/reference/integrations.md:201,215 — table row and explanatory text referencing Windsurf as a current IDE integration
    • AGENTS.md:26,55-78 — WindsurfIntegration used as the canonical Minimal example — Markdown agent in the integration-authoring guide; would become a stale example
    • tests/integrations/test_integration_windsurf.py:1-11 — dedicated test class; would be removed
    • tests/integrations/test_integration_devin.py:32 — cross-references WindsurfIntegration as the sentinel for IDE-only (non-dispatchable) integrations; would need updating
    • tests/integrations/test_integration_forge.py:410-435 — uses windsurf as a reference non-name-injecting agent; would need a replacement
    • tests/test_agent_config_consistency.py:47 — "windsurf" in expected-agents list
    • tests/test_registry.py:26 — "windsurf" in expected-registry list
    • tests/test_workflows.py:596-597 — direct import of WindsurfIntegration

    Root Cause Hypothesis

    The Windsurf IDE brand was absorbed into Cognition's product ecosystem following acquisition. The Spec Kit integration was valid when created, but if the product is no longer distributed under the Windsurf brand with its own .windsurf/ configuration scheme, the integration becomes misleading: it suggests an active, installable product that users cannot locate. A DevinIntegration already exists in the registry as Cognition's current agent CLI. Confidence: medium — the business claim is highly plausible given known industry context, but the exact product status of the Windsurf IDE configuration directory requires external confirmation.

    Proposed Remediation

    Preferred: Once the product-absorption claim is confirmed externally (verify the windsurf.com redirect and whether the Windsurf IDE is still maintained), remove the windsurf integration entirely:

    1. Delete src/specify_cli/integrations/windsurf/__init__.py and the windsurf/ subpackage directory.
    2. Remove the import (from .windsurf import WindsurfIntegration) and registration (_register(WindsurfIntegration())) from src/specify_cli/integrations/__init__.py.
    3. Remove the "windsurf" entry from integrations/catalog.json.
    4. Delete tests/integrations/test_integration_windsurf.py.
    5. Update docs/reference/integrations.md: remove the table rows and the inline mention of Windsurf.
    6. Update AGENTS.md: replace the WindsurfIntegration minimal-example block with a different simple MarkdownIntegration subclass (e.g. Cline or another currently-active IDE agent).
    7. Update tests/integrations/test_integration_devin.py:32: replace the WindsurfIntegration cross-reference comment with a different non-CLI integration sentinel.
    8. Update tests/integrations/test_integration_forge.py: replace windsurf with another non-name-injecting markdown agent.
    9. Remove "windsurf" from the expected-agents lists in tests/test_agent_config_consistency.py and tests/test_registry.py, and remove the import in tests/test_workflows.py.

    Alternatives:

    • Soft-deprecation: Mark the integration as deprecated in the catalog and display a warning when specify integration use windsurf is run, without removing the code. Trade-off: keeps stale code in the repository but gives existing users time to migrate; appropriate only if the .windsurf/ config directory remains functional in the IDE.
    • No action: If the Windsurf IDE is still distributed (e.g. under a new name but with the same config layout), the integration may remain valid as-is and only the docs/reference/integrations.md URL needs updating. Trade-off: avoids churn but leaves potentially misleading metadata.

    Files likely to change:

    • src/specify_cli/integrations/windsurf/__init__.py (delete)
    • src/specify_cli/integrations/__init__.py
    • integrations/catalog.json
    • docs/reference/integrations.md
    • AGENTS.md
    • tests/integrations/test_integration_windsurf.py (delete)
    • tests/integrations/test_integration_devin.py
    • tests/integrations/test_integration_forge.py
    • tests/test_agent_config_consistency.py
    • tests/test_registry.py
    • tests/test_workflows.py

    Tests to add or update:

    • No new tests required for a deletion. Existing tests referencing windsurf as a fixture agent (forge tests, registry tests, workflow tests) should be updated to use a different markdown-format agent.
    • After removal, run the full test suite (pytest) to confirm no remaining references fail import.

    Risks & Considerations

    • AGENTS.md example replacement: WindsurfIntegration is the canonical "simplest possible MarkdownIntegration subclass" shown to contributors. The replacement example must be equally minimal and actively maintained to preserve documentation accuracy.
    • Existing user projects: Projects that have already run specify init --integration windsurf will have a .windsurf/ directory with generated files. Removing the integration from Spec Kit does not affect those files, but the specify integration uninstall windsurf command will stop working for those users after the integration is removed.
    • No API breakage: WindsurfIntegration is not part of any public Python API; removal is contained to internal registry and test files.
    • Low blast radius: The code is entirely internal; no data loss, no security risk, no performance impact.

    Open Questions

    • [NEEDS CLARIFICATION: Confirm that `(windsurf.com/redacted) issues a permanent redirect to a Cognition-owned URL. This is the gating condition for the preferred remediation.]
    • [NEEDS CLARIFICATION: Determine whether the Windsurf IDE still processes .windsurf/workflows/ configuration files (even if distributed under a new name), which would affect whether a soft-deprecation is preferable to full removal.]
    • [NEEDS CLARIFICATION: If Windsurf is absorbed but the IDE's config format is still compatible, consider whether the integration should be renamed/redirected rather than deleted.]

    Generated by 🐛 Assess Bug from Labeled Issue for issue #3168 · 147.6 AIC · ⌖ 25.1 AIC · ⊞ 31.7K · ◷

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions