mewkit 1.9.3 → 1.9.4

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 (205) hide show
  1. package/dist/commands/init.d.ts.map +1 -1
  2. package/dist/commands/init.js +4 -1
  3. package/dist/commands/init.js.map +1 -1
  4. package/dist/commands/memory.d.ts.map +1 -1
  5. package/dist/commands/memory.js.map +1 -1
  6. package/dist/commands/orchviz.d.ts.map +1 -1
  7. package/dist/commands/orchviz.js +2 -5
  8. package/dist/commands/orchviz.js.map +1 -1
  9. package/dist/commands/setup.d.ts.map +1 -1
  10. package/dist/commands/setup.js +1 -3
  11. package/dist/commands/setup.js.map +1 -1
  12. package/dist/commands/upgrade.d.ts.map +1 -1
  13. package/dist/commands/upgrade.js +7 -4
  14. package/dist/commands/upgrade.js.map +1 -1
  15. package/dist/core/find-orphans.d.ts +10 -2
  16. package/dist/core/find-orphans.d.ts.map +1 -1
  17. package/dist/core/find-orphans.js +10 -2
  18. package/dist/core/find-orphans.js.map +1 -1
  19. package/dist/core/merge-settings.js.map +1 -1
  20. package/dist/migrate/codex-capabilities.d.ts.map +1 -1
  21. package/dist/migrate/codex-capabilities.js +3 -8
  22. package/dist/migrate/codex-capabilities.js.map +1 -1
  23. package/dist/migrate/config-merger/merge-single-sections.d.ts.map +1 -1
  24. package/dist/migrate/config-merger/merge-single-sections.js +2 -4
  25. package/dist/migrate/config-merger/merge-single-sections.js.map +1 -1
  26. package/dist/migrate/converters/claude-to-codex-hooks.d.ts.map +1 -1
  27. package/dist/migrate/converters/claude-to-codex-hooks.js +2 -6
  28. package/dist/migrate/converters/claude-to-codex-hooks.js.map +1 -1
  29. package/dist/migrate/converters/fm-to-codex-toml.d.ts.map +1 -1
  30. package/dist/migrate/converters/fm-to-codex-toml.js +5 -6
  31. package/dist/migrate/converters/fm-to-codex-toml.js.map +1 -1
  32. package/dist/migrate/converters/fm-to-json.d.ts.map +1 -1
  33. package/dist/migrate/converters/fm-to-json.js +5 -4
  34. package/dist/migrate/converters/fm-to-json.js.map +1 -1
  35. package/dist/migrate/converters/fm-to-yaml.d.ts.map +1 -1
  36. package/dist/migrate/converters/fm-to-yaml.js +4 -1
  37. package/dist/migrate/converters/fm-to-yaml.js.map +1 -1
  38. package/dist/migrate/converters/index.d.ts.map +1 -1
  39. package/dist/migrate/converters/index.js.map +1 -1
  40. package/dist/migrate/converters/md-strip.d.ts.map +1 -1
  41. package/dist/migrate/converters/md-strip.js +10 -8
  42. package/dist/migrate/converters/md-strip.js.map +1 -1
  43. package/dist/migrate/converters/md-to-kiro-steering.d.ts.map +1 -1
  44. package/dist/migrate/converters/md-to-kiro-steering.js.map +1 -1
  45. package/dist/migrate/converters/md-to-mdc.d.ts.map +1 -1
  46. package/dist/migrate/converters/md-to-mdc.js +1 -8
  47. package/dist/migrate/converters/md-to-mdc.js.map +1 -1
  48. package/dist/migrate/discovery/handlers-json-filter.d.ts.map +1 -1
  49. package/dist/migrate/discovery/handlers-json-filter.js.map +1 -1
  50. package/dist/migrate/discovery/index.d.ts +2 -2
  51. package/dist/migrate/discovery/index.d.ts.map +1 -1
  52. package/dist/migrate/discovery/index.js +2 -2
  53. package/dist/migrate/discovery/index.js.map +1 -1
  54. package/dist/migrate/discovery/skills-discovery.d.ts.map +1 -1
  55. package/dist/migrate/discovery/skills-discovery.js.map +1 -1
  56. package/dist/migrate/discovery/source-paths.d.ts.map +1 -1
  57. package/dist/migrate/discovery/source-paths.js +1 -2
  58. package/dist/migrate/discovery/source-paths.js.map +1 -1
  59. package/dist/migrate/hooks/codex-features-flag.d.ts.map +1 -1
  60. package/dist/migrate/hooks/codex-features-flag.js +10 -5
  61. package/dist/migrate/hooks/codex-features-flag.js.map +1 -1
  62. package/dist/migrate/hooks/codex-hook-wrapper.d.ts.map +1 -1
  63. package/dist/migrate/hooks/codex-hook-wrapper.js +6 -2
  64. package/dist/migrate/hooks/codex-hook-wrapper.js.map +1 -1
  65. package/dist/migrate/hooks/codex-path-safety.d.ts.map +1 -1
  66. package/dist/migrate/hooks/codex-path-safety.js +4 -2
  67. package/dist/migrate/hooks/codex-path-safety.js.map +1 -1
  68. package/dist/migrate/hooks/codex-toml-installer.d.ts.map +1 -1
  69. package/dist/migrate/hooks/codex-toml-installer.js +15 -5
  70. package/dist/migrate/hooks/codex-toml-installer.js.map +1 -1
  71. package/dist/migrate/hooks/hooks-settings-merger.d.ts.map +1 -1
  72. package/dist/migrate/hooks/hooks-settings-merger.js +61 -23
  73. package/dist/migrate/hooks/hooks-settings-merger.js.map +1 -1
  74. package/dist/migrate/hooks/index.d.ts +3 -3
  75. package/dist/migrate/hooks/index.d.ts.map +1 -1
  76. package/dist/migrate/hooks/index.js +3 -3
  77. package/dist/migrate/hooks/index.js.map +1 -1
  78. package/dist/migrate/hooks/opencode-config-installer.d.ts.map +1 -1
  79. package/dist/migrate/hooks/opencode-config-installer.js.map +1 -1
  80. package/dist/migrate/migrate-discover.d.ts.map +1 -1
  81. package/dist/migrate/migrate-discover.js +1 -3
  82. package/dist/migrate/migrate-discover.js.map +1 -1
  83. package/dist/migrate/migrate-mode-resolver.d.ts.map +1 -1
  84. package/dist/migrate/migrate-mode-resolver.js.map +1 -1
  85. package/dist/migrate/migrate-orchestrator.d.ts.map +1 -1
  86. package/dist/migrate/migrate-orchestrator.js +17 -9
  87. package/dist/migrate/migrate-orchestrator.js.map +1 -1
  88. package/dist/migrate/migrate-scope-resolver.d.ts.map +1 -1
  89. package/dist/migrate/migrate-scope-resolver.js +1 -6
  90. package/dist/migrate/migrate-scope-resolver.js.map +1 -1
  91. package/dist/migrate/migrate-ui-summary.d.ts.map +1 -1
  92. package/dist/migrate/migrate-ui-summary.js.map +1 -1
  93. package/dist/migrate/model-taxonomy.d.ts.map +1 -1
  94. package/dist/migrate/model-taxonomy.js.map +1 -1
  95. package/dist/migrate/portable-installer.d.ts.map +1 -1
  96. package/dist/migrate/portable-installer.js +19 -13
  97. package/dist/migrate/portable-installer.js.map +1 -1
  98. package/dist/migrate/provider-registry.d.ts.map +1 -1
  99. package/dist/migrate/provider-registry.js +608 -106
  100. package/dist/migrate/provider-registry.js.map +1 -1
  101. package/dist/migrate/reconcile/checksum-utils.d.ts.map +1 -1
  102. package/dist/migrate/reconcile/checksum-utils.js.map +1 -1
  103. package/dist/migrate/reconcile/conflict-resolver.d.ts.map +1 -1
  104. package/dist/migrate/reconcile/conflict-resolver.js.map +1 -1
  105. package/dist/migrate/reconcile/diff-display.d.ts.map +1 -1
  106. package/dist/migrate/reconcile/diff-display.js.map +1 -1
  107. package/dist/migrate/reconcile/index.d.ts +2 -2
  108. package/dist/migrate/reconcile/index.d.ts.map +1 -1
  109. package/dist/migrate/reconcile/index.js +2 -2
  110. package/dist/migrate/reconcile/index.js.map +1 -1
  111. package/dist/migrate/reconcile/output-sanitizer.d.ts.map +1 -1
  112. package/dist/migrate/reconcile/output-sanitizer.js +2 -9
  113. package/dist/migrate/reconcile/output-sanitizer.js.map +1 -1
  114. package/dist/migrate/reconcile/portable-registry.d.ts +18 -18
  115. package/dist/migrate/reconcile/portable-registry.d.ts.map +1 -1
  116. package/dist/migrate/reconcile/portable-registry.js +7 -6
  117. package/dist/migrate/reconcile/portable-registry.js.map +1 -1
  118. package/dist/migrate/reconcile/process-lock.d.ts.map +1 -1
  119. package/dist/migrate/reconcile/process-lock.js +1 -3
  120. package/dist/migrate/reconcile/process-lock.js.map +1 -1
  121. package/dist/migrate/reconcile/reconcile-state-builders.d.ts.map +1 -1
  122. package/dist/migrate/reconcile/reconcile-state-builders.js +53 -19
  123. package/dist/migrate/reconcile/reconcile-state-builders.js.map +1 -1
  124. package/dist/migrate/reconcile/reconcile-types.d.ts.map +1 -1
  125. package/dist/migrate/reconcile/reconcile-types.js +40 -20
  126. package/dist/migrate/reconcile/reconcile-types.js.map +1 -1
  127. package/dist/migrate/reconcile/reconciler.d.ts.map +1 -1
  128. package/dist/migrate/reconcile/reconciler.js +128 -66
  129. package/dist/migrate/reconcile/reconciler.js.map +1 -1
  130. package/dist/migrate/skill-directory-installer.d.ts.map +1 -1
  131. package/dist/migrate/skill-directory-installer.js +11 -2
  132. package/dist/migrate/skill-directory-installer.js.map +1 -1
  133. package/dist/orchviz/constants.d.ts.map +1 -1
  134. package/dist/orchviz/constants.js +4 -4
  135. package/dist/orchviz/constants.js.map +1 -1
  136. package/dist/orchviz/fs-utils.d.ts.map +1 -1
  137. package/dist/orchviz/fs-utils.js.map +1 -1
  138. package/dist/orchviz/overlay/gate-readers.d.ts.map +1 -1
  139. package/dist/orchviz/overlay/gate-readers.js.map +1 -1
  140. package/dist/orchviz/parser/handle-progress.d.ts.map +1 -1
  141. package/dist/orchviz/parser/handle-progress.js.map +1 -1
  142. package/dist/orchviz/parser/handle-text.d.ts.map +1 -1
  143. package/dist/orchviz/parser/handle-text.js +1 -3
  144. package/dist/orchviz/parser/handle-text.js.map +1 -1
  145. package/dist/orchviz/parser/handle-tool-result.d.ts.map +1 -1
  146. package/dist/orchviz/parser/handle-tool-result.js +3 -8
  147. package/dist/orchviz/parser/handle-tool-result.js.map +1 -1
  148. package/dist/orchviz/parser/handle-tool-use.d.ts.map +1 -1
  149. package/dist/orchviz/parser/handle-tool-use.js +1 -3
  150. package/dist/orchviz/parser/handle-tool-use.js.map +1 -1
  151. package/dist/orchviz/parser/index.d.ts.map +1 -1
  152. package/dist/orchviz/parser/index.js +1 -3
  153. package/dist/orchviz/parser/index.js.map +1 -1
  154. package/dist/orchviz/parser/label-helpers.d.ts.map +1 -1
  155. package/dist/orchviz/parser/label-helpers.js.map +1 -1
  156. package/dist/orchviz/parser/utils.d.ts.map +1 -1
  157. package/dist/orchviz/parser/utils.js +1 -3
  158. package/dist/orchviz/parser/utils.js.map +1 -1
  159. package/dist/orchviz/permission-detection.d.ts.map +1 -1
  160. package/dist/orchviz/permission-detection.js.map +1 -1
  161. package/dist/orchviz/plan/apply-todo-toggle.d.ts.map +1 -1
  162. package/dist/orchviz/plan/apply-todo-toggle.js.map +1 -1
  163. package/dist/orchviz/plan/collector.d.ts.map +1 -1
  164. package/dist/orchviz/plan/collector.js +2 -6
  165. package/dist/orchviz/plan/collector.js.map +1 -1
  166. package/dist/orchviz/plan/list-plans.d.ts.map +1 -1
  167. package/dist/orchviz/plan/list-plans.js +6 -11
  168. package/dist/orchviz/plan/list-plans.js.map +1 -1
  169. package/dist/orchviz/plan/parse-phase-file.d.ts.map +1 -1
  170. package/dist/orchviz/plan/parse-phase-file.js +1 -3
  171. package/dist/orchviz/plan/parse-phase-file.js.map +1 -1
  172. package/dist/orchviz/plan/types.d.ts.map +1 -1
  173. package/dist/orchviz/server/api-handlers.d.ts.map +1 -1
  174. package/dist/orchviz/server/api-handlers.js.map +1 -1
  175. package/dist/orchviz/server/index.d.ts.map +1 -1
  176. package/dist/orchviz/server/index.js +2 -5
  177. package/dist/orchviz/server/index.js.map +1 -1
  178. package/dist/orchviz/server/sse-handler.d.ts.map +1 -1
  179. package/dist/orchviz/server/sse-handler.js +1 -1
  180. package/dist/orchviz/server/sse-handler.js.map +1 -1
  181. package/dist/orchviz/server/static-handler.d.ts.map +1 -1
  182. package/dist/orchviz/server/static-handler.js +1 -3
  183. package/dist/orchviz/server/static-handler.js.map +1 -1
  184. package/dist/orchviz/server/write-handlers.d.ts.map +1 -1
  185. package/dist/orchviz/server/write-handlers.js +17 -3
  186. package/dist/orchviz/server/write-handlers.js.map +1 -1
  187. package/dist/orchviz/server/write-utils.d.ts.map +1 -1
  188. package/dist/orchviz/server/write-utils.js.map +1 -1
  189. package/dist/orchviz/session-discovery.d.ts.map +1 -1
  190. package/dist/orchviz/session-discovery.js.map +1 -1
  191. package/dist/orchviz/session-runtime.d.ts +1 -2
  192. package/dist/orchviz/session-runtime.d.ts.map +1 -1
  193. package/dist/orchviz/session-runtime.js.map +1 -1
  194. package/dist/orchviz/subagent-scanner.d.ts.map +1 -1
  195. package/dist/orchviz/subagent-scanner.js.map +1 -1
  196. package/dist/orchviz/subagent-watcher.d.ts.map +1 -1
  197. package/dist/orchviz/subagent-watcher.js +2 -3
  198. package/dist/orchviz/subagent-watcher.js.map +1 -1
  199. package/dist/orchviz/tool-input-data.d.ts.map +1 -1
  200. package/dist/orchviz/tool-input-data.js +1 -3
  201. package/dist/orchviz/tool-input-data.js.map +1 -1
  202. package/dist/orchviz/tool-summarizer.d.ts.map +1 -1
  203. package/dist/orchviz/tool-summarizer.js +1 -3
  204. package/dist/orchviz/tool-summarizer.js.map +1 -1
  205. package/package.json +1 -1
