From c2593558ecc46fff35f0ea5435f70943f85bf949 Mon Sep 17 00:00:00 2001 From: Thomas Betous <4435536+tbetous@users.noreply.github.com> Date: Mon, 25 May 2026 16:52:24 +0200 Subject: [PATCH 1/9] feat: add mistral vibe support Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe --- .../add-mistral-vibe-support/.openspec.yaml | 2 + .../add-mistral-vibe-support/design.md | 80 +++++++++++++++++++ .../add-mistral-vibe-support/proposal.md | 35 ++++++++ .../specs/ai-tool-paths/spec.md | 38 +++++++++ .../specs/vibe-tool-config/spec.md | 41 ++++++++++ .../changes/add-mistral-vibe-support/tasks.md | 21 +++++ 6 files changed, 217 insertions(+) create mode 100644 openspec/changes/add-mistral-vibe-support/.openspec.yaml create mode 100644 openspec/changes/add-mistral-vibe-support/design.md create mode 100644 openspec/changes/add-mistral-vibe-support/proposal.md create mode 100644 openspec/changes/add-mistral-vibe-support/specs/ai-tool-paths/spec.md create mode 100644 openspec/changes/add-mistral-vibe-support/specs/vibe-tool-config/spec.md create mode 100644 openspec/changes/add-mistral-vibe-support/tasks.md diff --git a/openspec/changes/add-mistral-vibe-support/.openspec.yaml b/openspec/changes/add-mistral-vibe-support/.openspec.yaml new file mode 100644 index 000000000..9e883bff0 --- /dev/null +++ b/openspec/changes/add-mistral-vibe-support/.openspec.yaml @@ -0,0 +1,2 @@ +schema: spec-driven +created: 2026-05-25 diff --git a/openspec/changes/add-mistral-vibe-support/design.md b/openspec/changes/add-mistral-vibe-support/design.md new file mode 100644 index 000000000..c067ad6b3 --- /dev/null +++ b/openspec/changes/add-mistral-vibe-support/design.md @@ -0,0 +1,80 @@ +# Add Mistral Vibe Support - Technical Design + +## Context + +Mistral Vibe is an AI coding assistant that uses a SKILL.md format for defining custom skills. While Vibe already works with manually-installed OpenSpec skills (confirmed by user's existing `~/.config/vibe/skills/openspec-*` directory), it is not included in OpenSpec's official tool support list. + +The existing OpenSpec architecture supports tool integration through the `AI_TOOLS` configuration array in `src/core/config.ts`. Each tool entry defines metadata including a `skillsDir` for project-local skill directory and optional `detectionPaths` for auto-detection. + +Unlike command-based tools (Claude Code, Cursor, etc.), Mistral Vibe is **skill-based only** and does not use or support commands. OpenSpec already generates skills in the correct SKILL.md format that Vibe consumes directly. No command adapter is needed. + +## Goals / Non-Goals + +**Goals:** +- Add Mistral Vibe to the list of officially supported OpenSpec tools +- Enable `openspec init --tools vibe` to create Vibe skill files automatically +- Enable `openspec update` to refresh Vibe skills when OpenSpec version changes +- Enable `openspec status` to detect and report Vibe skill configuration +- Follow existing patterns for tool configuration + +**Non-Goals:** +- Global skills directory support (`.config/vibe/skills/`) - can be Phase 2 +- Vibe-specific customizations beyond standard skill format +- Integration with Mistral Vibe's MCP server +- Special handling for Vibe's unique features not related to skill management +- Command generation (Vibe is skill-based, not command-based) + +## Decisions + +### Decision: Skill-Based Tool Support Without Command Adapter + +**Chosen**: Add Mistral Vibe to `AI_TOOLS` configuration only, without creating a command adapter + +**Rationale**: +- Mistral Vibe consumes SKILL.md files directly and does not have a command system +- OpenSpec already generates skills in the correct format for Vibe +- The existing `skillsDir` and `detectionPaths` configuration is sufficient for Vibe integration +- Command adapters are only needed for tools that require tool-specific command file formats +- Adding Vibe without a command adapter keeps the architecture clean and honest + +**Alternatives considered**: +- Create a Vibe command adapter that generates SKILL.md files — rejected as it conflates commands with skills +- Modify OpenSpec to have separate skill adapters — rejected as unnecessary complexity + +### Decision: Tool Configuration Metadata + +**Chosen**: Use `value: 'vibe'`, `skillsDir: '.vibe'`, `detectionPaths: ['.vibe/skills']` + +**Rationale**: +- User confirmed Vibe loads skills from `.vibe/skills/` directory +- Consistent with other tools that use dot-prefixed directories (`.claude`, `.cursor`, `.windsurf`) +- The `value` field matches CLI argument and internal identifier +- `detectionPaths` enables `openspec status` to detect existing configurations + +### Decision: Alphabetical Placement + +**Chosen**: Insert Mistral Vibe after 'windsurf' in the AI_TOOLS array + +**Rationale**: Maintains alphabetical ordering by `value` field for consistency. + +## Risks / Trade-offs + +**[Risk] Incomplete integration without command adapter** → **Mitigation**: Vibe doesn't need commands. The `skillsDir` configuration is sufficient for OpenSpec to place skill files in the correct location. The existing skill generation mechanism works without tool-specific adapters for skill-based tools. + +**[Risk] Future Vibe features requiring commands** → **Mitigation**: If Vibe adds command support later, a command adapter can be added at that time without breaking existing skill support. + +## Migration Plan + +1. **Implementation**: Add Mistral Vibe entry to AI_TOOLS configuration +2. **Documentation**: Update `docs/supported-tools.md` with Vibe entry +3. **Testing**: + - Run `openspec init --tools vibe` in a test project + - Verify `.vibe/skills/openspec-*/SKILL.md` files are created + - Verify Vibe can load and use the skills + - Run `openspec update` and verify skills are refreshed + - Run `openspec status` and verify Vibe is listed as configured +4. **Rollback**: Remove the Vibe entry from AI_TOOLS. No other files are modified. + +## Open Questions + +None identified. The implementation is straightforward: add configuration entry and update documentation. diff --git a/openspec/changes/add-mistral-vibe-support/proposal.md b/openspec/changes/add-mistral-vibe-support/proposal.md new file mode 100644 index 000000000..cc4ad6781 --- /dev/null +++ b/openspec/changes/add-mistral-vibe-support/proposal.md @@ -0,0 +1,35 @@ +# Add Mistral Vibe Support - Proposal + +## Why + +Mistral Vibe is a popular AI coding assistant that works with OpenSpec skills, but it is not currently available through OpenSpec's standard setup workflows. Users must manually copy skills to use them with Vibe. + +Adding official Mistral Vibe support enables users to set up and manage Vibe integration through OpenSpec's standard commands, eliminating manual copying and ensuring skills stay up-to-date automatically. + +## What Changes + +- Enable Mistral Vibe as a supported tool that appears in tool selection +- Automatically set up Mistral Vibe skills in the correct location during initialization +- Detect existing Mistral Vibe configurations when checking project status + +## Non-goals + +- Support for global Vibe skills directory - can be Phase 2 +- Vibe-specific customizations beyond standard skill format +- Integration with Mistral Vibe's additional features +- Command generation (Vibe uses skills, not commands) + +## Capabilities + +### New Capabilities +- `vibe-tool-config`: Enable Mistral Vibe as a supported OpenSpec tool + +### Modified Capabilities +- `ai-tool-paths`: Add Mistral Vibe to tool path configuration + +## Impact + +- **Files Modified**: Configuration and documentation +- **New Dependencies**: None +- **Breaking Changes**: None +- **User Experience**: Users can set up Mistral Vibe through standard OpenSpec workflows diff --git a/openspec/changes/add-mistral-vibe-support/specs/ai-tool-paths/spec.md b/openspec/changes/add-mistral-vibe-support/specs/ai-tool-paths/spec.md new file mode 100644 index 000000000..b918f436f --- /dev/null +++ b/openspec/changes/add-mistral-vibe-support/specs/ai-tool-paths/spec.md @@ -0,0 +1,38 @@ +# ai-tool-paths Specification + +## MODIFIED Requirements + +### Requirement: All supported tools have proper directory configuration + +The system SHALL define the correct directory for each supported tool. + +#### Scenario: Claude Code directory +- **GIVEN** Claude Code is a supported tool +- **WHEN** the system uses Claude Code +- **THEN** it SHALL use the correct directory for that tool + +#### Scenario: Cursor directory +- **GIVEN** Cursor is a supported tool +- **WHEN** the system uses Cursor +- **THEN** it SHALL use the correct directory for that tool + +#### Scenario: Windsurf directory +- **GIVEN** Windsurf is a supported tool +- **WHEN** the system uses Windsurf +- **THEN** it SHALL use the correct directory for that tool + +#### Scenario: Kimi CLI directory +- **GIVEN** Kimi CLI is a supported tool +- **WHEN** the system uses Kimi CLI +- **THEN** it SHALL use the correct directory for that tool + +#### Scenario: Mistral Vibe directory +- **GIVEN** Mistral Vibe is a supported tool +- **WHEN** the system uses Mistral Vibe +- **THEN** it SHALL use the correct directory for that tool +- **AND** it SHALL recognize its standard skills location + +#### Scenario: Unsupported tool +- **GIVEN** a tool is not supported +- **WHEN** attempting to use that tool +- **THEN** the system SHALL report that the tool is not available diff --git a/openspec/changes/add-mistral-vibe-support/specs/vibe-tool-config/spec.md b/openspec/changes/add-mistral-vibe-support/specs/vibe-tool-config/spec.md new file mode 100644 index 000000000..070d9fea4 --- /dev/null +++ b/openspec/changes/add-mistral-vibe-support/specs/vibe-tool-config/spec.md @@ -0,0 +1,41 @@ +# vibe-tool-config Specification + +## ADDED Requirements + +### Requirement: Mistral Vibe appears as a selectable tool + +The system SHALL include Mistral Vibe in its list of supported tools. + +#### Scenario: Tool is available for selection +- **GIVEN** a user views the list of supported tools +- **WHEN** the list is displayed +- **THEN** Mistral Vibe SHALL appear as an option + +#### Scenario: Tool can be identified uniquely +- **GIVEN** a user specifies Mistral Vibe +- **WHEN** the system processes the selection +- **THEN** Mistral Vibe SHALL be recognized as a distinct tool + +#### Scenario: Tool uses its standard location +- **GIVEN** Mistral Vibe is selected +- **WHEN** setting up the tool +- **THEN** its files SHALL be placed in the tool's designated directory + +#### Scenario: Tool configuration can be detected +- **GIVEN** a project has Mistral Vibe set up +- **WHEN** checking which tools are configured +- **THEN** Mistral Vibe SHALL be reported as configured + +### Requirement: Cross-platform compatibility + +The system SHALL handle Mistral Vibe setups correctly on all operating systems. + +#### Scenario: Setup on Windows +- **GIVEN** running on Windows +- **WHEN** creating Mistral Vibe directories +- **THEN** the paths SHALL work correctly on Windows + +#### Scenario: Setup on Unix +- **GIVEN** running on macOS or Linux +- **WHEN** creating Mistral Vibe directories +- **THEN** the paths SHALL work correctly on Unix diff --git a/openspec/changes/add-mistral-vibe-support/tasks.md b/openspec/changes/add-mistral-vibe-support/tasks.md new file mode 100644 index 000000000..68062ecdc --- /dev/null +++ b/openspec/changes/add-mistral-vibe-support/tasks.md @@ -0,0 +1,21 @@ +## 1. Configuration Updates + +- [ ] 1.1 Add Mistral Vibe entry to AI_TOOLS array in configuration +- [ ] 1.2 Set tool metadata: name='Mistral Vibe', value='vibe', skillsDir='.vibe', detectionPaths=['.vibe/skills'] +- [ ] 1.3 Verify Vibe entry is alphabetically placed after 'windsurf' + +## 2. Documentation Updates + +- [ ] 2.1 Add Mistral Vibe row to tool directory table in documentation +- [ ] 2.2 Add 'vibe' to tool IDs list in documentation +- [ ] 2.3 Verify documentation format matches existing entries + +## 3. Verification and Testing + +- [ ] 3.1 Run `openspec init --tools vibe` in a test project +- [ ] 3.2 Verify `.vibe/skills/openspec-*/SKILL.md` files are created +- [ ] 3.3 Verify each SKILL.md file has valid format and metadata +- [ ] 3.4 Run `openspec status` and verify Vibe is listed as configured +- [ ] 3.5 Run `openspec update` and verify Vibe skills are refreshed +- [ ] 3.6 Run existing OpenSpec tests to ensure no regressions +- [ ] 3.7 Test on Windows to verify cross-platform path handling From c7a5a67b376fb7e3934843b42a3c28b4a9585b24 Mon Sep 17 00:00:00 2001 From: Thomas Betous <4435536+tbetous@users.noreply.github.com> Date: Mon, 25 May 2026 17:20:03 +0200 Subject: [PATCH 2/9] feat: add mistral vibe support Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe --- docs/supported-tools.md | 3 ++- .../add-mistral-vibe-support/design.md | 4 +-- .../changes/add-mistral-vibe-support/tasks.md | 26 +++++++++---------- src/core/config.ts | 3 ++- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/docs/supported-tools.md b/docs/supported-tools.md index 85d8e63d8..7e58e9857 100644 --- a/docs/supported-tools.md +++ b/docs/supported-tools.md @@ -44,6 +44,7 @@ You can enable expanded workflows (`new`, `continue`, `ff`, `verify`, `bulk-arch | Kimi CLI (`kimi`) | `.kimi/skills/openspec-*/SKILL.md` | Not generated (no command adapter; use skill-based `/skill:openspec-*` invocations) | | Kiro (`kiro`) | `.kiro/skills/openspec-*/SKILL.md` | `.kiro/prompts/opsx-.prompt.md` | | Lingma (`lingma`) | `.lingma/skills/openspec-*/SKILL.md` | `.lingma/commands/opsx/.md` | +| Mistral Vibe (`vibe`) | `.vibe/skills/openspec-*/SKILL.md` | Not generated (no command adapter; use skill-based `/openspec-*` invocations) | | OpenCode (`opencode`) | `.opencode/skills/openspec-*/SKILL.md` | `.opencode/commands/opsx-.md` | | Pi (`pi`) | `.pi/skills/openspec-*/SKILL.md` | `.pi/prompts/opsx-.md` | | Qoder (`qoder`) | `.qoder/skills/openspec-*/SKILL.md` | `.qoder/commands/opsx/.md` | @@ -74,7 +75,7 @@ openspec init --tools none openspec init --profile core ``` -**Available tool IDs (`--tools`):** `amazon-q`, `antigravity`, `auggie`, `bob`, `claude`, `cline`, `codex`, `forgecode`, `codebuddy`, `continue`, `costrict`, `crush`, `cursor`, `factory`, `gemini`, `github-copilot`, `iflow`, `junie`, `kilocode`, `kimi`, `kiro`, `opencode`, `pi`, `qoder`, `lingma`, `qwen`, `roocode`, `trae`, `windsurf` +**Available tool IDs (`--tools`):** `amazon-q`, `antigravity`, `auggie`, `bob`, `claude`, `cline`, `codex`, `forgecode`, `codebuddy`, `continue`, `costrict`, `crush`, `cursor`, `factory`, `gemini`, `github-copilot`, `iflow`, `junie`, `kilocode`, `kimi`, `kiro`, `opencode`, `pi`, `qoder`, `lingma`, `qwen`, `roocode`, `trae`, `vibe`, `windsurf` ## Workflow-Dependent Installation diff --git a/openspec/changes/add-mistral-vibe-support/design.md b/openspec/changes/add-mistral-vibe-support/design.md index c067ad6b3..8732c74a2 100644 --- a/openspec/changes/add-mistral-vibe-support/design.md +++ b/openspec/changes/add-mistral-vibe-support/design.md @@ -53,9 +53,9 @@ Unlike command-based tools (Claude Code, Cursor, etc.), Mistral Vibe is **skill- ### Decision: Alphabetical Placement -**Chosen**: Insert Mistral Vibe after 'windsurf' in the AI_TOOLS array +**Chosen**: Insert Mistral Vibe after 'Lingma' and before 'OpenCode' in the AI_TOOLS array -**Rationale**: Maintains alphabetical ordering by `value` field for consistency. +**Rationale**: Maintains alphabetical ordering by `name` field for consistency ('Mistral Vibe' comes after 'Lingma' and before 'OpenCode'). ## Risks / Trade-offs diff --git a/openspec/changes/add-mistral-vibe-support/tasks.md b/openspec/changes/add-mistral-vibe-support/tasks.md index 68062ecdc..79e5e6cab 100644 --- a/openspec/changes/add-mistral-vibe-support/tasks.md +++ b/openspec/changes/add-mistral-vibe-support/tasks.md @@ -1,21 +1,21 @@ ## 1. Configuration Updates -- [ ] 1.1 Add Mistral Vibe entry to AI_TOOLS array in configuration -- [ ] 1.2 Set tool metadata: name='Mistral Vibe', value='vibe', skillsDir='.vibe', detectionPaths=['.vibe/skills'] -- [ ] 1.3 Verify Vibe entry is alphabetically placed after 'windsurf' +- [x] 1.1 Add Mistral Vibe entry to AI_TOOLS array in configuration +- [x] 1.2 Set tool metadata: name='Mistral Vibe', value='vibe', skillsDir='.vibe', detectionPaths=['.vibe/skills'] +- [x] 1.3 Verify Vibe entry is alphabetically placed after 'Lingma' and before 'OpenCode' ## 2. Documentation Updates -- [ ] 2.1 Add Mistral Vibe row to tool directory table in documentation -- [ ] 2.2 Add 'vibe' to tool IDs list in documentation -- [ ] 2.3 Verify documentation format matches existing entries +- [x] 2.1 Add Mistral Vibe row to tool directory table in documentation +- [x] 2.2 Add 'vibe' to tool IDs list in documentation +- [x] 2.3 Verify documentation format matches existing entries ## 3. Verification and Testing -- [ ] 3.1 Run `openspec init --tools vibe` in a test project -- [ ] 3.2 Verify `.vibe/skills/openspec-*/SKILL.md` files are created -- [ ] 3.3 Verify each SKILL.md file has valid format and metadata -- [ ] 3.4 Run `openspec status` and verify Vibe is listed as configured -- [ ] 3.5 Run `openspec update` and verify Vibe skills are refreshed -- [ ] 3.6 Run existing OpenSpec tests to ensure no regressions -- [ ] 3.7 Test on Windows to verify cross-platform path handling +- [x] 3.1 Run `openspec init --tools vibe` in a test project +- [x] 3.2 Verify `.vibe/skills/openspec-*/SKILL.md` files are created +- [x] 3.3 Verify each SKILL.md file has valid format and metadata +- [x] 3.4 Run `openspec status` and verify Vibe is listed as configured +- [x] 3.5 Run `openspec update` and verify Vibe skills are refreshed +- [x] 3.6 Run existing OpenSpec tests to ensure no regressions +- [x] 3.7 Test on Windows to verify cross-platform path handling diff --git a/src/core/config.ts b/src/core/config.ts index 68f1abd33..83b8702e2 100644 --- a/src/core/config.ts +++ b/src/core/config.ts @@ -40,10 +40,11 @@ export const AI_TOOLS: AIToolOption[] = [ { name: 'Kilo Code', value: 'kilocode', available: true, successLabel: 'Kilo Code', skillsDir: '.kilocode' }, { name: 'Kimi CLI', value: 'kimi', available: true, successLabel: 'Kimi CLI', skillsDir: '.kimi' }, { name: 'Kiro', value: 'kiro', available: true, successLabel: 'Kiro', skillsDir: '.kiro' }, + { name: 'Lingma', value: 'lingma', available: true, successLabel: 'Lingma', skillsDir: '.lingma' }, + { name: 'Mistral Vibe', value: 'vibe', available: true, successLabel: 'Mistral Vibe', skillsDir: '.vibe', detectionPaths: ['.vibe/skills'] }, { name: 'OpenCode', value: 'opencode', available: true, successLabel: 'OpenCode', skillsDir: '.opencode' }, { name: 'Pi', value: 'pi', available: true, successLabel: 'Pi', skillsDir: '.pi' }, { name: 'Qoder', value: 'qoder', available: true, successLabel: 'Qoder', skillsDir: '.qoder' }, - { name: 'Lingma', value: 'lingma', available: true, successLabel: 'Lingma', skillsDir: '.lingma' }, { name: 'Qwen Code', value: 'qwen', available: true, successLabel: 'Qwen Code', skillsDir: '.qwen' }, { name: 'RooCode', value: 'roocode', available: true, successLabel: 'RooCode', skillsDir: '.roo' }, { name: 'Trae', value: 'trae', available: true, successLabel: 'Trae', skillsDir: '.trae' }, From b93fc4021d74539f8dfcbde91fb6d03891d045e1 Mon Sep 17 00:00:00 2001 From: Thomas Betous <4435536+tbetous@users.noreply.github.com> Date: Mon, 25 May 2026 17:23:48 +0200 Subject: [PATCH 3/9] chore: archive add-mistral-vibe-support change Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe --- .../2025-05-25-add-mistral-vibe-support}/.openspec.yaml | 0 .../2025-05-25-add-mistral-vibe-support}/design.md | 0 .../2025-05-25-add-mistral-vibe-support}/proposal.md | 0 .../specs/ai-tool-paths/spec.md | 0 .../specs/vibe-tool-config/spec.md | 0 .../2025-05-25-add-mistral-vibe-support}/tasks.md | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename openspec/changes/{add-mistral-vibe-support => archive/2025-05-25-add-mistral-vibe-support}/.openspec.yaml (100%) rename openspec/changes/{add-mistral-vibe-support => archive/2025-05-25-add-mistral-vibe-support}/design.md (100%) rename openspec/changes/{add-mistral-vibe-support => archive/2025-05-25-add-mistral-vibe-support}/proposal.md (100%) rename openspec/changes/{add-mistral-vibe-support => archive/2025-05-25-add-mistral-vibe-support}/specs/ai-tool-paths/spec.md (100%) rename openspec/changes/{add-mistral-vibe-support => archive/2025-05-25-add-mistral-vibe-support}/specs/vibe-tool-config/spec.md (100%) rename openspec/changes/{add-mistral-vibe-support => archive/2025-05-25-add-mistral-vibe-support}/tasks.md (100%) diff --git a/openspec/changes/add-mistral-vibe-support/.openspec.yaml b/openspec/changes/archive/2025-05-25-add-mistral-vibe-support/.openspec.yaml similarity index 100% rename from openspec/changes/add-mistral-vibe-support/.openspec.yaml rename to openspec/changes/archive/2025-05-25-add-mistral-vibe-support/.openspec.yaml diff --git a/openspec/changes/add-mistral-vibe-support/design.md b/openspec/changes/archive/2025-05-25-add-mistral-vibe-support/design.md similarity index 100% rename from openspec/changes/add-mistral-vibe-support/design.md rename to openspec/changes/archive/2025-05-25-add-mistral-vibe-support/design.md diff --git a/openspec/changes/add-mistral-vibe-support/proposal.md b/openspec/changes/archive/2025-05-25-add-mistral-vibe-support/proposal.md similarity index 100% rename from openspec/changes/add-mistral-vibe-support/proposal.md rename to openspec/changes/archive/2025-05-25-add-mistral-vibe-support/proposal.md diff --git a/openspec/changes/add-mistral-vibe-support/specs/ai-tool-paths/spec.md b/openspec/changes/archive/2025-05-25-add-mistral-vibe-support/specs/ai-tool-paths/spec.md similarity index 100% rename from openspec/changes/add-mistral-vibe-support/specs/ai-tool-paths/spec.md rename to openspec/changes/archive/2025-05-25-add-mistral-vibe-support/specs/ai-tool-paths/spec.md diff --git a/openspec/changes/add-mistral-vibe-support/specs/vibe-tool-config/spec.md b/openspec/changes/archive/2025-05-25-add-mistral-vibe-support/specs/vibe-tool-config/spec.md similarity index 100% rename from openspec/changes/add-mistral-vibe-support/specs/vibe-tool-config/spec.md rename to openspec/changes/archive/2025-05-25-add-mistral-vibe-support/specs/vibe-tool-config/spec.md diff --git a/openspec/changes/add-mistral-vibe-support/tasks.md b/openspec/changes/archive/2025-05-25-add-mistral-vibe-support/tasks.md similarity index 100% rename from openspec/changes/add-mistral-vibe-support/tasks.md rename to openspec/changes/archive/2025-05-25-add-mistral-vibe-support/tasks.md From ac9841447be87dd86669f508f76d3b87f600803f Mon Sep 17 00:00:00 2001 From: Thomas Betous <4435536+tbetous@users.noreply.github.com> Date: Mon, 25 May 2026 19:01:27 +0200 Subject: [PATCH 4/9] chore: sync delta specs from add-mistral-vibe-support change Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe --- openspec/specs/ai-tool-paths/spec.md | 6 ++++ openspec/specs/vibe-tool-config/spec.md | 41 +++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 openspec/specs/vibe-tool-config/spec.md diff --git a/openspec/specs/ai-tool-paths/spec.md b/openspec/specs/ai-tool-paths/spec.md index 04cf38a0f..f267b52f1 100644 --- a/openspec/specs/ai-tool-paths/spec.md +++ b/openspec/specs/ai-tool-paths/spec.md @@ -42,6 +42,12 @@ The `AI_TOOLS` array SHALL include `skillsDir` for tools that support the Agent - **WHEN** looking up the `kimi` tool - **THEN** `skillsDir` SHALL be `.kimi` +#### Scenario: Mistral Vibe paths defined + +- **WHEN** looking up the `vibe` tool +- **THEN** `skillsDir` SHALL be `.vibe` +- **AND** `detectionPaths` SHALL include `['.vibe/skills']` + #### Scenario: Tools without skillsDir - **WHEN** a tool has no `skillsDir` defined diff --git a/openspec/specs/vibe-tool-config/spec.md b/openspec/specs/vibe-tool-config/spec.md new file mode 100644 index 000000000..070d9fea4 --- /dev/null +++ b/openspec/specs/vibe-tool-config/spec.md @@ -0,0 +1,41 @@ +# vibe-tool-config Specification + +## ADDED Requirements + +### Requirement: Mistral Vibe appears as a selectable tool + +The system SHALL include Mistral Vibe in its list of supported tools. + +#### Scenario: Tool is available for selection +- **GIVEN** a user views the list of supported tools +- **WHEN** the list is displayed +- **THEN** Mistral Vibe SHALL appear as an option + +#### Scenario: Tool can be identified uniquely +- **GIVEN** a user specifies Mistral Vibe +- **WHEN** the system processes the selection +- **THEN** Mistral Vibe SHALL be recognized as a distinct tool + +#### Scenario: Tool uses its standard location +- **GIVEN** Mistral Vibe is selected +- **WHEN** setting up the tool +- **THEN** its files SHALL be placed in the tool's designated directory + +#### Scenario: Tool configuration can be detected +- **GIVEN** a project has Mistral Vibe set up +- **WHEN** checking which tools are configured +- **THEN** Mistral Vibe SHALL be reported as configured + +### Requirement: Cross-platform compatibility + +The system SHALL handle Mistral Vibe setups correctly on all operating systems. + +#### Scenario: Setup on Windows +- **GIVEN** running on Windows +- **WHEN** creating Mistral Vibe directories +- **THEN** the paths SHALL work correctly on Windows + +#### Scenario: Setup on Unix +- **GIVEN** running on macOS or Linux +- **WHEN** creating Mistral Vibe directories +- **THEN** the paths SHALL work correctly on Unix From 6617a02ec9a1a66c97e5297d5d4cc693cd6d9b7e Mon Sep 17 00:00:00 2001 From: Thomas Betous <4435536+tbetous@users.noreply.github.com> Date: Mon, 25 May 2026 19:04:50 +0200 Subject: [PATCH 5/9] chore: fix archive directory date to match metadata Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe --- .../.openspec.yaml | 0 .../design.md | 0 .../proposal.md | 0 .../specs/ai-tool-paths/spec.md | 0 .../specs/vibe-tool-config/spec.md | 0 .../tasks.md | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename openspec/changes/archive/{2025-05-25-add-mistral-vibe-support => 2026-05-25-add-mistral-vibe-support}/.openspec.yaml (100%) rename openspec/changes/archive/{2025-05-25-add-mistral-vibe-support => 2026-05-25-add-mistral-vibe-support}/design.md (100%) rename openspec/changes/archive/{2025-05-25-add-mistral-vibe-support => 2026-05-25-add-mistral-vibe-support}/proposal.md (100%) rename openspec/changes/archive/{2025-05-25-add-mistral-vibe-support => 2026-05-25-add-mistral-vibe-support}/specs/ai-tool-paths/spec.md (100%) rename openspec/changes/archive/{2025-05-25-add-mistral-vibe-support => 2026-05-25-add-mistral-vibe-support}/specs/vibe-tool-config/spec.md (100%) rename openspec/changes/archive/{2025-05-25-add-mistral-vibe-support => 2026-05-25-add-mistral-vibe-support}/tasks.md (100%) diff --git a/openspec/changes/archive/2025-05-25-add-mistral-vibe-support/.openspec.yaml b/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/.openspec.yaml similarity index 100% rename from openspec/changes/archive/2025-05-25-add-mistral-vibe-support/.openspec.yaml rename to openspec/changes/archive/2026-05-25-add-mistral-vibe-support/.openspec.yaml diff --git a/openspec/changes/archive/2025-05-25-add-mistral-vibe-support/design.md b/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/design.md similarity index 100% rename from openspec/changes/archive/2025-05-25-add-mistral-vibe-support/design.md rename to openspec/changes/archive/2026-05-25-add-mistral-vibe-support/design.md diff --git a/openspec/changes/archive/2025-05-25-add-mistral-vibe-support/proposal.md b/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/proposal.md similarity index 100% rename from openspec/changes/archive/2025-05-25-add-mistral-vibe-support/proposal.md rename to openspec/changes/archive/2026-05-25-add-mistral-vibe-support/proposal.md diff --git a/openspec/changes/archive/2025-05-25-add-mistral-vibe-support/specs/ai-tool-paths/spec.md b/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/specs/ai-tool-paths/spec.md similarity index 100% rename from openspec/changes/archive/2025-05-25-add-mistral-vibe-support/specs/ai-tool-paths/spec.md rename to openspec/changes/archive/2026-05-25-add-mistral-vibe-support/specs/ai-tool-paths/spec.md diff --git a/openspec/changes/archive/2025-05-25-add-mistral-vibe-support/specs/vibe-tool-config/spec.md b/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/specs/vibe-tool-config/spec.md similarity index 100% rename from openspec/changes/archive/2025-05-25-add-mistral-vibe-support/specs/vibe-tool-config/spec.md rename to openspec/changes/archive/2026-05-25-add-mistral-vibe-support/specs/vibe-tool-config/spec.md diff --git a/openspec/changes/archive/2025-05-25-add-mistral-vibe-support/tasks.md b/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/tasks.md similarity index 100% rename from openspec/changes/archive/2025-05-25-add-mistral-vibe-support/tasks.md rename to openspec/changes/archive/2026-05-25-add-mistral-vibe-support/tasks.md From ebed8bb6d30ddbd3c535b23b0dda6fe0dd35a2e8 Mon Sep 17 00:00:00 2001 From: Thomas Betous <4435536+tbetous@users.noreply.github.com> Date: Sat, 30 May 2026 22:34:44 +0200 Subject: [PATCH 6/9] fix: correct vibe detection paths and alphabetical ordering - 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 --- docs/supported-tools.md | 2 +- src/core/config.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/supported-tools.md b/docs/supported-tools.md index 7e58e9857..b2ee30fb4 100644 --- a/docs/supported-tools.md +++ b/docs/supported-tools.md @@ -75,7 +75,7 @@ openspec init --tools none openspec init --profile core ``` -**Available tool IDs (`--tools`):** `amazon-q`, `antigravity`, `auggie`, `bob`, `claude`, `cline`, `codex`, `forgecode`, `codebuddy`, `continue`, `costrict`, `crush`, `cursor`, `factory`, `gemini`, `github-copilot`, `iflow`, `junie`, `kilocode`, `kimi`, `kiro`, `opencode`, `pi`, `qoder`, `lingma`, `qwen`, `roocode`, `trae`, `vibe`, `windsurf` +**Available tool IDs (`--tools`):** `amazon-q`, `antigravity`, `auggie`, `bob`, `claude`, `cline`, `codex`, `forgecode`, `codebuddy`, `continue`, `costrict`, `crush`, `cursor`, `factory`, `gemini`, `github-copilot`, `iflow`, `junie`, `kilocode`, `kimi`, `kiro`, `lingma`, `opencode`, `pi`, `qoder`, `qwen`, `roocode`, `trae`, `vibe`, `windsurf` ## Workflow-Dependent Installation diff --git a/src/core/config.ts b/src/core/config.ts index 83b8702e2..3be428b26 100644 --- a/src/core/config.ts +++ b/src/core/config.ts @@ -41,7 +41,7 @@ export const AI_TOOLS: AIToolOption[] = [ { name: 'Kimi CLI', value: 'kimi', available: true, successLabel: 'Kimi CLI', skillsDir: '.kimi' }, { name: 'Kiro', value: 'kiro', available: true, successLabel: 'Kiro', skillsDir: '.kiro' }, { name: 'Lingma', value: 'lingma', available: true, successLabel: 'Lingma', skillsDir: '.lingma' }, - { name: 'Mistral Vibe', value: 'vibe', available: true, successLabel: 'Mistral Vibe', skillsDir: '.vibe', detectionPaths: ['.vibe/skills'] }, + { name: 'Mistral Vibe', value: 'vibe', available: true, successLabel: 'Mistral Vibe', skillsDir: '.vibe' }, { name: 'OpenCode', value: 'opencode', available: true, successLabel: 'OpenCode', skillsDir: '.opencode' }, { name: 'Pi', value: 'pi', available: true, successLabel: 'Pi', skillsDir: '.pi' }, { name: 'Qoder', value: 'qoder', available: true, successLabel: 'Qoder', skillsDir: '.qoder' }, From d7dc421dc7ca946d5af99a83011b95347bf341dd Mon Sep 17 00:00:00 2001 From: Thomas Betous <4435536+tbetous@users.noreply.github.com> Date: Sat, 30 May 2026 22:37:07 +0200 Subject: [PATCH 7/9] chore: remove archived mistral vibe change files Remove archive directory per PR review feedback to keep PR minimal Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe --- .../.openspec.yaml | 2 - .../design.md | 80 ------------------- .../proposal.md | 35 -------- .../specs/ai-tool-paths/spec.md | 38 --------- .../specs/vibe-tool-config/spec.md | 41 ---------- .../tasks.md | 21 ----- 6 files changed, 217 deletions(-) delete mode 100644 openspec/changes/archive/2026-05-25-add-mistral-vibe-support/.openspec.yaml delete mode 100644 openspec/changes/archive/2026-05-25-add-mistral-vibe-support/design.md delete mode 100644 openspec/changes/archive/2026-05-25-add-mistral-vibe-support/proposal.md delete mode 100644 openspec/changes/archive/2026-05-25-add-mistral-vibe-support/specs/ai-tool-paths/spec.md delete mode 100644 openspec/changes/archive/2026-05-25-add-mistral-vibe-support/specs/vibe-tool-config/spec.md delete mode 100644 openspec/changes/archive/2026-05-25-add-mistral-vibe-support/tasks.md diff --git a/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/.openspec.yaml b/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/.openspec.yaml deleted file mode 100644 index 9e883bff0..000000000 --- a/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/.openspec.yaml +++ /dev/null @@ -1,2 +0,0 @@ -schema: spec-driven -created: 2026-05-25 diff --git a/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/design.md b/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/design.md deleted file mode 100644 index 8732c74a2..000000000 --- a/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/design.md +++ /dev/null @@ -1,80 +0,0 @@ -# Add Mistral Vibe Support - Technical Design - -## Context - -Mistral Vibe is an AI coding assistant that uses a SKILL.md format for defining custom skills. While Vibe already works with manually-installed OpenSpec skills (confirmed by user's existing `~/.config/vibe/skills/openspec-*` directory), it is not included in OpenSpec's official tool support list. - -The existing OpenSpec architecture supports tool integration through the `AI_TOOLS` configuration array in `src/core/config.ts`. Each tool entry defines metadata including a `skillsDir` for project-local skill directory and optional `detectionPaths` for auto-detection. - -Unlike command-based tools (Claude Code, Cursor, etc.), Mistral Vibe is **skill-based only** and does not use or support commands. OpenSpec already generates skills in the correct SKILL.md format that Vibe consumes directly. No command adapter is needed. - -## Goals / Non-Goals - -**Goals:** -- Add Mistral Vibe to the list of officially supported OpenSpec tools -- Enable `openspec init --tools vibe` to create Vibe skill files automatically -- Enable `openspec update` to refresh Vibe skills when OpenSpec version changes -- Enable `openspec status` to detect and report Vibe skill configuration -- Follow existing patterns for tool configuration - -**Non-Goals:** -- Global skills directory support (`.config/vibe/skills/`) - can be Phase 2 -- Vibe-specific customizations beyond standard skill format -- Integration with Mistral Vibe's MCP server -- Special handling for Vibe's unique features not related to skill management -- Command generation (Vibe is skill-based, not command-based) - -## Decisions - -### Decision: Skill-Based Tool Support Without Command Adapter - -**Chosen**: Add Mistral Vibe to `AI_TOOLS` configuration only, without creating a command adapter - -**Rationale**: -- Mistral Vibe consumes SKILL.md files directly and does not have a command system -- OpenSpec already generates skills in the correct format for Vibe -- The existing `skillsDir` and `detectionPaths` configuration is sufficient for Vibe integration -- Command adapters are only needed for tools that require tool-specific command file formats -- Adding Vibe without a command adapter keeps the architecture clean and honest - -**Alternatives considered**: -- Create a Vibe command adapter that generates SKILL.md files — rejected as it conflates commands with skills -- Modify OpenSpec to have separate skill adapters — rejected as unnecessary complexity - -### Decision: Tool Configuration Metadata - -**Chosen**: Use `value: 'vibe'`, `skillsDir: '.vibe'`, `detectionPaths: ['.vibe/skills']` - -**Rationale**: -- User confirmed Vibe loads skills from `.vibe/skills/` directory -- Consistent with other tools that use dot-prefixed directories (`.claude`, `.cursor`, `.windsurf`) -- The `value` field matches CLI argument and internal identifier -- `detectionPaths` enables `openspec status` to detect existing configurations - -### Decision: Alphabetical Placement - -**Chosen**: Insert Mistral Vibe after 'Lingma' and before 'OpenCode' in the AI_TOOLS array - -**Rationale**: Maintains alphabetical ordering by `name` field for consistency ('Mistral Vibe' comes after 'Lingma' and before 'OpenCode'). - -## Risks / Trade-offs - -**[Risk] Incomplete integration without command adapter** → **Mitigation**: Vibe doesn't need commands. The `skillsDir` configuration is sufficient for OpenSpec to place skill files in the correct location. The existing skill generation mechanism works without tool-specific adapters for skill-based tools. - -**[Risk] Future Vibe features requiring commands** → **Mitigation**: If Vibe adds command support later, a command adapter can be added at that time without breaking existing skill support. - -## Migration Plan - -1. **Implementation**: Add Mistral Vibe entry to AI_TOOLS configuration -2. **Documentation**: Update `docs/supported-tools.md` with Vibe entry -3. **Testing**: - - Run `openspec init --tools vibe` in a test project - - Verify `.vibe/skills/openspec-*/SKILL.md` files are created - - Verify Vibe can load and use the skills - - Run `openspec update` and verify skills are refreshed - - Run `openspec status` and verify Vibe is listed as configured -4. **Rollback**: Remove the Vibe entry from AI_TOOLS. No other files are modified. - -## Open Questions - -None identified. The implementation is straightforward: add configuration entry and update documentation. diff --git a/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/proposal.md b/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/proposal.md deleted file mode 100644 index cc4ad6781..000000000 --- a/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/proposal.md +++ /dev/null @@ -1,35 +0,0 @@ -# Add Mistral Vibe Support - Proposal - -## Why - -Mistral Vibe is a popular AI coding assistant that works with OpenSpec skills, but it is not currently available through OpenSpec's standard setup workflows. Users must manually copy skills to use them with Vibe. - -Adding official Mistral Vibe support enables users to set up and manage Vibe integration through OpenSpec's standard commands, eliminating manual copying and ensuring skills stay up-to-date automatically. - -## What Changes - -- Enable Mistral Vibe as a supported tool that appears in tool selection -- Automatically set up Mistral Vibe skills in the correct location during initialization -- Detect existing Mistral Vibe configurations when checking project status - -## Non-goals - -- Support for global Vibe skills directory - can be Phase 2 -- Vibe-specific customizations beyond standard skill format -- Integration with Mistral Vibe's additional features -- Command generation (Vibe uses skills, not commands) - -## Capabilities - -### New Capabilities -- `vibe-tool-config`: Enable Mistral Vibe as a supported OpenSpec tool - -### Modified Capabilities -- `ai-tool-paths`: Add Mistral Vibe to tool path configuration - -## Impact - -- **Files Modified**: Configuration and documentation -- **New Dependencies**: None -- **Breaking Changes**: None -- **User Experience**: Users can set up Mistral Vibe through standard OpenSpec workflows diff --git a/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/specs/ai-tool-paths/spec.md b/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/specs/ai-tool-paths/spec.md deleted file mode 100644 index b918f436f..000000000 --- a/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/specs/ai-tool-paths/spec.md +++ /dev/null @@ -1,38 +0,0 @@ -# ai-tool-paths Specification - -## MODIFIED Requirements - -### Requirement: All supported tools have proper directory configuration - -The system SHALL define the correct directory for each supported tool. - -#### Scenario: Claude Code directory -- **GIVEN** Claude Code is a supported tool -- **WHEN** the system uses Claude Code -- **THEN** it SHALL use the correct directory for that tool - -#### Scenario: Cursor directory -- **GIVEN** Cursor is a supported tool -- **WHEN** the system uses Cursor -- **THEN** it SHALL use the correct directory for that tool - -#### Scenario: Windsurf directory -- **GIVEN** Windsurf is a supported tool -- **WHEN** the system uses Windsurf -- **THEN** it SHALL use the correct directory for that tool - -#### Scenario: Kimi CLI directory -- **GIVEN** Kimi CLI is a supported tool -- **WHEN** the system uses Kimi CLI -- **THEN** it SHALL use the correct directory for that tool - -#### Scenario: Mistral Vibe directory -- **GIVEN** Mistral Vibe is a supported tool -- **WHEN** the system uses Mistral Vibe -- **THEN** it SHALL use the correct directory for that tool -- **AND** it SHALL recognize its standard skills location - -#### Scenario: Unsupported tool -- **GIVEN** a tool is not supported -- **WHEN** attempting to use that tool -- **THEN** the system SHALL report that the tool is not available diff --git a/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/specs/vibe-tool-config/spec.md b/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/specs/vibe-tool-config/spec.md deleted file mode 100644 index 070d9fea4..000000000 --- a/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/specs/vibe-tool-config/spec.md +++ /dev/null @@ -1,41 +0,0 @@ -# vibe-tool-config Specification - -## ADDED Requirements - -### Requirement: Mistral Vibe appears as a selectable tool - -The system SHALL include Mistral Vibe in its list of supported tools. - -#### Scenario: Tool is available for selection -- **GIVEN** a user views the list of supported tools -- **WHEN** the list is displayed -- **THEN** Mistral Vibe SHALL appear as an option - -#### Scenario: Tool can be identified uniquely -- **GIVEN** a user specifies Mistral Vibe -- **WHEN** the system processes the selection -- **THEN** Mistral Vibe SHALL be recognized as a distinct tool - -#### Scenario: Tool uses its standard location -- **GIVEN** Mistral Vibe is selected -- **WHEN** setting up the tool -- **THEN** its files SHALL be placed in the tool's designated directory - -#### Scenario: Tool configuration can be detected -- **GIVEN** a project has Mistral Vibe set up -- **WHEN** checking which tools are configured -- **THEN** Mistral Vibe SHALL be reported as configured - -### Requirement: Cross-platform compatibility - -The system SHALL handle Mistral Vibe setups correctly on all operating systems. - -#### Scenario: Setup on Windows -- **GIVEN** running on Windows -- **WHEN** creating Mistral Vibe directories -- **THEN** the paths SHALL work correctly on Windows - -#### Scenario: Setup on Unix -- **GIVEN** running on macOS or Linux -- **WHEN** creating Mistral Vibe directories -- **THEN** the paths SHALL work correctly on Unix diff --git a/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/tasks.md b/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/tasks.md deleted file mode 100644 index 79e5e6cab..000000000 --- a/openspec/changes/archive/2026-05-25-add-mistral-vibe-support/tasks.md +++ /dev/null @@ -1,21 +0,0 @@ -## 1. Configuration Updates - -- [x] 1.1 Add Mistral Vibe entry to AI_TOOLS array in configuration -- [x] 1.2 Set tool metadata: name='Mistral Vibe', value='vibe', skillsDir='.vibe', detectionPaths=['.vibe/skills'] -- [x] 1.3 Verify Vibe entry is alphabetically placed after 'Lingma' and before 'OpenCode' - -## 2. Documentation Updates - -- [x] 2.1 Add Mistral Vibe row to tool directory table in documentation -- [x] 2.2 Add 'vibe' to tool IDs list in documentation -- [x] 2.3 Verify documentation format matches existing entries - -## 3. Verification and Testing - -- [x] 3.1 Run `openspec init --tools vibe` in a test project -- [x] 3.2 Verify `.vibe/skills/openspec-*/SKILL.md` files are created -- [x] 3.3 Verify each SKILL.md file has valid format and metadata -- [x] 3.4 Run `openspec status` and verify Vibe is listed as configured -- [x] 3.5 Run `openspec update` and verify Vibe skills are refreshed -- [x] 3.6 Run existing OpenSpec tests to ensure no regressions -- [x] 3.7 Test on Windows to verify cross-platform path handling From 687fcabef123fbc404c56c3f932108a5277cff0d Mon Sep 17 00:00:00 2001 From: Thomas Betous <4435536+tbetous@users.noreply.github.com> Date: Sat, 30 May 2026 23:07:57 +0200 Subject: [PATCH 8/9] chore: remove mistral vibe spec files per PR feedback Remove new spec corpus (vibe-tool-config + Mistral Vibe scenario in ai-tool-paths) Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe --- openspec/specs/ai-tool-paths/spec.md | 6 ---- openspec/specs/vibe-tool-config/spec.md | 41 ------------------------- 2 files changed, 47 deletions(-) delete mode 100644 openspec/specs/vibe-tool-config/spec.md diff --git a/openspec/specs/ai-tool-paths/spec.md b/openspec/specs/ai-tool-paths/spec.md index f267b52f1..04cf38a0f 100644 --- a/openspec/specs/ai-tool-paths/spec.md +++ b/openspec/specs/ai-tool-paths/spec.md @@ -42,12 +42,6 @@ The `AI_TOOLS` array SHALL include `skillsDir` for tools that support the Agent - **WHEN** looking up the `kimi` tool - **THEN** `skillsDir` SHALL be `.kimi` -#### Scenario: Mistral Vibe paths defined - -- **WHEN** looking up the `vibe` tool -- **THEN** `skillsDir` SHALL be `.vibe` -- **AND** `detectionPaths` SHALL include `['.vibe/skills']` - #### Scenario: Tools without skillsDir - **WHEN** a tool has no `skillsDir` defined diff --git a/openspec/specs/vibe-tool-config/spec.md b/openspec/specs/vibe-tool-config/spec.md deleted file mode 100644 index 070d9fea4..000000000 --- a/openspec/specs/vibe-tool-config/spec.md +++ /dev/null @@ -1,41 +0,0 @@ -# vibe-tool-config Specification - -## ADDED Requirements - -### Requirement: Mistral Vibe appears as a selectable tool - -The system SHALL include Mistral Vibe in its list of supported tools. - -#### Scenario: Tool is available for selection -- **GIVEN** a user views the list of supported tools -- **WHEN** the list is displayed -- **THEN** Mistral Vibe SHALL appear as an option - -#### Scenario: Tool can be identified uniquely -- **GIVEN** a user specifies Mistral Vibe -- **WHEN** the system processes the selection -- **THEN** Mistral Vibe SHALL be recognized as a distinct tool - -#### Scenario: Tool uses its standard location -- **GIVEN** Mistral Vibe is selected -- **WHEN** setting up the tool -- **THEN** its files SHALL be placed in the tool's designated directory - -#### Scenario: Tool configuration can be detected -- **GIVEN** a project has Mistral Vibe set up -- **WHEN** checking which tools are configured -- **THEN** Mistral Vibe SHALL be reported as configured - -### Requirement: Cross-platform compatibility - -The system SHALL handle Mistral Vibe setups correctly on all operating systems. - -#### Scenario: Setup on Windows -- **GIVEN** running on Windows -- **WHEN** creating Mistral Vibe directories -- **THEN** the paths SHALL work correctly on Windows - -#### Scenario: Setup on Unix -- **GIVEN** running on macOS or Linux -- **WHEN** creating Mistral Vibe directories -- **THEN** the paths SHALL work correctly on Unix From 96fc047d0ff2e8aff0029207823a4d01622afb0a Mon Sep 17 00:00:00 2001 From: tbetous Date: Sun, 31 May 2026 10:37:02 +0200 Subject: [PATCH 9/9] test: add Mistral Vibe detection regression test 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 --- test/core/available-tools.test.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/core/available-tools.test.ts b/test/core/available-tools.test.ts index 83942dfb3..50d758070 100644 --- a/test/core/available-tools.test.ts +++ b/test/core/available-tools.test.ts @@ -148,5 +148,20 @@ describe('available-tools', () => { const toolValues = tools.map((t) => t.value); expect(toolValues).toContain('claude'); }); + + it('should detect Mistral Vibe when .vibe directory exists', async () => { + // Mistral Vibe uses skillsDir: '.vibe' without detectionPaths + // This test ensures path semantics do not drift for Vibe skill detection + await fs.mkdir(path.join(testDir, '.vibe'), { recursive: true }); + + const tools = getAvailableTools(testDir); + const toolValues = tools.map((t) => t.value); + expect(toolValues).toContain('vibe'); + + const vibeTool = tools.find((t) => t.value === 'vibe'); + expect(vibeTool).toBeDefined(); + expect(vibeTool?.name).toBe('Mistral Vibe'); + expect(vibeTool?.skillsDir).toBe('.vibe'); + }); }); });