providers.js

  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};