Skip to content

Commit fd101d5

Browse files
natechadwicktest
andauthored
feat(integrations): add Grok Build skills-based integration (#3535)
* feat(integrations): add Grok Build skills-based integration Add first-class support for xAI Grok Build via SkillsIntegration, installing speckit skills under .grok/skills and wiring init/invocation/catalog surfaces. Assisted-by: Grok Build (model: grok-4, supervised) * test+docs: address Copilot review on Grok multi-install and next steps Assert init next-steps guidance for Grok (.grok/skills, /speckit-*) and clarify that multi-install safety is path/manifest isolation, not agent-context defaults such as shared AGENTS.md. * fix(integrations): Grok headless --always-approve and isolation paths Document Grok multi-install isolation as .grok/skills and .grok/rules. Override build_exec_args to pass --always-approve so non-interactive dispatch is not blocked at tool permission gates. * docs(integrations): list only managed .grok/skills for Grok isolation Multi-install isolation documents Spec Kit-managed paths; Grok only writes .grok/skills, so drop the read-only .grok/rules entry. * fix(integrations): always-slash Grok hooks and refresh catalog date Move grok to ALWAYS_SLASH_AGENTS so hooks never emit /speckit.plan when ai_skills is missing/false. Update slash-format tests, persist ai_skills on init, and bump catalog updated_at for the Grok entry. --------- Co-authored-by: Nate Chadwick <1232206+natechadwick@users.noreply.github.com> Co-authored-by: test <test@example.com>
1 parent a7f6fe8 commit fd101d5

14 files changed

Lines changed: 284 additions & 6 deletions

File tree

.github/ISSUE_TEMPLATE/agent_request.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ body:
88
value: |
99
Thanks for requesting a new agent! Before submitting, please check if the agent is already supported.
1010
11-
**Currently supported agents**: Amp, Antigravity, Auggie CLI, Claude Code, Cline, CodeBuddy, Codex CLI, Cursor, Devin for Terminal, Firebender, Forge, Gemini CLI, GitHub Copilot, Goose, Hermes Agent, IBM Bob, Junie, Kilo Code, Kimi Code, Kiro CLI, Lingma, Mistral Vibe, Oh My Pi, opencode, Pi Coding Agent, Qoder CLI, Qwen Code, RovoDev ACLI, SHAI, Tabnine CLI, Trae, ZCode, Zed
11+
**Currently supported agents**: Amp, Antigravity, Auggie CLI, Claude Code, Cline, CodeBuddy, Codex CLI, Cursor, Devin for Terminal, Firebender, Forge, Gemini CLI, GitHub Copilot, Goose, Grok Build, Hermes Agent, IBM Bob, Junie, Kilo Code, Kimi Code, Kiro CLI, Lingma, Mistral Vibe, Oh My Pi, opencode, Pi Coding Agent, Qoder CLI, Qwen Code, RovoDev ACLI, SHAI, Tabnine CLI, Trae, ZCode, Zed
1212
1313
- type: input
1414
id: agent-name

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ body:
7676
- Gemini CLI
7777
- GitHub Copilot
7878
- Goose
79+
- Grok Build
7980
- Hermes Agent
8081
- IBM Bob
8182
- Junie

.github/ISSUE_TEMPLATE/feature_request.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ body:
7070
- Gemini CLI
7171
- GitHub Copilot
7272
- Goose
73+
- Grok Build
7374
- Hermes Agent
7475
- IBM Bob
7576
- Junie

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,10 @@ docs/dev
5353

5454
# The following directories/file are intentionally ignored so that they are not accidentally
5555
# committed to the repository. They contain the scaffolding `specify init --integration copilot`
56-
# does and they are meant for dogfooding Spec Kit during its own feature development.
56+
# (or other agents) does and they are meant for dogfooding Spec Kit during its own feature development.
5757
.github/agents/
5858
.github/prompts/
5959
.github/copilot-instructions.md
60+
.grok/
6061
.specify/
6162
specs/

docs/reference/integrations.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ The Specify CLI supports a wide range of AI coding agents. When you run `specify
2020
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `gemini` | |
2121
| [GitHub Copilot](https://code.visualstudio.com/) | `copilot` | Defaults to legacy markdown mode: `.agent.md` command files under `.github/agents/`, companion `.prompt.md` files under `.github/prompts/`, and a `.vscode/settings.json` merge. Pass `--integration-options="--skills"` to scaffold skills as `speckit-<command>/SKILL.md` under `.github/skills/` instead. Legacy markdown mode is deprecated and will stop being the default in a future release. |
2222
| [Goose](https://goose-docs.ai/) | `goose` | Uses YAML recipe format in `.goose/recipes/` |
23+
| [Grok Build](https://docs.x.ai/build/overview) | `grok` | Skills-based integration; installs skills into `.grok/skills` and invokes them as `/speckit-<command>` |
2324
| [Hermes](https://github.com/NousResearch/hermes-agent) | `hermes` | Skills-based integration; installs skills globally into `~/.hermes/skills/` |
2425
| [IBM Bob](https://www.ibm.com/products/bob) | `bob` | IDE-based agent |
2526
| [Junie](https://junie.jetbrains.com/) | `junie` | |
@@ -249,7 +250,11 @@ Spec Kit tracks one default integration in `.specify/integration.json` with `def
249250

250251
### Which integrations are multi-install safe?
251252

252-
An integration is multi-install safe when it uses isolated agent directories, a dedicated context file that does not collide with another safe integration, stable command invocation settings, and a separate install manifest. Shared Spec Kit templates remain aligned to the single default integration.
253+
An integration is multi-install safe when it uses a static, unique agent root and command directory, stable command invocation settings, and a separate install manifest whose managed files do not overlap another safe integration. Registry tests enforce those path and manifest invariants. Shared Spec Kit templates remain aligned to the single default integration.
254+
255+
The Isolation column below lists paths Spec Kit manages for that integration (skills/commands roots and any integration-owned rule files). It is not a full inventory of every file an agent may read.
256+
257+
**Agent-context defaults are separate.** The optional agent-context extension maps each integration to a default context file in `extensions/agent-context/agent-context-defaults.json`. Those defaults are independent of multi-install safety: several agents may share a root file such as `AGENTS.md` when the extension is enabled. Multi-install safety does not require a unique context file per safe integration.
253258

254259
The currently declared multi-install safe integrations are:
255260

@@ -263,6 +268,7 @@ The currently declared multi-install safe integrations are:
263268
| `cursor-agent` | `.cursor/skills`, `.cursor/rules/specify-rules.mdc` |
264269
| `firebender` | `.firebender/commands`, `.firebender/rules/specify-rules.mdc` |
265270
| `gemini` | `.gemini/commands`, `GEMINI.md` |
271+
| `grok` | `.grok/skills` |
266272
| `junie` | `.junie/commands`, `.junie/AGENTS.md` |
267273
| `kilocode` | `.kilocode/workflows`, `.kilocode/rules/specify-rules.md` |
268274
| `qodercli` | `.qoder/commands`, `QODER.md` |
@@ -272,7 +278,7 @@ The currently declared multi-install safe integrations are:
272278
| `trae` | `.trae/skills`, `.trae/rules/project_rules.md` |
273279
| `zcode` | `.zcode/skills`, `ZCODE.md` |
274280

275-
Integrations that share a context file or command directory with another integration, require dynamic install paths such as `--commands-dir`, or merge shared tool settings are not declared safe by default. They can still be installed alongside another integration with `--force`.
281+
Integrations that share a command directory with another integration, require dynamic install paths such as `--commands-dir`, or merge shared tool settings are not declared safe by default. They can still be installed alongside another integration with `--force`.
276282

277283
### What happens to my changes when I uninstall or switch?
278284

extensions/agent-context/agent-context-defaults.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"gemini": "GEMINI.md",
1818
"generic": "AGENTS.md",
1919
"goose": "AGENTS.md",
20+
"grok": "AGENTS.md",
2021
"hermes": "AGENTS.md",
2122
"junie": ".junie/AGENTS.md",
2223
"kilocode": ".kilocode/rules/specify-rules.md",

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-06-23T00:00:00Z",
3+
"updated_at": "2026-07-15T00:00:00Z",
44
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/integrations/catalog.json",
55
"integrations": {
66
"claude": {
@@ -282,6 +282,15 @@
282282
"repository": "https://github.com/github/spec-kit",
283283
"tags": ["cli"]
284284
},
285+
"grok": {
286+
"id": "grok",
287+
"name": "Grok Build",
288+
"version": "1.0.0",
289+
"description": "xAI Grok Build CLI skills-based integration",
290+
"author": "spec-kit-core",
291+
"repository": "https://github.com/github/spec-kit",
292+
"tags": ["cli", "skills", "xai"]
293+
},
285294
"hermes": {
286295
"id": "hermes",
287296
"name": "Hermes Agent",

src/specify_cli/_invocation_style.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
DOLLAR_SKILLS_AGENTS: frozenset[str] = frozenset({"codex", "zcode"})
1313

1414
# Agents that always render /speckit-<name>, regardless of ai_skills.
15-
ALWAYS_SLASH_AGENTS: frozenset[str] = frozenset({"devin", "trae", "zed"})
15+
ALWAYS_SLASH_AGENTS: frozenset[str] = frozenset({"devin", "grok", "trae", "zed"})
1616

1717
# Agents that render /speckit-<name> only when ai_skills is enabled.
1818
CONDITIONAL_SLASH_AGENTS: frozenset[str] = frozenset(

src/specify_cli/commands/init.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -701,6 +701,7 @@ def init(
701701
copilot_skill_mode = selected_ai == "copilot" and _is_skills_integration
702702
devin_skill_mode = selected_ai == "devin"
703703
zed_skill_mode = selected_ai == "zed" and _is_skills_integration
704+
grok_skill_mode = selected_ai == "grok" and _is_skills_integration
704705
cline_skill_mode = selected_ai == "cline"
705706
native_skill_mode = (
706707
codex_skill_mode
@@ -713,6 +714,7 @@ def init(
713714
or copilot_skill_mode
714715
or devin_skill_mode
715716
or zed_skill_mode
717+
or grok_skill_mode
716718
)
717719

718720
if codex_skill_mode:
@@ -745,6 +747,11 @@ def init(
745747
f"{step_num}. Start Zed in this project directory; spec-kit skills were installed to [cyan].agents/skills[/cyan]"
746748
)
747749
step_num += 1
750+
if grok_skill_mode:
751+
steps_lines.append(
752+
f"{step_num}. Start Grok Build in this project directory; spec-kit skills were installed to [cyan].grok/skills[/cyan]"
753+
)
754+
step_num += 1
748755
usage_label = "skills" if native_skill_mode else "slash commands"
749756

750757
from .._invocation_style import (

src/specify_cli/integrations/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ def _register_builtins() -> None:
6363
from .gemini import GeminiIntegration
6464
from .generic import GenericIntegration
6565
from .goose import GooseIntegration
66+
from .grok import GrokIntegration
6667
from .hermes import HermesIntegration
6768
from .junie import JunieIntegration
6869
from .kilocode import KilocodeIntegration
@@ -99,6 +100,7 @@ def _register_builtins() -> None:
99100
_register(GeminiIntegration())
100101
_register(GenericIntegration())
101102
_register(GooseIntegration())
103+
_register(GrokIntegration())
102104
_register(HermesIntegration())
103105
_register(JunieIntegration())
104106
_register(KilocodeIntegration())

0 commit comments

Comments
 (0)