@shell-shock/plugin-skills 0.0.13 → 0.0.15

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.
@@ -0,0 +1,223 @@
1
+ let _alloy_js_core_jsx_runtime = require("@alloy-js/core/jsx-runtime");
2
+ let _shell_shock_core_plugin_utils = require("@shell-shock/core/plugin-utils");
3
+ let _stryke_path_join = require("@stryke/path/join");
4
+ let _alloy_js_core = require("@alloy-js/core");
5
+ let _alloy_js_typescript = require("@alloy-js/typescript");
6
+ let _power_plant_alloy_js_core_components_spacing = require("@power-plant/alloy-js/core/components/spacing");
7
+ let _power_plant_alloy_js_typescript = require("@power-plant/alloy-js/typescript");
8
+ let _power_plant_alloy_js_typescript_components_tsdoc = require("@power-plant/alloy-js/typescript/components/tsdoc");
9
+ let _shell_shock_core_contexts_power_plant = require("@shell-shock/core/contexts/power-plant");
10
+
11
+ //#region src/helpers/constants.ts
12
+ const AGENT_SKILL_DIRS = {
13
+ universal: ".agents/skills",
14
+ "claude-code": ".claude/skills",
15
+ opencode: ".agents/skills",
16
+ codex: ".agents/skills",
17
+ cursor: ".agents/skills",
18
+ "github-copilot": ".agents/skills",
19
+ warp: ".agents/skills",
20
+ cline: ".agents/skills",
21
+ continue: ".continue/skills",
22
+ "command-code": ".commandcode/skills",
23
+ "gemini-cli": ".agents/skills",
24
+ openhands: ".openhands/skills",
25
+ roo: ".roo/skills",
26
+ windsurf: ".windsurf/skills",
27
+ zencoder: ".zencoder/skills",
28
+ augment: ".augment/skills",
29
+ openclaw: "skills",
30
+ codebuddy: ".codebuddy/skills",
31
+ "codearts-agent": ".codeartsdoer/skills",
32
+ codemaker: ".codemaker/skills",
33
+ codestudio: ".codestudio/skills",
34
+ crush: ".crush/skills",
35
+ pi: ".pi/skills",
36
+ "tabnine-cli": ".tabnine/agent/skills",
37
+ replit: ".agents/skills"
38
+ };
39
+ const AGENT_SKILL_NAMES = {
40
+ universal: "Universal",
41
+ "claude-code": "Claude Code",
42
+ opencode: "OpenCode",
43
+ codex: "Codex",
44
+ cursor: "Cursor",
45
+ "github-copilot": "GitHub Copilot",
46
+ warp: "Warp",
47
+ cline: "Cline",
48
+ continue: "Continue",
49
+ "command-code": "Command Code",
50
+ "gemini-cli": "Gemini CLI",
51
+ openhands: "OpenHands",
52
+ roo: "Roo",
53
+ windsurf: "Windsurf",
54
+ zencoder: "Zencoder",
55
+ augment: "Augment",
56
+ openclaw: "OpenClaw",
57
+ codebuddy: "CodeBuddy",
58
+ "codearts-agent": "CodeArts Agent",
59
+ codemaker: "CodeMaker",
60
+ codestudio: "CodeStudio",
61
+ crush: "Crush",
62
+ pi: "Pi",
63
+ "tabnine-cli": "TabNine CLI",
64
+ replit: "Replit"
65
+ };
66
+
67
+ //#endregion
68
+ //#region src/components/skills-command.tsx
69
+ /**
70
+ * The Skills command's handler wrapper for the Shell Shock project.
71
+ */
72
+ function SkillsCommand({ skills }) {
73
+ const context = (0, _shell_shock_core_contexts_power_plant.usePowerlines)();
74
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_power_plant_alloy_js_typescript.TypescriptFile, {
75
+ get path() {
76
+ return (0, _stryke_path_join.joinPaths)(context.entryPath, "skills", "command.ts");
77
+ },
78
+ imports: {
79
+ "node:fs/promises": ["mkdir", "writeFile"],
80
+ "node:path": [
81
+ "dirname",
82
+ "join",
83
+ "resolve"
84
+ ]
85
+ },
86
+ builtinImports: {
87
+ console: [
88
+ "bold",
89
+ "writeLine",
90
+ "body",
91
+ "warn"
92
+ ],
93
+ prompts: ["multiselect", "isCancel"]
94
+ },
95
+ get children() {
96
+ return [
97
+ (0, _alloy_js_core_jsx_runtime.memo)(() => _alloy_js_core.code`const AGENT_SKILL_DIR: Record<string, string> = ${JSON.stringify(AGENT_SKILL_DIRS, null, 2)};`),
98
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_power_plant_alloy_js_core_components_spacing.Spacing, {}),
99
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_power_plant_alloy_js_typescript_components_tsdoc.TSDoc, {
100
+ get heading() {
101
+ return `This command adds agent skills for the ${(0, _shell_shock_core_plugin_utils.getAppTitle)(context)} commands to the current repository.`;
102
+ },
103
+ get children() {
104
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_power_plant_alloy_js_typescript_components_tsdoc.TSDocParam, {
105
+ name: "agents",
106
+ children: "An array of agent names to add skills for. If not provided, the user will be prompted to select one or more agents."
107
+ });
108
+ }
109
+ }),
110
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.FunctionDeclaration, {
111
+ "export": true,
112
+ "default": true,
113
+ async: true,
114
+ name: "handler",
115
+ get parameters() {
116
+ return [{
117
+ name: "agents",
118
+ type: `(${Object.values(AGENT_SKILL_NAMES).map((name) => JSON.stringify(name)).join(" | ")})[]`,
119
+ default: "[]"
120
+ }];
121
+ },
122
+ get children() {
123
+ return [
124
+ (0, _alloy_js_core_jsx_runtime.memo)(() => _alloy_js_core.code`writeLine(bold(body("Adding ${Object.keys(skills).length} ${(0, _shell_shock_core_plugin_utils.getAppTitle)(context)} skills to the repository...")));
125
+
126
+ const validAgents = [ ${Object.values(AGENT_SKILL_NAMES).map((name) => JSON.stringify(name)).join(", ")} ];
127
+ let targetAgents: string[];
128
+
129
+ if (agents.includes("*")) {
130
+ targetAgents = validAgents;
131
+ } else if (agents.length > 0) {
132
+ const invalidAgents = agents.filter(agent => !validAgents.includes(agent));
133
+ if (invalidAgents.length > 0) {
134
+ throw new Error(
135
+ \`\${invalidAgents.length} invalid agent\${invalidAgents.length > 1 ? "s" : ""} \${invalidAgents.length > 1 ? "were" : "was"} provided: \${invalidAgents.join(", ")}. Please only provide agent types from the following list: \${validAgents.join(", ")}.\`
136
+ );
137
+ }
138
+
139
+ targetAgents = agents;
140
+ } else {
141
+ const selectedAgents = await multiselect({
142
+ message: "Select agents to install skills for",
143
+ required: true,
144
+ options: [
145
+ ${Object.entries(AGENT_SKILL_NAMES).map(([agentKey, agentName]) => _alloy_js_core.code`{
146
+ value: ${JSON.stringify(agentKey)},
147
+ label: ${JSON.stringify(agentName)},
148
+ description: ${JSON.stringify(AGENT_SKILL_DIRS[agentKey] || ".agents/skills")}
149
+ }`)}
150
+ ]
151
+ });
152
+ if (isCancel(selectedAgents)) {
153
+ writeLine(body("Skills installation was cancelled."));
154
+ return;
155
+ }
156
+
157
+ if (selectedAgents.length === 0) {
158
+ warn("No agents were selected, so there is nothing to install.");
159
+ return;
160
+ }
161
+
162
+ const invalidAgents = selectedAgents.filter(agent => !validAgents.includes(agent));
163
+ if (invalidAgents.length > 0) {
164
+ throw new Error(
165
+ \`\${invalidAgents.length} invalid agent\${invalidAgents.length > 1 ? "s" : ""} \${invalidAgents.length > 1 ? "were" : "was"} provided: \${invalidAgents.join(", ")}. Please only provide agent types from the following list: \${validAgents.join(", ")}.\`
166
+ );
167
+ }
168
+
169
+ targetAgents = selectedAgents;
170
+ }
171
+
172
+ const isPathSafe = (basePath: string, targetPath: string): boolean => {
173
+ const resolvedBase = resolve(basePath);
174
+ const resolvedTarget = resolve(targetPath);
175
+ return (
176
+ resolvedTarget === resolvedBase ||
177
+ resolvedTarget.startsWith(resolvedBase + "/")
178
+ );
179
+ };`),
180
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_power_plant_alloy_js_core_components_spacing.Spacing, {}),
181
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.For, {
182
+ get each() {
183
+ return Object.entries(skills);
184
+ },
185
+ doubleHardline: true,
186
+ children: ([skillName, skillContent]) => _alloy_js_core.code`for (const targetBase of Array.from(new Set(targetAgents.map(agent => join(process.cwd(), AGENT_SKILL_DIRS[agent] || ".agents/skills"))))) {
187
+ const skillDir = join(targetBase, "${skillName.toLowerCase().replace(/\s+/g, "-").replace(/[/\\:\0]/g, "").replace(/^-+|-+$/g, "")}");
188
+ const skillPath = join(skillDir, "SKILL.md");
189
+
190
+ if (
191
+ "${skillName.toLowerCase().replace(/\s+/g, "-").replace(/[/\\:\0]/g, "").replace(/^-+|-+$/g, "")}".length > 0 &&
192
+ isPathSafe(targetBase, skillDir) &&
193
+ isPathSafe(skillDir, skillPath)
194
+ ) {
195
+
196
+
197
+ await mkdir(dirname(skillPath), { recursive: true });
198
+ await writeFile(skillPath, ${JSON.stringify(skillContent)}, "utf8");
199
+
200
+ writeLine(body(\`Added ${skillName} skills to \${skillPath}\`));
201
+ } else {
202
+ warn(\`Skipped adding the "${skillName}" skill due to an invalid skill name. Invalid skill names could lead to an unsafe file path. Skill names must not be empty and cannot contain characters that are not allowed in file paths, such as / \\ : \\0. The skill name will be sanitized by replacing spaces with dashes, removing leading and trailing dashes, and removing any invalid characters. If the resulting skill name is empty or if the resolved skill path is outside of the target base directory, the skill will be skipped for that agent.\`
203
+ );
204
+ }
205
+ } `
206
+ }),
207
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_power_plant_alloy_js_core_components_spacing.Spacing, {}),
208
+ _alloy_js_core.code`writeLine(bold(body("Done!")));`
209
+ ];
210
+ }
211
+ })
212
+ ];
213
+ }
214
+ });
215
+ }
216
+
217
+ //#endregion
218
+ Object.defineProperty(exports, 'SkillsCommand', {
219
+ enumerable: true,
220
+ get: function () {
221
+ return SkillsCommand;
222
+ }
223
+ });
@@ -0,0 +1,219 @@
1
+ import { createComponent, memo } from "@alloy-js/core/jsx-runtime";
2
+ import { getAppTitle } from "@shell-shock/core/plugin-utils";
3
+ import { joinPaths } from "@stryke/path/join";
4
+ import { For, code } from "@alloy-js/core";
5
+ import { FunctionDeclaration } from "@alloy-js/typescript";
6
+ import { Spacing } from "@power-plant/alloy-js/core/components/spacing";
7
+ import { TypescriptFile } from "@power-plant/alloy-js/typescript";
8
+ import { TSDoc, TSDocParam } from "@power-plant/alloy-js/typescript/components/tsdoc";
9
+ import { usePowerlines } from "@shell-shock/core/contexts/power-plant";
10
+
11
+ //#region src/helpers/constants.ts
12
+ const AGENT_SKILL_DIRS = {
13
+ universal: ".agents/skills",
14
+ "claude-code": ".claude/skills",
15
+ opencode: ".agents/skills",
16
+ codex: ".agents/skills",
17
+ cursor: ".agents/skills",
18
+ "github-copilot": ".agents/skills",
19
+ warp: ".agents/skills",
20
+ cline: ".agents/skills",
21
+ continue: ".continue/skills",
22
+ "command-code": ".commandcode/skills",
23
+ "gemini-cli": ".agents/skills",
24
+ openhands: ".openhands/skills",
25
+ roo: ".roo/skills",
26
+ windsurf: ".windsurf/skills",
27
+ zencoder: ".zencoder/skills",
28
+ augment: ".augment/skills",
29
+ openclaw: "skills",
30
+ codebuddy: ".codebuddy/skills",
31
+ "codearts-agent": ".codeartsdoer/skills",
32
+ codemaker: ".codemaker/skills",
33
+ codestudio: ".codestudio/skills",
34
+ crush: ".crush/skills",
35
+ pi: ".pi/skills",
36
+ "tabnine-cli": ".tabnine/agent/skills",
37
+ replit: ".agents/skills"
38
+ };
39
+ const AGENT_SKILL_NAMES = {
40
+ universal: "Universal",
41
+ "claude-code": "Claude Code",
42
+ opencode: "OpenCode",
43
+ codex: "Codex",
44
+ cursor: "Cursor",
45
+ "github-copilot": "GitHub Copilot",
46
+ warp: "Warp",
47
+ cline: "Cline",
48
+ continue: "Continue",
49
+ "command-code": "Command Code",
50
+ "gemini-cli": "Gemini CLI",
51
+ openhands: "OpenHands",
52
+ roo: "Roo",
53
+ windsurf: "Windsurf",
54
+ zencoder: "Zencoder",
55
+ augment: "Augment",
56
+ openclaw: "OpenClaw",
57
+ codebuddy: "CodeBuddy",
58
+ "codearts-agent": "CodeArts Agent",
59
+ codemaker: "CodeMaker",
60
+ codestudio: "CodeStudio",
61
+ crush: "Crush",
62
+ pi: "Pi",
63
+ "tabnine-cli": "TabNine CLI",
64
+ replit: "Replit"
65
+ };
66
+
67
+ //#endregion
68
+ //#region src/components/skills-command.tsx
69
+ /**
70
+ * The Skills command's handler wrapper for the Shell Shock project.
71
+ */
72
+ function SkillsCommand({ skills }) {
73
+ const context = usePowerlines();
74
+ return createComponent(TypescriptFile, {
75
+ get path() {
76
+ return joinPaths(context.entryPath, "skills", "command.ts");
77
+ },
78
+ imports: {
79
+ "node:fs/promises": ["mkdir", "writeFile"],
80
+ "node:path": [
81
+ "dirname",
82
+ "join",
83
+ "resolve"
84
+ ]
85
+ },
86
+ builtinImports: {
87
+ console: [
88
+ "bold",
89
+ "writeLine",
90
+ "body",
91
+ "warn"
92
+ ],
93
+ prompts: ["multiselect", "isCancel"]
94
+ },
95
+ get children() {
96
+ return [
97
+ memo(() => code`const AGENT_SKILL_DIR: Record<string, string> = ${JSON.stringify(AGENT_SKILL_DIRS, null, 2)};`),
98
+ createComponent(Spacing, {}),
99
+ createComponent(TSDoc, {
100
+ get heading() {
101
+ return `This command adds agent skills for the ${getAppTitle(context)} commands to the current repository.`;
102
+ },
103
+ get children() {
104
+ return createComponent(TSDocParam, {
105
+ name: "agents",
106
+ children: "An array of agent names to add skills for. If not provided, the user will be prompted to select one or more agents."
107
+ });
108
+ }
109
+ }),
110
+ createComponent(FunctionDeclaration, {
111
+ "export": true,
112
+ "default": true,
113
+ async: true,
114
+ name: "handler",
115
+ get parameters() {
116
+ return [{
117
+ name: "agents",
118
+ type: `(${Object.values(AGENT_SKILL_NAMES).map((name) => JSON.stringify(name)).join(" | ")})[]`,
119
+ default: "[]"
120
+ }];
121
+ },
122
+ get children() {
123
+ return [
124
+ memo(() => code`writeLine(bold(body("Adding ${Object.keys(skills).length} ${getAppTitle(context)} skills to the repository...")));
125
+
126
+ const validAgents = [ ${Object.values(AGENT_SKILL_NAMES).map((name) => JSON.stringify(name)).join(", ")} ];
127
+ let targetAgents: string[];
128
+
129
+ if (agents.includes("*")) {
130
+ targetAgents = validAgents;
131
+ } else if (agents.length > 0) {
132
+ const invalidAgents = agents.filter(agent => !validAgents.includes(agent));
133
+ if (invalidAgents.length > 0) {
134
+ throw new Error(
135
+ \`\${invalidAgents.length} invalid agent\${invalidAgents.length > 1 ? "s" : ""} \${invalidAgents.length > 1 ? "were" : "was"} provided: \${invalidAgents.join(", ")}. Please only provide agent types from the following list: \${validAgents.join(", ")}.\`
136
+ );
137
+ }
138
+
139
+ targetAgents = agents;
140
+ } else {
141
+ const selectedAgents = await multiselect({
142
+ message: "Select agents to install skills for",
143
+ required: true,
144
+ options: [
145
+ ${Object.entries(AGENT_SKILL_NAMES).map(([agentKey, agentName]) => code`{
146
+ value: ${JSON.stringify(agentKey)},
147
+ label: ${JSON.stringify(agentName)},
148
+ description: ${JSON.stringify(AGENT_SKILL_DIRS[agentKey] || ".agents/skills")}
149
+ }`)}
150
+ ]
151
+ });
152
+ if (isCancel(selectedAgents)) {
153
+ writeLine(body("Skills installation was cancelled."));
154
+ return;
155
+ }
156
+
157
+ if (selectedAgents.length === 0) {
158
+ warn("No agents were selected, so there is nothing to install.");
159
+ return;
160
+ }
161
+
162
+ const invalidAgents = selectedAgents.filter(agent => !validAgents.includes(agent));
163
+ if (invalidAgents.length > 0) {
164
+ throw new Error(
165
+ \`\${invalidAgents.length} invalid agent\${invalidAgents.length > 1 ? "s" : ""} \${invalidAgents.length > 1 ? "were" : "was"} provided: \${invalidAgents.join(", ")}. Please only provide agent types from the following list: \${validAgents.join(", ")}.\`
166
+ );
167
+ }
168
+
169
+ targetAgents = selectedAgents;
170
+ }
171
+
172
+ const isPathSafe = (basePath: string, targetPath: string): boolean => {
173
+ const resolvedBase = resolve(basePath);
174
+ const resolvedTarget = resolve(targetPath);
175
+ return (
176
+ resolvedTarget === resolvedBase ||
177
+ resolvedTarget.startsWith(resolvedBase + "/")
178
+ );
179
+ };`),
180
+ createComponent(Spacing, {}),
181
+ createComponent(For, {
182
+ get each() {
183
+ return Object.entries(skills);
184
+ },
185
+ doubleHardline: true,
186
+ children: ([skillName, skillContent]) => code`for (const targetBase of Array.from(new Set(targetAgents.map(agent => join(process.cwd(), AGENT_SKILL_DIRS[agent] || ".agents/skills"))))) {
187
+ const skillDir = join(targetBase, "${skillName.toLowerCase().replace(/\s+/g, "-").replace(/[/\\:\0]/g, "").replace(/^-+|-+$/g, "")}");
188
+ const skillPath = join(skillDir, "SKILL.md");
189
+
190
+ if (
191
+ "${skillName.toLowerCase().replace(/\s+/g, "-").replace(/[/\\:\0]/g, "").replace(/^-+|-+$/g, "")}".length > 0 &&
192
+ isPathSafe(targetBase, skillDir) &&
193
+ isPathSafe(skillDir, skillPath)
194
+ ) {
195
+
196
+
197
+ await mkdir(dirname(skillPath), { recursive: true });
198
+ await writeFile(skillPath, ${JSON.stringify(skillContent)}, "utf8");
199
+
200
+ writeLine(body(\`Added ${skillName} skills to \${skillPath}\`));
201
+ } else {
202
+ warn(\`Skipped adding the "${skillName}" skill due to an invalid skill name. Invalid skill names could lead to an unsafe file path. Skill names must not be empty and cannot contain characters that are not allowed in file paths, such as / \\ : \\0. The skill name will be sanitized by replacing spaces with dashes, removing leading and trailing dashes, and removing any invalid characters. If the resulting skill name is empty or if the resolved skill path is outside of the target base directory, the skill will be skipped for that agent.\`
203
+ );
204
+ }
205
+ } `
206
+ }),
207
+ createComponent(Spacing, {}),
208
+ code`writeLine(bold(body("Done!")));`
209
+ ];
210
+ }
211
+ })
212
+ ];
213
+ }
214
+ });
215
+ }
216
+
217
+ //#endregion
218
+ export { SkillsCommand as t };
219
+ //# sourceMappingURL=skills-command-DhY1RjBq.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-command-DhY1RjBq.mjs","names":[],"sources":[],"mappings":""}
@@ -0,0 +1 @@
1
+ require('./plugin.cjs');
@@ -1 +1,3 @@
1
+ import "./plugin.mjs";
2
+
1
3
  export { };
