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 * - providerTags: markdown block tags kept for this target (e.g. <codex>...</codex>)
9 * - frontmatterFields: which optional fields to emit beyond name + description
10 * - bodyTransform: optional function (body, skill) => transformed body
11 */
12export const PROVIDERS = {
13 cursor: {
14 provider: 'cursor',
15 providerTags: ['cursor'],
16 configDir: '.cursor',
17 displayName: 'Cursor',
18 frontmatterFields: ['license', 'compatibility', 'metadata'],
19 },
20 'claude-code': {
21 provider: 'claude-code',
22 providerTags: ['claude-code', 'claude'],
23 configDir: '.claude',
24 displayName: 'Claude Code',
25 frontmatterFields: ['user-invocable', 'argument-hint', 'license', 'compatibility', 'metadata', 'allowed-tools'],
26 agentFormat: 'claude-md',
27 },
28 gemini: {
29 provider: 'gemini',
30 providerTags: ['gemini'],
31 configDir: '.gemini',
32 displayName: 'Gemini',
33 frontmatterFields: [],
34 },
35 codex: {
36 provider: 'codex',
37 providerTags: ['codex'],
38 configDir: '.codex',
39 displayName: 'Codex',
40 frontmatterFields: [],
41 includeVersion: false,
42 writeOpenAIMetadata: true,
43 agentFormat: 'codex-toml',
44 },
45 agents: {
46 provider: 'agents',
47 providerTags: ['agents', 'codex'],
48 configDir: '.agents',
49 displayName: 'Codex Repo Skills',
50 placeholderProvider: 'codex',
51 frontmatterFields: [],
52 includeVersion: false,
53 writeOpenAIMetadata: true,
54 },
55 github: {
56 provider: 'github',
57 providerTags: ['github'],
58 configDir: '.github',
59 displayName: 'GitHub Copilot',
60 placeholderProvider: 'agents',
61 frontmatterFields: ['user-invocable', 'argument-hint', 'license', 'compatibility', 'metadata'],
62 },
63 kiro: {
64 provider: 'kiro',
65 providerTags: ['kiro'],
66 configDir: '.kiro',
67 displayName: 'Kiro',
68 frontmatterFields: ['license', 'compatibility', 'metadata'],
69 },
70 opencode: {
71 provider: 'opencode',
72 providerTags: ['opencode'],
73 configDir: '.opencode',
74 displayName: 'OpenCode',
75 frontmatterFields: ['user-invocable', 'argument-hint', 'license', 'compatibility', 'metadata', 'allowed-tools'],
76 },
77 pi: {
78 provider: 'pi',
79 providerTags: ['pi'],
80 configDir: '.pi',
81 displayName: 'Pi',
82 frontmatterFields: ['license', 'compatibility', 'metadata', 'allowed-tools'],
83 },
84 qoder: {
85 provider: 'qoder',
86 providerTags: ['qoder'],
87 configDir: '.qoder',
88 displayName: 'Qoder',
89 frontmatterFields: ['user-invocable', 'argument-hint', 'license', 'compatibility', 'metadata', 'allowed-tools'],
90 },
91 'trae-cn': {
92 provider: 'trae-cn',
93 providerTags: ['trae-cn', 'trae'],
94 configDir: '.trae-cn',
95 displayName: 'Trae China',
96 placeholderProvider: 'trae',
97 frontmatterFields: ['user-invocable', 'argument-hint', 'license', 'compatibility', 'metadata'],
98 },
99 trae: {
100 provider: 'trae',
101 providerTags: ['trae'],
102 configDir: '.trae',
103 displayName: 'Trae',
104 frontmatterFields: ['user-invocable', 'argument-hint', 'license', 'compatibility', 'metadata'],
105 },
106 'rovo-dev': {
107 provider: 'rovo-dev',
108 providerTags: ['rovo-dev'],
109 configDir: '.rovodev',
110 displayName: 'Rovo Dev',
111 frontmatterFields: ['user-invocable', 'argument-hint', 'license', 'compatibility', 'metadata', 'allowed-tools'],
112 },
113};