skiller 0.8.0 → 0.8.1

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.
package/README.md CHANGED
@@ -10,7 +10,7 @@ npx skiller@latest apply
10
10
  ## Skills
11
11
 
12
12
  - `.claude/skills/` is the committed source of truth
13
- - On `apply`, skills are synced to all agents' native skill directories
13
+ - On `apply`, skills are synced to the same project skill directories defined by the sibling `skills` project
14
14
  - Claude Code plugins, commands, and agents are also synced as skills to other agents
15
15
  - See [docs/skills.md](docs/skills.md)
16
16
 
@@ -32,32 +32,25 @@ npx skiller@latest apply
32
32
 
33
33
  ## Supported agents
34
34
 
35
- | Identifier | Agent | Rules | MCP | Skills |
36
- | ------------- | ----------------- | -------------------------------------------------------- | ------------------------------ | ----------------- |
37
- | `agentsmd` | AgentsMd (pseudo) | `AGENTS.md` | - | - |
38
- | `copilot` | GitHub Copilot | `AGENTS.md` | `.vscode/mcp.json` (`servers`) | `.claude/skills` |
39
- | `claude` | Claude Code | `CLAUDE.md` (`@file` refs) | `.mcp.json` | `.claude/skills` |
40
- | `codex` | OpenAI Codex CLI | `AGENTS.md`, `.codex/config.toml` | `.codex/config.toml` | `.agents/skills` |
41
- | `cursor` | Cursor | `AGENTS.md` | `.cursor/mcp.json` | `.cursor/skills` |
42
- | `windsurf` | Windsurf | `AGENTS.md` | `.windsurf/mcp_config.json` | - |
43
- | `cline` | Cline | `.clinerules` | - | - |
44
- | `aider` | Aider | `AGENTS.md`, `.aider.conf.yml` | `.mcp.json` | - |
45
- | `firebase` | Firebase Studio | `.idx/airules.md` | `.idx/mcp.json` | - |
46
- | `openhands` | Open Hands | `.openhands/microagents/repo.md` | `config.toml` | - |
47
- | `gemini-cli` | Gemini CLI | `AGENTS.md`, `.gemini/settings.json` | `.gemini/settings.json` | `.gemini/skills` |
48
- | `jules` | Jules | `AGENTS.md` | - | - |
49
- | `junie` | Junie | `.junie/guidelines.md` | - | - |
50
- | `augmentcode` | AugmentCode | `.augment/rules/skiller_augment_instructions.md` | - | - |
51
- | `kilocode` | Kilo Code | `.kilocode/rules/skiller_kilocode_instructions.md` | `.kilocode/mcp.json` | `.claude/skills` |
52
- | `opencode` | OpenCode | `AGENTS.md`, `opencode.json` | `opencode.json` | `.opencode/skill` |
53
- | `goose` | Goose | `.goosehints` | - | `.agents/skills` |
54
- | `crush` | Crush | `CRUSH.md`, `.crush.json` | `.crush.json` | - |
55
- | `amp` | Amp | `AGENTS.md` | - | `.agents/skills` |
56
- | `zed` | Zed | `AGENTS.md`, `.zed/settings.json` | `.zed/settings.json` | - |
57
- | `qwen` | Qwen Code | `AGENTS.md`, `.qwen/settings.json` | `.qwen/settings.json` | - |
58
- | `kiro` | Kiro | `.kiro/steering/skiller_kiro_instructions.md` | - | - |
59
- | `warp` | Warp | `WARP.md` | - | - |
60
- | `roo` | RooCode | `AGENTS.md`, `.roo/mcp.json` | `.roo/mcp.json` | `.roo/skills` |
61
- | `trae` | Trae AI | `.trae/rules/project_rules.md` | - | - |
62
- | `amazonqcli` | Amazon Q CLI | `.amazonq/rules/skiller_q_rules.md`, `.amazonq/mcp.json` | `.amazonq/mcp.json` | - |
63
- | `firebender` | Firebender | `firebender.json` | `firebender.json` | - |
35
+ | Identifier | Agent | Rules | MCP | Skills |
36
+ | ---------------- | -------------- | -------------------------------------------------- | ------------------------------ | ------------------- |
37
+ | `github-copilot` | GitHub Copilot | `AGENTS.md` | `.vscode/mcp.json` (`servers`) | `.agents/skills` |
38
+ | `claude-code` | Claude Code | `CLAUDE.md` (`@file` refs) | `.mcp.json` | `.claude/skills` |
39
+ | `codex` | Codex | `AGENTS.md`, `.codex/config.toml` | `.codex/config.toml` | `.agents/skills` |
40
+ | `cursor` | Cursor | `AGENTS.md` | `.cursor/mcp.json` | `.agents/skills` |
41
+ | `windsurf` | Windsurf | `AGENTS.md` | `.windsurf/mcp_config.json` | `.windsurf/skills` |
42
+ | `cline` | Cline | `.clinerules` | - | `.agents/skills` |
43
+ | `openhands` | OpenHands | `.openhands/microagents/repo.md` | `config.toml` | `.openhands/skills` |
44
+ | `gemini-cli` | Gemini CLI | `AGENTS.md`, `.gemini/settings.json` | `.gemini/settings.json` | `.agents/skills` |
45
+ | `junie` | Junie | `.junie/guidelines.md` | - | `.junie/skills` |
46
+ | `augment` | Augment | `.augment/rules/skiller_augment_instructions.md` | - | `.augment/skills` |
47
+ | `kilo` | Kilo Code | `.kilocode/rules/skiller_kilocode_instructions.md` | `.kilocode/mcp.json` | `.kilocode/skills` |
48
+ | `opencode` | OpenCode | `AGENTS.md`, `opencode.json` | `opencode.json` | `.agents/skills` |
49
+ | `goose` | Goose | `.goosehints` | - | `.goose/skills` |
50
+ | `crush` | Crush | `CRUSH.md`, `.crush.json` | `.crush.json` | `.crush/skills` |
51
+ | `amp` | Amp | `AGENTS.md` | - | `.agents/skills` |
52
+ | `qwen-code` | Qwen Code | `AGENTS.md`, `.qwen/settings.json` | `.qwen/settings.json` | `.qwen/skills` |
53
+ | `kiro-cli` | Kiro CLI | `.kiro/steering/skiller_kiro_instructions.md` | - | `.kiro/skills` |
54
+ | `warp` | Warp | `WARP.md` | - | `.agents/skills` |
55
+ | `roo` | Roo Code | `AGENTS.md`, `.roo/mcp.json` | `.roo/mcp.json` | `.roo/skills` |
56
+ | `trae` | Trae | `.trae/rules/project_rules.md` | - | `.trae/skills` |
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.AbstractAgent = void 0;
37
37
  const path = __importStar(require("path"));
