Skip to content

Integration of Mistral vibe support into speckit#1725

Open
viking76 wants to merge 26 commits intogithub:mainfrom
viking76:pr-vers-base
Open

Integration of Mistral vibe support into speckit#1725
viking76 wants to merge 26 commits intogithub:mainfrom
viking76:pr-vers-base

Conversation

@viking76
Copy link

@viking76 viking76 commented Mar 1, 2026

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

  • Tested locally with uv run specify --help
  • Ran existing tests with uv sync && uv run pytest
  • Tested with a sample project (if applicable)

Todo: -autocompletion does work well to call specify

AI Disclosure

  • I did not use AI assistance for this contribution
  • I did use AI assistance (describe below)

L3n41c and others added 26 commits January 23, 2026 22:45
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.
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 vibe to the CLI agent configuration and specify init --ai help/examples.
  • Document Vibe support in README.md and 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.

Comment on lines 1222 to 1224
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/)"),
Copy link

Copilot AI Mar 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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),

Copilot uses AI. Check for mistakes.
},
"vibe": {
"name": "Mistral Vibe",
"folder": ".vibe/",
Copy link

Copilot AI Mar 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
"folder": ".vibe/",
"folder": ".vibe/",
"commands_subdir": "commands",

Copilot uses AI. Check for mistakes.
Comment on lines +227 to +229
vibe)
mkdir -p "$base_dir/.vibe/agents"
generate_commands vibe toml "{{args}}" "$base_dir/.vibe/agents" "$script" ;;
Copy link

Copilot AI Mar 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Suggested change
vibe)
mkdir -p "$base_dir/.vibe/agents"
generate_commands vibe toml "{{args}}" "$base_dir/.vibe/agents" "$script" ;;

Copilot uses AI. Check for mistakes.
Generate-Commands -Agent 'generic' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
}
'vibe' {
$cmdDir = Join-Path $baseDir ".vibe/commands"
Copy link

Copilot AI Mar 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
$cmdDir = Join-Path $baseDir ".vibe/commands"
$cmdDir = Join-Path $baseDir ".vibe/prompts"

Copilot uses AI. Check for mistakes.
| `--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/`) |
|
Copy link

Copilot AI Mar 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
|

Copilot uses AI. Check for mistakes.
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"
Copy link

Copilot AI Mar 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
VIBE_FILE="$REPO_ROOT/.vibe/agents/specify-agents.toml"
VIBE_FILE="$REPO_ROOT/.vibe/agents/specify-agents.md"

Copilot uses AI. Check for mistakes.
$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'
Copy link

Copilot AI Mar 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$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.

Suggested change
$VIBE_FILE = Join-Path $REPO_ROOT '.vibe/agents/specify-agents.toml'
$VIBE_FILE = Join-Path $REPO_ROOT 'VIBE.md'

Copilot uses AI. Check for mistakes.
Copy link
Collaborator

@mnriem mnriem left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@viking76 Can you address the feedback Copilot gave. Where not applicable please explain why not.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants