Agent Name
Devin for Terminal
Official Website
https://cli.devin.ai/docs
Agent Type
CLI tool (command-line interface)
CLI Command (if applicable)
devin
Installation Method
curl -fsSL https://cli.devin.ai/install.sh | bash (macOS / Linux / WSL) — Windows via irm https://static.devin.ai/cli/setup.ps1 | iex. Also bundled with Windsurf Enterprise via the Install Devin for Terminal command palette action.
Command/Workflow Structure
Devin's user-extensible commands are called Skills (see https://cli.devin.ai/docs/extensibility/skills/overview).
Format: Markdown with YAML frontmatter.
Directory (project-scoped): .devin/skills//SKILL.md
Directory (user-scoped): ~/.config/devin/skills//SKILL.md
Invocation: / slash command inside an interactive devin session.
Frontmatter fields: name, description, allowed-tools, triggers (user and/or model).
Example (from Devin docs):
---
name: review
description: Review code changes before committing
allowed-tools:
- read
- grep
- glob
- exec
---
Review the current git diff and provide feedback:
1. Run `git diff --staged` (or `git diff` if nothing is staged)
2. Check for logic errors, missing error handling, security issues, style inconsistencies
3. Summarize findings and suggest improvements
Invoked as /review in the Devin terminal.
This maps cleanly to Spec Kit's existing SkillsIntegration base class (same shape as Codex CLI). Proposed Spec Kit layout:
.devin/skills/speckit.specify/SKILL.md
.devin/skills/speckit.plan/SKILL.md
.devin/skills/speckit.tasks/SKILL.md (etc.)
Context / rules file: AGENTS.md at project root (Devin reads it natively — see https://cli.devin.ai/docs/extensibility/rules).
Argument Passing Pattern
Skills receive the user's free-text arguments appended after the slash command (/review fix the auth flow). There is no special placeholder token in Devin skill bodies; the prompt body is treated as the skill's instructions and any arguments the user types are added to the conversation context. Proposed registrar placeholder for Spec Kit: $ARGUMENTS (same convention already used by Codex and Claude SkillsIntegrations).
Popularity/Usage
Widely used (thousands+ of users)
Documentation Links
Quickstart: https://cli.devin.ai/docs
Essential commands: https://cli.devin.ai/docs/essential-commands
Commands & flags reference: https://cli.devin.ai/docs/reference/commands
Skills (extensibility): https://cli.devin.ai/docs/extensibility/skills/overview
Creating skills: https://cli.devin.ai/docs/extensibility/skills/creating-skills
Rules & AGENTS.md: https://cli.devin.ai/docs/extensibility/rules
Use Case
I use Devin for Terminal as my primary CLI coding agent and want to drive Spec-Driven Development workflows (/speckit.specify, /speckit.plan, /speckit.tasks, /speckit.implement) through it without maintaining a parallel fork of the templates. Devin's Skills system is a near-perfect match for Spec Kit's slash-command model, and AGENTS.md support means the project context file requires zero new convention.
Relationship to the existing windsurf integration
Spec Kit already supports Windsurf (the IDE) via src/specify_cli/integrations/windsurf/. Cognition AI acquired Windsurf in July 2025, and Devin for Terminal is now distributed under that combined org (with a "Windsurf Enterprise" install path via the Windsurf command palette). Despite the shared parent company, the two are distinct products with different on-disk conventions, and the existing integration does not cover Devin:
|
windsurf (existing) |
devin (proposed) |
| Product |
Windsurf IDE |
Devin for Terminal CLI |
requires_cli |
False |
True (binary: devin) |
| Base class |
MarkdownIntegration |
SkillsIntegration |
| Commands path |
.windsurf/workflows/<name>.md |
.devin/skills/<name>/SKILL.md |
| File format |
Flat markdown |
Markdown with YAML frontmatter (name, description, allowed-tools, triggers) |
| Context file |
.windsurf/rules/specify-rules.md |
AGENTS.md |
| Invocation |
/workflow-name in Windsurf chat |
/skill-name in devin terminal |
Devin can also read skills from .windsurf/skills/<name>/SKILL.md, but that is a different directory from the existing integration's .windsurf/workflows/, so there is no overlap to reuse. Recommending a separate devin integration, mirroring the codex SkillsIntegration shape.
Example Command File
Proposed .devin/skills/speckit.specify/SKILL.md generated by Spec Kit from the existing templates/commands/speckit.specify.md template (Spec Kit frontmatter translated to Devin's Skill frontmatter; body kept intact so $ARGUMENTS continues to work via the registrar_config.args substitution):
---
name: speckit.specify
description: Create or update a feature specification from a natural-language description
triggers:
- user
allowed-tools:
- read
- write
- grep
- glob
- exec
---
## User Input
```text
$ARGUMENTS
```
Given the feature description above:
1. **Create the feature branch** by running the script:
- Bash: `.specify/scripts/bash/create-new-feature.sh --json --short-name "<short-name>" "<description>"`
- The JSON output contains BRANCH_NAME and SPEC_FILE paths.
2. **Read the spec-template** to see the sections you need to fill.
3. **Write the specification** to SPEC_FILE, replacing the placeholders in each section (Overview, Requirements, Acceptance Criteria) with details from the user's description.
Invoked from the Devin terminal as /speckit.specify add OAuth login to the admin panel — Devin appends the free-text arguments into the skill body at the $ARGUMENTS placeholder and runs the skill with the declared allowed-tools.
Contribution
Additional Context
- Devin for Terminal launched in 2025 from Cognition AI and is bundled with Windsurf Enterprise (Cognition acquired Windsurf in July 2025). Parent product Devin has a large user base; the terminal CLI is newer.
- Proposed implementation approach (for maintainer sanity-check before coding):
- New subpackage
src/specify_cli/integrations/devin/ subclassing SkillsIntegration (mirrors codex/).
key = "devin" (matches shutil.which("devin") for requires_cli: True).
config.folder = ".devin/", commands_subdir = "skills", install_url = "https://cli.devin.ai/docs".
registrar_config: dir = ".devin/skills", format = "markdown", args = "$ARGUMENTS", extension = "/SKILL.md".
context_file = "AGENTS.md".
- Wire into
src/specify_cli/integrations/__init__.py::_register_builtins(), scripts/bash/update-agent-context.sh, scripts/powershell/update-agent-context.ps1, and integrations/catalog.json.
- Add
tests/integrations/test_integration_devin.py mirroring test_integration_codex.py.
- AI assistance disclosure: this issue text and the proposed integration design were drafted with help from an AI pair-programming assistant (Windsurf / Claude); I have personally read the Devin CLI docs linked above and verified the mapping to Spec Kit's
SkillsIntegration base class. Implementation and manual testing will be done by me.
Agent Name
Devin for Terminal
Official Website
https://cli.devin.ai/docs
Agent Type
CLI tool (command-line interface)
CLI Command (if applicable)
devin
Installation Method
curl -fsSL https://cli.devin.ai/install.sh | bash (macOS / Linux / WSL) — Windows via irm https://static.devin.ai/cli/setup.ps1 | iex. Also bundled with Windsurf Enterprise via the Install Devin for Terminal command palette action.
Command/Workflow Structure
Devin's user-extensible commands are called Skills (see https://cli.devin.ai/docs/extensibility/skills/overview).
Format: Markdown with YAML frontmatter.
Directory (project-scoped): .devin/skills//SKILL.md
Directory (user-scoped): ~/.config/devin/skills//SKILL.md
Invocation: / slash command inside an interactive devin session.
Frontmatter fields: name, description, allowed-tools, triggers (user and/or model).
Example (from Devin docs):
Invoked as
/reviewin the Devin terminal.This maps cleanly to Spec Kit's existing SkillsIntegration base class (same shape as Codex CLI). Proposed Spec Kit layout:
.devin/skills/speckit.specify/SKILL.md
.devin/skills/speckit.plan/SKILL.md
.devin/skills/speckit.tasks/SKILL.md (etc.)
Context / rules file: AGENTS.md at project root (Devin reads it natively — see https://cli.devin.ai/docs/extensibility/rules).
Argument Passing Pattern
Skills receive the user's free-text arguments appended after the slash command (/review fix the auth flow). There is no special placeholder token in Devin skill bodies; the prompt body is treated as the skill's instructions and any arguments the user types are added to the conversation context. Proposed registrar placeholder for Spec Kit: $ARGUMENTS (same convention already used by Codex and Claude SkillsIntegrations).
Popularity/Usage
Widely used (thousands+ of users)
Documentation Links
Quickstart: https://cli.devin.ai/docs
Essential commands: https://cli.devin.ai/docs/essential-commands
Commands & flags reference: https://cli.devin.ai/docs/reference/commands
Skills (extensibility): https://cli.devin.ai/docs/extensibility/skills/overview
Creating skills: https://cli.devin.ai/docs/extensibility/skills/creating-skills
Rules & AGENTS.md: https://cli.devin.ai/docs/extensibility/rules
Use Case
I use Devin for Terminal as my primary CLI coding agent and want to drive Spec-Driven Development workflows (/speckit.specify, /speckit.plan, /speckit.tasks, /speckit.implement) through it without maintaining a parallel fork of the templates. Devin's Skills system is a near-perfect match for Spec Kit's slash-command model, and AGENTS.md support means the project context file requires zero new convention.
Relationship to the existing
windsurfintegrationSpec Kit already supports Windsurf (the IDE) via
src/specify_cli/integrations/windsurf/. Cognition AI acquired Windsurf in July 2025, and Devin for Terminal is now distributed under that combined org (with a "Windsurf Enterprise" install path via the Windsurf command palette). Despite the shared parent company, the two are distinct products with different on-disk conventions, and the existing integration does not cover Devin:windsurf(existing)devin(proposed)requires_cliFalseTrue(binary:devin)MarkdownIntegrationSkillsIntegration.windsurf/workflows/<name>.md.devin/skills/<name>/SKILL.mdname,description,allowed-tools,triggers).windsurf/rules/specify-rules.mdAGENTS.md/workflow-namein Windsurf chat/skill-nameindevinterminalDevin can also read skills from
.windsurf/skills/<name>/SKILL.md, but that is a different directory from the existing integration's.windsurf/workflows/, so there is no overlap to reuse. Recommending a separatedevinintegration, mirroring thecodexSkillsIntegrationshape.Example Command File
Proposed
.devin/skills/speckit.specify/SKILL.mdgenerated by Spec Kit from the existingtemplates/commands/speckit.specify.mdtemplate (Spec Kit frontmatter translated to Devin's Skill frontmatter; body kept intact so$ARGUMENTScontinues to work via theregistrar_config.argssubstitution):Invoked from the Devin terminal as
/speckit.specify add OAuth login to the admin panel— Devin appends the free-text arguments into the skill body at the$ARGUMENTSplaceholder and runs the skill with the declaredallowed-tools.Contribution
Additional Context
src/specify_cli/integrations/devin/subclassingSkillsIntegration(mirrorscodex/).key = "devin"(matchesshutil.which("devin")forrequires_cli: True).config.folder = ".devin/",commands_subdir = "skills",install_url = "https://cli.devin.ai/docs".registrar_config:dir = ".devin/skills",format = "markdown",args = "$ARGUMENTS",extension = "/SKILL.md".context_file = "AGENTS.md".src/specify_cli/integrations/__init__.py::_register_builtins(),scripts/bash/update-agent-context.sh,scripts/powershell/update-agent-context.ps1, andintegrations/catalog.json.tests/integrations/test_integration_devin.pymirroringtest_integration_codex.py.SkillsIntegrationbase class. Implementation and manual testing will be done by me.