Skip to content

Commit 9d6c05a

Browse files
viking76L3n41cmistral-vibegithub-actions[bot]Copilot
authored
Integration of Mistral vibe support into speckit (#1725)
* Add Mistral Vibe support to Spec Kit This commit adds comprehensive support for Mistral Vibe as an AI agent in the Spec Kit project. The integration includes: - Added Mistral Vibe to AGENT_CONFIG with proper CLI tool configuration - Updated README.md with Mistral Vibe in supported agents table and examples - Modified release package scripts to generate Mistral Vibe templates - Updated both bash and PowerShell agent context update scripts - Added appropriate CLI help text and documentation Mistral Vibe is now fully supported with the same level of integration as other CLI-based agents like Claude Code, Gemini CLI, etc. Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai> * Add Mistral Vibe support to Spec Kit - Added Mistral Vibe (vibe) to AGENT_CONFIG with proper TOML format support - Updated CLI help text to include vibe as a valid AI assistant option - Added Mistral Vibe to release scripts with correct .vibe/agents/ directory structure - Updated agent context scripts (bash and PowerShell) with proper TOML file paths - Added Mistral Vibe to README.md supported agents table with v2.0 slash command notes - Used correct argument syntax {{args}} for Mistral Vibe TOML configurations Mistral Vibe is now fully integrated with the same level of support as other CLI-based agents like Gemini and Qwen. Users can now use specify init --ai vibe to create projects with Mistral Vibe support. Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai> * Add Vibe templates to GitHub release script creation of Mistral vibe zip * Add 'vibe' agent to release package script * Add 'vibe' to the list of agents in create-release-packages.sh * chore: bump version to v1.0.1 [skip ci] * Add generic spec kit templates to release script * chore: bump version to v1.0.2 [skip ci] * Update project version to 0.1.5 * Add generic spec kit templates to release script * Add 'generic' and 'qodercli' to agent list to be aligned * Update supported agents in update-agent-context.sh to be aligned * Update README with new AI assistant options to be aligned * Document --ai-commands-dir option in README to be aligned Added new option for AI commands directory in README. * Fix formatting in README.md for init arguments to be aligned * Update README with AI assistant options to be aligned Added AI options to specify init arguments in README. * Fix formatting in README.md for project-name argument * Update expected agent types in update-agent-context.sh to be aligned * Update agent types and usage in update-agent-context.ps1 to be aligned * Add support for generic AI assistant configuration to be aligned * Fix formatting in __init__.py clean space * Update AI assistant options in init command to be aligned * Add 'qodercli' to expected agent types to be aligned * Remove 'vibe' case from release package script Removed the 'vibe' case from the create-release-packages script. * Update README.md ok for this Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update .github/workflows/scripts/create-release-packages.ps1 ok to commit Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Add commands_subdir key to Mistral Vibe configuration * Rename specify-agents.toml to specify-agents.md * Update scripts/bash/update-agent-context.sh Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update .github/workflows/scripts/create-release-packages.sh Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/specify_cli/__init__.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/specify_cli/__init__.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix duplicate 'commands_subdir' in vibe configuration Removed duplicate 'commands_subdir' entries for 'vibe'. * Add support for 'vibe' command in release script add an mkdir and generate command * Change commands_subdir from 'commands' to 'prompts' * Update README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update update-agent-context.ps1 Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update create-release-packages.sh Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update create-release-packages.ps1 Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update agent list in update-agent-context.sh Kiro --------- Co-authored-by: Lénaïc Huard <lenaic@lhuard.fr> Co-authored-by: Mistral Vibe <vibe@mistral.ai> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent 3ef12ca commit 9d6c05a

File tree

7 files changed

+44
-12
lines changed

7 files changed

+44
-12
lines changed

.github/workflows/scripts/create-github-release.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ gh release create "$VERSION" \
5252
.genreleases/spec-kit-template-agy-ps-"$VERSION".zip \
5353
.genreleases/spec-kit-template-bob-sh-"$VERSION".zip \
5454
.genreleases/spec-kit-template-bob-ps-"$VERSION".zip \
55+
.genreleases/spec-kit-template-vibe-sh-"$VERSION".zip \
56+
.genreleases/spec-kit-template-vibe-ps-"$VERSION".zip \
5557
.genreleases/spec-kit-template-generic-sh-"$VERSION".zip \
5658
.genreleases/spec-kit-template-generic-ps-"$VERSION".zip \
5759
--title "Spec Kit Templates - $VERSION_NO_V" \

.github/workflows/scripts/create-release-packages.ps1

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,10 @@ function Build-Variant {
359359
$cmdDir = Join-Path $baseDir ".speckit/commands"
360360
Generate-Commands -Agent 'generic' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
361361
}
362+
'vibe' {
363+
$cmdDir = Join-Path $baseDir ".vibe/prompts"
364+
Generate-Commands -Agent 'vibe' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
365+
}
362366
default {
363367
throw "Unsupported agent '$Agent'."
364368
}
@@ -371,7 +375,7 @@ function Build-Variant {
371375
}
372376

373377
# Define all agents and scripts
374-
$AllAgents = @('claude', 'gemini', 'copilot', 'cursor-agent', 'qwen', 'opencode', 'windsurf', 'codex', 'kilocode', 'auggie', 'roo', 'codebuddy', 'amp', 'kiro-cli', 'bob', 'qodercli', 'shai', 'agy', 'generic')
378+
$AllAgents = @('claude', 'gemini', 'copilot', 'cursor-agent', 'qwen', 'opencode', 'windsurf', 'codex', 'kilocode', 'auggie', 'roo', 'codebuddy', 'amp', 'kiro-cli', 'bob', 'qodercli', 'shai', 'agy', 'vibe', 'generic')
375379
$AllScripts = @('sh', 'ps')
376380

377381
function Normalize-List {

.github/workflows/scripts/create-release-packages.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,9 @@ build_variant() {
221221
bob)
222222
mkdir -p "$base_dir/.bob/commands"
223223
generate_commands bob md "\$ARGUMENTS" "$base_dir/.bob/commands" "$script" ;;
224+
vibe)
225+
mkdir -p "$base_dir/.vibe/prompts"
226+
generate_commands vibe md "\$ARGUMENTS" "$base_dir/.vibe/prompts" "$script" ;;
224227
generic)
225228
mkdir -p "$base_dir/.speckit/commands"
226229
generate_commands generic md "\$ARGUMENTS" "$base_dir/.speckit/commands" "$script" ;;
@@ -230,7 +233,7 @@ build_variant() {
230233
}
231234

