Skip to content

feat: add Mistral Vibe support#1125

Closed
tbetous wants to merge 9 commits into
Fission-AI:mainfrom
tbetous:add-mistral-vibe-support
Closed

feat: add Mistral Vibe support#1125
tbetous wants to merge 9 commits into
Fission-AI:mainfrom
tbetous:add-mistral-vibe-support

Conversation

@tbetous
Copy link
Copy Markdown
Contributor

@tbetous tbetous commented May 25, 2026

Add Mistral Vibe as a supported OpenSpec tool.

This enables users to set up Mistral Vibe through standard OpenSpec workflows:

  • openspec init --tools vibe creates Vibe skill files automatically
  • openspec update refreshes Vibe skills when OpenSpec version changes
  • openspec status detects Vibe skill configuration

Changes:

  • Added Mistral Vibe entry to AI_TOOLS configuration with proper metadata
  • Updated documentation with Mistral Vibe in tool directory table and tool IDs list
  • All commits are GPG-signed

Fixes #417

Summary by CodeRabbit

  • New Features

    • Added support for Mistral Vibe as a selectable AI tool option
  • Documentation

    • Updated supported tools documentation to include Mistral Vibe with its configuration requirements
    • Added specification for Mistral Vibe tool configuration and cross-platform behavior
  • Tests

    • Added test to verify Mistral Vibe tool detection when properly configured

Review Change Stack

@tbetous tbetous requested a review from TabishB as a code owner May 25, 2026 16:55
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 25, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR adds Mistral Vibe (vibe) as a supported AI tool. It defines tool specifications for detection at .vibe/skills, registers the tool in configuration, updates documentation to list the new tool ID, and adds a test to verify detection logic works correctly.

Changes

Mistral Vibe Tool Support

Layer / File(s) Summary
Tool Specifications and Detection Requirements
openspec/specs/ai-tool-paths/spec.md, openspec/specs/vibe-tool-config/spec.md
Defines vibe tool's skillsDir as .vibe with detection paths at .vibe/skills. Specifies cross-platform installation and configuration behavior requirements for Mistral Vibe tool selection and discovery.
Tool Configuration Registration
src/core/config.ts
Registers Mistral Vibe in the AI_TOOLS array and reorders the Lingma tool entry alongside neighboring Mistral Vibe, OpenCode, Pi, and Qoder options.
User-Facing Documentation
docs/supported-tools.md
Adds vibe to the tool directory reference table with its skills path pattern and notes skill-based /openspec-* invocations without command adapter. Updates the --tools available tool IDs list to include vibe.
Detection Verification
test/core/available-tools.test.ts
Adds a test case asserting that getAvailableTools detects and returns vibe as an available tool when the .vibe/ directory exists in the test directory.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes


Possibly related PRs

  • Fission-AI/OpenSpec#941: Both PRs integrate a new supported tool ID into the shared AI_TOOLS configuration and update supporting tool documentation.
  • Fission-AI/OpenSpec#1027: Both PRs affect tool ordering in docs/supported-tools.md and related documentation to reflect AI_TOOLS configuration changes.

Suggested reviewers

  • TabishB

Poem

