Integration of Mistral vibe support into speckit#1725
Integration of Mistral vibe support into speckit#1725viking76 wants to merge 26 commits intogithub:mainfrom
Conversation
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>
- 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>
creation of Mistral vibe zip
Added new option for AI commands directory in README.
Added AI options to specify init arguments in README.
There was a problem hiding this comment.
Pull request overview
Integrates Mistral Vibe as a supported AI agent across Spec Kit’s CLI, documentation, agent-context update scripts, and template release packaging so users can initialize and distribute Vibe-compatible project templates.
Changes:
- Add
vibeto the CLI agent configuration andspecify init --aihelp/examples. - Document Vibe support in
README.mdand include it in tool checks/docs. - Update release packaging + agent-context update scripts to include Vibe.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
src/specify_cli/__init__.py |
Adds vibe to AGENT_CONFIG and exposes it via specify init --ai help/examples. |
scripts/powershell/update-agent-context.ps1 |
Adds vibe to supported agent set and file path mapping for context updates. |
scripts/bash/update-agent-context.sh |
Adds Vibe context file support to bash agent context updater. |
README.md |
Documents Mistral Vibe as a supported agent and adds usage examples. |
.github/workflows/scripts/create-release-packages.sh |
Attempts to generate Vibe template assets in release packages. |
.github/workflows/scripts/create-release-packages.ps1 |
Adds Vibe template generation to PowerShell release packaging. |
.github/workflows/scripts/create-github-release.sh |
Includes Vibe template zips in the GitHub release artifact list. |
Comments suppressed due to low confidence (1)
src/specify_cli/init.py:259
- Spec Kit’s extension command registration uses CommandRegistrar.AGENT_CONFIGS (in src/specify_cli/extensions.py) rather than AGENT_CONFIG. Since vibe is added only to AGENT_CONFIG,
specify extension ...will not be able to register commands for vibe projects. If vibe support is intended to be complete, add a corresponding entry to the extension registrar config as well.
"vibe": {
"name": "Mistral Vibe",
"folder": ".vibe/",
"install_url": "https://github.com/mistralai/mistral-vibe",
"requires_cli": True,
},
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| project_name: str = typer.Argument(None, help="Name for your new project directory (optional if using --here, or use '.' for current directory)"), | ||
| ai_assistant: str = typer.Option(None, "--ai", help="AI assistant to use: claude, gemini, copilot, cursor-agent, qwen, opencode, codex, windsurf, kilocode, auggie, codebuddy, amp, shai, q, agy, bob, qodercli, or generic (requires --ai-commands-dir)"), | ||
| ai_assistant: str = typer.Option(None, "--ai", help="AI assistant to use: claude, gemini, copilot, cursor-agent, qwen, opencode, codex, windsurf, kilocode, auggie, codebuddy, amp, shai, q, agy, bob, qodercli, vibe, or generic (requires --ai-commands-dir)"), | ||
| ai_commands_dir: str = typer.Option(None, "--ai-commands-dir", help="Directory for agent command files (required with --ai generic, e.g. .myagent/commands/)"), |
There was a problem hiding this comment.
The --ai help string is now edited, but it still doesn’t list all valid values from AGENT_CONFIG (e.g., roo is supported but not mentioned). Since this string is user-facing, please update it to accurately reflect the full set of accepted agent keys.
See below for a potential fix:
AI_OPTION_HELP = (
"AI assistant to use. Supported: "
+ ", ".join(sorted(AGENT_CONFIG.keys()))
+ "; or 'generic' (requires --ai-commands-dir)"
)
@app.command()
def init(
project_name: str = typer.Argument(None, help="Name for your new project directory (optional if using --here, or use '.' for current directory)"),
ai_assistant: str = typer.Option(None, "--ai", help=AI_OPTION_HELP),
| }, | ||
| "vibe": { | ||
| "name": "Mistral Vibe", | ||
| "folder": ".vibe/", |
There was a problem hiding this comment.
In AGENT_CONFIG, the new "vibe" entry omits "commands_subdir". The code defaults this to "commands" in places like install_ai_skills(), so the template/layout must actually place commands under .vibe/commands for features like --ai-skills to work. Please set commands_subdir explicitly for vibe to match the intended Vibe directory structure, and keep it consistent with the release template packaging scripts.
This issue also appears on line 254 of the same file.
| "folder": ".vibe/", | |
| "folder": ".vibe/", | |
| "commands_subdir": "commands", |
| vibe) | ||
| mkdir -p "$base_dir/.vibe/agents" | ||
| generate_commands vibe toml "{{args}}" "$base_dir/.vibe/agents" "$script" ;; |
There was a problem hiding this comment.
The case $agent in block defines vibe) twice. In bash, the first match will always win, so the later vibe branch is unreachable and the intended Vibe package layout becomes ambiguous. Remove the duplicate and choose a single Vibe directory/format (and keep it consistent with the CLI’s AGENT_CONFIG and the PowerShell packaging script).
| vibe) | |
| mkdir -p "$base_dir/.vibe/agents" | |
| generate_commands vibe toml "{{args}}" "$base_dir/.vibe/agents" "$script" ;; |
| Generate-Commands -Agent 'generic' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script | ||
| } | ||
| 'vibe' { | ||
| $cmdDir = Join-Path $baseDir ".vibe/commands" |
There was a problem hiding this comment.
The Vibe release template generation here writes commands to .vibe/commands as Markdown, but the bash packaging script currently generates Vibe content under .vibe/prompts (and also has a conflicting .vibe/agents branch). Please align the PowerShell and bash packaging scripts on the same Vibe directory structure and file format so the produced template zips are equivalent across build paths.
| $cmdDir = Join-Path $baseDir ".vibe/commands" | |
| $cmdDir = Join-Path $baseDir ".vibe/prompts" |
| | `--ai` | Option | AI assistant to use: `claude`, `gemini`, `copilot`, `cursor-agent`, `qwen`, `opencode`, `codex`, `windsurf`, `kilocode`, `auggie`, `roo`, `codebuddy`, `amp`, `shai`, `q`, `agy`, `bob`, `qodercli`, or `generic` (requires `--ai-commands-dir`) | | ||
| | `--ai` | Option | AI assistant to use: `claude`, `gemini`, `copilot`, `cursor-agent`, `qwen`, `opencode`, `codex`, `windsurf`, `kilocode`, `auggie`, `roo`, `codebuddy`, `amp`, `shai`, `q`, `agy`, `bob`, `qodercli`, `vibe`, or `generic` (requires `--ai-commands-dir`) | | ||
| | `--ai-commands-dir` | Option | Directory for agent command files (required with `--ai generic`, e.g. `.myagent/commands/`) | | ||
| | |
There was a problem hiding this comment.
This README table has a stray line (|-less whitespace-only row) inside the markdown table, which will break table rendering in many markdown parsers. Remove that line so the specify init options table remains a valid markdown table.
| | |
| Q_FILE="$REPO_ROOT/AGENTS.md" | ||
| AGY_FILE="$REPO_ROOT/.agent/rules/specify-rules.md" | ||
| BOB_FILE="$REPO_ROOT/AGENTS.md" | ||
| VIBE_FILE="$REPO_ROOT/.vibe/agents/specify-agents.toml" |
There was a problem hiding this comment.
VIBE_FILE is set to a .toml path, but update_agent_file/create_new_agent_file always generate Markdown content from .specify/templates/agent-file-template.md (and update_existing_agent_file assumes Markdown headings). This will produce invalid TOML and likely break Vibe tooling. Either point VIBE_FILE to the correct markdown-based context file for Vibe, or implement a TOML-specific generator/update path for this agent.
| VIBE_FILE="$REPO_ROOT/.vibe/agents/specify-agents.toml" | |
| VIBE_FILE="$REPO_ROOT/.vibe/agents/specify-agents.md" |
| $Q_FILE = Join-Path $REPO_ROOT 'AGENTS.md' | ||
| $AGY_FILE = Join-Path $REPO_ROOT '.agent/rules/specify-rules.md' | ||
| $BOB_FILE = Join-Path $REPO_ROOT 'AGENTS.md' | ||
| $VIBE_FILE = Join-Path $REPO_ROOT '.vibe/agents/specify-agents.toml' |
There was a problem hiding this comment.
$VIBE_FILE points to a .toml file, but New-AgentFile/Update-ExistingAgentFile generate and edit Markdown content (headings like ## Active Technologies, ## Recent Changes, etc.). Writing that into a TOML file will be invalid and can break Vibe. Either switch the target to the correct markdown context file for Vibe or add TOML-aware generation/update logic for this agent.
| $VIBE_FILE = Join-Path $REPO_ROOT '.vibe/agents/specify-agents.toml' | |
| $VIBE_FILE = Join-Path $REPO_ROOT 'VIBE.md' |
Description
This PR is to replace 2 PR: #1517 and #1664 (like Beer) in one PR like discussed with @mnriem
This PR integrates Mistral Vibe support into Spec Kit, based on the initial work by L3n41c (https://github.com/L3n41c/spec-kit/)
Testing
uv run specify --helpuv sync && uv run pytestTodo: -autocompletion does work well to call specify
AI Disclosure