232235
# Determine agent list
233-
ALL_AGENTS=(claude gemini copilot cursor-agent qwen opencode windsurf codex kilocode auggie roo codebuddy amp shai kiro-cli agy bob qodercli generic)
236+
ALL_AGENTS=(claude gemini copilot cursor-agent qwen opencode windsurf codex kilocode auggie roo codebuddy amp shai kiro-cli agy bob vibe qodercli generic)
234237
ALL_SCRIPTS=(sh ps)
235238

236239
norm_list() {

README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ See Spec-Driven Development in action across different scenarios with these comm
171171
| [Qwen Code](https://github.com/QwenLM/qwen-code) || |
172172
| [Roo Code](https://roocode.com/) || |
173173
| [SHAI (OVHcloud)](https://github.com/ovh/shai) || |
174+
| [Mistral Vibe](https://github.com/mistralai/mistral-vibe) || |
174175
| [Windsurf](https://windsurf.com/) || |
175176
| [Antigravity (agy)](https://antigravity.google/) || |
176177
| Generic || Bring your own agent — use `--ai generic --ai-commands-dir <path>` for unsupported agents |
@@ -184,14 +185,14 @@ The `specify` command supports the following options:
184185
| Command | Description |
185186
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
186187
| `init` | Initialize a new Specify project from the latest template |
187-
| `check` | Check for installed tools (`git`, `claude`, `gemini`, `code`/`code-insiders`, `cursor-agent`, `windsurf`, `qwen`, `opencode`, `codex`, `kiro-cli`, `shai`, `qodercli`) |
188+
| `check` | Check for installed tools (`git`, `claude`, `gemini`, `code`/`code-insiders`, `cursor-agent`, `windsurf`, `qwen`, `opencode`, `codex`, `kiro-cli`, `shai`, `qodercli`, `vibe`) |
188189

189190
### `specify init` Arguments & Options
190191

191192
| Argument/Option | Type | Description |
192193
| ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
193194
| `<project-name>` | Argument | Name for your new project directory (optional if using `--here`, or use `.` for current directory) |
194-
| `--ai` | Option | AI assistant to use: `claude`, `gemini`, `copilot`, `cursor-agent`, `qwen`, `opencode`, `codex`, `windsurf`, `kilocode`, `auggie`, `roo`, `codebuddy`, `amp`, `shai`, `kiro-cli` (`kiro` alias), `agy`, `bob`, `qodercli`, or `generic` (requires `--ai-commands-dir`) |
195+
| `--ai` | Option | AI assistant to use: `claude`, `gemini`, `copilot`, `cursor-agent`, `qwen`, `opencode`, `codex`, `windsurf`, `kilocode`, `auggie`, `roo`, `codebuddy`, `amp`, `shai`, `kiro-cli` (`kiro` alias), `agy`, `bob`, `qodercli`, `vibe`, or `generic` (requires `--ai-commands-dir`) |
195196
| `--ai-commands-dir` | Option | Directory for agent command files (required with `--ai generic`, e.g. `.myagent/commands/`) |
196197
| `--script` | Option | Script variant to use: `sh` (bash/zsh) or `ps` (PowerShell) |
197198
| `--ignore-agent-tools` | Flag | Skip checks for AI agent tools like Claude Code |
@@ -230,6 +231,9 @@ specify init my-project --ai amp
230231
# Initialize with SHAI support
231232
specify init my-project --ai shai
232233

234+
# Initialize with Mistral Vibe support
235+
specify init my-project --ai vibe
236+
233237
# Initialize with IBM Bob support
234238
specify init my-project --ai bob
235239

scripts/bash/update-agent-context.sh

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
#
3131
# 5. Multi-Agent Support
3232
# - Handles agent-specific file paths and naming conventions
33-
# - Supports: Claude, Gemini, Copilot, Cursor, Qwen, opencode, Codex, Windsurf, Kilo Code, Auggie CLI, Roo Code, CodeBuddy CLI, Qoder CLI, Amp, SHAI, Kiro CLI, or Antigravity
33+
# - Supports: Claude, Gemini, Copilot, Cursor, Qwen, opencode, Codex, Windsurf, Kilo Code, Auggie CLI, Roo Code, CodeBuddy CLI, Qoder CLI, Amp, SHAI, Kiro CLI, Mistral Vibe or Antigravity
3434
# - Can update single agents or all existing agent files
3535
# - Creates default Claude file if no agent files exist
3636
#
@@ -76,6 +76,7 @@ SHAI_FILE="$REPO_ROOT/SHAI.md"
7676
KIRO_FILE="$REPO_ROOT/AGENTS.md"
7777
AGY_FILE="$REPO_ROOT/.agent/rules/specify-rules.md"
7878
BOB_FILE="$REPO_ROOT/AGENTS.md"
79+
VIBE_FILE="$REPO_ROOT/.vibe/agents/specify-agents.md"
7980

8081
# Template file
8182
TEMPLATE_FILE="$REPO_ROOT/.specify/templates/agent-file-template.md"
@@ -657,12 +658,15 @@ update_specific_agent() {
657658
bob)
658659
update_agent_file "$BOB_FILE" "IBM Bob"
659660
;;
661+
vibe)
662+
update_agent_file "$VIBE_FILE" "Mistral Vibe"
663+
;;
660664
generic)
661665
log_info "Generic agent: no predefined context file. Use the agent-specific update script for your agent."
662666
;;
663667
*)
664668
log_error "Unknown agent type '$agent_type'"
665-
log_error "Expected: claude|gemini|copilot|cursor-agent|qwen|opencode|codex|windsurf|kilocode|auggie|roo|codebuddy|amp|shai|kiro-cli|agy|bob|qodercli|generic"
669+
log_error "Expected: claude|gemini|copilot|cursor-agent|qwen|opencode|codex|windsurf|kilocode|auggie|roo|codebuddy|amp|shai|kiro-cli|agy|bob|vibe|qodercli|generic"
666670
exit 1
667671
;;
668672
esac
@@ -750,6 +754,11 @@ update_all_existing_agents() {
750754
update_agent_file "$BOB_FILE" "IBM Bob"
751755
found_agent=true
752756
fi
757+
758+
if [[ -f "$VIBE_FILE" ]]; then
759+
update_agent_file "$VIBE_FILE" "Mistral Vibe"
760+
found_agent=true
761+
fi
753762

754763
# If no agent files exist, create a default Claude file
755764
if [[ "$found_agent" == false ]]; then
@@ -774,8 +783,7 @@ print_summary() {
774783
fi
775784

776785
echo
777-
778-
log_info "Usage: $0 [claude|gemini|copilot|cursor-agent|qwen|opencode|codex|windsurf|kilocode|auggie|roo|codebuddy|amp|shai|kiro-cli|agy|bob|qodercli]"
786+
log_info "Usage: $0 [claude|gemini|copilot|cursor-agent|qwen|opencode|codex|windsurf|kilocode|auggie|roo|codebuddy|amp|shai|kiro-cli|agy|bob|qodercli|vibe]"
779787
}
780788

781789
#==============================================================================

scripts/powershell/update-agent-context.ps1

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Mirrors the behavior of scripts/bash/update-agent-context.sh:
99
2. Plan Data Extraction
1010
3. Agent File Management (create from template or update existing)
1111
4. Content Generation (technology stack, recent changes, timestamp)
12-
5. Multi-Agent Support (claude, gemini, copilot, cursor-agent, qwen, opencode, codex, windsurf, kilocode, auggie, roo, codebuddy, amp, shai, kiro-cli, agy, bob, qodercli)
12+
5. Multi-Agent Support (claude, gemini, copilot, cursor-agent, qwen, opencode, codex, windsurf, kilocode, auggie, roo, codebuddy, amp, shai, kiro-cli, agy, bob, qodercli, vibe)
1313
1414
.PARAMETER AgentType
1515
Optional agent key to update a single agent. If omitted, updates all existing agent files (creating a default Claude file if none exist).
@@ -25,7 +25,7 @@ Relies on common helper functions in common.ps1
2525
#>
2626
param(
2727
[Parameter(Position=0)]
28-
[ValidateSet('claude','gemini','copilot','cursor-agent','qwen','opencode','codex','windsurf','kilocode','auggie','roo','codebuddy','amp','shai','kiro-cli','agy','bob','qodercli','generic')]
28+
[ValidateSet('claude','gemini','copilot','cursor-agent','qwen','opencode','codex','windsurf','kilocode','auggie','roo','codebuddy','amp','shai','kiro-cli','agy','bob','qodercli','vibe','generic')]
2929
[string]$AgentType
3030
)
3131

@@ -61,6 +61,7 @@ $SHAI_FILE = Join-Path $REPO_ROOT 'SHAI.md'
6161
$KIRO_FILE = Join-Path $REPO_ROOT 'AGENTS.md'
6262
$AGY_FILE = Join-Path $REPO_ROOT '.agent/rules/specify-rules.md'
6363
$BOB_FILE = Join-Path $REPO_ROOT 'AGENTS.md'
64+
$VIBE_FILE = Join-Path $REPO_ROOT '.vibe/agents/specify-agents.md'
6465

6566
$TEMPLATE_FILE = Join-Path $REPO_ROOT '.specify/templates/agent-file-template.md'
6667

@@ -402,8 +403,9 @@ function Update-SpecificAgent {
402403
'kiro-cli' { Update-AgentFile -TargetFile $KIRO_FILE -AgentName 'Kiro CLI' }
403404
'agy' { Update-AgentFile -TargetFile $AGY_FILE -AgentName 'Antigravity' }
404405
'bob' { Update-AgentFile -TargetFile $BOB_FILE -AgentName 'IBM Bob' }
406+
'vibe' { Update-AgentFile -TargetFile $VIBE_FILE -AgentName 'Mistral Vibe' }
405407
'generic' { Write-Info 'Generic agent: no predefined context file. Use the agent-specific update script for your agent.' }
406-
default { Write-Err "Unknown agent type '$Type'"; Write-Err 'Expected: claude|gemini|copilot|cursor-agent|qwen|opencode|codex|windsurf|kilocode|auggie|roo|codebuddy|amp|shai|kiro-cli|agy|bob|qodercli|generic'; return $false }
408+
default { Write-Err "Unknown agent type '$Type'"; Write-Err 'Expected: claude|gemini|copilot|cursor-agent|qwen|opencode|codex|windsurf|kilocode|auggie|roo|codebuddy|amp|shai|kiro-cli|agy|bob|qodercli|vibe|generic'; return $false }
407409
}
408410
}
409411

@@ -426,6 +428,7 @@ function Update-AllExistingAgents {
426428
if (Test-Path $KIRO_FILE) { if (-not (Update-AgentFile -TargetFile $KIRO_FILE -AgentName 'Kiro CLI')) { $ok = $false }; $found = $true }
427429
if (Test-Path $AGY_FILE) { if (-not (Update-AgentFile -TargetFile $AGY_FILE -AgentName 'Antigravity')) { $ok = $false }; $found = $true }
428430
if (Test-Path $BOB_FILE) { if (-not (Update-AgentFile -TargetFile $BOB_FILE -AgentName 'IBM Bob')) { $ok = $false }; $found = $true }
431+
if (Test-Path $VIBE_FILE) { if (-not (Update-AgentFile -TargetFile $VIBE_FILE -AgentName 'Mistral Vibe')) { $ok = $false }; $found = $true }
429432
if (-not $found) {
430433
Write-Info 'No existing agent files found, creating default Claude file...'
431434
if (-not (Update-AgentFile -TargetFile $CLAUDE_FILE -AgentName 'Claude Code')) { $ok = $false }
@@ -440,7 +443,7 @@ function Print-Summary {
440443
if ($NEW_FRAMEWORK) { Write-Host " - Added framework: $NEW_FRAMEWORK" }
441444
if ($NEW_DB -and $NEW_DB -ne 'N/A') { Write-Host " - Added database: $NEW_DB" }
442445
Write-Host ''
443-
Write-Info 'Usage: ./update-agent-context.ps1 [-AgentType claude|gemini|copilot|cursor-agent|qwen|opencode|codex|windsurf|kilocode|auggie|roo|codebuddy|amp|shai|kiro-cli|agy|bob|qodercli|generic]'
446+
Write-Info 'Usage: ./update-agent-context.ps1 [-AgentType claude|gemini|copilot|cursor-agent|qwen|opencode|codex|windsurf|kilocode|auggie|roo|codebuddy|amp|shai|kiro-cli|agy|bob|qodercli|vibe|generic]'
444447
}
445448

446449
function Main {

src/specify_cli/__init__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,13 @@ def _format_rate_limit_error(status_code: int, headers: httpx.Headers, url: str)
251251
"install_url": None, # IDE-based
252252
"requires_cli": False,
253253
},
254+
"vibe": {
255+
"name": "Mistral Vibe",
256+
"folder": ".vibe/",
257+
"commands_subdir": "prompts",
258+
"install_url": "https://github.com/mistralai/mistral-vibe",
259+
"requires_cli": True,
260+
},
254261
"generic": {
255262
"name": "Generic (bring your own agent)",
256263
"folder": None, # Set dynamically via --ai-commands-dir
@@ -1280,6 +1287,7 @@ def init(
12801287
specify init --here --ai claude # Alternative syntax for current directory
12811288
specify init --here --ai codex
12821289
specify init --here --ai codebuddy
1290+
specify init --here --ai vibe # Initialize with Mistral Vibe support
12831291
specify init --here
12841292
specify init --here --force # Skip confirmation when current directory not empty
12851293
specify init my-project --ai claude --ai-skills # Install agent skills

0 commit comments

Comments
 (0)