38
38
  const FileSystemUtils_1 = require("../core/FileSystemUtils");
39
+ const catalog_1 = require("./catalog");
39
40
  /**
40
41
  * Abstract base class for agents that write to a single configuration file.
41
42
  * Implements common logic for applying skiller configuration.
@@ -88,5 +89,11 @@ class AbstractAgent {
88
89
  supportsNativeSkills() {
89
90
  return false;
90
91
  }
92
+ getSkillsPath(projectRoot) {
93
+ if (!this.supportsNativeSkills()) {
94
+ return null;
95
+ }
96
+ return (0, catalog_1.getAgentSkillsPath)(this.getIdentifier(), projectRoot);
97
+ }
91
98
  }
92
99
  exports.AbstractAgent = AbstractAgent;
@@ -1,53 +1,20 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.AmpAgent = void 0;
37
- const path = __importStar(require("path"));
38
4
  const AgentsMdAgent_1 = require("./AgentsMdAgent");
5
+ const catalog_1 = require("./catalog");
39
6
  class AmpAgent extends AgentsMdAgent_1.AgentsMdAgent {
40
7
  getIdentifier() {
41
8
  return 'amp';
42
9
  }
43
10
  getName() {
44
- return 'Amp';
11
+ return (0, catalog_1.getAgentDisplayName)('amp');
45
12
  }
46
13
  supportsNativeSkills() {
47
14
  return true;
48
15
  }
49
16
  getSkillsPath(projectRoot) {
50
- return path.join(projectRoot, '.agents/skills');
17
+ return (0, catalog_1.getAgentSkillsPath)('amp', projectRoot);
51
18
  }
52
19
  }
53
20
  exports.AmpAgent = AmpAgent;
@@ -36,16 +36,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.AugmentCodeAgent = void 0;
37
37
  const path = __importStar(require("path"));
38
38
  const FileSystemUtils_1 = require("../core/FileSystemUtils");
39
+ const catalog_1 = require("./catalog");
39
40
  /**
40
41
  * AugmentCode agent adapter.
41
42
  * Generates skiller_augment_instructions.md configuration file and updates VSCode settings.json with MCP server configuration.
42
43
  */
