From e2882a22c102e89dec9f307ae96adb80fb3c1be0 Mon Sep 17 00:00:00 2001 From: qiyang <18901998513@163.com> Date: Thu, 23 Apr 2026 23:43:11 +0800 Subject: [PATCH 1/4] add lingma support --- docs/reference/integrations.md | 1 + integrations/catalog.json | 9 +++++ src/specify_cli/integrations/__init__.py | 2 + .../integrations/lingma/__init__.py | 40 +++++++++++++++++++ tests/integrations/test_integration_lingma.py | 11 +++++ 5 files changed, 63 insertions(+) create mode 100644 src/specify_cli/integrations/lingma/__init__.py create mode 100644 tests/integrations/test_integration_lingma.py diff --git a/docs/reference/integrations.md b/docs/reference/integrations.md index dcb9a2b354..0abd1b9eb9 100644 --- a/docs/reference/integrations.md +++ b/docs/reference/integrations.md @@ -23,6 +23,7 @@ The Specify CLI supports a wide range of AI coding agents. When you run `specify | [Kilo Code](https://github.com/Kilo-Org/kilocode) | `kilocode` | | | [Kimi Code](https://code.kimi.com/) | `kimi` | Skills-based integration; supports `--migrate-legacy` for dotted→hyphenated directory migration | | [Kiro CLI](https://kiro.dev/docs/cli/) | `kiro-cli` | Alias: `--integration kiro` | +| [Lingma](https://lingma.aliyun.com/) | `lingma` | Skills-based integration; skills are installed automatically | | [Mistral Vibe](https://github.com/mistralai/mistral-vibe) | `vibe` | | | [opencode](https://opencode.ai/) | `opencode` | | | [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) | diff --git a/integrations/catalog.json b/integrations/catalog.json index 3df96b8789..7c89344adb 100644 --- a/integrations/catalog.json +++ b/integrations/catalog.json @@ -102,6 +102,15 @@ "repository": "https://github.com/github/spec-kit", "tags": ["cli"] }, + "lingma": { + "id": "lingma", + "name": "Lingma", + "version": "1.0.0", + "description": "Lingma IDE skills-based integration", + "author": "spec-kit-core", + "repository": "https://github.com/github/spec-kit", + "tags": ["ide", "skills"] + }, "junie": { "id": "junie", "name": "Junie", diff --git a/src/specify_cli/integrations/__init__.py b/src/specify_cli/integrations/__init__.py index a5fb3833dc..82e864be40 100644 --- a/src/specify_cli/integrations/__init__.py +++ b/src/specify_cli/integrations/__init__.py @@ -65,6 +65,7 @@ def _register_builtins() -> None: from .kilocode import KilocodeIntegration from .kimi import KimiIntegration from .kiro_cli import KiroCliIntegration + from .lingma import LingmaIntegration from .opencode import OpencodeIntegration from .pi import PiIntegration from .qodercli import QodercliIntegration @@ -95,6 +96,7 @@ def _register_builtins() -> None: _register(KilocodeIntegration()) _register(KimiIntegration()) _register(KiroCliIntegration()) + _register(LingmaIntegration()) _register(OpencodeIntegration()) _register(PiIntegration()) _register(QodercliIntegration()) diff --git a/src/specify_cli/integrations/lingma/__init__.py b/src/specify_cli/integrations/lingma/__init__.py new file mode 100644 index 0000000000..c1a8eae3fb --- /dev/null +++ b/src/specify_cli/integrations/lingma/__init__.py @@ -0,0 +1,40 @@ +"""Lingma IDE integration. — skills-based agent. + +Lingma IDE uses ``.lingma/skills/speckit-/SKILL.md`` layout. +In the Specify CLI Lingma integration, explicit command support was deprecated +since v0.5.1; ``--skills`` defaults to ``True``. +""" + +from __future__ import annotations +from ..base import IntegrationOption, SkillsIntegration + + +class LingmaIntegration(SkillsIntegration): + """Integration for Lingma IDE.""" + + key = "lingma" + config = { + "name": "Lingma", + "folder": ".lingma/", + "commands_subdir": "skills", + "install_url": None, + "requires_cli": False, + } + registrar_config = { + "dir": ".lingma/skills", + "format": "markdown", + "args": "$ARGUMENTS", + "extension": "/SKILL.md", + } + context_file = ".lingma/rules/project_rules.md" + + @classmethod + def options(cls) -> list[IntegrationOption]: + return [ + IntegrationOption( + "--skills", + is_flag=True, + default=True, + help="Install as agent skills (default for lingma since v0.5.1)", + ), + ] diff --git a/tests/integrations/test_integration_lingma.py b/tests/integrations/test_integration_lingma.py new file mode 100644 index 0000000000..44c240eae6 --- /dev/null +++ b/tests/integrations/test_integration_lingma.py @@ -0,0 +1,11 @@ +"""Tests for LingmaIntegration.""" + +from .test_integration_base_skills import SkillsIntegrationTests + + +class TestLingmaIntegration(SkillsIntegrationTests): + KEY = "lingma" + FOLDER = ".lingma/" + COMMANDS_SUBDIR = "skills" + REGISTRAR_DIR = ".lingma/skills" + CONTEXT_FILE = ".lingma/rules/project_rules.md" From 7d8f2dd870b98109d1a1bbab4002bbf2eccd9eb5 Mon Sep 17 00:00:00 2001 From: qiyang <18901998513@163.com> Date: Thu, 23 Apr 2026 23:44:09 +0800 Subject: [PATCH 2/4] fix --- integrations/catalog.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/integrations/catalog.json b/integrations/catalog.json index 7c89344adb..2024a8a2d5 100644 --- a/integrations/catalog.json +++ b/integrations/catalog.json @@ -102,15 +102,6 @@ "repository": "https://github.com/github/spec-kit", "tags": ["cli"] }, - "lingma": { - "id": "lingma", - "name": "Lingma", - "version": "1.0.0", - "description": "Lingma IDE skills-based integration", - "author": "spec-kit-core", - "repository": "https://github.com/github/spec-kit", - "tags": ["ide", "skills"] - }, "junie": { "id": "junie", "name": "Junie", @@ -210,6 +201,15 @@ "repository": "https://github.com/github/spec-kit", "tags": ["cli", "skills"] }, + "lingma": { + "id": "lingma", + "name": "Lingma", + "version": "1.0.0", + "description": "Lingma IDE skills-based integration", + "author": "spec-kit-core", + "repository": "https://github.com/github/spec-kit", + "tags": ["ide", "skills"] + }, "pi": { "id": "pi", "name": "Pi Coding Agent", From 6f1ea8e76a2ed7661392733bb0576a15fb5f10d5 Mon Sep 17 00:00:00 2001 From: "qiyang.yuan" <56426042+WhiteGive-Boy@users.noreply.github.com> Date: Fri, 24 Apr 2026 10:28:38 +0800 Subject: [PATCH 3/4] fix context file --- src/specify_cli/integrations/lingma/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/specify_cli/integrations/lingma/__init__.py b/src/specify_cli/integrations/lingma/__init__.py index c1a8eae3fb..7ffea46cce 100644 --- a/src/specify_cli/integrations/lingma/__init__.py +++ b/src/specify_cli/integrations/lingma/__init__.py @@ -26,7 +26,7 @@ class LingmaIntegration(SkillsIntegration): "args": "$ARGUMENTS", "extension": "/SKILL.md", } - context_file = ".lingma/rules/project_rules.md" + context_file = ".lingma/rules/specify-rules.md" @classmethod def options(cls) -> list[IntegrationOption]: From 1b4ec2a561751219ad26e52af0b15d6133781b18 Mon Sep 17 00:00:00 2001 From: "qiyang.yuan" <56426042+WhiteGive-Boy@users.noreply.github.com> Date: Fri, 24 Apr 2026 10:29:39 +0800 Subject: [PATCH 4/4] Update CONTEXT_FILE path in test integration --- tests/integrations/test_integration_lingma.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integrations/test_integration_lingma.py b/tests/integrations/test_integration_lingma.py index 44c240eae6..959de8d657 100644 --- a/tests/integrations/test_integration_lingma.py +++ b/tests/integrations/test_integration_lingma.py @@ -8,4 +8,4 @@ class TestLingmaIntegration(SkillsIntegrationTests): FOLDER = ".lingma/" COMMANDS_SUBDIR = "skills" REGISTRAR_DIR = ".lingma/skills" - CONTEXT_FILE = ".lingma/rules/project_rules.md" + CONTEXT_FILE = ".lingma/rules/specify-rules.md"