clavix 5.6.4 → 5.6.6

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.
Files changed (52) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/commands/update.js +6 -0
  3. package/dist/cli/helpers/init/commands.d.ts +23 -0
  4. package/dist/cli/helpers/init/commands.js +39 -0
  5. package/dist/cli/helpers/init/config.d.ts +20 -0
  6. package/dist/cli/helpers/init/config.js +49 -0
  7. package/dist/cli/helpers/init/directories.d.ts +12 -0
  8. package/dist/cli/helpers/init/directories.js +17 -0
  9. package/dist/cli/helpers/init/documentation.d.ts +25 -0
  10. package/dist/cli/helpers/init/documentation.js +176 -0
  11. package/dist/cli/helpers/init/index.d.ts +20 -0
  12. package/dist/cli/helpers/init/index.js +20 -0
  13. package/dist/cli/helpers/init/integrations.d.ts +44 -0
  14. package/dist/cli/helpers/init/integrations.js +109 -0
  15. package/dist/cli/helpers/init/prompts.d.ts +31 -0
  16. package/dist/cli/helpers/init/prompts.js +97 -0
  17. package/dist/templates/agents/octo.md +1 -0
  18. package/dist/templates/agents/warp.md +1 -0
  19. package/dist/templates/slash-commands/_canonical/archive.md +34 -0
  20. package/dist/templates/slash-commands/_canonical/plan.md +15 -0
  21. package/dist/templates/slash-commands/_canonical/refine.md +43 -7
  22. package/dist/templates/slash-commands/_canonical/start.md +24 -0
  23. package/dist/templates/slash-commands/_canonical/summarize.md +4 -1
  24. package/dist/templates/slash-commands/_components/MANIFEST.md +2 -1
  25. package/dist/templates/slash-commands/_components/references/quality-dimensions.md +21 -0
  26. package/package.json +4 -3
  27. package/dist/core/adapters/amp-adapter.d.ts +0 -30
  28. package/dist/core/adapters/amp-adapter.js +0 -35
  29. package/dist/core/adapters/augment-adapter.d.ts +0 -22
  30. package/dist/core/adapters/augment-adapter.js +0 -37
  31. package/dist/core/adapters/cline-adapter.d.ts +0 -37
  32. package/dist/core/adapters/cline-adapter.js +0 -45
  33. package/dist/core/adapters/codebuddy-adapter.d.ts +0 -27
  34. package/dist/core/adapters/codebuddy-adapter.js +0 -43
  35. package/dist/core/adapters/codex-adapter.d.ts +0 -27
  36. package/dist/core/adapters/codex-adapter.js +0 -40
  37. package/dist/core/adapters/crush-adapter.d.ts +0 -35
  38. package/dist/core/adapters/crush-adapter.js +0 -42
  39. package/dist/core/adapters/cursor-adapter.d.ts +0 -28
  40. package/dist/core/adapters/cursor-adapter.js +0 -33
  41. package/dist/core/adapters/droid-adapter.d.ts +0 -36
  42. package/dist/core/adapters/droid-adapter.js +0 -51
  43. package/dist/core/adapters/kilocode-adapter.d.ts +0 -37
  44. package/dist/core/adapters/kilocode-adapter.js +0 -42
  45. package/dist/core/adapters/opencode-adapter.d.ts +0 -36
  46. package/dist/core/adapters/opencode-adapter.js +0 -50
  47. package/dist/core/adapters/roocode-adapter.d.ts +0 -43
  48. package/dist/core/adapters/roocode-adapter.js +0 -62
  49. package/dist/core/adapters/windsurf-adapter.d.ts +0 -37
  50. package/dist/core/adapters/windsurf-adapter.js +0 -42
  51. package/dist/index 2.js +0 -13
  52. package/dist/index.d 2.ts +0 -4
