You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Retire/remove windsurf (Windsurf) integration — absorbed into Cognition's Devin #3168
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`).
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
Check whether (windsurf.com/redacted) issues a permanent redirect to (devin.ai/redacted) (or any Cognition-owned URL).
Confirm whether the Windsurf IDE still ships independent updates and configuration under .windsurf/.
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:
Delete src/specify_cli/integrations/windsurf/__init__.py and the windsurf/ subpackage directory.
Remove the import (from .windsurf import WindsurfIntegration) and registration (_register(WindsurfIntegration())) from src/specify_cli/integrations/__init__.py.
Remove the "windsurf" entry from integrations/catalog.json.
Update docs/reference/integrations.md: remove the table rows and the inline mention of Windsurf.
Update AGENTS.md: replace the WindsurfIntegration minimal-example block with a different simple MarkdownIntegration subclass (e.g. Cline or another currently-active IDE agent).
Update tests/integrations/test_integration_devin.py:32: replace the WindsurfIntegration cross-reference comment with a different non-CLI integration sentinel.
Update tests/integrations/test_integration_forge.py: replace windsurf with another non-name-injecting markdown agent.
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.
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.]
Activity
github-actions commentedon Jun 25, 2026
Bug assessment — windsurf-product-absorbed: Likely valid, needs reproduction · severity low
Bug Assessment: Windsurf Integration — Product Absorbed by Cognition
windsurf-product-absorbedwindsurf(Windsurf) integration — absorbed into Cognition's Devin #3168Report (summarized)
Reported by @mnriem. The
windsurfintegration (src/specify_cli/integrations/windsurf/) targets the Windsurf IDE, a product that the reporter claims no longer operates independently:windsurf.comnow redirects todevin.ai/desktopfollowing 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
windsurfintegration scaffolds files into.windsurf/workflows/and.windsurf/rules/specify-rules.mdfor a product brand that may no longer be independently active. Ifwindsurf.comredirects todevin.ai/desktop, users who look up the integration will be directed to a product under a different identity. Meanwhile a separatedevinintegration (DevinIntegration) already exists in the registry, targeting Cognition's current CLI offering.Reproduction
(windsurf.com/redacted) issues a permanent redirect to(devin.ai/redacted) (or any Cognition-owned URL)..windsurf/.specify init --integration windsurfand 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—WindsurfIntegrationclass declaration;install_url: Noneso no broken URL in Python config, but the product name itself is potentially stale.src/specify_cli/integrations/__init__.py:84— import ofWindsurfIntegrationsrc/specify_cli/integrations/__init__.py:123— registration ofWindsurfIntegration()in the global registryintegrations/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 Cognitiondocs/reference/integrations.md:201,215— table row and explanatory text referencing Windsurf as a current IDE integrationAGENTS.md:26,55-78—WindsurfIntegrationused as the canonical Minimal example — Markdown agent in the integration-authoring guide; would become a stale exampletests/integrations/test_integration_windsurf.py:1-11— dedicated test class; would be removedtests/integrations/test_integration_devin.py:32— cross-referencesWindsurfIntegrationas the sentinel for IDE-only (non-dispatchable) integrations; would need updatingtests/integrations/test_integration_forge.py:410-435— useswindsurfas a reference non-name-injecting agent; would need a replacementtests/test_agent_config_consistency.py:47—"windsurf"in expected-agents listtests/test_registry.py:26—"windsurf"in expected-registry listtests/test_workflows.py:596-597— direct import ofWindsurfIntegrationRoot 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. ADevinIntegrationalready 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.comredirect and whether the Windsurf IDE is still maintained), remove thewindsurfintegration entirely:src/specify_cli/integrations/windsurf/__init__.pyand thewindsurf/subpackage directory.from .windsurf import WindsurfIntegration) and registration (_register(WindsurfIntegration())) fromsrc/specify_cli/integrations/__init__.py."windsurf"entry fromintegrations/catalog.json.tests/integrations/test_integration_windsurf.py.docs/reference/integrations.md: remove the table rows and the inline mention of Windsurf.AGENTS.md: replace theWindsurfIntegrationminimal-example block with a different simpleMarkdownIntegrationsubclass (e.g. Cline or another currently-active IDE agent).tests/integrations/test_integration_devin.py:32: replace theWindsurfIntegrationcross-reference comment with a different non-CLI integration sentinel.tests/integrations/test_integration_forge.py: replacewindsurfwith another non-name-injecting markdown agent."windsurf"from the expected-agents lists intests/test_agent_config_consistency.pyandtests/test_registry.py, and remove the import intests/test_workflows.py.Alternatives:
specify integration use windsurfis 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.docs/reference/integrations.mdURL 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__.pyintegrations/catalog.jsondocs/reference/integrations.mdAGENTS.mdtests/integrations/test_integration_windsurf.py(delete)tests/integrations/test_integration_devin.pytests/integrations/test_integration_forge.pytests/test_agent_config_consistency.pytests/test_registry.pytests/test_workflows.pyTests to add or update:
windsurfas a fixture agent (forge tests, registry tests, workflow tests) should be updated to use a different markdown-format agent.pytest) to confirm no remaining references fail import.Risks & Considerations
WindsurfIntegrationis the canonical "simplest possibleMarkdownIntegrationsubclass" shown to contributors. The replacement example must be equally minimal and actively maintained to preserve documentation accuracy.specify init --integration windsurfwill have a.windsurf/directory with generated files. Removing the integration from Spec Kit does not affect those files, but thespecify integration uninstall windsurfcommand will stop working for those users after the integration is removed.WindsurfIntegrationis not part of any public Python API; removal is contained to internal registry and test files.Open Questions
.windsurf/workflows/configuration files (even if distributed under a new name), which would affect whether a soft-deprecation is preferable to full removal.]chore: retire windsurf integration — absorbed into Cognition Devin (#…
chore: retire windsurf integration — absorbed into Cognition Devin (#…
chore: retire Windsurf integration — absorbed into Cognition Devin (#…
chore: merge upstream 0.12.2 into fork (0.12.2+adlc1)