43
44
  class AugmentCodeAgent {
44
45
  getIdentifier() {
45
- return 'augmentcode';
46
+ return 'augment';
46
47
  }
47
48
  getName() {
48
- return 'AugmentCode';
49
+ return (0, catalog_1.getAgentDisplayName)('augment');
49
50
  }
50
51
  async applySkillerConfig(concatenatedRules, projectRoot, _skillerMcpJson, agentConfig, backup = true) {
51
52
  const output = agentConfig?.outputPath ?? this.getDefaultOutputPath(projectRoot);
@@ -66,5 +67,11 @@ class AugmentCodeAgent {
66
67
  supportsMcpRemote() {
67
68
  return false;
68
69
  }
70
+ supportsNativeSkills() {
71
+ return true;
72
+ }
73
+ getSkillsPath(projectRoot) {
74
+ return (0, catalog_1.getAgentSkillsPath)('augment', projectRoot);
75
+ }
69
76
  }
70
77
  exports.AugmentCodeAgent = AugmentCodeAgent;
@@ -37,16 +37,17 @@ exports.ClaudeAgent = void 0;
37
37
  const path = __importStar(require("path"));
38
38
  const AbstractAgent_1 = require("./AbstractAgent");
39
39
  const FileSystemUtils_1 = require("../core/FileSystemUtils");
40
+ const catalog_1 = require("./catalog");
40
41
  /**
41
42
  * Claude Code agent adapter.
42
43
  * Uses @filename references instead of concatenating content.
43
44
  */
44
45
  class ClaudeAgent extends AbstractAgent_1.AbstractAgent {
45
46
  getIdentifier() {
46
- return 'claude';
47
+ return 'claude-code';
47
48
  }
48
49
  getName() {
49
- return 'Claude Code';
50
+ return (0, catalog_1.getAgentDisplayName)('claude-code');
50
51
  }
51
52
  getDefaultOutputPath(projectRoot) {
52
53
  return path.join(projectRoot, 'CLAUDE.md');
@@ -91,5 +92,8 @@ class ClaudeAgent extends AbstractAgent_1.AbstractAgent {
91
92
  supportsNativeSkills() {
92
93
  return true;
93
94
  }
95
+ getSkillsPath(projectRoot) {
96
+ return (0, catalog_1.getAgentSkillsPath)('claude-code', projectRoot);
97
+ }
94
98
  }
95
99
  exports.ClaudeAgent = ClaudeAgent;
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.ClineAgent = void 0;
37
37
  const path = __importStar(require("path"));
38
38
  const AbstractAgent_1 = require("./AbstractAgent");
39
+ const catalog_1 = require("./catalog");
39
40
  /**
40
41
  * Cline agent adapter.
41
42
  */
@@ -44,10 +45,16 @@ class ClineAgent extends AbstractAgent_1.AbstractAgent {
44
45
  return 'cline';
45
46
  }
46
47
  getName() {
47
- return 'Cline';
48
+ return (0, catalog_1.getAgentDisplayName)('cline');
48
49
  }
49
50
  getDefaultOutputPath(projectRoot) {
50
51
  return path.join(projectRoot, '.clinerules');
51
52
  }
53
+ supportsNativeSkills() {
54
+ return true;
55
+ }
56
+ getSkillsPath(projectRoot) {
57
+ return (0, catalog_1.getAgentSkillsPath)('cline', projectRoot);
58
+ }
52
59
  }
53
60
  exports.ClineAgent = ClineAgent;
@@ -40,6 +40,7 @@ const toml_1 = require("@iarna/toml");
40
40
  const AgentsMdAgent_1 = require("./AgentsMdAgent");
41
41
  const FileSystemUtils_1 = require("../core/FileSystemUtils");
42
42
  const constants_1 = require("../constants");
43
+ const catalog_1 = require("./catalog");
43
44
  /**
44
45
  * OpenAI Codex CLI agent adapter.
45
46
  */
@@ -51,7 +52,7 @@ class CodexCliAgent {
51
52
  return 'codex';
52
53
  }
53
54
  getName() {
54
- return 'OpenAI Codex CLI';
55
+ return (0, catalog_1.getAgentDisplayName)('codex');
55
56
  }
56
57
  async applySkillerConfig(concatenatedRules, projectRoot, skillerMcpJson, agentConfig, backup = true) {
57
58
  // First perform idempotent AGENTS.md write via composed AgentsMdAgent
@@ -143,7 +144,7 @@ class CodexCliAgent {
143
144
  return true;
144
145
  }
145
146
  getSkillsPath(projectRoot) {
146
- return path.join(projectRoot, '.agents/skills');
147
+ return (0, catalog_1.getAgentSkillsPath)('codex', projectRoot);
147
148
  }
148
149
  }
149
150
  exports.CodexCliAgent = CodexCliAgent;
@@ -1,41 +1,8 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.CopilotAgent = void 0;
37
- const path = __importStar(require("path"));
38
4
  const AgentsMdAgent_1 = require("./AgentsMdAgent");
5
+ const catalog_1 = require("./catalog");
39
6
  /**
40
7
  * GitHub Copilot agent adapter.
41
8
  * Writes to AGENTS.md for both web-based GitHub Copilot and VS Code extension.
@@ -45,10 +12,10 @@ class CopilotAgent {
45
12
  this.agentsMdAgent = new AgentsMdAgent_1.AgentsMdAgent();
46
13
  }
47
14
  getIdentifier() {
48
- return 'copilot';
15
+ return 'github-copilot';
49
16
  }
50
17
  getName() {
51
- return 'GitHub Copilot';
18
+ return (0, catalog_1.getAgentDisplayName)('github-copilot');
52
19
  }
53
20
  /**
54
21
  * Returns the default output path for AGENTS.md.
@@ -77,7 +44,7 @@ class CopilotAgent {
77
44
  return true;
78
45
  }
79
46
  getSkillsPath(projectRoot) {
80
- return path.join(projectRoot, '.claude/skills');
47
+ return (0, catalog_1.getAgentSkillsPath)('github-copilot', projectRoot);
81
48
  }
82
49
  }
83
50
  exports.CopilotAgent = CopilotAgent;
@@ -36,12 +36,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.CrushAgent = void 0;
37
37
  const fs = __importStar(require("fs/promises"));
38
38
  const path = __importStar(require("path"));
39
+ const catalog_1 = require("./catalog");
39
40
  class CrushAgent {
40
41
  getIdentifier() {
41
42
  return 'crush';
42
43
  }
43
44
  getName() {
44
- return 'Crush';
45
+ return (0, catalog_1.getAgentDisplayName)('crush');
45
46
  }
46
47
  getDefaultOutputPath(projectRoot) {
47
48
  return {
@@ -124,5 +125,11 @@ class CrushAgent {
124
125
  supportsMcpRemote() {
125
126
  return true;
126
127
  }
128
+ supportsNativeSkills() {
129
+ return true;
130
+ }
131
+ getSkillsPath(projectRoot) {
132
+ return (0, catalog_1.getAgentSkillsPath)('crush', projectRoot);
133
+ }
127
134
  }
128
135
  exports.CrushAgent = CrushAgent;
@@ -38,6 +38,7 @@ const path = __importStar(require("path"));
38
38
  const fs = __importStar(require("fs/promises"));
39
39
  const AgentsMdAgent_1 = require("./AgentsMdAgent");
40
40
  const SkillsUtils_1 = require("../core/SkillsUtils");
41
+ const catalog_1 = require("./catalog");
41
42
  /**
42
43
  * Cursor agent adapter.
43
44
  * Leverages the standardized AGENTS.md approach supported natively by Cursor.
@@ -48,7 +49,7 @@ class CursorAgent extends AgentsMdAgent_1.AgentsMdAgent {
48
49
  return 'cursor';
49
50
  }
50
51
  getName() {
51
- return 'Cursor';
52
+ return (0, catalog_1.getAgentDisplayName)('cursor');
52
53
  }
53
54
  async applySkillerConfig(concatenatedRules, projectRoot, _skillerMcpJson, agentConfig, backup = true, _ruleFiles, skillerDir, mergeStrategy) {
54
55
  // Write AGENTS.md via base class
@@ -86,11 +87,11 @@ class CursorAgent extends AgentsMdAgent_1.AgentsMdAgent {
86
87
  return true;
87
88
  }
88
89
  supportsNativeSkills() {
89
- // Cursor has native support for rules via .cursor/rules/
90
+ // Cursor follows the shared project skills convention.
90
91
  return true;
91
92
  }
92
93
  getSkillsPath(projectRoot) {
93
- return path.join(projectRoot, '.cursor/skills');
94
+ return (0, catalog_1.getAgentSkillsPath)('cursor', projectRoot);
94
95
  }
95
96
  }
96
97
  exports.CursorAgent = CursorAgent;
@@ -37,6 +37,7 @@ exports.FirebenderAgent = void 0;
37
37
  const path = __importStar(require("path"));
38
38
  const fs = __importStar(require("fs"));
39
39
  const FileSystemUtils_1 = require("../core/FileSystemUtils");
40
+ const catalog_1 = require("./catalog");
40
41
  /**
41
42
  * Firebender agent adapter.
42
43
  */
@@ -56,7 +57,7 @@ class FirebenderAgent {
56
57
  return 'firebender';
57
58
  }
58
59
  getName() {
59
- return 'Firebender';
60
+ return (0, catalog_1.getAgentDisplayName)('firebender');
60
61
  }
61
62
  async applySkillerConfig(concatenatedRules, projectRoot, skillerMcpJson, agentConfig, backup = true) {
62
63
  const rulesPath = this.resolveOutputPath(projectRoot, agentConfig);
@@ -175,6 +176,12 @@ class FirebenderAgent {
175
176
  supportsMcpRemote() {
176
177
  return true;
177
178
  }
179
+ supportsNativeSkills() {
180
+ return true;
181
+ }
182
+ getSkillsPath(projectRoot) {
183
+ return (0, catalog_1.getAgentSkillsPath)('firebender', projectRoot);
184
+ }
178
185
  /**
179
186
  * Extracts file paths from concatenated rules by parsing HTML source comments.
180
187
  * @param concatenatedRules The concatenated rules string with HTML comments
@@ -37,12 +37,13 @@ exports.GeminiCliAgent = void 0;
37
37
  const path = __importStar(require("path"));
38
38
  const fs_1 = require("fs");
39
39
  const AgentsMdAgent_1 = require("./AgentsMdAgent");
40
+ const catalog_1 = require("./catalog");
40
41
  class GeminiCliAgent extends AgentsMdAgent_1.AgentsMdAgent {
41
42
  getIdentifier() {
42
43
  return 'gemini-cli';
43
44
  }
44
45
  getName() {
45
- return 'Gemini CLI';
46
+ return (0, catalog_1.getAgentDisplayName)('gemini-cli');
46
47
  }
47
48
  async applySkillerConfig(concatenatedRules, projectRoot, skillerMcpJson, agentConfig) {
48
49
  // First, perform idempotent write of AGENTS.md via base class
@@ -99,7 +100,7 @@ class GeminiCliAgent extends AgentsMdAgent_1.AgentsMdAgent {
99
100
  return true;
100
101
  }
101
102
  getSkillsPath(projectRoot) {
102
- return path.join(projectRoot, '.gemini/skills');
103
+ return (0, catalog_1.getAgentSkillsPath)('gemini-cli', projectRoot);
103
104
  }
104
105
  }
105
106
  exports.GeminiCliAgent = GeminiCliAgent;
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.GooseAgent = void 0;
37
37
  const path = __importStar(require("path"));
38
38
  const AbstractAgent_1 = require("./AbstractAgent");
39
+ const catalog_1 = require("./catalog");
39
40
  /**
40
41
  * Goose agent adapter for Block's Goose AI assistant.
41
42
  * Propagates rules to .goosehints file.
@@ -45,7 +46,7 @@ class GooseAgent extends AbstractAgent_1.AbstractAgent {
45
46
  return 'goose';
46
47
  }
47
48
  getName() {
48
- return 'Goose';
49
+ return (0, catalog_1.getAgentDisplayName)('goose');
49
50
  }
50
51
  getDefaultOutputPath(projectRoot) {
51
52
  return path.join(projectRoot, '.goosehints');
@@ -58,7 +59,7 @@ class GooseAgent extends AbstractAgent_1.AbstractAgent {
58
59
  return true;
59
60
  }
60
61
  getSkillsPath(projectRoot) {
61
- return path.join(projectRoot, '.agents/skills');
62
+ return (0, catalog_1.getAgentSkillsPath)('goose', projectRoot);
62
63
  }
63
64
  }
64
65
  exports.GooseAgent = GooseAgent;
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.JunieAgent = void 0;
37
37
  const path = __importStar(require("path"));
38
38
  const AbstractAgent_1 = require("./AbstractAgent");
39
+ const catalog_1 = require("./catalog");
39
40
  /**
40
41
  * JetBrains Junie agent adapter.
41
42
  */
@@ -44,10 +45,16 @@ class JunieAgent extends AbstractAgent_1.AbstractAgent {
44
45
  return 'junie';
45
46
  }
46
47
  getName() {
47
- return 'Junie';
48
+ return (0, catalog_1.getAgentDisplayName)('junie');
48
49
  }
49
50
  getDefaultOutputPath(projectRoot) {
50
51
  return path.join(projectRoot, '.junie', 'guidelines.md');
51
52
  }
53
+ supportsNativeSkills() {
54
+ return true;
55
+ }
56
+ getSkillsPath(projectRoot) {
57
+ return (0, catalog_1.getAgentSkillsPath)('junie', projectRoot);
58
+ }
52
59
  }
53
60
  exports.JunieAgent = JunieAgent;
@@ -36,16 +36,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.KiloCodeAgent = void 0;
37
37
  const path = __importStar(require("path"));
38
38
  const AbstractAgent_1 = require("./AbstractAgent");
39
+ const catalog_1 = require("./catalog");
39
40
  /**
40
41
  * Kilo Code agent adapter.
41
42
  * Generates skiller_kilocode_instructions.md configuration file in .kilocode/rules/ directory.
42
43
  */
43
44
  class KiloCodeAgent extends AbstractAgent_1.AbstractAgent {
44
45
  getIdentifier() {
45
- return 'kilocode';
46
+ return 'kilo';
46
47
  }
47
48
  getName() {
48
- return 'Kilo Code';
49
+ return (0, catalog_1.getAgentDisplayName)('kilo');
49
50
  }
50
51
  getDefaultOutputPath(projectRoot) {
51
52
  return path.join(projectRoot, '.kilocode', 'rules', 'skiller_kilocode_instructions.md');
@@ -63,7 +64,7 @@ class KiloCodeAgent extends AbstractAgent_1.AbstractAgent {
63
64
  return true;
64
65
  }
65
66
  getSkillsPath(projectRoot) {
66
- return path.join(projectRoot, '.claude/skills');
67
+ return (0, catalog_1.getAgentSkillsPath)('kilo', projectRoot);
67
68
  }
68
69
  }
69
70
  exports.KiloCodeAgent = KiloCodeAgent;
@@ -36,15 +36,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.KiroAgent = void 0;
37
37
  const path = __importStar(require("path"));
38
38
  const AbstractAgent_1 = require("./AbstractAgent");
39
+ const catalog_1 = require("./catalog");
39
40
  class KiroAgent extends AbstractAgent_1.AbstractAgent {
40
41
  getIdentifier() {
41
- return 'kiro';
42
+ return 'kiro-cli';
42
43
  }
43
44
  getName() {
44
- return 'Kiro';
45
+ return (0, catalog_1.getAgentDisplayName)('kiro-cli');
45
46
  }
46
47
  getDefaultOutputPath(projectRoot) {
47
48
  return path.join(projectRoot, '.kiro', 'steering', 'skiller_kiro_instructions.md');
48
49
  }
50
+ supportsNativeSkills() {
51
+ return true;
52
+ }
53
+ getSkillsPath(projectRoot) {
54
+ return (0, catalog_1.getAgentSkillsPath)('kiro-cli', projectRoot);
55
+ }
49
56
  }
50
57
  exports.KiroAgent = KiroAgent;
@@ -36,12 +36,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.OpenCodeAgent = void 0;
37
37
  const fs = __importStar(require("fs/promises"));
38
38
  const path = __importStar(require("path"));
39
+ const catalog_1 = require("./catalog");
39
40
  class OpenCodeAgent {
40
41
  getIdentifier() {
41
42
  return 'opencode';
42
43
  }
43
44
  getName() {
44
- return 'OpenCode';
45
+ return (0, catalog_1.getAgentDisplayName)('opencode');
45
46
  }
46
47
  getDefaultOutputPath(projectRoot) {
47
48
  return {
@@ -99,7 +100,7 @@ class OpenCodeAgent {
99
100
  return true;
100
101
  }
101
102
  getSkillsPath(projectRoot) {
102
- return path.join(projectRoot, '.opencode/skill');
103
+ return (0, catalog_1.getAgentSkillsPath)('opencode', projectRoot);
103
104
  }
104
105
  }
105
106
  exports.OpenCodeAgent = OpenCodeAgent;
@@ -36,12 +36,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.OpenHandsAgent = void 0;
37
37
  const path = __importStar(require("path"));
38
38
  const AbstractAgent_1 = require("./AbstractAgent");
39
+ const catalog_1 = require("./catalog");
39
40
  class OpenHandsAgent extends AbstractAgent_1.AbstractAgent {
40
41
  getIdentifier() {
41
42
  return 'openhands';
42
43
  }
43
44
  getName() {
44
- return 'Open Hands';
45
+ return (0, catalog_1.getAgentDisplayName)('openhands');
45
46
  }
46
47
  getDefaultOutputPath(projectRoot) {
47
48
  return path.join(projectRoot, '.openhands', 'microagents', 'repo.md');
@@ -52,5 +53,11 @@ class OpenHandsAgent extends AbstractAgent_1.AbstractAgent {
52
53
  supportsMcpRemote() {
53
54
  return true;
54
55
  }
56
+ supportsNativeSkills() {
57
+ return true;
58
+ }
59
+ getSkillsPath(projectRoot) {
60
+ return (0, catalog_1.getAgentSkillsPath)('openhands', projectRoot);
61
+ }
55
62
  }
56
63
  exports.OpenHandsAgent = OpenHandsAgent;
@@ -37,12 +37,13 @@ exports.QwenCodeAgent = void 0;
37
37
  const path = __importStar(require("path"));
38
38
  const fs_1 = require("fs");
39
39
  const AgentsMdAgent_1 = require("./AgentsMdAgent");
40
+ const catalog_1 = require("./catalog");
40
41
  class QwenCodeAgent extends AgentsMdAgent_1.AgentsMdAgent {
41
42
  getIdentifier() {
42
- return 'qwen';
43
+ return 'qwen-code';
43
44
  }
44
45
  getName() {
45
- return 'Qwen Code';
46
+ return (0, catalog_1.getAgentDisplayName)('qwen-code');
46
47
  }
47
48
  async applySkillerConfig(concatenatedRules, projectRoot, _skillerMcpJson, agentConfig) {
48
49
  // First, perform idempotent write of AGENTS.md via base class
@@ -78,5 +79,11 @@ class QwenCodeAgent extends AgentsMdAgent_1.AgentsMdAgent {
78
79
  supportsMcpRemote() {
79
80
  return true;
80
81
  }
82
+ supportsNativeSkills() {
83
+ return true;
84
+ }
85
+ getSkillsPath(projectRoot) {
86
+ return (0, catalog_1.getAgentSkillsPath)('qwen-code', projectRoot);
87
+ }
81
88
  }
82
89
  exports.QwenCodeAgent = QwenCodeAgent;