You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The CLI builds and installs AIDD for a fixed list of host tools (Claude Code, Codex, Cursor, OpenCode, Kimi, ...). Mistral Vibe is absent: no tool profile, no build contract, no install route. A Vibe user cannot use AIDD at all, and the generic assumptions that made other Markdown-agent hosts work do not hold for Vibe: skills are user-invocable under .vibe/skills/<name>/SKILL.md, frontmatter is name + description only, MCP lives at .vibe/mcp.json, hooks are .vibe/hooks.toml (never Claude's hooks.json), and Vibe reads .vibe/config.toml, never a settings.json.
Outcome
As a developer using Mistral Vibe, I want aidd translate <source> --to mistral --as flat --out <dir> (and the marketplace layout) to emit a Vibe-native projection, so AIDD installs and runs on a real Vibe install without Claude-oriented leftovers and without me rewriting the output by hand.
Scope
A mistral tool profile in cli/src/contexts/tools/domain/profiles/mistral/: tool definition (agents, skills, commands, rules, MCP, plugins; hooks unsupported), path constants (.vibe/ workspace, .vibe/mcp.json, .vibe-plugin/plugin.json manifest), and a shared frontmatter module emitting name, description, user-invocable.
The mistral target in the translate command's target list (--to mistral), in the marketplace and flat build contracts, registry wiring in deps.ts, a MARKETPLACE_PROBES row.
Flat route: <plugin>-<skill>/SKILL.md layout; --force removes a leftover destination directory before writing; frontmatter parsing splits on /\r?\n/ so CRLF sources keep their description.
Hooks are declared unsupported with a Vibe-specific skip reason (Vibe loads .vibe/hooks.toml, never hooks.json); no Claude hooks.json is copied.
Golden snapshot recaptured for the mistral target; registry conformance, fixture imports, and golden matrix extended.
Acceptance criteria
aidd translate <source> --to mistral --as flat --out <dir> produces skills under the Vibe layout with name, description, user-invocable frontmatter; every built SKILL.md carries a non-empty description.
A real Mistral Vibe install lists and invokes the built skills (live proof recorded: 47/47 built SKILL.md carried description and loaded).
MCP is emitted at .vibe/mcp.json; no settings.json is emitted; no Claude hooks.json is copied in either route.
A leftover destination directory is removed under --force instead of failing with EISDIR.
CRLF source SKILL.md files round-trip without losing frontmatter keys.
mistral is in AI_TOOL_IDS, the registry conformance fixtures, and MARKETPLACE_PROBES.
The golden snapshot matrix passes deterministic and baseline runs with the mistral cell present.
Known tradeoffs and pitfalls
The flat route is the only install-verified path. The marketplace route emits .vibe-plugin/plugin.json, which matches neither Vibe's native marker (plugin.json at the plugin root) nor any documented foreign-format marker, so neither distribution probe can ever fire; the marketplace cell ships labeled unverified, tracked in fix(cli): make the mistral marketplace route detectable by Vibe #938.
The flat contract declares hooks unsupported: Vibe's hooks.toml has no SessionStart equivalent and the Claude hooks.json bundle is never loaded by Vibe.
Telemetry local read and task attribution are unsupported on this profile.
Anything on Vibe's side: this repo only emits files, and anything Vibe itself does not read or reads differently (its skill loader, its hooks, its manifest detection) belongs to Mistral's product, not this framework.
Evidence
Real-install verification on Vibe: built skills load (47/47 with description), --force EISDIR recovery, frontmatter acceptance. Investigation records live in the task folder shipped with the PR (aidd_docs/tasks/2026_09/2026_09_29_mistral-support/debug/).
Vibe reference: Agent Plugins 1.0 (plugin.json at the plugin root), .vibe/hooks.toml (pre_tool/post_tool/post_agent), skills as user-invocable SKILL.md.
Draft PR already open: feat(cli): add Mistral Vibe support #937 (this issue leads it, as requested; the implementation work predates the issue and the PR documents its retroactive record).
Problem
The CLI builds and installs AIDD for a fixed list of host tools (Claude Code, Codex, Cursor, OpenCode, Kimi, ...). Mistral Vibe is absent: no tool profile, no build contract, no install route. A Vibe user cannot use AIDD at all, and the generic assumptions that made other Markdown-agent hosts work do not hold for Vibe: skills are
user-invocableunder.vibe/skills/<name>/SKILL.md, frontmatter isname+descriptiononly, MCP lives at.vibe/mcp.json, hooks are.vibe/hooks.toml(never Claude'shooks.json), and Vibe reads.vibe/config.toml, never asettings.json.Outcome
As a developer using Mistral Vibe, I want
aidd translate <source> --to mistral --as flat --out <dir>(and themarketplacelayout) to emit a Vibe-native projection, so AIDD installs and runs on a real Vibe install without Claude-oriented leftovers and without me rewriting the output by hand.Scope
mistraltool profile incli/src/contexts/tools/domain/profiles/mistral/: tool definition (agents, skills, commands, rules, MCP, plugins; hooks unsupported), path constants (.vibe/workspace,.vibe/mcp.json,.vibe-plugin/plugin.jsonmanifest), and a shared frontmatter module emittingname,description,user-invocable.mistraltarget in thetranslatecommand's target list (--to mistral), in the marketplace and flat build contracts, registry wiring indeps.ts, aMARKETPLACE_PROBESrow.<plugin>-<skill>/SKILL.mdlayout;--forceremoves a leftover destination directory before writing; frontmatter parsing splits on/\r?\n/so CRLF sources keep theirdescription..vibe/hooks.toml, neverhooks.json); no Claudehooks.jsonis copied.Acceptance criteria
aidd translate <source> --to mistral --as flat --out <dir>produces skills under the Vibe layout withname,description,user-invocablefrontmatter; every built SKILL.md carries a non-emptydescription.descriptionand loaded)..vibe/mcp.json; nosettings.jsonis emitted; no Claudehooks.jsonis copied in either route.--forceinstead of failing withEISDIR.mistralis inAI_TOOL_IDS, the registry conformance fixtures, andMARKETPLACE_PROBES.Known tradeoffs and pitfalls
.vibe-plugin/plugin.json, which matches neither Vibe's native marker (plugin.jsonat the plugin root) nor any documented foreign-format marker, so neither distribution probe can ever fire; the marketplace cell ships labeled unverified, tracked in fix(cli): make the mistral marketplace route detectable by Vibe #938.user-invocableskills. The commands capability emits a surface Vibe does not read, tracked in fix(cli): route mistral commands to a surface Vibe reads #939 rather than rushed in this PR.hooks.tomlhas noSessionStartequivalent and the Claudehooks.jsonbundle is never loaded by Vibe.Out of scope
Evidence
description),--forceEISDIR recovery, frontmatter acceptance. Investigation records live in the task folder shipped with the PR (aidd_docs/tasks/2026_09/2026_09_29_mistral-support/debug/).plugin.jsonat the plugin root),.vibe/hooks.toml(pre_tool/post_tool/post_agent), skills asuser-invocableSKILL.md.nextand filed as fix(cli): keep the commit-session trailer dedup working on git 2.39 #940.References