@@ -62,30 +62,104 @@ export const providers = {
62
62
  name: "claude-code",
63
63
  displayName: "Claude Code",
64
64
  subagents: "full",
65
- agents: { projectPath: ".claude/agents", globalPath: join(home, ".claude/agents"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
66
- commands: { projectPath: ".claude/commands", globalPath: join(home, ".claude/commands"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
67
- skills: { projectPath: ".claude/skills", globalPath: join(home, ".claude/skills"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
68
- config: { projectPath: "CLAUDE.md", globalPath: join(home, ".claude/CLAUDE.md"), format: "direct-copy", writeStrategy: "single-file", fileExtension: ".md" },
69
- rules: { projectPath: ".claude/rules", globalPath: join(home, ".claude/rules"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
70
- hooks: { projectPath: ".claude/hooks", globalPath: join(home, ".claude/hooks"), format: "direct-copy", writeStrategy: "per-file", fileExtension: "" },
65
+ agents: {
66
+ projectPath: ".claude/agents",
67
+ globalPath: join(home, ".claude/agents"),
68
+ format: "direct-copy",
69
+ writeStrategy: "per-file",
70
+ fileExtension: ".md",
71
+ },
72
+ commands: {
73
+ projectPath: ".claude/commands",
74
+ globalPath: join(home, ".claude/commands"),
75
+ format: "direct-copy",
76
+ writeStrategy: "per-file",
77
+ fileExtension: ".md",
78
+ },
79
+ skills: {
80
+ projectPath: ".claude/skills",
81
+ globalPath: join(home, ".claude/skills"),
82
+ format: "direct-copy",
83
+ writeStrategy: "per-file",
84
+ fileExtension: ".md",
85
+ },
86
+ config: {
87
+ projectPath: "CLAUDE.md",
88
+ globalPath: join(home, ".claude/CLAUDE.md"),
89
+ format: "direct-copy",
90
+ writeStrategy: "single-file",
91
+ fileExtension: ".md",
92
+ },
93
+ rules: {
94
+ projectPath: ".claude/rules",
95
+ globalPath: join(home, ".claude/rules"),
96
+ format: "direct-copy",
97
+ writeStrategy: "per-file",
98
+ fileExtension: ".md",
99
+ },
100
+ hooks: {
101
+ projectPath: ".claude/hooks",
102
+ globalPath: join(home, ".claude/hooks"),
103
+ format: "direct-copy",
104
+ writeStrategy: "per-file",
105
+ fileExtension: "",
106
+ },
71
107
  settingsJsonPath: { projectPath: ".claude/settings.json", globalPath: join(home, ".claude/settings.json") },
72
108
  detect: async () => hasBinaryInPath("claude") ||
73
109
  hasAnyInstallSignal([
74
- join(cwd, ".claude/agents"), join(cwd, ".claude/commands"), join(cwd, ".claude/skills"),
75
- join(cwd, ".claude/rules"), join(cwd, ".claude/hooks"), join(cwd, "CLAUDE.md"),
76
- join(home, ".claude/agents"), join(home, ".claude/commands"), join(home, ".claude/skills"),
77
- join(home, ".claude/rules"), join(home, ".claude/hooks"), join(home, ".claude/CLAUDE.md"),
110
+ join(cwd, ".claude/agents"),
111
+ join(cwd, ".claude/commands"),
112
+ join(cwd, ".claude/skills"),
113
+ join(cwd, ".claude/rules"),
114
+ join(cwd, ".claude/hooks"),
115
+ join(cwd, "CLAUDE.md"),
116
+ join(home, ".claude/agents"),
117
+ join(home, ".claude/commands"),
118
+ join(home, ".claude/skills"),
119
+ join(home, ".claude/rules"),
120
+ join(home, ".claude/hooks"),
121
+ join(home, ".claude/CLAUDE.md"),
78
122
  ]),
79
123
  },
80
124
  opencode: {
81
125
  name: "opencode",
82
126
  displayName: "OpenCode",
83
127
  subagents: "full",
84
- agents: { projectPath: ".opencode/agents", globalPath: join(home, ".config/opencode/agents"), format: "fm-to-fm", writeStrategy: "per-file", fileExtension: ".md" },
85
- commands: { projectPath: ".opencode/commands", globalPath: join(home, ".config/opencode/commands"), format: "fm-to-fm", writeStrategy: "per-file", fileExtension: ".md" },
86
- skills: { projectPath: ".claude/skills", globalPath: join(home, ".claude/skills"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
87
- config: { projectPath: "AGENTS.md", globalPath: join(home, ".config/opencode/AGENTS.md"), format: "md-strip", writeStrategy: "merge-single", fileExtension: ".md" },
88
- rules: { projectPath: "AGENTS.md", globalPath: join(home, ".config/opencode/AGENTS.md"), format: "md-strip", writeStrategy: "merge-single", fileExtension: ".md" },
128
+ agents: {
129
+ projectPath: ".opencode/agents",
130
+ globalPath: join(home, ".config/opencode/agents"),
131
+ format: "fm-to-fm",
132
+ writeStrategy: "per-file",
133
+ fileExtension: ".md",
134
+ },
135
+ commands: {
136
+ projectPath: ".opencode/commands",
137
+ globalPath: join(home, ".config/opencode/commands"),
138
+ format: "fm-to-fm",
139
+ writeStrategy: "per-file",
140
+ fileExtension: ".md",
141
+ },
142
+ skills: {
143
+ projectPath: ".claude/skills",
144
+ globalPath: join(home, ".claude/skills"),
145
+ format: "direct-copy",
146
+ writeStrategy: "per-file",
147
+ fileExtension: ".md",
148
+ },
149
+ config: {
150
+ projectPath: "AGENTS.md",
151
+ globalPath: join(home, ".config/opencode/AGENTS.md"),
152
+ format: "md-strip",
153
+ writeStrategy: "merge-single",
154
+ fileExtension: ".md",
155
+ },
156
+ rules: {
157
+ projectPath: "AGENTS.md",
158
+ globalPath: join(home, ".config/opencode/AGENTS.md"),
159
+ format: "md-strip",
160
+ writeStrategy: "merge-single",
161
+ fileExtension: ".md",
162
+ },
89
163
  hooks: null,
90
164
  settingsJsonPath: null,
91
165
  detect: async () => hasOpenCodeInstallSignal(),
@@ -94,54 +168,167 @@ export const providers = {
94
168
  name: "github-copilot",
95
169
  displayName: "GitHub Copilot",
96
170
  subagents: "full",
97
- agents: { projectPath: ".github/agents", globalPath: null, format: "fm-to-fm", writeStrategy: "per-file", fileExtension: ".agent.md" },
171
+ agents: {
172
+ projectPath: ".github/agents",
173
+ globalPath: null,
174
+ format: "fm-to-fm",
175
+ writeStrategy: "per-file",
176
+ fileExtension: ".agent.md",
177
+ },
98
178
  commands: null,
99
- skills: { projectPath: ".github/skills", globalPath: null, format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
100
- config: { projectPath: ".github/copilot-instructions.md", globalPath: null, format: "md-strip", writeStrategy: "single-file", fileExtension: ".md" },
101
- rules: { projectPath: ".github/instructions", globalPath: null, format: "md-strip", writeStrategy: "per-file", fileExtension: ".instructions.md" },
179
+ skills: {
180
+ projectPath: ".github/skills",
181
+ globalPath: null,
182
+ format: "direct-copy",
183
+ writeStrategy: "per-file",
184
+ fileExtension: ".md",
185
+ },
186
+ config: {
187
+ projectPath: ".github/copilot-instructions.md",
188
+ globalPath: null,
189
+ format: "md-strip",
190
+ writeStrategy: "single-file",
191
+ fileExtension: ".md",
192
+ },
193
+ rules: {
194
+ projectPath: ".github/instructions",
195
+ globalPath: null,
196
+ format: "md-strip",
197
+ writeStrategy: "per-file",
198
+ fileExtension: ".instructions.md",
199
+ },
102
200
  hooks: null,
103
201
  settingsJsonPath: null,
104
202
  detect: async () => hasAnyInstallSignal([
105
- join(cwd, ".github/agents"), join(cwd, ".github/skills"),
106
- join(cwd, ".github/instructions"), join(cwd, ".github/copilot-instructions.md"),
203
+ join(cwd, ".github/agents"),
204
+ join(cwd, ".github/skills"),
205
+ join(cwd, ".github/instructions"),
206
+ join(cwd, ".github/copilot-instructions.md"),
107
207
  ]),
108
208
  },
109
209
  codex: {
110
210
  name: "codex",
111
211
  displayName: "Codex",
112
212
  subagents: "full",
113
- agents: { projectPath: ".codex/agents", globalPath: join(home, ".codex/agents"), format: "fm-to-codex-toml", writeStrategy: "codex-toml", fileExtension: ".toml" },
114
- commands: { projectPath: null, globalPath: join(home, ".codex/prompts"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md", nestedCommands: false },
115
- skills: { projectPath: ".agents/skills", globalPath: join(home, ".agents/skills"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
116
- config: { projectPath: "AGENTS.md", globalPath: join(home, ".codex/AGENTS.md"), format: "md-strip", writeStrategy: "merge-single", fileExtension: ".md" },
117
- rules: { projectPath: "AGENTS.md", globalPath: join(home, ".codex/AGENTS.md"), format: "md-strip", writeStrategy: "merge-single", fileExtension: ".md" },
118
- hooks: { projectPath: ".codex/hooks", globalPath: join(home, ".codex/hooks"), format: "direct-copy", writeStrategy: "codex-hooks", fileExtension: "" },
213
+ agents: {
214
+ projectPath: ".codex/agents",
215
+ globalPath: join(home, ".codex/agents"),
216
+ format: "fm-to-codex-toml",
217
+ writeStrategy: "codex-toml",
218
+ fileExtension: ".toml",
219
+ },
220
+ commands: {
221
+ projectPath: null,
222
+ globalPath: join(home, ".codex/prompts"),
223
+ format: "direct-copy",
224
+ writeStrategy: "per-file",
225
+ fileExtension: ".md",
226
+ nestedCommands: false,
227
+ },
228
+ skills: {
229
+ projectPath: ".agents/skills",
230
+ globalPath: join(home, ".agents/skills"),
231
+ format: "direct-copy",
232
+ writeStrategy: "per-file",
233
+ fileExtension: ".md",
234
+ },
235
+ config: {
236
+ projectPath: "AGENTS.md",
237
+ globalPath: join(home, ".codex/AGENTS.md"),
238
+ format: "md-strip",
239
+ writeStrategy: "merge-single",
240
+ fileExtension: ".md",
241
+ },
242
+ rules: {
243
+ projectPath: "AGENTS.md",
244
+ globalPath: join(home, ".codex/AGENTS.md"),
245
+ format: "md-strip",
246
+ writeStrategy: "merge-single",
247
+ fileExtension: ".md",
248
+ },
249
+ hooks: {
250
+ projectPath: ".codex/hooks",
251
+ globalPath: join(home, ".codex/hooks"),
252
+ format: "direct-copy",
253
+ writeStrategy: "codex-hooks",
254
+ fileExtension: "",
255
+ },
119
256
  settingsJsonPath: { projectPath: ".codex/hooks.json", globalPath: join(home, ".codex/hooks.json") },
120
257
  detect: async () => hasBinaryInPath("codex") ||
121
258
  hasAnyInstallSignal([
122
- join(cwd, ".codex/config.toml"), join(cwd, ".codex/agents"), join(cwd, ".codex/prompts"),
123
- join(cwd, ".codex/hooks.json"), join(home, ".codex/config.toml"), join(home, ".codex/agents"),
124
- join(home, ".codex/AGENTS.md"), join(home, ".codex/instructions.md"),
125
- join(home, ".codex/prompts"), join(home, ".codex/hooks.json"),
259
+ join(cwd, ".codex/config.toml"),
260
+ join(cwd, ".codex/agents"),
261
+ join(cwd, ".codex/prompts"),
262
+ join(cwd, ".codex/hooks.json"),
263
+ join(home, ".codex/config.toml"),
264
+ join(home, ".codex/agents"),
265
+ join(home, ".codex/AGENTS.md"),
266
+ join(home, ".codex/instructions.md"),
267
+ join(home, ".codex/prompts"),
268
+ join(home, ".codex/hooks.json"),
126
269
  ]),
127
270
  },
128
271
  droid: {
129
272
  name: "droid",
130
273
  displayName: "Droid",
131
274
  subagents: "full",
132
- agents: { projectPath: ".factory/droids", globalPath: join(home, ".factory/droids"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
133
- commands: { projectPath: ".factory/commands", globalPath: join(home, ".factory/commands"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
134
- skills: { projectPath: ".factory/skills", globalPath: join(home, ".factory/skills"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
135
- config: { projectPath: "AGENTS.md", globalPath: join(home, ".factory/AGENTS.md"), format: "md-strip", writeStrategy: "single-file", fileExtension: ".md" },
136
- rules: { projectPath: ".factory/rules", globalPath: join(home, ".factory/rules"), format: "md-strip", writeStrategy: "per-file", fileExtension: ".md" },
137
- hooks: { projectPath: ".factory/hooks", globalPath: join(home, ".factory/hooks"), format: "direct-copy", writeStrategy: "per-file", fileExtension: "" },
275
+ agents: {
276
+ projectPath: ".factory/droids",
277
+ globalPath: join(home, ".factory/droids"),
278
+ format: "direct-copy",
279
+ writeStrategy: "per-file",
280
+ fileExtension: ".md",
281
+ },
282
+ commands: {
283
+ projectPath: ".factory/commands",
284
+ globalPath: join(home, ".factory/commands"),
285
+ format: "direct-copy",
286
+ writeStrategy: "per-file",
287
+ fileExtension: ".md",
288
+ },
289
+ skills: {
290
+ projectPath: ".factory/skills",
291
+ globalPath: join(home, ".factory/skills"),
292
+ format: "direct-copy",
293
+ writeStrategy: "per-file",
294
+ fileExtension: ".md",
295
+ },
296
+ config: {
297
+ projectPath: "AGENTS.md",
298
+ globalPath: join(home, ".factory/AGENTS.md"),
299
+ format: "md-strip",
300
+ writeStrategy: "single-file",
301
+ fileExtension: ".md",
302
+ },
303
+ rules: {
304
+ projectPath: ".factory/rules",
305
+ globalPath: join(home, ".factory/rules"),
306
+ format: "md-strip",
307
+ writeStrategy: "per-file",
308
+ fileExtension: ".md",
309
+ },
310
+ hooks: {
311
+ projectPath: ".factory/hooks",
312
+ globalPath: join(home, ".factory/hooks"),
313
+ format: "direct-copy",
314
+ writeStrategy: "per-file",
315
+ fileExtension: "",
316
+ },
138
317
  settingsJsonPath: { projectPath: ".factory/settings.json", globalPath: join(home, ".factory/settings.json") },
139
318
  detect: async () => hasBinaryInPath("droid") ||
140
319
  hasAnyInstallSignal([
141
- join(cwd, ".factory/droids"), join(cwd, ".factory/commands"), join(cwd, ".factory/skills"),
142
- join(cwd, ".factory/rules"), join(cwd, ".factory/hooks"), join(cwd, ".factory/settings.json"),
143
- join(home, ".factory/droids"), join(home, ".factory/commands"), join(home, ".factory/skills"),
144
- join(home, ".factory/rules"), join(home, ".factory/hooks"), join(home, ".factory/AGENTS.md"),
320
+ join(cwd, ".factory/droids"),
321
+ join(cwd, ".factory/commands"),
322
+ join(cwd, ".factory/skills"),
323
+ join(cwd, ".factory/rules"),
324
+ join(cwd, ".factory/hooks"),
325
+ join(cwd, ".factory/settings.json"),
326
+ join(home, ".factory/droids"),
327
+ join(home, ".factory/commands"),
328
+ join(home, ".factory/skills"),
329
+ join(home, ".factory/rules"),
330
+ join(home, ".factory/hooks"),
331
+ join(home, ".factory/AGENTS.md"),
145
332
  join(home, ".factory/settings.json"),
146
333
  ]),
147
334
  },
@@ -149,11 +336,35 @@ export const providers = {
149
336
  name: "cursor",
150
337
  displayName: "Cursor",
151
338
  subagents: "full",
152
- agents: { projectPath: ".cursor/rules", globalPath: join(home, ".cursor/rules"), format: "fm-to-fm", writeStrategy: "per-file", fileExtension: ".mdc" },
339
+ agents: {
340
+ projectPath: ".cursor/rules",
341
+ globalPath: join(home, ".cursor/rules"),
342
+ format: "fm-to-fm",
343
+ writeStrategy: "per-file",
344
+ fileExtension: ".mdc",
345
+ },
153
346
  commands: null,
154
- skills: { projectPath: ".agents/skills", globalPath: join(home, ".cursor/skills"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
155
- config: { projectPath: ".cursor/rules/project-config.mdc", globalPath: join(home, ".cursor/rules/project-config.mdc"), format: "md-to-mdc", writeStrategy: "single-file", fileExtension: ".mdc" },
156
- rules: { projectPath: ".cursor/rules", globalPath: join(home, ".cursor/rules"), format: "md-to-mdc", writeStrategy: "per-file", fileExtension: ".mdc" },
347
+ skills: {
348
+ projectPath: ".agents/skills",
349
+ globalPath: join(home, ".cursor/skills"),
350
+ format: "direct-copy",
351
+ writeStrategy: "per-file",
352
+ fileExtension: ".md",
353
+ },
354
+ config: {
355
+ projectPath: ".cursor/rules/project-config.mdc",
356
+ globalPath: join(home, ".cursor/rules/project-config.mdc"),
357
+ format: "md-to-mdc",
358
+ writeStrategy: "single-file",
359
+ fileExtension: ".mdc",
360
+ },
361
+ rules: {
362
+ projectPath: ".cursor/rules",
363
+ globalPath: join(home, ".cursor/rules"),
364
+ format: "md-to-mdc",
365
+ writeStrategy: "per-file",
366
+ fileExtension: ".mdc",
367
+ },
157
368
  hooks: null,
158
369
  settingsJsonPath: null,
159
370
  // Cursor v2.2+ moves toward .cursor/rules/<name>/RULE.md folder format. Per-file .mdc still works as of 2026-04. Track via drift detection.
@@ -164,116 +375,326 @@ export const providers = {
164
375
  name: "roo",
165
376
  displayName: "Roo Code",
166
377
  subagents: "full",
167
- agents: { projectPath: ".roomodes", globalPath: join(home, ".roo/custom_modes.yaml"), format: "fm-to-yaml", writeStrategy: "yaml-merge", fileExtension: ".yaml" },
378
+ agents: {
379
+ projectPath: ".roomodes",
380
+ globalPath: join(home, ".roo/custom_modes.yaml"),
381
+ format: "fm-to-yaml",
382
+ writeStrategy: "yaml-merge",
383
+ fileExtension: ".yaml",
384
+ },
168
385
  commands: null,
169
- skills: { projectPath: ".roo/skills", globalPath: join(home, ".roo/skills"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
170
- config: { projectPath: ".roo/rules/project-config.md", globalPath: join(home, ".roo/rules/project-config.md"), format: "md-strip", writeStrategy: "single-file", fileExtension: ".md" },
171
- rules: { projectPath: ".roo/rules", globalPath: join(home, ".roo/rules"), format: "md-strip", writeStrategy: "per-file", fileExtension: ".md" },
386
+ skills: {
387
+ projectPath: ".roo/skills",
388
+ globalPath: join(home, ".roo/skills"),
389
+ format: "direct-copy",
390
+ writeStrategy: "per-file",
391
+ fileExtension: ".md",
392
+ },
393
+ config: {
394
+ projectPath: ".roo/rules/project-config.md",
395
+ globalPath: join(home, ".roo/rules/project-config.md"),
396
+ format: "md-strip",
397
+ writeStrategy: "single-file",
398
+ fileExtension: ".md",
399
+ },
400
+ rules: {
401
+ projectPath: ".roo/rules",
402
+ globalPath: join(home, ".roo/rules"),
403
+ format: "md-strip",
404
+ writeStrategy: "per-file",
405
+ fileExtension: ".md",
406
+ },
172
407
  hooks: null,
173
408
  settingsJsonPath: null,
174
409
  detect: async () => hasAnyInstallSignal([
175
- join(cwd, ".roomodes"), join(cwd, ".roo/rules"), join(cwd, ".roo/skills"),
176
- join(home, ".roo/custom_modes.yaml"), join(home, ".roo/rules"), join(home, ".roo/skills"),
410
+ join(cwd, ".roomodes"),
411
+ join(cwd, ".roo/rules"),
412
+ join(cwd, ".roo/skills"),
413
+ join(home, ".roo/custom_modes.yaml"),
414
+ join(home, ".roo/rules"),
415
+ join(home, ".roo/skills"),
177
416
  ]),
178
417
  },
179
418
  kilo: {
180
419
  name: "kilo",
181
420
  displayName: "Kilo Code",
182
421
  subagents: "full",
183
- agents: { projectPath: ".kilocodemodes", globalPath: join(home, ".kilocode/custom_modes.yaml"), format: "fm-to-yaml", writeStrategy: "yaml-merge", fileExtension: ".yaml" },
422
+ agents: {
423
+ projectPath: ".kilocodemodes",
424
+ globalPath: join(home, ".kilocode/custom_modes.yaml"),
425
+ format: "fm-to-yaml",
426
+ writeStrategy: "yaml-merge",
427
+ fileExtension: ".yaml",
428
+ },
184
429
  commands: null,
185
- skills: { projectPath: ".kilocode/skills", globalPath: join(home, ".kilocode/skills"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
186
- config: { projectPath: ".kilocode/rules/project-config.md", globalPath: join(home, ".kilocode/rules/project-config.md"), format: "md-strip", writeStrategy: "single-file", fileExtension: ".md" },
187
- rules: { projectPath: ".kilocode/rules", globalPath: join(home, ".kilocode/rules"), format: "md-strip", writeStrategy: "per-file", fileExtension: ".md" },
430
+ skills: {
431
+ projectPath: ".kilocode/skills",
432
+ globalPath: join(home, ".kilocode/skills"),
433
+ format: "direct-copy",
434
+ writeStrategy: "per-file",
435
+ fileExtension: ".md",
436
+ },
437
+ config: {
438
+ projectPath: ".kilocode/rules/project-config.md",
439
+ globalPath: join(home, ".kilocode/rules/project-config.md"),
440
+ format: "md-strip",
441
+ writeStrategy: "single-file",
442
+ fileExtension: ".md",
443
+ },
444
+ rules: {
445
+ projectPath: ".kilocode/rules",
446
+ globalPath: join(home, ".kilocode/rules"),
447
+ format: "md-strip",
448
+ writeStrategy: "per-file",
449
+ fileExtension: ".md",
450
+ },
188
451
  hooks: null,
189
452
  settingsJsonPath: null,
190
453
  detect: async () => hasAnyInstallSignal([
191
- join(cwd, ".kilocodemodes"), join(cwd, ".kilocode/rules"), join(cwd, ".kilocode/skills"),
192
- join(home, ".kilocode/custom_modes.yaml"), join(home, ".kilocode/rules"), join(home, ".kilocode/skills"),
454
+ join(cwd, ".kilocodemodes"),
455
+ join(cwd, ".kilocode/rules"),
456
+ join(cwd, ".kilocode/skills"),
457
+ join(home, ".kilocode/custom_modes.yaml"),
458
+ join(home, ".kilocode/rules"),
459
+ join(home, ".kilocode/skills"),
193
460
  ]),
194
461
  },
195
462
  kiro: {
196
463
  name: "kiro",
197
464
  displayName: "Kiro IDE",
198
465
  subagents: "none",
199
- agents: { projectPath: ".kiro/steering", globalPath: null, format: "md-to-kiro-steering", writeStrategy: "per-file", fileExtension: ".md" },
466
+ agents: {
467
+ projectPath: ".kiro/steering",
468
+ globalPath: null,
469
+ format: "md-to-kiro-steering",
470
+ writeStrategy: "per-file",
471
+ fileExtension: ".md",
472
+ },
200
473
  commands: null,
201
- skills: { projectPath: ".kiro/skills", globalPath: null, format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
202
- config: { projectPath: ".kiro/steering/project.md", globalPath: null, format: "md-to-kiro-steering", writeStrategy: "single-file", fileExtension: ".md" },
203
- rules: { projectPath: ".kiro/steering", globalPath: null, format: "md-to-kiro-steering", writeStrategy: "per-file", fileExtension: ".md" },
474
+ skills: {
475
+ projectPath: ".kiro/skills",
476
+ globalPath: null,
477
+ format: "direct-copy",
478
+ writeStrategy: "per-file",
479
+ fileExtension: ".md",
480
+ },
481
+ config: {
482
+ projectPath: ".kiro/steering/project.md",
483
+ globalPath: null,
484
+ format: "md-to-kiro-steering",
485
+ writeStrategy: "single-file",
486
+ fileExtension: ".md",
487
+ },
488
+ rules: {
489
+ projectPath: ".kiro/steering",
490
+ globalPath: null,
491
+ format: "md-to-kiro-steering",
492
+ writeStrategy: "per-file",
493
+ fileExtension: ".md",
494
+ },
204
495
  hooks: null,
205
496
  settingsJsonPath: null,
206
497
  detect: async () => hasAnyInstallSignal([
207
- join(cwd, ".kiro/steering"), join(cwd, ".kiro/skills"), join(cwd, ".kiro/hooks"),
208
- join(cwd, ".kiro/agents"), join(cwd, ".kiro/settings/mcp.json"),
498
+ join(cwd, ".kiro/steering"),
499
+ join(cwd, ".kiro/skills"),
500
+ join(cwd, ".kiro/hooks"),
501
+ join(cwd, ".kiro/agents"),
502
+ join(cwd, ".kiro/settings/mcp.json"),
209
503
  ]),
210
504
  },
211
505
  windsurf: {
212
506
  name: "windsurf",
213
507
  displayName: "Windsurf",
214
508
  subagents: "none",
215
- agents: { projectPath: ".windsurf/rules", globalPath: join(home, ".codeium/windsurf/rules"), format: "fm-strip", writeStrategy: "per-file", fileExtension: ".md", charLimit: 12000 },
216
- commands: { projectPath: ".windsurf/workflows", globalPath: join(home, ".codeium/windsurf/workflows"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md", nestedCommands: false },
217
- skills: { projectPath: ".agents/skills", globalPath: join(home, ".agents/skills"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
218
- config: { projectPath: ".windsurf/rules/rules.md", globalPath: join(home, ".codeium/windsurf/rules/rules.md"), format: "md-strip", writeStrategy: "single-file", fileExtension: ".md", charLimit: 6000 },
219
- rules: { projectPath: ".windsurf/rules", globalPath: join(home, ".codeium/windsurf/rules"), format: "md-strip", writeStrategy: "per-file", fileExtension: ".md", charLimit: 6000, totalCharLimit: 12000 },
509
+ agents: {
510
+ projectPath: ".windsurf/rules",
511
+ globalPath: join(home, ".codeium/windsurf/rules"),
512
+ format: "fm-strip",
513
+ writeStrategy: "per-file",
514
+ fileExtension: ".md",
515
+ charLimit: 12000,
516
+ },
517
+ commands: {
518
+ projectPath: ".windsurf/workflows",
519
+ globalPath: join(home, ".codeium/windsurf/workflows"),
520
+ format: "direct-copy",
521
+ writeStrategy: "per-file",
522
+ fileExtension: ".md",
523
+ nestedCommands: false,
524
+ },
525
+ skills: {
526
+ projectPath: ".agents/skills",
527
+ globalPath: join(home, ".agents/skills"),
528
+ format: "direct-copy",
529
+ writeStrategy: "per-file",
530
+ fileExtension: ".md",
531
+ },
532
+ config: {
533
+ projectPath: ".windsurf/rules/rules.md",
534
+ globalPath: join(home, ".codeium/windsurf/rules/rules.md"),
535
+ format: "md-strip",
536
+ writeStrategy: "single-file",
537
+ fileExtension: ".md",
538
+ charLimit: 6000,
539
+ },
540
+ rules: {
541
+ projectPath: ".windsurf/rules",
542
+ globalPath: join(home, ".codeium/windsurf/rules"),
543
+ format: "md-strip",
544
+ writeStrategy: "per-file",
545
+ fileExtension: ".md",
546
+ charLimit: 6000,
547
+ totalCharLimit: 12000,
548
+ },
220
549
  hooks: null,
221
550
  settingsJsonPath: null,
222
551
  detect: async () => hasBinaryInPath("windsurf") ||
223
552
  hasAnyInstallSignal([
224
- join(cwd, ".windsurf/rules"), join(cwd, ".windsurf/workflows"),
225
- join(home, ".codeium/windsurf/rules"), join(home, ".codeium/windsurf/workflows"),
553
+ join(cwd, ".windsurf/rules"),
554
+ join(cwd, ".windsurf/workflows"),
555
+ join(home, ".codeium/windsurf/rules"),
556
+ join(home, ".codeium/windsurf/workflows"),
226
557
  ]),
227
558
  },
228
559
  goose: {
229
560
  name: "goose",
230
561
  displayName: "Goose",
231
562
  subagents: "full",
232
- agents: { projectPath: "AGENTS.md", globalPath: null, format: "fm-strip", writeStrategy: "merge-single", fileExtension: ".md" },
563
+ agents: {
564
+ projectPath: "AGENTS.md",
565
+ globalPath: null,
566
+ format: "fm-strip",
567
+ writeStrategy: "merge-single",
568
+ fileExtension: ".md",
569
+ },
233
570
  commands: null,
234
- skills: { projectPath: ".goose/skills", globalPath: join(home, ".config/goose/skills"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
235
- config: { projectPath: ".goosehints", globalPath: join(home, ".config/goose/.goosehints"), format: "md-strip", writeStrategy: "merge-single", fileExtension: "" },
236
- rules: { projectPath: ".goosehints", globalPath: join(home, ".config/goose/.goosehints"), format: "md-strip", writeStrategy: "merge-single", fileExtension: "" },
571
+ skills: {
572
+ projectPath: ".goose/skills",
573
+ globalPath: join(home, ".config/goose/skills"),
574
+ format: "direct-copy",
575
+ writeStrategy: "per-file",
576
+ fileExtension: ".md",
577
+ },
578
+ config: {
579
+ projectPath: ".goosehints",
580
+ globalPath: join(home, ".config/goose/.goosehints"),
581
+ format: "md-strip",
582
+ writeStrategy: "merge-single",
583
+ fileExtension: "",
584
+ },
585
+ rules: {
586
+ projectPath: ".goosehints",
587
+ globalPath: join(home, ".config/goose/.goosehints"),
588
+ format: "md-strip",
589
+ writeStrategy: "merge-single",
590
+ fileExtension: "",
591
+ },
237
592
  hooks: null,
238
593
  settingsJsonPath: null,
239
594
  detect: async () => hasBinaryInPath("goose") ||
240
595
  hasAnyInstallSignal([
241
- join(cwd, ".goosehints"), join(cwd, ".goose/skills"),
242
- join(home, ".config/goose/.goosehints"), join(home, ".config/goose/skills"),
596
+ join(cwd, ".goosehints"),
597
+ join(cwd, ".goose/skills"),
598
+ join(home, ".config/goose/.goosehints"),
599
+ join(home, ".config/goose/skills"),
243
600
  ]),
244
601
  },
245
602
  "gemini-cli": {
246
603
  name: "gemini-cli",
247
604
  displayName: "Gemini CLI",
248
605
  subagents: "planned",
249
- agents: { projectPath: "AGENTS.md", globalPath: join(home, ".gemini/GEMINI.md"), format: "fm-strip", writeStrategy: "merge-single", fileExtension: ".md" },
250
- commands: { projectPath: ".gemini/commands", globalPath: join(home, ".gemini/commands"), format: "md-to-toml", writeStrategy: "per-file", fileExtension: ".toml" },
251
- skills: { projectPath: ".agents/skills", globalPath: join(home, ".agents/skills"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
252
- config: { projectPath: "GEMINI.md", globalPath: join(home, ".gemini/GEMINI.md"), format: "md-strip", writeStrategy: "merge-single", fileExtension: ".md" },
253
- rules: { projectPath: "GEMINI.md", globalPath: join(home, ".gemini/GEMINI.md"), format: "md-strip", writeStrategy: "merge-single", fileExtension: ".md" },
254
- hooks: { projectPath: ".gemini/hooks", globalPath: join(home, ".gemini/hooks"), format: "direct-copy", writeStrategy: "per-file", fileExtension: "" },
606
+ agents: {
607
+ projectPath: "AGENTS.md",
608
+ globalPath: join(home, ".gemini/GEMINI.md"),
609
+ format: "fm-strip",
610
+ writeStrategy: "merge-single",
611
+ fileExtension: ".md",
612
+ },
613
+ commands: {
614
+ projectPath: ".gemini/commands",
615
+ globalPath: join(home, ".gemini/commands"),
616
+ format: "md-to-toml",
617
+ writeStrategy: "per-file",
618
+ fileExtension: ".toml",
619
+ },
620
+ skills: {
621
+ projectPath: ".agents/skills",
622
+ globalPath: join(home, ".agents/skills"),
623
+ format: "direct-copy",
624
+ writeStrategy: "per-file",
625
+ fileExtension: ".md",
626
+ },
627
+ config: {
628
+ projectPath: "GEMINI.md",
629
+ globalPath: join(home, ".gemini/GEMINI.md"),
630
+ format: "md-strip",
631
+ writeStrategy: "merge-single",
632
+ fileExtension: ".md",
633
+ },
634
+ rules: {
635
+ projectPath: "GEMINI.md",
636
+ globalPath: join(home, ".gemini/GEMINI.md"),
637
+ format: "md-strip",
638
+ writeStrategy: "merge-single",
639
+ fileExtension: ".md",
640
+ },
641
+ hooks: {
642
+ projectPath: ".gemini/hooks",
643
+ globalPath: join(home, ".gemini/hooks"),
644
+ format: "direct-copy",
645
+ writeStrategy: "per-file",
646
+ fileExtension: "",
647
+ },
255
648
  settingsJsonPath: { projectPath: ".gemini/settings.json", globalPath: join(home, ".gemini/settings.json") },
256
649
  detect: async () => hasBinaryInPath("gemini") ||
257
650
  hasAnyInstallSignal([
258
- join(cwd, ".gemini/commands"), join(cwd, "GEMINI.md"),
259
- join(home, ".gemini/commands"), join(home, ".gemini/GEMINI.md"),
651
+ join(cwd, ".gemini/commands"),
652
+ join(cwd, "GEMINI.md"),
653
+ join(home, ".gemini/commands"),
654
+ join(home, ".gemini/GEMINI.md"),
260
655
  ]),
261
656
  },
262
657
  amp: {
263
658
  name: "amp",
264
659
  displayName: "Amp",
265
660
  subagents: "full",
266
- agents: { projectPath: "AGENT.md", globalPath: join(home, ".config/AGENT.md"), format: "fm-strip", writeStrategy: "merge-single", fileExtension: ".md" },
661
+ agents: {
662
+ projectPath: "AGENT.md",
663
+ globalPath: join(home, ".config/AGENT.md"),
664
+ format: "fm-strip",
665
+ writeStrategy: "merge-single",
666
+ fileExtension: ".md",
667
+ },
267
668
  commands: null,
268
- skills: { projectPath: ".agents/skills", globalPath: join(home, ".config/agents/skills"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
269
- config: { projectPath: "AGENT.md", globalPath: join(home, ".config/AGENT.md"), format: "md-strip", writeStrategy: "merge-single", fileExtension: ".md" },
270
- rules: { projectPath: ".amp/rules", globalPath: join(home, ".config/amp/rules"), format: "md-strip", writeStrategy: "per-file", fileExtension: ".md" },
669
+ skills: {
670
+ projectPath: ".agents/skills",
671
+ globalPath: join(home, ".config/agents/skills"),
672
+ format: "direct-copy",
673
+ writeStrategy: "per-file",
674
+ fileExtension: ".md",
675
+ },
676
+ config: {
677
+ projectPath: "AGENT.md",
678
+ globalPath: join(home, ".config/AGENT.md"),
679
+ format: "md-strip",
680
+ writeStrategy: "merge-single",
681
+ fileExtension: ".md",
682
+ },
683
+ rules: {
684
+ projectPath: ".amp/rules",
685
+ globalPath: join(home, ".config/amp/rules"),
686
+ format: "md-strip",
687
+ writeStrategy: "per-file",
688
+ fileExtension: ".md",
689
+ },
271
690
  hooks: null,
272
691
  settingsJsonPath: null,
273
692
  detect: async () => hasBinaryInPath("amp") ||
274
693
  hasAnyInstallSignal([
275
- join(cwd, ".amp/rules"), join(cwd, "AGENT.md"),
276
- join(home, ".config/amp/rules"), join(home, ".config/AGENT.md"),
694
+ join(cwd, ".amp/rules"),
695
+ join(cwd, "AGENT.md"),
696
+ join(home, ".config/amp/rules"),
697
+ join(home, ".config/AGENT.md"),
277
698
  ]),
278
699
  },
279
700
  antigravity: {
@@ -281,28 +702,81 @@ export const providers = {
281
702
  displayName: "Antigravity",
282
703
  subagents: "full",
283
704
  agents: null,
284
- commands: { projectPath: ".agent/workflows", globalPath: null, format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md", nestedCommands: false },
285
- skills: { projectPath: ".agent/skills", globalPath: join(home, ".gemini/antigravity/skills"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
286
- config: { projectPath: "GEMINI.md", globalPath: join(home, ".gemini/GEMINI.md"), format: "md-strip", writeStrategy: "single-file", fileExtension: ".md" },
287
- rules: { projectPath: ".agent/rules", globalPath: null, format: "md-strip", writeStrategy: "per-file", fileExtension: ".md" },
705
+ commands: {
706
+ projectPath: ".agent/workflows",
707
+ globalPath: null,
708
+ format: "direct-copy",
709
+ writeStrategy: "per-file",
710
+ fileExtension: ".md",
711
+ nestedCommands: false,
712
+ },
713
+ skills: {
714
+ projectPath: ".agent/skills",
715
+ globalPath: join(home, ".gemini/antigravity/skills"),
716
+ format: "direct-copy",
717
+ writeStrategy: "per-file",
718
+ fileExtension: ".md",
719
+ },
720
+ config: {
721
+ projectPath: "GEMINI.md",
722
+ globalPath: join(home, ".gemini/GEMINI.md"),
723
+ format: "md-strip",
724
+ writeStrategy: "single-file",
725
+ fileExtension: ".md",
726
+ },
727
+ rules: {
728
+ projectPath: ".agent/rules",
729
+ globalPath: null,
730
+ format: "md-strip",
731
+ writeStrategy: "per-file",
732
+ fileExtension: ".md",
733
+ },
288
734
  hooks: null,
289
735
  settingsJsonPath: null,
290
736
  detect: async () => hasBinaryInPath("agy") ||
291
737
  hasBinaryInPath("antigravity") ||
292
738
  hasAnyInstallSignal([
293
- join(cwd, ".agent/rules"), join(cwd, ".agent/skills"), join(cwd, ".agent/workflows"),
294
- join(cwd, "GEMINI.md"), join(home, ".gemini/antigravity"), join(home, ".gemini/antigravity/skills"),
739
+ join(cwd, ".agent/rules"),
740
+ join(cwd, ".agent/skills"),
741
+ join(cwd, ".agent/workflows"),
742
+ join(cwd, "GEMINI.md"),
743
+ join(home, ".gemini/antigravity"),
744
+ join(home, ".gemini/antigravity/skills"),
295
745
  ]),
296
746
  },
297
747
  cline: {
298
748
  name: "cline",
299
749
  displayName: "Cline",
300
750
  subagents: "full",
301
- agents: { projectPath: ".clinerules", globalPath: null, format: "fm-strip", writeStrategy: "per-file", fileExtension: ".md" },
751
+ agents: {
752
+ projectPath: ".clinerules",
753
+ globalPath: null,
754
+ format: "fm-strip",
755
+ writeStrategy: "per-file",
756
+ fileExtension: ".md",
757
+ },
302
758
  commands: null,
303
- skills: { projectPath: ".cline/skills", globalPath: join(home, ".cline/skills"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
304
- config: { projectPath: ".clinerules/project-config.md", globalPath: null, format: "md-strip", writeStrategy: "single-file", fileExtension: ".md" },
305
- rules: { projectPath: ".clinerules", globalPath: null, format: "md-strip", writeStrategy: "per-file", fileExtension: ".md" },
759
+ skills: {
760
+ projectPath: ".cline/skills",
761
+ globalPath: join(home, ".cline/skills"),
762
+ format: "direct-copy",
763
+ writeStrategy: "per-file",
764
+ fileExtension: ".md",
765
+ },
766
+ config: {
767
+ projectPath: ".clinerules/project-config.md",
768
+ globalPath: null,
769
+ format: "md-strip",
770
+ writeStrategy: "single-file",
771
+ fileExtension: ".md",
772
+ },
773
+ rules: {
774
+ projectPath: ".clinerules",
775
+ globalPath: null,
776
+ format: "md-strip",
777
+ writeStrategy: "per-file",
778
+ fileExtension: ".md",
779
+ },
306
780
  hooks: null,
307
781
  settingsJsonPath: null,
308
782
  detect: async () => hasAnyInstallSignal([join(cwd, ".clinerules"), join(cwd, ".cline/skills"), join(home, ".cline/skills")]),
@@ -311,16 +785,44 @@ export const providers = {
311
785
  name: "openhands",
312
786
  displayName: "OpenHands",
313
787
  subagents: "full",
314
- agents: { projectPath: ".openhands/skills", globalPath: join(home, ".openhands/skills"), format: "skill-md", writeStrategy: "per-file", fileExtension: ".md" },
788
+ agents: {
789
+ projectPath: ".openhands/skills",
790
+ globalPath: join(home, ".openhands/skills"),
791
+ format: "skill-md",
792
+ writeStrategy: "per-file",
793
+ fileExtension: ".md",
794
+ },
315
795
  commands: null,
316
- skills: { projectPath: ".openhands/skills", globalPath: join(home, ".openhands/skills"), format: "direct-copy", writeStrategy: "per-file", fileExtension: ".md" },
317
- config: { projectPath: ".openhands/instructions.md", globalPath: join(home, ".openhands/instructions.md"), format: "md-strip", writeStrategy: "single-file", fileExtension: ".md" },
318
- rules: { projectPath: ".openhands/rules", globalPath: join(home, ".openhands/rules"), format: "md-strip", writeStrategy: "per-file", fileExtension: ".md" },
796
+ skills: {
797
+ projectPath: ".openhands/skills",
798
+ globalPath: join(home, ".openhands/skills"),
799
+ format: "direct-copy",
800
+ writeStrategy: "per-file",
801
+ fileExtension: ".md",
802
+ },
803
+ config: {
804
+ projectPath: ".openhands/instructions.md",
805
+ globalPath: join(home, ".openhands/instructions.md"),
806
+ format: "md-strip",
807
+ writeStrategy: "single-file",
808
+ fileExtension: ".md",
809
+ },
810
+ rules: {
811
+ projectPath: ".openhands/rules",
812
+ globalPath: join(home, ".openhands/rules"),
813
+ format: "md-strip",
814
+ writeStrategy: "per-file",
815
+ fileExtension: ".md",
816
+ },
319
817
  hooks: null,
320
818
  settingsJsonPath: null,
321
819
  detect: async () => hasAnyInstallSignal([
322
- join(cwd, ".openhands/skills"), join(cwd, ".openhands/rules"), join(cwd, ".openhands/instructions.md"),
323
- join(home, ".openhands/skills"), join(home, ".openhands/rules"), join(home, ".openhands/instructions.md"),
820
+ join(cwd, ".openhands/skills"),
821
+ join(cwd, ".openhands/rules"),
822
+ join(cwd, ".openhands/instructions.md"),
823
+ join(home, ".openhands/skills"),
824
+ join(home, ".openhands/rules"),
825
+ join(home, ".openhands/instructions.md"),
324
826
  ]),
325
827
  },
326
828
  };