@@ -1,6 +1,5 @@
1
1
  import { CommandConfig, Context, ResolvedConfig, UserConfig } from "@shell-shock/core";
2
2
  import { RequiredKeys } from "@stryke/types/base";
3
-
4
3
  //#region src/types/plugin.d.ts
5
4
  interface SkillsPluginOptions {
6
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.cts","names":[],"sources":["../../src/types/plugin.ts"],"mappings":";;;;UA0BiB,mBAAA;;AAAjB;;;;EAME,IAAA;EAOA;;;;;EAAA,iBAAA;EAaU;;;;;;;;EAHV,OAAA,GAAU,OAAO,CAAC,aAAA;AAAA;AAAA,KAGR,sBAAA,GAAyB,UAAA;;;;EAInC,MAAA,EAAQ,mBAAmB;AAAA;AAAA,KAGjB,0BAAA,GAA6B,cAAA;EAQf;;;EAJxB,MAAA,EAAQ,QAAA,CAAS,IAAA,CAAK,mBAAA;IAJiB;;;IAQrC,OAAA,EAAS,YAAA,CAAa,OAAA,CAAQ,aAAA;EAAA;AAAA;AAAA,KAItB,mBAAA,yBACc,0BAAA,GACtB,0BAAA,IACA,OAAA,CAAQ,eAAA"}
1
+ {"version":3,"file":"plugin.d.cts","names":[],"sources":["../../src/types/plugin.ts"],"mappings":";;;UA0BiB;;;;;;EAMf;;;;;;EAOA;;;;;;;;;EAUA,UAAU,QAAQ;;KAGR,yBAAyB;;;;EAInC,QAAQ;;KAGE,6BAA6B;;;;EAIvC,QAAQ,SAAS,KAAK;;;;IAIpB,SAAS,aAAa,QAAQ;;;KAItB,oBACV,wBAAwB,6BACtB,8BACA,QAAQ"}
@@ -1,6 +1,5 @@
1
1
  import { CommandConfig, Context, ResolvedConfig, UserConfig } from "@shell-shock/core";
2
2
  import { RequiredKeys } from "@stryke/types/base";
3
-
4
3
  //#region src/types/plugin.d.ts
5
4
  interface SkillsPluginOptions {
6
5
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shell-shock/plugin-skills",
3
- "version": "0.0.13",
3
+ "version": "0.0.15",
4
4
  "private": false,
5
5
  "description": "A package containing a Shell Shock plugin to manage adding agent skills in a Shell Shock application.",
6
6
  "keywords": [
@@ -87,6 +87,20 @@
87
87
  "default": "./dist/components/skills-command.mjs"
88
88
  }
89
89
  },
90
+ "./generator": {
91
+ "require": {
92
+ "types": "./dist/generator.d.cts",
93
+ "default": "./dist/generator.cjs"
94
+ },
95
+ "import": {
96
+ "types": "./dist/generator.d.mts",
97
+ "default": "./dist/generator.mjs"
98
+ },
99
+ "default": {
100
+ "types": "./dist/generator.d.mts",
101
+ "default": "./dist/generator.mjs"
102
+ }
103
+ },
90
104
  "./package.json": "./package.json",
91
105
  "./types": {
92
106
  "require": {
@@ -123,20 +137,22 @@
123
137
  "typings": "dist/index.d.mts",
124
138
  "files": ["dist"],
125
139
  "dependencies": {
126
- "@alloy-js/core": "^0.23.1",
127
- "@alloy-js/typescript": "^0.23.0",
128
- "@powerlines/plugin-alloy": "^0.26.230",
129
- "@shell-shock/core": "0.17.22",
130
- "@stryke/path": "^0.29.11",
131
- "@stryke/type-checks": "^0.6.17",
132
- "@stryke/types": "^0.12.12",
140
+ "@alloy-js/core": "^0.24.1",
141
+ "@alloy-js/typescript": "^0.24.0",
142
+ "@power-plant/alloy-js": "^0.0.87",
143
+ "@power-plant/core": "^0.0.90",
144
+ "@powerlines/plugin-alloy": "^0.26.309",
145
+ "@shell-shock/core": "0.17.24",
146
+ "@stryke/path": "^0.29.35",
147
+ "@stryke/type-checks": "^0.6.41",
148
+ "@stryke/types": "^0.12.36",
133
149
  "defu": "^6.1.7",
134
- "powerlines": "^0.47.137"
150
+ "powerlines": "^0.47.211"
135
151
  },
136
152
  "devDependencies": {
137
- "@powerlines/plugin-plugin": "^0.12.549",
138
- "@types/node": "^25.9.3"
153
+ "@powerlines/plugin-plugin": "^0.12.624",
154
+ "@types/node": "^25.9.5"
139
155
  },
140
156
  "publishConfig": { "access": "public" },
141
- "gitHead": "a6c69ec8211e244444893231fe37d7cfbe518fb1"
157
+ "gitHead": "06592cb0cccc2c7e9297af4c5138550e86fa4eec"
142
158
  }
@@ -1,29 +0,0 @@
1
- //#region \0rolldown/runtime.js
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from === "object" || typeof from === "function") {
10
- for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
- key = keys[i];
12
- if (!__hasOwnProp.call(to, key) && key !== except) {
13
- __defProp(to, key, {
14
- get: ((k) => from[k]).bind(null, key),
15
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
- });
17
- }
18
- }
19
- }
20
- return to;
21
- };
22
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
23
- value: mod,
24
- enumerable: true
25
- }) : target, mod));
26
-
27
- //#endregion
28
-
29
- exports.__toESM = __toESM;
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills-command.mjs","names":[],"sources":[],"mappings":""}
@@ -1,60 +0,0 @@
1
-
2
- //#region src/helpers/constants.ts
3
- const AGENT_SKILL_DIRS = {
4
- universal: ".agents/skills",
5
- "claude-code": ".claude/skills",
6
- opencode: ".agents/skills",
7
- codex: ".agents/skills",
8
- cursor: ".agents/skills",
9
- "github-copilot": ".agents/skills",
10
- warp: ".agents/skills",
11
- cline: ".agents/skills",
12
- continue: ".continue/skills",
13
- "command-code": ".commandcode/skills",
14
- "gemini-cli": ".agents/skills",
15
- openhands: ".openhands/skills",
16
- roo: ".roo/skills",
17
- windsurf: ".windsurf/skills",
18
- zencoder: ".zencoder/skills",
19
- augment: ".augment/skills",
20
- openclaw: "skills",
21
- codebuddy: ".codebuddy/skills",
22
- "codearts-agent": ".codeartsdoer/skills",
23
- codemaker: ".codemaker/skills",
24
- codestudio: ".codestudio/skills",
25
- crush: ".crush/skills",
26
- pi: ".pi/skills",
27
- "tabnine-cli": ".tabnine/agent/skills",
28
- replit: ".agents/skills"
29
- };
30
- const AGENT_SKILL_NAMES = {
31
- universal: "Universal",
32
- "claude-code": "Claude Code",
33
- opencode: "OpenCode",
34
- codex: "Codex",
35
- cursor: "Cursor",
36
- "github-copilot": "GitHub Copilot",
37
- warp: "Warp",
38
- cline: "Cline",
39
- continue: "Continue",
40
- "command-code": "Command Code",
41
- "gemini-cli": "Gemini CLI",
42
- openhands: "OpenHands",
43
- roo: "Roo",
44
- windsurf: "Windsurf",
45
- zencoder: "Zencoder",
46
- augment: "Augment",
47
- openclaw: "OpenClaw",
48
- codebuddy: "CodeBuddy",
49
- "codearts-agent": "CodeArts Agent",
50
- codemaker: "CodeMaker",
51
- codestudio: "CodeStudio",
52
- crush: "Crush",
53
- pi: "Pi",
54
- "tabnine-cli": "TabNine CLI",
55
- replit: "Replit"
56
- };
57
-
58
- //#endregion
59
- exports.AGENT_SKILL_DIRS = AGENT_SKILL_DIRS;
60
- exports.AGENT_SKILL_NAMES = AGENT_SKILL_NAMES;