Skip to content

Commit f5b675e

Browse files
feat: Add lingma support (#2348)
* add lingma support * fix * fix context file * Update CONTEXT_FILE path in test integration * fix IntegrationOption.default * fix IntegrationOption.defaultfix * fix: address Copilot review feedback - Add blank line after __future__ import (PEP 8) - Remove trailing whitespace at end of lingma/__init__.py - Bump integrations/catalog.json updated_at timestamp - Add Lingma to supported agent list in README.md * fix: address Copilot review feedback (round 4) - Reword module docstring: Lingma is a brand-new skills-only integration with no prior command-mode history, so 'deprecated since v0.5.1' wording (copied from Trae) was misleading - Remove Lingma from README CLI-tool check list: Lingma is IDE-based (requires_cli=False) and is explicitly skipped by specify init / specify check tool detection
1 parent 38bb88b commit f5b675e

5 files changed

Lines changed: 65 additions & 1 deletion

File tree

docs/reference/integrations.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ The Specify CLI supports a wide range of AI coding agents. When you run `specify
2424
| [Kilo Code](https://github.com/Kilo-Org/kilocode) | `kilocode` | |
2525
| [Kimi Code](https://code.kimi.com/) | `kimi` | Skills-based integration; supports `--migrate-legacy` for dotted→hyphenated directory migration |
2626
| [Kiro CLI](https://kiro.dev/docs/cli/) | `kiro-cli` | Alias: `--integration kiro` |
27+
| [Lingma](https://lingma.aliyun.com/) | `lingma` | Skills-based integration; skills are installed automatically |
2728
| [Mistral Vibe](https://github.com/mistralai/mistral-vibe) | `vibe` | |
2829
| [opencode](https://opencode.ai/) | `opencode` | |
2930
| [Pi Coding Agent](https://pi.dev) | `pi` | Pi doesn't have MCP support out of the box, so `taskstoissues` won't work as intended. MCP support can be added via [extensions](https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent#extensions) |

integrations/catalog.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"schema_version": "1.0",
3-
"updated_at": "2026-04-28T00:00:00Z",
3+
"updated_at": "2026-04-29T00:00:00Z",
44
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/integrations/catalog.json",
55
"integrations": {
66
"claude": {
@@ -210,6 +210,15 @@
210210
"repository": "https://github.com/github/spec-kit",
211211
"tags": ["cli", "skills"]
212212
},
213+
"lingma": {
214+
"id": "lingma",
215+
"name": "Lingma",
216+
"version": "1.0.0",
217+
"description": "Lingma IDE skills-based integration",
218+
"author": "spec-kit-core",
219+
"repository": "https://github.com/github/spec-kit",
220+
"tags": ["ide", "skills"]
221+
},
213222
"pi": {
214223
"id": "pi",
215224
"name": "Pi Coding Agent",

src/specify_cli/integrations/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ def _register_builtins() -> None:
6666
from .kilocode import KilocodeIntegration
6767
from .kimi import KimiIntegration
6868
from .kiro_cli import KiroCliIntegration
69+
from .lingma import LingmaIntegration
6970
from .opencode import OpencodeIntegration
7071
from .pi import PiIntegration
7172
from .qodercli import QodercliIntegration
@@ -97,6 +98,7 @@ def _register_builtins() -> None:
9798
_register(KilocodeIntegration())
9899
_register(KimiIntegration())
99100
_register(KiroCliIntegration())
101+
_register(LingmaIntegration())
100102
_register(OpencodeIntegration())
101103
_register(PiIntegration())
102104
_register(QodercliIntegration())
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
"""Lingma IDE integration. — skills-based agent.
2+
3+
Lingma IDE uses ``.lingma/skills/speckit-<name>/SKILL.md`` layout.
4+
In Specify CLI, the Lingma integration is skills-only, and ``--skills``
5+
defaults to ``True``.
6+
"""
7+
8+
from __future__ import annotations
9+
10+
from ..base import IntegrationOption, SkillsIntegration
11+
12+
13+
class LingmaIntegration(SkillsIntegration):
14+
"""Integration for Lingma IDE."""
15+
16+
key = "lingma"
17+
config = {
18+
"name": "Lingma",
19+
"folder": ".lingma/",
20+
"commands_subdir": "skills",
21+
"install_url": None,
22+
"requires_cli": False,
23+
}
24+
registrar_config = {
25+
"dir": ".lingma/skills",
26+
"format": "markdown",
27+
"args": "$ARGUMENTS",
28+
"extension": "/SKILL.md",
29+
}
30+
context_file = ".lingma/rules/specify-rules.md"
31+
32+
@classmethod
33+
def options(cls) -> list[IntegrationOption]:
34+
return [
35+
IntegrationOption(
36+
"--skills",
37+
is_flag=True,
38+
default=True,
39+
help="Install as agent skills",
40+
),
41+
]
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
"""Tests for LingmaIntegration."""
2+
3+
from .test_integration_base_skills import SkillsIntegrationTests
4+
5+
6+
class TestLingmaIntegration(SkillsIntegrationTests):
7+
KEY = "lingma"
8+
FOLDER = ".lingma/"
9+
COMMANDS_SUBDIR = "skills"
10+
REGISTRAR_DIR = ".lingma/skills"
11+
CONTEXT_FILE = ".lingma/rules/specify-rules.md"

0 commit comments

Comments
 (0)