skiller 0.7.23 → 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 +23 -30
- package/dist/agents/AbstractAgent.js +7 -0
- package/dist/agents/AmpAgent.js +3 -36
- package/dist/agents/AugmentCodeAgent.js +9 -2
- package/dist/agents/ClaudeAgent.js +6 -2
- package/dist/agents/ClineAgent.js +8 -1
- package/dist/agents/CodexCliAgent.js +3 -2
- package/dist/agents/CopilotAgent.js +4 -37
- package/dist/agents/CrushAgent.js +8 -1
- package/dist/agents/CursorAgent.js +4 -3
- package/dist/agents/FirebenderAgent.js +8 -1
- package/dist/agents/GeminiCliAgent.js +3 -2
- package/dist/agents/GooseAgent.js +3 -2
- package/dist/agents/JunieAgent.js +8 -1
- package/dist/agents/KiloCodeAgent.js +4 -3
- package/dist/agents/KiroAgent.js +9 -2
- package/dist/agents/OpenCodeAgent.js +3 -2
- package/dist/agents/OpenHandsAgent.js +8 -1
- package/dist/agents/QwenCodeAgent.js +9 -2
- package/dist/agents/RooCodeAgent.js +3 -2
- package/dist/agents/TraeAgent.js +8 -1
- package/dist/agents/WarpAgent.js +8 -1
- package/dist/agents/WindsurfAgent.js +8 -1
- package/dist/agents/catalog.js +81 -0
- package/dist/agents/index.js +25 -46
- package/dist/cli/handlers.js +6 -6
- package/dist/core/SkillsProcessor.js +42 -0
- package/dist/core/agent-selection.js +8 -17
- package/dist/core/config-utils.js +12 -12
- package/dist/generated/skills-agent-catalog.js +268 -0
- package/package.json +78 -76
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
|
|
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
|
|
36
|
-
|
|
|
37
|
-
| `
|
|
38
|
-
| `
|
|
39
|
-
| `
|
|
40
|
-
| `
|
|
41
|
-
| `
|
|
42
|
-
| `
|
|
43
|
-
| `
|
|
44
|
-
| `
|
|
45
|
-
| `
|
|
46
|
-
| `
|
|
47
|
-
| `
|
|
48
|
-
| `
|
|
49
|
-
| `
|
|
50
|
-
| `
|
|
51
|
-
| `
|
|
52
|
-
| `
|
|
53
|
-
| `
|
|
54
|
-
| `
|
|
55
|
-
| `
|
|
56
|
-
| `
|
|
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;
|
package/dist/agents/AmpAgent.js
CHANGED
|
@@ -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 '
|
|
11
|
+
return (0, catalog_1.getAgentDisplayName)('amp');
|
|
45
12
|
}
|
|
46
13
|
supportsNativeSkills() {
|
|
47
14
|
return true;
|
|
48
15
|
}
|
|
49
16
|
getSkillsPath(projectRoot) {
|
|
50
|
-
return
|
|
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 '
|
|
46
|
+
return 'augment';
|
|
46
47
|
}
|
|
47
48
|
getName() {
|
|
48
|
-
return '
|
|
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
|
|
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 '
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 '
|
|
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 '
|
|
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
|
|
90
|
+
// Cursor follows the shared project skills convention.
|
|
90
91
|
return true;
|
|
91
92
|
}
|
|
92
93
|
getSkillsPath(projectRoot) {
|
|
93
|
-
return
|
|
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 '
|
|
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
|
|
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
|
|
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 '
|
|
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
|
|
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 '
|
|
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 '
|
|
46
|
+
return 'kilo';
|
|
46
47
|
}
|
|
47
48
|
getName() {
|
|
48
|
-
return
|
|
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
|
|
67
|
+
return (0, catalog_1.getAgentSkillsPath)('kilo', projectRoot);
|
|
67
68
|
}
|
|
68
69
|
}
|
|
69
70
|
exports.KiloCodeAgent = KiloCodeAgent;
|
package/dist/agents/KiroAgent.js
CHANGED
|
@@ -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 '
|
|
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 '
|
|
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
|
|
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
|
|
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
|
|
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;
|