🐰 Vibe's joining the crew with .vibe in place,
Skills-based detection at a measured pace,
Specs and configs now aligned so neat,
Tests confirm the detection's complete! 🎉

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: add Mistral Vibe support' clearly and concisely describes the main change—adding support for Mistral Vibe as a tool.
Linked Issues check ✅ Passed The PR fulfills issue #417 by adding Mistral Vibe support to OpenSpec with proper integration in init, update, and status commands.
Out of Scope Changes check ✅ Passed All changes are directly related to adding Mistral Vibe support: configuration updates, documentation, specifications, and tests.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@tbetous tbetous marked this pull request as draft May 25, 2026 16:59
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@openspec/changes/archive/2025-05-25-add-mistral-vibe-support/.openspec.yaml`:
- Line 2: The archive directory name "2025-05-25-add-mistral-vibe-support" does
not match the metadata key created: 2026-05-25; either rename the archive
directory to "2026-05-25-add-mistral-vibe-support" to match the created
metadata, or update the created field value to 2025-05-25 if the older date was
intentional—ensure the directory base name and the created metadata key are
identical.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 4bc1f5e2-4391-47f5-8824-f3bf06610253

📥 Commits

Reviewing files that changed from the base of the PR and between e441287 and f3b7e63.

📒 Files selected for processing (8)
  • docs/supported-tools.md
  • openspec/changes/archive/2025-05-25-add-mistral-vibe-support/.openspec.yaml
  • openspec/changes/archive/2025-05-25-add-mistral-vibe-support/design.md
  • openspec/changes/archive/2025-05-25-add-mistral-vibe-support/proposal.md
  • openspec/changes/archive/2025-05-25-add-mistral-vibe-support/specs/ai-tool-paths/spec.md
  • openspec/changes/archive/2025-05-25-add-mistral-vibe-support/specs/vibe-tool-config/spec.md
  • openspec/changes/archive/2025-05-25-add-mistral-vibe-support/tasks.md
  • src/core/config.ts

Comment thread openspec/changes/archive/2026-05-25-add-mistral-vibe-support/.openspec.yaml Outdated
@tbetous tbetous marked this pull request as ready for review May 25, 2026 17:02
Copy link
Copy Markdown
Collaborator

@alfred-openspec alfred-openspec left a comment

Choose a reason for hiding this comment

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

Vibe support should land, but this PR is too broad and duplicates #1114. I would keep this to the minimal AI_TOOLS plus docs change, verify the real Vibe skill path semantics from #1114's ~/.vibe/skills / skill_paths note, add a small detection/init regression test if using detectionPaths, and drop the archived change plus new spec corpus from this PR.

@tbetous tbetous force-pushed the add-mistral-vibe-support branch from f77f63c to b122191 Compare May 30, 2026 20:08
@tbetous
Copy link
Copy Markdown
Contributor Author

tbetous commented May 30, 2026

Per Mistral Vibe documentation, Vibe checks for skills in .vibe/skills/ by default and does not require a config.yml file. Our configuration with skillsDir: '.vibe' (without detectionPaths) aligns with this: OpenSpec will detect the .vibe/ directory and install skills to .vibe/skills/openspec-*/SKILL.md.

@tbetous tbetous force-pushed the add-mistral-vibe-support branch from 2c35246 to f1d9685 Compare May 30, 2026 21:07
@tbetous tbetous requested a review from alfred-openspec May 30, 2026 21:08
Copy link
Copy Markdown
Collaborator

@alfred-openspec alfred-openspec left a comment

Choose a reason for hiding this comment

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

Thanks for narrowing this down, this is now the right implementation shape to keep over #1114. Before merge, please add one focused regression test that proves Vibe initializes and detects skills under .vibe/skills so the path semantics do not drift.

@tbetous
Copy link
Copy Markdown
Contributor Author

tbetous commented May 31, 2026

A focused regression test has been added to prevent path semantics drift for Mistral Vibe skill detection. The test verifies that Vibe is correctly detected when the .vibe/ directory exists and that the tool metadata (name, value, skillsDir) is properly set to '.vibe'. This ensures skills under .vibe/skills continue to work as expected.

@tbetous tbetous requested a review from alfred-openspec May 31, 2026 08:40
@TabishB TabishB enabled auto-merge May 31, 2026 10:50
@TabishB
Copy link
Copy Markdown
Contributor

TabishB commented May 31, 2026

@tbetous I don't have the permissions to make commits on your fork. But merging the latest main into your branhc should fix the CI error. Can be merged after that!

tbetous and others added 9 commits May 31, 2026 13:10
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Remove detectionPaths from Mistral Vibe to prevent double-nested skills dir
- Fix lingma alphabetical position in tool IDs list

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Remove archive directory per PR review feedback to keep PR minimal

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Remove new spec corpus (vibe-tool-config + Mistral Vibe scenario in ai-tool-paths)

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Add focused regression test that proves Vibe initializes and detects
skills under .vibe/skills so the path semantics do not drift.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
auto-merge was automatically disabled May 31, 2026 11:11

Head branch was pushed to by a user without write access

@tbetous tbetous force-pushed the add-mistral-vibe-support branch from 1cf4fdd to 96fc047 Compare May 31, 2026 11:11
@tbetous
Copy link
Copy Markdown
Contributor Author

tbetous commented May 31, 2026

@TabishB Thanks for your message. My branch is now up to date with latest main.

@TabishB TabishB enabled auto-merge May 31, 2026 13:39
@TabishB
Copy link
Copy Markdown
Contributor

TabishB commented May 31, 2026

Ah ok this does need an updated test for the CI to pass, the small fix as specified by codex:

PR #1125 is failing because CI / Test has one failing Vitest assertion, not because the new Vibe detection logic is broken.
Failing job: [CI run 26710989816 / Test](https://github.com/Fission-AI/OpenSpec/actions/runs/26710989816/job/78729667024)
The failed test is test/commands/workspace.test.ts (line 1641):
ts



expect(updateHelp.stdout).toMatch(/Global profile\s+selects workflows/u);

The PR adds vibe to the comma-separated --tools help text. That makes the help output wrap differently:
text



..., lingma, vibe,
                      opencode, pi, qoder, qwen, roocode, trae, windsurf. Global
                      profile selects workflows; --tools selects agents.

So the output contains Global\n profile, but the regex requires the literal Global profile with a normal space between those two words. The aggregate All checks passed job is failing only because it sees Test failed.
The small fix is to make the test tolerant of help wrapping, e.g. change it to:
ts



expect(updateHelp.stdout).toMatch(/Global\s+profile\s+selects workflows/u);

@TabishB
Copy link
Copy Markdown
Contributor

TabishB commented May 31, 2026

@tbetous, I might just branch off this and commit the above fix as I want to get it in the next release (You would still be credited for the contribution!)

@tbetous
Copy link
Copy Markdown
Contributor Author

tbetous commented May 31, 2026

@TabishB Ok no problem! Let's do this. Sorry for not having fix earlier.👍

Do you want me to close this PR?

@tbetous tbetous closed this May 31, 2026
auto-merge was automatically disabled May 31, 2026 14:42

Pull request was closed

@tbetous
Copy link
Copy Markdown
Contributor Author

tbetous commented May 31, 2026

I've seen #1144 has been merged. Can't wait the next release. Thanks @TabishB !

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.

mistral vibe

3 participants