mirror of
https://github.com/github/spec-kit.git
synced 2026-08-03 06:26:30 +08:00
66 lines
2.0 KiB
Python
66 lines
2.0 KiB
Python
"""Devin for Terminal integration — skills-based agent.
|
|
|
|
Devin uses the ``.devin/skills/speckit-<name>/SKILL.md`` layout and
|
|
reads project context from ``AGENTS.md`` at the repo root. The CLI
|
|
binary is ``devin`` and skills are invoked via ``/<name>`` inside an
|
|
interactive ``devin`` session.
|
|
|
|
See: https://cli.devin.ai/docs/extensibility/skills/overview
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from ..base import IntegrationOption, SkillsIntegration
|
|
|
|
|
|
class DevinIntegration(SkillsIntegration):
|
|
"""Integration for Cognition AI's Devin for Terminal."""
|
|
|
|
key = "devin"
|
|
config = {
|
|
"name": "Devin for Terminal",
|
|
"folder": ".devin/",
|
|
"commands_subdir": "skills",
|
|
"install_url": "https://cli.devin.ai/docs",
|
|
"requires_cli": True,
|
|
}
|
|
registrar_config = {
|
|
"dir": ".devin/skills",
|
|
"format": "markdown",
|
|
"args": "$ARGUMENTS",
|
|
"extension": "/SKILL.md",
|
|
}
|
|
|
|
def build_exec_args(
|
|
self,
|
|
prompt: str,
|
|
*,
|
|
model: str | None = None,
|
|
output_json: bool = True,
|
|
) -> list[str] | None:
|
|
"""Build non-interactive CLI args for Devin for Terminal.
|
|
|
|
Devin supports ``devin -p <prompt>`` for single-turn execution
|
|
and ``--model`` for model selection, but its CLI has no flag
|
|
for structured JSON output. When ``output_json`` is requested,
|
|
Devin is still dispatched normally and returns plain-text
|
|
stdout instead of structured JSON. ``requires_cli=True`` is
|
|
kept on the integration for tool detection.
|
|
"""
|
|
args = [self._resolve_executable(), "-p", prompt]
|
|
self._apply_extra_args_env_var(args)
|
|
if model:
|
|
args.extend(["--model", model])
|
|
return args
|
|
|
|
@classmethod
|
|
def options(cls) -> list[IntegrationOption]:
|
|
return [
|
|
IntegrationOption(
|
|
"--skills",
|
|
is_flag=True,
|
|
default=True,
|
|
help="Install as agent skills (default for Devin)",
|
|
),
|
|
]
|