1/**
2 * Provider configurations for the transformer factory.
3 *
4 * Each config specifies:
5 * - provider: key into PROVIDER_PLACEHOLDERS (e.g. 'claude-code')
6 * - configDir: dot-directory name (e.g. '.claude')
7 * - displayName: human-readable name for log output (e.g. 'Claude Code')
8 * - frontmatterFields: which optional fields to emit beyond name + description
9 * - bodyTransform: optional function (body, skill) => transformed body
10 */
11export const PROVIDERS = {
12 cursor: {
13 provider: 'cursor',
14 configDir: '.cursor',
15 displayName: 'Cursor',
16 frontmatterFields: ['license', 'compatibility', 'metadata'],
17 },
18 'claude-code': {
19 provider: 'claude-code',
20 configDir: '.claude',
21 displayName: 'Claude Code',
22 frontmatterFields: ['user-invocable', 'argument-hint', 'license', 'compatibility', 'metadata', 'allowed-tools'],
23 },
24 gemini: {
25 provider: 'gemini',
26 configDir: '.gemini',
27 displayName: 'Gemini',
28 frontmatterFields: [],
29 },
30 codex: {
31 provider: 'codex',
32 configDir: '.codex',
33 displayName: 'Codex',
34 frontmatterFields: ['argument-hint', 'license'],
35 },
36 agents: {
37 provider: 'agents',
38 configDir: '.agents',
39 displayName: 'Agents',
40 frontmatterFields: ['user-invocable', 'argument-hint', 'license', 'compatibility', 'metadata'],
41 },
42 kiro: {
43 provider: 'kiro',
44 configDir: '.kiro',
45 displayName: 'Kiro',
46 frontmatterFields: ['license', 'compatibility', 'metadata'],
47 },
48 opencode: {
49 provider: 'opencode',
50 configDir: '.opencode',
51 displayName: 'OpenCode',
52 frontmatterFields: ['user-invocable', 'argument-hint', 'license', 'compatibility', 'metadata', 'allowed-tools'],
53 },
54 pi: {
55 provider: 'pi',
56 configDir: '.pi',
57 displayName: 'Pi',
58 frontmatterFields: ['license', 'compatibility', 'metadata', 'allowed-tools'],
59 },
60 'trae-cn': {
61 provider: 'trae-cn',
62 configDir: '.trae-cn',
63 displayName: 'Trae China',
64 placeholderProvider: 'trae',
65 frontmatterFields: ['user-invocable', 'argument-hint', 'license', 'compatibility', 'metadata'],
66 },
67 trae: {
68 provider: 'trae',
69 configDir: '.trae',
70 displayName: 'Trae',
71 frontmatterFields: ['user-invocable', 'argument-hint', 'license', 'compatibility', 'metadata'],
72 },
73 'rovo-dev': {
74 provider: 'rovo-dev',
75 configDir: '.rovodev',
76 displayName: 'Rovo Dev',
77 frontmatterFields: ['user-invocable', 'argument-hint', 'license', 'compatibility', 'metadata', 'allowed-tools'],
78 },
79};