clavix 5.9.2 → 5.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -173,6 +173,16 @@
173
173
  "rootDir": ".llxprt",
174
174
  "type": "standard"
175
175
  },
176
+ {
177
+ "name": "vibe",
178
+ "displayName": "Vibe CLI",
179
+ "directory": ".vibe/skills",
180
+ "filenamePattern": "clavix-{name}-skill",
181
+ "extension": ".md",
182
+ "separator": "-",
183
+ "detection": ".vibe",
184
+ "type": "standard"
185
+ },
176
186
  {
177
187
  "name": "agents-md",
178
188
  "displayName": "AGENTS.md",
@@ -0,0 +1,50 @@
1
+ import { BaseAdapter } from './base-adapter.js';
2
+ import { CommandTemplate } from '../../types/agent.js';
3
+ import { ClavixConfig } from '../../types/config.js';
4
+ /**
5
+ * Vibe CLI agent adapter
6
+ *
7
+ * Generates SKILL.md files for Vibe CLI integration.
8
+ * Each Clavix slash command becomes a separate Vibe skill.
9
+ *
10
+ * Skills are generated in ./.vibe/skills/ directory which has
11
+ * priority over global ~/.vibe/skills/ in Vibe's skill resolution.
12
+ */
13
+ export declare class VibeAdapter extends BaseAdapter {
14
+ readonly name = "vibe";
15
+ readonly displayName = "Vibe CLI";
16
+ readonly directory = ".vibe/skills";
17
+ readonly fileExtension = ".md";
18
+ readonly features: {
19
+ supportsSubdirectories: boolean;
20
+ };
21
+ protected readonly userConfig?: ClavixConfig;
22
+ constructor(userConfig?: ClavixConfig);
23
+ /**
24
+ * Detect if Vibe CLI is available in the project
25
+ * Checks for .vibe directory
26
+ */
27
+ detectProject(): Promise<boolean>;
28
+ /**
29
+ * Get command path for Vibe CLI
30
+ */
31
+ getCommandPath(): string;
32
+ /**
33
+ * Generate target filename for Vibe skill
34
+ * Format: clavix-{command}-skill.md
35
+ * Example: clavix-improve-skill.md
36
+ */
37
+ getTargetFilename(name: string): string;
38
+ /**
39
+ * Determine if a file is a Clavix-generated Vibe skill
40
+ * Matches pattern: clavix-{command}-skill.md where {command} is at least one char
41
+ */
42
+ protected isClavixGeneratedCommand(filename: string): boolean;
43
+ /**
44
+ * Format command content for Vibe CLI
45
+ * SKILL.md files are plain markdown with AI instructions
46
+ * No special formatting needed - template content is already markdown
47
+ */
48
+ protected formatCommand(template: CommandTemplate): string;
49
+ }
50
+ //# sourceMappingURL=vibe-adapter.d.ts.map
@@ -0,0 +1,63 @@
1
+ import { BaseAdapter } from './base-adapter.js';
2
+ import { FileSystem } from '../../utils/file-system.js';
3
+ /**
4
+ * Vibe CLI agent adapter
5
+ *
6
+ * Generates SKILL.md files for Vibe CLI integration.
7
+ * Each Clavix slash command becomes a separate Vibe skill.
8
+ *
9
+ * Skills are generated in ./.vibe/skills/ directory which has
10
+ * priority over global ~/.vibe/skills/ in Vibe's skill resolution.
11
+ */
12
+ export class VibeAdapter extends BaseAdapter {
13
+ name = 'vibe';
14
+ displayName = 'Vibe CLI';
15
+ directory = '.vibe/skills';
16
+ fileExtension = '.md';
17
+ features = {
18
+ supportsSubdirectories: false,
19
+ };
20
+ userConfig;
21
+ constructor(userConfig) {
22
+ super();
23
+ this.userConfig = userConfig;
24
+ }
25
+ /**
26
+ * Detect if Vibe CLI is available in the project
27
+ * Checks for .vibe directory
28
+ */
29
+ async detectProject() {
30
+ return await FileSystem.exists('.vibe');
31
+ }
32
+ /**
33
+ * Get command path for Vibe CLI
34
+ */
35
+ getCommandPath() {
36
+ return this.directory;
37
+ }
38
+ /**
39
+ * Generate target filename for Vibe skill
40
+ * Format: clavix-{command}-skill.md
41
+ * Example: clavix-improve-skill.md
42
+ */
43
+ getTargetFilename(name) {
44
+ return `clavix-${name}-skill${this.fileExtension}`;
45
+ }
46
+ /**
47
+ * Determine if a file is a Clavix-generated Vibe skill
48
+ * Matches pattern: clavix-{command}-skill.md where {command} is at least one char
49
+ */
50
+ isClavixGeneratedCommand(filename) {
51
+ return /^clavix-.+-skill\.md$/.test(filename);
52
+ }
53
+ /**
54
+ * Format command content for Vibe CLI
55
+ * SKILL.md files are plain markdown with AI instructions
56
+ * No special formatting needed - template content is already markdown
57
+ */
58
+ formatCommand(template) {
59
+ // Return content as-is - SKILL.md is just markdown instructions
60
+ return template.content;
61
+ }
62
+ }
63
+ //# sourceMappingURL=vibe-adapter.js.map
@@ -2,6 +2,7 @@ import { ClaudeCodeAdapter } from './adapters/claude-code-adapter.js';
2
2
  import { GeminiAdapter } from './adapters/gemini-adapter.js';
3
3
  import { QwenAdapter } from './adapters/qwen-adapter.js';
4
4
  import { LlxprtAdapter } from './adapters/llxprt-adapter.js';
5
+ import { VibeAdapter } from './adapters/vibe-adapter.js';
5
6
  import { UniversalAdapter } from './adapters/universal-adapter.js';
6
7
  import { getSimpleAdapters } from './adapter-registry.js';
7
8
  import { IntegrationError } from '../types/errors.js';
@@ -23,6 +24,7 @@ export class AgentManager {
23
24
  this.registerAdapter(new GeminiAdapter(userConfig)); // TOML format
24
25
  this.registerAdapter(new QwenAdapter(userConfig)); // TOML format
25
26
  this.registerAdapter(new LlxprtAdapter(userConfig)); // TOML format
27
+ this.registerAdapter(new VibeAdapter(userConfig)); // Vibe CLI skills
26
28
  // Register simple adapters from config (using UniversalAdapter factory)
27
29
  for (const config of getSimpleAdapters()) {
28
30
  // Skip adapters that have special handlers registered above
@@ -274,7 +274,7 @@ Result: Project permanently deleted
274
274
 
275
275
  ---
276
276
 
277
- ## Agent Transparency (v5.9.2)
277
+ ## Agent Transparency (v5.10.1)
278
278
 
279
279
  ### Agent Manual (Universal Protocols)
280
280
  {{INCLUDE:agent-protocols/AGENT_MANUAL.md}}
@@ -524,7 +524,7 @@ I'll explain what's wrong and what you might need to do:
524
524
 
525
525
  ---
526
526
 
527
- ## Agent Transparency (v5.9.2)
527
+ ## Agent Transparency (v5.10.1)
528
528
 
529
529
  ### Agent Manual (Universal Protocols)
530
530
  {{INCLUDE:agent-protocols/AGENT_MANUAL.md}}
@@ -524,7 +524,7 @@ Wait for the user to decide what to do next.
524
524
 
525
525
  ---
526
526
 
527
- ## Agent Transparency (v5.9.2)
527
+ ## Agent Transparency (v5.10.1)
528
528
 
529
529
  ### Agent Manual (Universal Protocols)
530
530
  {{INCLUDE:agent-protocols/AGENT_MANUAL.md}}
@@ -229,7 +229,7 @@ Present the plan and ask:
229
229
 
230
230
  ---
231
231
 
232
- ## Agent Transparency (v5.9.2)
232
+ ## Agent Transparency (v5.10.1)
233
233
 
234
234
  ### Agent Manual (Universal Protocols)
235
235
  {{INCLUDE:agent-protocols/AGENT_MANUAL.md}}
@@ -354,7 +354,7 @@ The validation ensures generated PRDs are immediately usable for AI consumption
354
354
 
355
355
  ---
356
356
 
357
- ## Agent Transparency (v5.9.2)
357
+ ## Agent Transparency (v5.10.1)
358
358
 
359
359
  ### Agent Manual (Universal Protocols)
360
360
  {{INCLUDE:agent-protocols/AGENT_MANUAL.md}}
@@ -415,7 +415,7 @@ I'll update the PRD and add this to the refinement history. Confirm?
415
415
 
416
416
  ---
417
417
 
418
- ## Agent Transparency (v5.9.2)
418
+ ## Agent Transparency (v5.10.1)
419
419
 
420
420
  ### Agent Manual (Universal Protocols)
421
421
  {{INCLUDE:agent-protocols/AGENT_MANUAL.md}}
@@ -230,7 +230,7 @@ The goal is natural exploration of requirements, not a rigid questionnaire. Foll
230
230
 
231
231
  ---
232
232
 
233
- ## Agent Transparency (v5.9.2)
233
+ ## Agent Transparency (v5.10.1)
234
234
 
235
235
  ### Agent Manual (Universal Protocols)
236
236
  {{INCLUDE:agent-protocols/AGENT_MANUAL.md}}
@@ -409,7 +409,7 @@ The `/clavix:summarize` command extracts requirements from exploratory conversat
409
409
 
410
410
  ---
411
411
 
412
- ## Agent Transparency (v5.9.2)
412
+ ## Agent Transparency (v5.10.1)
413
413
 
414
414
  ### Agent Manual (Universal Protocols)
415
415
  {{INCLUDE:agent-protocols/AGENT_MANUAL.md}}
@@ -123,7 +123,7 @@ Implementation: BLOCKED - I'll analyze and report, not modify or fix
123
123
 
124
124
  ----
125
125
 
126
- ## Agent Transparency (v5.9.2)
126
+ ## Agent Transparency (v5.10.1)
127
127
 
128
128
  ### Agent Manual (Universal Protocols)
129
129
  {{INCLUDE:agent-protocols/AGENT_MANUAL.md}}
@@ -40,5 +40,5 @@ export interface ManagedBlock {
40
40
  content: string;
41
41
  targetFile: string;
42
42
  }
43
- export type AgentType = 'agents-md' | 'amp' | 'augment' | 'claude-code' | 'cline' | 'codex' | 'codebuddy' | 'copilot-instructions' | 'crush' | 'cursor' | 'custom' | 'droid' | 'gemini' | 'kilocode' | 'llxprt' | 'octo-md' | 'opencode' | 'qwen' | 'roocode' | 'windsurf';
43
+ export type AgentType = 'agents-md' | 'amp' | 'augment' | 'claude-code' | 'cline' | 'codex' | 'codebuddy' | 'copilot-instructions' | 'crush' | 'cursor' | 'custom' | 'droid' | 'gemini' | 'kilocode' | 'llxprt' | 'octo-md' | 'opencode' | 'qwen' | 'roocode' | 'vibe' | 'warp-md' | 'windsurf';
44
44
  //# sourceMappingURL=agent.d.ts.map
@@ -30,6 +30,7 @@ export async function selectIntegrations(agentManager, preSelected = []) {
30
30
  { name: 'LLXPRT (~/.llxprt/clavix/)', value: 'llxprt' },
31
31
  { name: 'OpenCode (.opencode/clavix/)', value: 'opencode' },
32
32
  { name: 'Qwen Code (~/.qwen/commands/clavix/)', value: 'qwen' },
33
+ { name: 'Mistral Vibe (.vibe/skills/)', value: 'vibe' },
33
34
  new inquirer.Separator(),
34
35
  new inquirer.Separator('=== IDE & IDE Extensions ==='),
35
36
  { name: 'Cline (.cline/workflows/)', value: 'cline' },
@@ -7,6 +7,7 @@
7
7
  * 3. Built-in default from integrations.json
8
8
  */
9
9
  import * as os from 'os';
10
+ import * as path from 'path';
10
11
  /**
11
12
  * Mapping of integration names to their environment variable names
12
13
  *
@@ -29,18 +30,35 @@ export const ENV_VAR_MAP = {
29
30
  */
30
31
  export function resolveIntegrationPath(config, userConfig) {
31
32
  const integrationName = config.name;
33
+ let resolvedPath;
32
34
  // Priority 1: Environment variable
33
35
  const envVar = ENV_VAR_MAP[integrationName];
34
36
  if (envVar && process.env[envVar]) {
35
- return process.env[envVar];
37
+ resolvedPath = process.env[envVar];
36
38
  }
37
- // Priority 2: User config override
38
- const customPath = userConfig?.experimental?.integrationPaths?.[integrationName];
39
- if (customPath && typeof customPath === 'string') {
40
- return expandTilde(customPath);
39
+ else {
40
+ // Priority 2: User config override
41
+ const customPath = userConfig?.experimental?.integrationPaths?.[integrationName];
42
+ if (customPath && typeof customPath === 'string') {
43
+ resolvedPath = customPath;
44
+ }
45
+ else {
46
+ // Priority 3: Built-in default from config
47
+ resolvedPath = config.directory;
48
+ }
41
49
  }
42
- // Priority 3: Built-in default from config
43
- return expandTilde(config.directory);
50
+ // Codex-specific: ensure /prompts subdirectory exists
51
+ // When using $CODEX_HOME, the user may set it to the base directory
52
+ // (e.g., /custom/codex) without the /prompts suffix. We need to
53
+ // ensure prompts always go into the /prompts subdirectory.
54
+ if (integrationName === 'codex') {
55
+ const normalizedPath = path.normalize(resolvedPath);
56
+ if (!normalizedPath.endsWith(path.join('prompts')) &&
57
+ !normalizedPath.endsWith(path.sep + 'prompts')) {
58
+ resolvedPath = path.join(resolvedPath, 'prompts');
59
+ }
60
+ }
61
+ return expandTilde(resolvedPath);
44
62
  }
45
63
  /**
46
64
  * Expands tilde (~) to the user's home directory
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clavix",
3
- "version": "5.9.2",
3
+ "version": "5.10.1",
4
4
  "description": "Agentic-first prompt workflows. Markdown templates that teach AI agents how to optimize prompts, create PRDs, and manage implementation.\n\nSLASH COMMANDS (in your AI assistant):\n /clavix:improve Optimize prompts with auto-depth\n /clavix:prd Generate PRD through questions\n /clavix:plan Create task breakdown from PRD\n /clavix:implement Execute tasks with progress tracking\n /clavix:start Begin conversational session\n /clavix:summarize Extract requirements from conversation\n /clavix:refine Refine existing PRD or prompt\n /clavix:verify Verify implementation against requirements\n /clavix:archive Archive completed projects\n\nWorks with Claude Code, Cursor, Windsurf, and 20 AI coding tools.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",