@@ -1,43 +0,0 @@
1
- import * as os from 'os';
2
- import * as path from 'path';
3
- import { BaseAdapter } from './base-adapter.js';
4
- import { FileSystem } from '../../utils/file-system.js';
5
- /**
6
- * CodeBuddy CLI adapter
7
- * Commands stored in .codebuddy/commands with YAML frontmatter
8
- */
9
- export class CodeBuddyAdapter extends BaseAdapter {
10
- name = 'codebuddy';
11
- displayName = 'CodeBuddy';
12
- directory = '.codebuddy/commands';
13
- fileExtension = '.md';
14
- features = {
15
- supportsSubdirectories: false,
16
- supportsFrontmatter: true,
17
- argumentPlaceholder: '$1',
18
- frontmatterFields: ['description', 'argument-hint'],
19
- commandFormat: { separator: '-' },
20
- };
21
- async detectProject() {
22
- if (await FileSystem.exists('.codebuddy')) {
23
- return true;
24
- }
25
- const homePath = path.join(this.getHomeDir(), '.codebuddy');
26
- return await FileSystem.exists(homePath);
27
- }
28
- getCommandPath() {
29
- return this.directory;
30
- }
31
- getTargetFilename(name) {
32
- return `clavix-${name}${this.fileExtension}`;
33
- }
34
- formatCommand(template) {
35
- const frontmatter = `---\ndescription: ${template.description}\nargument-hint: [prompt]\n---\n\n`;
36
- const content = template.content.replace(/\{\{ARGS\}\}/g, '$1');
37
- return frontmatter + content;
38
- }
39
- getHomeDir() {
40
- return process.env.CLAVIX_HOME_OVERRIDE || os.homedir();
41
- }
42
- }
43
- //# sourceMappingURL=codebuddy-adapter.js.map
@@ -1,27 +0,0 @@
1
- import { BaseAdapter } from './base-adapter.js';
2
- import { CommandTemplate } from '../../types/agent.js';
3
- /**
4
- * Codex CLI adapter
5
- * Commands stored globally under ~/.codex/prompts
6
- */
7
- export declare class CodexAdapter extends BaseAdapter {
8
- readonly name = "codex";
9
- readonly displayName = "Codex CLI";
10
- readonly directory = "~/.codex/prompts";
11
- readonly fileExtension = ".md";
12
- readonly features: {
13
- supportsSubdirectories: boolean;
14
- supportsFrontmatter: boolean;
15
- argumentPlaceholder: string;
16
- frontmatterFields: string[];
17
- commandFormat: {
18
- separator: "-";
19
- };
20
- };
21
- detectProject(): Promise<boolean>;
22
- getCommandPath(): string;
23
- getTargetFilename(name: string): string;
24
- protected formatCommand(template: CommandTemplate): string;
25
- private getHomeDir;
26
- }
27
- //# sourceMappingURL=codex-adapter.d.ts.map
@@ -1,40 +0,0 @@
1
- import * as os from 'os';
2
- import * as path from 'path';
3
- import { BaseAdapter } from './base-adapter.js';
4
- import { FileSystem } from '../../utils/file-system.js';
5
- /**
6
- * Codex CLI adapter
7
- * Commands stored globally under ~/.codex/prompts
8
- */
9
- export class CodexAdapter extends BaseAdapter {
10
- name = 'codex';
11
- displayName = 'Codex CLI';
12
- directory = '~/.codex/prompts';
13
- fileExtension = '.md';
14
- features = {
15
- supportsSubdirectories: false,
16
- supportsFrontmatter: true,
17
- argumentPlaceholder: '$ARGUMENTS',
18
- frontmatterFields: ['description', 'argument-hint'],
19
- commandFormat: { separator: '-' },
20
- };
21
- async detectProject() {
22
- const codexDir = path.join(this.getHomeDir(), '.codex');
23
- return await FileSystem.exists(codexDir);
24
- }
25
- getCommandPath() {
26
- return path.join(this.getHomeDir(), '.codex', 'prompts');
27
- }
28
- getTargetFilename(name) {
29
- return `clavix-${name}${this.fileExtension}`;
30
- }
31
- formatCommand(template) {
32
- const frontmatter = `---\ndescription: ${template.description}\nargument-hint: [prompt]\n---\n\n`;
33
- const content = template.content.replace(/\{\{ARGS\}\}/g, '$ARGUMENTS');
34
- return frontmatter + content;
35
- }
36
- getHomeDir() {
37
- return process.env.CLAVIX_HOME_OVERRIDE || os.homedir();
38
- }
39
- }
40
- //# sourceMappingURL=codex-adapter.js.map
@@ -1,35 +0,0 @@
1
- import { BaseAdapter } from './base-adapter.js';
2
- import { CommandTemplate } from '../../types/agent.js';
3
- /**
4
- * Crush CLI adapter
5
- * Commands stored in .crush/commands/clavix/ (supports subdirectories)
6
- * Uses $PROMPT placeholder for user input (Crush-specific syntax)
7
- *
8
- * Reference: https://github.com/charmbracelet/crush/blob/main/COMMANDS.md
9
- */
10
- export declare class CrushAdapter extends BaseAdapter {
11
- readonly name = "crush";
12
- readonly displayName = "Crush CLI";
13
- readonly directory = ".crush/commands/clavix";
14
- readonly fileExtension = ".md";
15
- readonly features: {
16
- supportsSubdirectories: boolean;
17
- supportsFrontmatter: boolean;
18
- argumentPlaceholder: string;
19
- };
20
- /**
21
- * Detect if Crush is available in the project
22
- * Checks for .crush directory (project-level commands)
23
- */
24
- detectProject(): Promise<boolean>;
25
- /**
26
- * Get command path for Crush
27
- */
28
- getCommandPath(): string;
29
- /**
30
- * Format command content for Crush
31
- * Replaces generic {{ARGS}} placeholder with Crush-specific $PROMPT
32
- */
33
- protected formatCommand(template: CommandTemplate): string;
34
- }
35
- //# sourceMappingURL=crush-adapter.d.ts.map
@@ -1,42 +0,0 @@
1
- import { BaseAdapter } from './base-adapter.js';
2
- import { FileSystem } from '../../utils/file-system.js';
3
- /**
4
- * Crush CLI adapter
5
- * Commands stored in .crush/commands/clavix/ (supports subdirectories)
6
- * Uses $PROMPT placeholder for user input (Crush-specific syntax)
7
- *
8
- * Reference: https://github.com/charmbracelet/crush/blob/main/COMMANDS.md
9
- */
10
- export class CrushAdapter extends BaseAdapter {
11
- name = 'crush';
12
- displayName = 'Crush CLI';
13
- directory = '.crush/commands/clavix';
14
- fileExtension = '.md';
15
- features = {
16
- supportsSubdirectories: true,
17
- supportsFrontmatter: false,
18
- argumentPlaceholder: '$PROMPT',
19
- };
20
- /**
21
- * Detect if Crush is available in the project
22
- * Checks for .crush directory (project-level commands)
23
- */
24
- async detectProject() {
25
- return await FileSystem.exists('.crush');
26
- }
27
- /**
28
- * Get command path for Crush
29
- */
30
- getCommandPath() {
31
- return this.directory;
32
- }
33
- /**
34
- * Format command content for Crush
35
- * Replaces generic {{ARGS}} placeholder with Crush-specific $PROMPT
36
- */
37
- formatCommand(template) {
38
- // Replace Clavix generic placeholder with Crush placeholder
39
- return template.content.replace(/\{\{ARGS\}\}/g, '$PROMPT');
40
- }
41
- }
42
- //# sourceMappingURL=crush-adapter.js.map
@@ -1,28 +0,0 @@
1
- import { BaseAdapter } from './base-adapter.js';
2
- /**
3
- * Cursor IDE adapter
4
- * Commands are stored in .cursor/commands/ (flat structure, no subdirectories)
5
- */
6
- export declare class CursorAdapter extends BaseAdapter {
7
- readonly name = "cursor";
8
- readonly displayName = "Cursor";
9
- readonly directory = ".cursor/commands";
10
- readonly fileExtension = ".md";
11
- readonly features: {
12
- supportsSubdirectories: boolean;
13
- supportsFrontmatter: boolean;
14
- commandFormat: {
15
- separator: "-";
16
- };
17
- };
18
- /**
19
- * Detect if Cursor is available in the project
20
- */
21
- detectProject(): Promise<boolean>;
22
- /**
23
- * Get command path for Cursor
24
- */
25
- getCommandPath(): string;
26
- getTargetFilename(name: string): string;
27
- }
28
- //# sourceMappingURL=cursor-adapter.d.ts.map
@@ -1,33 +0,0 @@
1
- import { BaseAdapter } from './base-adapter.js';
2
- import { FileSystem } from '../../utils/file-system.js';
3
- /**
4
- * Cursor IDE adapter
5
- * Commands are stored in .cursor/commands/ (flat structure, no subdirectories)
6
- */
7
- export class CursorAdapter extends BaseAdapter {
8
- name = 'cursor';
9
- displayName = 'Cursor';
10
- directory = '.cursor/commands';
11
- fileExtension = '.md';
12
- features = {
13
- supportsSubdirectories: false,
14
- supportsFrontmatter: false,
15
- commandFormat: { separator: '-' },
16
- };
17
- /**
18
- * Detect if Cursor is available in the project
19
- */
20
- async detectProject() {
21
- return await FileSystem.exists('.cursor');
22
- }
23
- /**
24
- * Get command path for Cursor
25
- */
26
- getCommandPath() {
27
- return this.directory;
28
- }
29
- getTargetFilename(name) {
30
- return `clavix-${name}${this.fileExtension}`;
31
- }
32
- }
33
- //# sourceMappingURL=cursor-adapter.js.map
@@ -1,36 +0,0 @@
1
- import { BaseAdapter } from './base-adapter.js';
2
- import { CommandTemplate } from '../../types/agent.js';
3
- /**
4
- * Droid CLI adapter (Factory.ai)
5
- * Commands stored in .factory/commands/ with YAML frontmatter
6
- * Uses $ARGUMENTS placeholder for command arguments
7
- */
8
- export declare class DroidAdapter extends BaseAdapter {
9
- readonly name = "droid";
10
- readonly displayName = "Droid CLI";
11
- readonly directory = ".factory/commands";
12
- readonly fileExtension = ".md";
13
- readonly features: {
14
- supportsSubdirectories: boolean;
15
- supportsFrontmatter: boolean;
16
- frontmatterFields: string[];
17
- argumentPlaceholder: string;
18
- commandFormat: {
19
- separator: "-";
20
- };
21
- };
22
- /**
23
- * Detect if Droid CLI is available in the project
24
- */
25
- detectProject(): Promise<boolean>;
26
- /**
27
- * Get command path for Droid CLI
28
- */
29
- getCommandPath(): string;
30
- getTargetFilename(name: string): string;
31
- /**
32
- * Format command with YAML frontmatter for Droid CLI
33
- */
34
- protected formatCommand(template: CommandTemplate): string;
35
- }
36
- //# sourceMappingURL=droid-adapter.d.ts.map
@@ -1,51 +0,0 @@
1
- import { BaseAdapter } from './base-adapter.js';
2
- import { FileSystem } from '../../utils/file-system.js';
3
- /**
4
- * Droid CLI adapter (Factory.ai)
5
- * Commands stored in .factory/commands/ with YAML frontmatter
6
- * Uses $ARGUMENTS placeholder for command arguments
7
- */
8
- export class DroidAdapter extends BaseAdapter {
9
- name = 'droid';
10
- displayName = 'Droid CLI';
11
- directory = '.factory/commands';
12
- fileExtension = '.md';
13
- features = {
14
- supportsSubdirectories: false,
15
- supportsFrontmatter: true,
16
- frontmatterFields: ['description', 'argument-hint'],
17
- argumentPlaceholder: '$ARGUMENTS',
18
- commandFormat: { separator: '-' },
19
- };
20
- /**
21
- * Detect if Droid CLI is available in the project
22
- */
23
- async detectProject() {
24
- return await FileSystem.exists('.factory');
25
- }
26
- /**
27
- * Get command path for Droid CLI
28
- */
29
- getCommandPath() {
30
- return this.directory;
31
- }
32
- getTargetFilename(name) {
33
- return `clavix-${name}${this.fileExtension}`;
34
- }
35
- /**
36
- * Format command with YAML frontmatter for Droid CLI
37
- */
38
- formatCommand(template) {
39
- // Add YAML frontmatter
40
- const frontmatter = `---
41
- description: ${template.description}
42
- argument-hint: [prompt]
43
- ---
44
-
45
- `;
46
- // Replace generic argument placeholder with $ARGUMENTS
47
- const content = template.content.replace(/\{\{ARGS\}\}/g, '$ARGUMENTS');
48
- return frontmatter + content;
49
- }
50
- }
51
- //# sourceMappingURL=droid-adapter.js.map
@@ -1,37 +0,0 @@
1
- import { BaseAdapter } from './base-adapter.js';
2
- /**
3
- * Kilocode adapter
4
- * Workflows stored in .kilocode/workflows/ (flat structure, no subdirectories)
5
- * Slash command format: /[name.md] (includes .md extension)
6
- *
7
- * Features:
8
- * - Simple markdown with step-by-step instructions
9
- * - Supports built-in tools and MCP integrations
10
- * - Project-specific workflows only
11
- *
12
- * Reference: https://kilocode.ai/docs/features/slash-commands/workflows
13
- */
14
- export declare class KilocodeAdapter extends BaseAdapter {
15
- readonly name = "kilocode";
16
- readonly displayName = "Kilocode";
17
- readonly directory = ".kilocode/workflows";
18
- readonly fileExtension = ".md";
19
- readonly features: {
20
- supportsSubdirectories: boolean;
21
- supportsFrontmatter: boolean;
22
- commandFormat: {
23
- separator: "-";
24
- };
25
- };
26
- /**
27
- * Detect if Kilocode is available in the project
28
- * Checks for .kilocode directory
29
- */
30
- detectProject(): Promise<boolean>;
31
- /**
32
- * Get command path for Kilocode
33
- */
34
- getCommandPath(): string;
35
- getTargetFilename(name: string): string;
36
- }
37
- //# sourceMappingURL=kilocode-adapter.d.ts.map
@@ -1,42 +0,0 @@
1
- import { BaseAdapter } from './base-adapter.js';
2
- import { FileSystem } from '../../utils/file-system.js';
3
- /**
4
- * Kilocode adapter
5
- * Workflows stored in .kilocode/workflows/ (flat structure, no subdirectories)
6
- * Slash command format: /[name.md] (includes .md extension)
7
- *
8
- * Features:
9
- * - Simple markdown with step-by-step instructions
10
- * - Supports built-in tools and MCP integrations
11
- * - Project-specific workflows only
12
- *
13
- * Reference: https://kilocode.ai/docs/features/slash-commands/workflows
14
- */
15
- export class KilocodeAdapter extends BaseAdapter {
16
- name = 'kilocode';
17
- displayName = 'Kilocode';
18
- directory = '.kilocode/workflows';
19
- fileExtension = '.md';
20
- features = {
21
- supportsSubdirectories: false,
22
- supportsFrontmatter: false,
23
- commandFormat: { separator: '-' },
24
- };
25
- /**
26
- * Detect if Kilocode is available in the project
27
- * Checks for .kilocode directory
28
- */
29
- async detectProject() {
30
- return await FileSystem.exists('.kilocode');
31
- }
32
- /**
33
- * Get command path for Kilocode
34
- */
35
- getCommandPath() {
36
- return this.directory;
37
- }
38
- getTargetFilename(name) {
39
- return `clavix-${name}${this.fileExtension}`;
40
- }
41
- }
42
- //# sourceMappingURL=kilocode-adapter.js.map
@@ -1,36 +0,0 @@
1
- import { BaseAdapter } from './base-adapter.js';
2
- import { CommandTemplate } from '../../types/agent.js';
3
- /**
4
- * OpenCode adapter
5
- * Commands stored in .opencode/command/ with frontmatter
6
- * Uses $ARGUMENTS, $1, $2 placeholders
7
- */
8
- export declare class OpenCodeAdapter extends BaseAdapter {
9
- readonly name = "opencode";
10
- readonly displayName = "OpenCode";
11
- readonly directory = ".opencode/command";
12
- readonly fileExtension = ".md";
13
- readonly features: {
14
- supportsSubdirectories: boolean;
15
- supportsFrontmatter: boolean;
16
- frontmatterFields: string[];
17
- argumentPlaceholder: string;
18
- commandFormat: {
19
- separator: "-";
20
- };
21
- };
22
- /**
23
- * Detect if OpenCode is available in the project
24
- */
25
- detectProject(): Promise<boolean>;
26
- /**
27
- * Get command path for OpenCode
28
- */
29
- getCommandPath(): string;
30
- getTargetFilename(name: string): string;
31
- /**
32
- * Format command with frontmatter for OpenCode
33
- */
34
- protected formatCommand(template: CommandTemplate): string;
35
- }
36
- //# sourceMappingURL=opencode-adapter.d.ts.map
@@ -1,50 +0,0 @@
1
- import { BaseAdapter } from './base-adapter.js';
2
- import { FileSystem } from '../../utils/file-system.js';
3
- /**
4
- * OpenCode adapter
5
- * Commands stored in .opencode/command/ with frontmatter
6
- * Uses $ARGUMENTS, $1, $2 placeholders
7
- */
8
- export class OpenCodeAdapter extends BaseAdapter {
9
- name = 'opencode';
10
- displayName = 'OpenCode';
11
- directory = '.opencode/command';
12
- fileExtension = '.md';
13
- features = {
14
- supportsSubdirectories: false,
15
- supportsFrontmatter: true,
16
- frontmatterFields: ['description', 'agent', 'model'],
17
- argumentPlaceholder: '$ARGUMENTS',
18
- commandFormat: { separator: '-' },
19
- };
20
- /**
21
- * Detect if OpenCode is available in the project
22
- */
23
- async detectProject() {
24
- return await FileSystem.exists('.opencode');
25
- }
26
- /**
27
- * Get command path for OpenCode
28
- */
29
- getCommandPath() {
30
- return this.directory;
31
- }
32
- getTargetFilename(name) {
33
- return `clavix-${name}${this.fileExtension}`;
34
- }
35
- /**
36
- * Format command with frontmatter for OpenCode
37
- */
38
- formatCommand(template) {
39
- // Add frontmatter
40
- const frontmatter = `---
41
- description: ${template.description}
42
- ---
43
-
44
- `;
45
- // Replace generic argument placeholder with $ARGUMENTS
46
- const content = template.content.replace(/\{\{ARGS\}\}/g, '$ARGUMENTS');
47
- return frontmatter + content;
48
- }
49
- }
50
- //# sourceMappingURL=opencode-adapter.js.map
@@ -1,43 +0,0 @@
1
- import { BaseAdapter } from './base-adapter.js';
2
- import { CommandTemplate } from '../../types/agent.js';
3
- /**
4
- * Roocode adapter
5
- * Commands stored in .roo/commands/ (flat structure, no subdirectories)
6
- * Slash command format: /[name] (no .md extension, auto-converts to lowercase/dashes)
7
- *
8
- * Features:
9
- * - Supports optional frontmatter (description, argument-hint)
10
- * - Command names automatically processed: lowercase, spaces→dashes, special chars removed
11
- * - Project commands override global commands
12
- *
13
- * Reference: https://docs.roocode.com/features/slash-commands
14
- */
15
- export declare class RoocodeAdapter extends BaseAdapter {
16
- readonly name = "roocode";
17
- readonly displayName = "Roocode";
18
- readonly directory = ".roo/commands";
19
- readonly fileExtension = ".md";
20
- readonly features: {
21
- supportsSubdirectories: boolean;
22
- supportsFrontmatter: boolean;
23
- commandFormat: {
24
- separator: "-";
25
- };
26
- };
27
- /**
28
- * Detect if Roocode is available in the project
29
- * Checks for .roo directory
30
- */
31
- detectProject(): Promise<boolean>;
32
- /**
33
- * Get command path for Roocode
34
- */
35
- getCommandPath(): string;
36
- getTargetFilename(name: string): string;
37
- /**
38
- * Format command content for Roocode
39
- * Adds frontmatter with description and argument-hint if not already present
40
- */
41
- protected formatCommand(template: CommandTemplate): string;
42
- }
43
- //# sourceMappingURL=roocode-adapter.d.ts.map
@@ -1,62 +0,0 @@
1
- import { BaseAdapter } from './base-adapter.js';
2
- import { FileSystem } from '../../utils/file-system.js';
3
- /**
4
- * Roocode adapter
5
- * Commands stored in .roo/commands/ (flat structure, no subdirectories)
6
- * Slash command format: /[name] (no .md extension, auto-converts to lowercase/dashes)
7
- *
8
- * Features:
9
- * - Supports optional frontmatter (description, argument-hint)
10
- * - Command names automatically processed: lowercase, spaces→dashes, special chars removed
11
- * - Project commands override global commands
12
- *
13
- * Reference: https://docs.roocode.com/features/slash-commands
14
- */
15
- export class RoocodeAdapter extends BaseAdapter {
16
- name = 'roocode';
17
- displayName = 'Roocode';
18
- directory = '.roo/commands';
19
- fileExtension = '.md';
20
- features = {
21
- supportsSubdirectories: false,
22
- supportsFrontmatter: true,
23
- commandFormat: { separator: '-' },
24
- };
25
- /**
26
- * Detect if Roocode is available in the project
27
- * Checks for .roo directory
28
- */
29
- async detectProject() {
30
- return await FileSystem.exists('.roo');
31
- }
32
- /**
33
- * Get command path for Roocode
34
- */
35
- getCommandPath() {
36
- return this.directory;
37
- }
38
- getTargetFilename(name) {
39
- return `clavix-${name}${this.fileExtension}`;
40
- }
41
- /**
42
- * Format command content for Roocode
43
- * Adds frontmatter with description and argument-hint if not already present
44
- */
45
- formatCommand(template) {
46
- const content = template.content;
47
- // Check if frontmatter already exists
48
- if (content.trim().startsWith('---')) {
49
- // Frontmatter already exists, use as-is
50
- return content;
51
- }
52
- // Add Roocode-specific frontmatter
53
- const frontmatter = `---
54
- description: ${template.description || `Clavix ${template.name} command`}
55
- argument-hint: <prompt>
56
- ---
57
-
58
- `;
59
- return frontmatter + content;
60
- }
61
- }
62
- //# sourceMappingURL=roocode-adapter.js.map
@@ -1,37 +0,0 @@
1
- import { BaseAdapter } from './base-adapter.js';
2
- /**
3
- * Windsurf adapter
4
- * Workflows stored in .windsurf/workflows/ (supports subdirectories)
5
- * Slash command format: /[name] (no .md extension)
6
- *
7
- * Features:
8
- * - Supports subdirectories for workflow organization
9
- * - 12,000 character limit per workflow file
10
- * - Auto-discovers from workspace, subdirectories, and parent dirs up to git root
11
- *
12
- * Reference: https://docs.windsurf.com/windsurf/cascade/workflows
13
- */
14
- export declare class WindsurfAdapter extends BaseAdapter {
15
- readonly name = "windsurf";
16
- readonly displayName = "Windsurf";
17
- readonly directory = ".windsurf/workflows";
18
- readonly fileExtension = ".md";
19
- readonly features: {
20
- supportsSubdirectories: boolean;
21
- supportsFrontmatter: boolean;
22
- commandFormat: {
23
- separator: "-";
24
- };
25
- };
26
- /**
27
- * Detect if Windsurf is available in the project
28
- * Checks for .windsurf directory
29
- */
30
- detectProject(): Promise<boolean>;
31
- /**
32
- * Get command path for Windsurf
33
- */
34
- getCommandPath(): string;
35
- getTargetFilename(name: string): string;
36
- }
37
- //# sourceMappingURL=windsurf-adapter.d.ts.map