genskills 1.0.0
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 +259 -0
- package/dist/cli/commands/clean.d.ts +3 -0
- package/dist/cli/commands/clean.d.ts.map +1 -0
- package/dist/cli/commands/clean.js +100 -0
- package/dist/cli/commands/clean.js.map +1 -0
- package/dist/cli/commands/disable.d.ts +3 -0
- package/dist/cli/commands/disable.d.ts.map +1 -0
- package/dist/cli/commands/disable.js +44 -0
- package/dist/cli/commands/disable.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +151 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/enable.d.ts +3 -0
- package/dist/cli/commands/enable.d.ts.map +1 -0
- package/dist/cli/commands/enable.js +48 -0
- package/dist/cli/commands/enable.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +94 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/install.d.ts +3 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +40 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/list.d.ts +3 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +60 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/update.d.ts +3 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +58 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +33 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/config-loader.d.ts +37 -0
- package/dist/cli/utils/config-loader.d.ts.map +1 -0
- package/dist/cli/utils/config-loader.js +129 -0
- package/dist/cli/utils/config-loader.js.map +1 -0
- package/dist/cli/utils/copy.d.ts +26 -0
- package/dist/cli/utils/copy.d.ts.map +1 -0
- package/dist/cli/utils/copy.js +182 -0
- package/dist/cli/utils/copy.js.map +1 -0
- package/dist/cli/utils/dependency-resolver.d.ts +26 -0
- package/dist/cli/utils/dependency-resolver.d.ts.map +1 -0
- package/dist/cli/utils/dependency-resolver.js +181 -0
- package/dist/cli/utils/dependency-resolver.js.map +1 -0
- package/dist/cli/utils/hooks.d.ts +22 -0
- package/dist/cli/utils/hooks.d.ts.map +1 -0
- package/dist/cli/utils/hooks.js +124 -0
- package/dist/cli/utils/hooks.js.map +1 -0
- package/dist/cli/utils/logger.d.ts +13 -0
- package/dist/cli/utils/logger.d.ts.map +1 -0
- package/dist/cli/utils/logger.js +57 -0
- package/dist/cli/utils/logger.js.map +1 -0
- package/dist/cli/utils/manifest.d.ts +29 -0
- package/dist/cli/utils/manifest.d.ts.map +1 -0
- package/dist/cli/utils/manifest.js +110 -0
- package/dist/cli/utils/manifest.js.map +1 -0
- package/dist/cli/utils/paths.d.ts +46 -0
- package/dist/cli/utils/paths.d.ts.map +1 -0
- package/dist/cli/utils/paths.js +150 -0
- package/dist/cli/utils/paths.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/postinstall.d.ts +9 -0
- package/dist/postinstall.d.ts.map +1 -0
- package/dist/postinstall.js +58 -0
- package/dist/postinstall.js.map +1 -0
- package/package.json +52 -0
- package/plugin.json +60 -0
- package/schemas/genskills-config.schema.json +91 -0
- package/skills/code-quality/code-review/SKILL.md +65 -0
- package/skills/code-quality/lint-fix/SKILL.md +44 -0
- package/skills/code-quality/refactor/SKILL.md +43 -0
- package/skills/code-quality/security-audit/SKILL.md +71 -0
- package/skills/code-quality/test-generator/SKILL.md +51 -0
- package/skills/code-quality/type-check/SKILL.md +41 -0
- package/skills/development/debug/SKILL.md +53 -0
- package/skills/development/migrate/SKILL.md +50 -0
- package/skills/development/perf-optimize/SKILL.md +64 -0
- package/skills/development/scaffold/SKILL.md +52 -0
- package/skills/documentation/api-docs/SKILL.md +51 -0
- package/skills/documentation/doc-gen/SKILL.md +49 -0
- package/skills/documentation/readme-gen/SKILL.md +68 -0
- package/skills/project-management/changelog-gen/SKILL.md +61 -0
- package/skills/project-management/release-notes/SKILL.md +62 -0
- package/skills/project-management/task-tracker/SKILL.md +42 -0
- package/skills/workflow/branch-manager/SKILL.md +50 -0
- package/skills/workflow/ci-fix/SKILL.md +44 -0
- package/skills/workflow/deploy/SKILL.md +53 -0
- package/skills/workflow/git-commit/SKILL.md +58 -0
- package/skills/workflow/pr-create/SKILL.md +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqD1D"}
|
|
@@ -0,0 +1,94 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.registerInitCommand = registerInitCommand;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const paths_1 = require("../utils/paths");
|
|
39
|
+
const paths_2 = require("../utils/paths");
|
|
40
|
+
const config_loader_1 = require("../utils/config-loader");
|
|
41
|
+
const logger_1 = require("../utils/logger");
|
|
42
|
+
function registerInitCommand(program) {
|
|
43
|
+
program
|
|
44
|
+
.command("init")
|
|
45
|
+
.description("Create a genskills.config.json with interactive setup")
|
|
46
|
+
.option("-y, --yes", "Use defaults without prompting")
|
|
47
|
+
.action(async (opts) => {
|
|
48
|
+
const projectRoot = (0, paths_1.findProjectRoot)();
|
|
49
|
+
const configPath = (0, paths_2.getConfigPath)(projectRoot);
|
|
50
|
+
if (fs.existsSync(configPath)) {
|
|
51
|
+
logger_1.logger.warn(`Config already exists: ${configPath}`);
|
|
52
|
+
logger_1.logger.info("Edit it manually or delete it to re-initialize.");
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const config = (0, config_loader_1.createDefaultConfig)();
|
|
56
|
+
if (opts.yes) {
|
|
57
|
+
// Use all defaults
|
|
58
|
+
(0, config_loader_1.saveConfig)(projectRoot, config);
|
|
59
|
+
logger_1.logger.success(`Created ${configPath} with defaults (all skills enabled)`);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
// Interactive mode — show categories and let user toggle
|
|
63
|
+
logger_1.logger.header("GenSkills — Interactive Setup");
|
|
64
|
+
logger_1.logger.br();
|
|
65
|
+
logger_1.logger.info("Select which skill categories to enable:");
|
|
66
|
+
logger_1.logger.br();
|
|
67
|
+
const categories = (0, paths_1.getCategories)();
|
|
68
|
+
for (const category of categories) {
|
|
69
|
+
const skills = (0, paths_1.getSkillsInCategory)(category);
|
|
70
|
+
const formatted = formatCategory(category);
|
|
71
|
+
logger_1.logger.info(`${formatted} (${skills.length} skills)`);
|
|
72
|
+
logger_1.logger.list(skills);
|
|
73
|
+
logger_1.logger.br();
|
|
74
|
+
}
|
|
75
|
+
logger_1.logger.info("All categories enabled by default.");
|
|
76
|
+
logger_1.logger.info("Edit genskills.config.json to customize.");
|
|
77
|
+
logger_1.logger.br();
|
|
78
|
+
// Write config with schema reference
|
|
79
|
+
const configWithSchema = {
|
|
80
|
+
$schema: "./node_modules/genskills/schemas/genskills-config.schema.json",
|
|
81
|
+
...config,
|
|
82
|
+
};
|
|
83
|
+
fs.writeFileSync(configPath, JSON.stringify(configWithSchema, null, 2), "utf-8");
|
|
84
|
+
logger_1.logger.success(`Created: ${configPath}`);
|
|
85
|
+
logger_1.logger.info("Run `npx genskills install` to apply changes.");
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function formatCategory(name) {
|
|
89
|
+
return name
|
|
90
|
+
.split("-")
|
|
91
|
+
.map((w) => w.charAt(0).toUpperCase() + w.slice(1))
|
|
92
|
+
.join(" ");
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,kDAqDC;AA3DD,uCAAyB;AACzB,0CAAqF;AACrF,0CAA+C;AAC/C,0DAA0F;AAC1F,4CAAyC;AAEzC,SAAgB,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,WAAW,EAAE,gCAAgC,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,IAAuB,EAAE,EAAE;QACxC,MAAM,WAAW,GAAG,IAAA,uBAAe,GAAE,CAAC;QACtC,MAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,WAAW,CAAC,CAAC;QAE9C,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,eAAM,CAAC,IAAI,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;YACpD,eAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,mCAAmB,GAAE,CAAC;QAErC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,mBAAmB;YACnB,IAAA,0BAAU,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAChC,eAAM,CAAC,OAAO,CAAC,WAAW,UAAU,qCAAqC,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QAED,yDAAyD;QACzD,eAAM,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC;QAC/C,eAAM,CAAC,EAAE,EAAE,CAAC;QACZ,eAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACxD,eAAM,CAAC,EAAE,EAAE,CAAC;QAEZ,MAAM,UAAU,GAAG,IAAA,qBAAa,GAAE,CAAC;QACnC,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAA,2BAAmB,EAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC3C,eAAM,CAAC,IAAI,CAAC,GAAG,SAAS,KAAK,MAAM,CAAC,MAAM,UAAU,CAAC,CAAC;YACtD,eAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpB,eAAM,CAAC,EAAE,EAAE,CAAC;QACd,CAAC;QAED,eAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAClD,eAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACxD,eAAM,CAAC,EAAE,EAAE,CAAC;QAEZ,qCAAqC;QACrC,MAAM,gBAAgB,GAAG;YACvB,OAAO,EAAE,+DAA+D;YACxE,GAAG,MAAM;SACV,CAAC;QAEF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACjF,eAAM,CAAC,OAAO,CAAC,YAAY,UAAU,EAAE,CAAC,CAAC;QACzC,eAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI;SACR,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoC7D"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerInstallCommand = registerInstallCommand;
|
|
4
|
+
const paths_1 = require("../utils/paths");
|
|
5
|
+
const copy_1 = require("../utils/copy");
|
|
6
|
+
const logger_1 = require("../utils/logger");
|
|
7
|
+
function registerInstallCommand(program) {
|
|
8
|
+
program
|
|
9
|
+
.command("install [skill]")
|
|
10
|
+
.description("Install skills into your project")
|
|
11
|
+
.option("-f, --force", "Force reinstall even if unchanged")
|
|
12
|
+
.action((skill, opts) => {
|
|
13
|
+
const projectRoot = (0, paths_1.findProjectRoot)();
|
|
14
|
+
logger_1.logger.header("GenSkills — Installing skills");
|
|
15
|
+
logger_1.logger.dim(`Project: ${projectRoot}`);
|
|
16
|
+
logger_1.logger.br();
|
|
17
|
+
const result = (0, copy_1.installSkills)(projectRoot, {
|
|
18
|
+
force: opts.force,
|
|
19
|
+
specific: skill,
|
|
20
|
+
});
|
|
21
|
+
if (result.installed.length > 0) {
|
|
22
|
+
logger_1.logger.success(`Installed: ${result.installed.join(", ")}`);
|
|
23
|
+
}
|
|
24
|
+
if (result.updated.length > 0) {
|
|
25
|
+
logger_1.logger.info(`Updated: ${result.updated.join(", ")}`);
|
|
26
|
+
}
|
|
27
|
+
if (result.skipped.length > 0) {
|
|
28
|
+
logger_1.logger.dim(`Skipped: ${result.skipped.length} (disabled or unchanged)`);
|
|
29
|
+
}
|
|
30
|
+
if (result.errors.length > 0) {
|
|
31
|
+
for (const err of result.errors) {
|
|
32
|
+
logger_1.logger.error(err);
|
|
33
|
+
}
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
logger_1.logger.br();
|
|
37
|
+
logger_1.logger.success("Done!");
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":";;AAKA,wDAoCC;AAxCD,0CAAiD;AACjD,wCAA8C;AAC9C,4CAAyC;AAEzC,SAAgB,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,aAAa,EAAE,mCAAmC,CAAC;SAC1D,MAAM,CAAC,CAAC,KAAyB,EAAE,IAAyB,EAAE,EAAE;QAC/D,MAAM,WAAW,GAAG,IAAA,uBAAe,GAAE,CAAC;QAEtC,eAAM,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC;QAC/C,eAAM,CAAC,GAAG,CAAC,YAAY,WAAW,EAAE,CAAC,CAAC;QACtC,eAAM,CAAC,EAAE,EAAE,CAAC;QAEZ,MAAM,MAAM,GAAG,IAAA,oBAAa,EAAC,WAAW,EAAE;YACxC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,eAAM,CAAC,OAAO,CAAC,cAAc,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,eAAM,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,eAAM,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,OAAO,CAAC,MAAM,0BAA0B,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChC,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,eAAM,CAAC,EAAE,EAAE,CAAC;QACZ,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0D1D"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerListCommand = registerListCommand;
|
|
4
|
+
const paths_1 = require("../utils/paths");
|
|
5
|
+
const copy_1 = require("../utils/copy");
|
|
6
|
+
const config_loader_1 = require("../utils/config-loader");
|
|
7
|
+
const logger_1 = require("../utils/logger");
|
|
8
|
+
function registerListCommand(program) {
|
|
9
|
+
program
|
|
10
|
+
.command("list")
|
|
11
|
+
.description("List all available skills")
|
|
12
|
+
.option("-i, --installed", "Show only installed skills")
|
|
13
|
+
.option("-c, --category <name>", "Filter by category")
|
|
14
|
+
.action((opts) => {
|
|
15
|
+
const projectRoot = (0, paths_1.findProjectRoot)();
|
|
16
|
+
const config = (0, config_loader_1.loadConfig)(projectRoot);
|
|
17
|
+
const installed = new Set((0, copy_1.getInstalledSkills)(projectRoot));
|
|
18
|
+
const categories = (0, paths_1.getCategories)();
|
|
19
|
+
logger_1.logger.header("GenSkills — Available Skills");
|
|
20
|
+
logger_1.logger.br();
|
|
21
|
+
let totalAvailable = 0;
|
|
22
|
+
let totalInstalled = 0;
|
|
23
|
+
for (const category of categories) {
|
|
24
|
+
if (opts.category && opts.category !== category)
|
|
25
|
+
continue;
|
|
26
|
+
const skills = (0, paths_1.getSkillsInCategory)(category);
|
|
27
|
+
const categoryEnabled = config.categories[category] !== false;
|
|
28
|
+
logger_1.logger.info(`${formatCategory(category)} ${categoryEnabled ? "(enabled)" : "(disabled)"}`);
|
|
29
|
+
for (const skill of skills) {
|
|
30
|
+
const isInstalled = installed.has(skill);
|
|
31
|
+
const isEnabled = (0, config_loader_1.isSkillEnabled)(config, category, skill);
|
|
32
|
+
totalAvailable++;
|
|
33
|
+
if (isInstalled)
|
|
34
|
+
totalInstalled++;
|
|
35
|
+
if (opts.installed && !isInstalled)
|
|
36
|
+
continue;
|
|
37
|
+
const status = isInstalled
|
|
38
|
+
? "\x1b[32m●\x1b[0m"
|
|
39
|
+
: isEnabled
|
|
40
|
+
? "\x1b[33m○\x1b[0m"
|
|
41
|
+
: "\x1b[90m○\x1b[0m";
|
|
42
|
+
const label = isInstalled
|
|
43
|
+
? "installed"
|
|
44
|
+
: isEnabled
|
|
45
|
+
? "enabled"
|
|
46
|
+
: "disabled";
|
|
47
|
+
console.log(` ${status} ${skill} (${label})`);
|
|
48
|
+
}
|
|
49
|
+
logger_1.logger.br();
|
|
50
|
+
}
|
|
51
|
+
logger_1.logger.dim(`${totalInstalled}/${totalAvailable} skills installed`);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function formatCategory(name) {
|
|
55
|
+
return name
|
|
56
|
+
.split("-")
|
|
57
|
+
.map((w) => w.charAt(0).toUpperCase() + w.slice(1))
|
|
58
|
+
.join(" ");
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":";;AAMA,kDA0DC;AA/DD,0CAAqF;AACrF,wCAAmD;AACnD,0DAAoE;AACpE,4CAAyC;AAEzC,SAAgB,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,MAAM,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;SACrD,MAAM,CAAC,CAAC,IAAgD,EAAE,EAAE;QAC3D,MAAM,WAAW,GAAG,IAAA,uBAAe,GAAE,CAAC;QACtC,MAAM,MAAM,GAAG,IAAA,0BAAU,EAAC,WAAW,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAA,yBAAkB,EAAC,WAAW,CAAC,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,IAAA,qBAAa,GAAE,CAAC;QAEnC,eAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;QAC9C,eAAM,CAAC,EAAE,EAAE,CAAC;QAEZ,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ;gBAAE,SAAS;YAE1D,MAAM,MAAM,GAAG,IAAA,2BAAmB,EAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC;YAE9D,eAAM,CAAC,IAAI,CACT,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,CAC9E,CAAC;YAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACzC,MAAM,SAAS,GAAG,IAAA,8BAAc,EAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAE1D,cAAc,EAAE,CAAC;gBACjB,IAAI,WAAW;oBAAE,cAAc,EAAE,CAAC;gBAElC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW;oBAAE,SAAS;gBAE7C,MAAM,MAAM,GAAG,WAAW;oBACxB,CAAC,CAAC,kBAAkB;oBACpB,CAAC,CAAC,SAAS;wBACT,CAAC,CAAC,kBAAkB;wBACpB,CAAC,CAAC,kBAAkB,CAAC;gBAEzB,MAAM,KAAK,GAAG,WAAW;oBACvB,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,SAAS;wBACT,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,UAAU,CAAC;gBAEjB,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;YACnD,CAAC;YACD,eAAM,CAAC,EAAE,EAAE,CAAC;QACd,CAAC;QAED,eAAM,CAAC,GAAG,CACR,GAAG,cAAc,IAAI,cAAc,mBAAmB,CACvD,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI;SACR,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwD5D"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerUpdateCommand = registerUpdateCommand;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
const paths_1 = require("../utils/paths");
|
|
6
|
+
const manifest_1 = require("../utils/manifest");
|
|
7
|
+
const copy_1 = require("../utils/copy");
|
|
8
|
+
const logger_1 = require("../utils/logger");
|
|
9
|
+
function registerUpdateCommand(program) {
|
|
10
|
+
program
|
|
11
|
+
.command("update")
|
|
12
|
+
.description("Check for and apply skill updates")
|
|
13
|
+
.option("--check", "Dry run — only show what would change")
|
|
14
|
+
.action((opts) => {
|
|
15
|
+
const projectRoot = (0, paths_1.findProjectRoot)();
|
|
16
|
+
const manifest = (0, manifest_1.readManifest)(projectRoot);
|
|
17
|
+
const currentVersion = (0, manifest_1.getPackageVersion)();
|
|
18
|
+
logger_1.logger.header("GenSkills — Update Check");
|
|
19
|
+
logger_1.logger.br();
|
|
20
|
+
// Check latest version on npm
|
|
21
|
+
let latestVersion = null;
|
|
22
|
+
try {
|
|
23
|
+
latestVersion = (0, child_process_1.execSync)("npm view genskills version", {
|
|
24
|
+
encoding: "utf-8",
|
|
25
|
+
timeout: 10000,
|
|
26
|
+
}).trim();
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
logger_1.logger.warn("Could not check npm registry for latest version.");
|
|
30
|
+
}
|
|
31
|
+
logger_1.logger.table([
|
|
32
|
+
["Installed", manifest.packageVersion],
|
|
33
|
+
["Package", currentVersion],
|
|
34
|
+
["Latest (npm)", latestVersion || "unknown"],
|
|
35
|
+
]);
|
|
36
|
+
logger_1.logger.br();
|
|
37
|
+
if (latestVersion && latestVersion !== currentVersion) {
|
|
38
|
+
logger_1.logger.info(`New version available: ${latestVersion}. Run: npm update genskills`);
|
|
39
|
+
}
|
|
40
|
+
if (opts.check) {
|
|
41
|
+
logger_1.logger.info("Dry run — no changes made. Remove --check to apply.");
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
// Reinstall skills to pick up any changes
|
|
45
|
+
logger_1.logger.step("Reinstalling skills...");
|
|
46
|
+
const result = (0, copy_1.installSkills)(projectRoot, { force: false });
|
|
47
|
+
if (result.updated.length > 0) {
|
|
48
|
+
logger_1.logger.success(`Updated: ${result.updated.join(", ")}`);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
logger_1.logger.success("All skills are up to date.");
|
|
52
|
+
}
|
|
53
|
+
if (result.installed.length > 0) {
|
|
54
|
+
logger_1.logger.success(`Newly installed: ${result.installed.join(", ")}`);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":";;AAOA,sDAwDC;AA9DD,iDAAyC;AACzC,0CAAiD;AACjD,gDAAoE;AACpE,wCAA8C;AAC9C,4CAAyC;AAEzC,SAAgB,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,SAAS,EAAE,uCAAuC,CAAC;SAC1D,MAAM,CAAC,CAAC,IAAyB,EAAE,EAAE;QACpC,MAAM,WAAW,GAAG,IAAA,uBAAe,GAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAA,uBAAY,EAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,cAAc,GAAG,IAAA,4BAAiB,GAAE,CAAC;QAE3C,eAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;QAC1C,eAAM,CAAC,EAAE,EAAE,CAAC;QAEZ,8BAA8B;QAC9B,IAAI,aAAa,GAAkB,IAAI,CAAC;QACxC,IAAI,CAAC;YACH,aAAa,GAAG,IAAA,wBAAQ,EAAC,4BAA4B,EAAE;gBACrD,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC,IAAI,EAAE,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC;YACP,eAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAClE,CAAC;QAED,eAAM,CAAC,KAAK,CAAC;YACX,CAAC,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC;YACtC,CAAC,SAAS,EAAE,cAAc,CAAC;YAC3B,CAAC,cAAc,EAAE,aAAa,IAAI,SAAS,CAAC;SAC7C,CAAC,CAAC;QACH,eAAM,CAAC,EAAE,EAAE,CAAC;QAEZ,IAAI,aAAa,IAAI,aAAa,KAAK,cAAc,EAAE,CAAC;YACtD,eAAM,CAAC,IAAI,CACT,0BAA0B,aAAa,6BAA6B,CACrE,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,0CAA0C;QAC1C,eAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,IAAA,oBAAa,EAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAE5D,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,eAAM,CAAC,OAAO,CAAC,YAAY,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,eAAM,CAAC,OAAO,CAAC,oBAAoB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* GenSkills CLI — Manage your Claude Code skills library
|
|
5
|
+
*
|
|
6
|
+
* Usage: npx genskills <command> [options]
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const commander_1 = require("commander");
|
|
10
|
+
const manifest_1 = require("./utils/manifest");
|
|
11
|
+
const install_1 = require("./commands/install");
|
|
12
|
+
const list_1 = require("./commands/list");
|
|
13
|
+
const enable_1 = require("./commands/enable");
|
|
14
|
+
const disable_1 = require("./commands/disable");
|
|
15
|
+
const init_1 = require("./commands/init");
|
|
16
|
+
const update_1 = require("./commands/update");
|
|
17
|
+
const doctor_1 = require("./commands/doctor");
|
|
18
|
+
const clean_1 = require("./commands/clean");
|
|
19
|
+
const program = new commander_1.Command();
|
|
20
|
+
program
|
|
21
|
+
.name("genskills")
|
|
22
|
+
.description("GenSkills Libs — Manage your Claude Code skills library")
|
|
23
|
+
.version((0, manifest_1.getPackageVersion)(), "-v, --version");
|
|
24
|
+
(0, install_1.registerInstallCommand)(program);
|
|
25
|
+
(0, list_1.registerListCommand)(program);
|
|
26
|
+
(0, enable_1.registerEnableCommand)(program);
|
|
27
|
+
(0, disable_1.registerDisableCommand)(program);
|
|
28
|
+
(0, init_1.registerInitCommand)(program);
|
|
29
|
+
(0, update_1.registerUpdateCommand)(program);
|
|
30
|
+
(0, doctor_1.registerDoctorCommand)(program);
|
|
31
|
+
(0, clean_1.registerCleanCommand)(program);
|
|
32
|
+
program.parse(process.argv);
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;AAEA;;;;GAIG;;AAEH,yCAAoC;AACpC,+CAAqD;AACrD,gDAA4D;AAC5D,0CAAsD;AACtD,8CAA0D;AAC1D,gDAA4D;AAC5D,0CAAsD;AACtD,8CAA0D;AAC1D,8CAA0D;AAC1D,4CAAwD;AAExD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,yDAAyD,CAAC;KACtE,OAAO,CAAC,IAAA,4BAAiB,GAAE,EAAE,eAAe,CAAC,CAAC;AAEjD,IAAA,gCAAsB,EAAC,OAAO,CAAC,CAAC;AAChC,IAAA,0BAAmB,EAAC,OAAO,CAAC,CAAC;AAC7B,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,gCAAsB,EAAC,OAAO,CAAC,CAAC;AAChC,IAAA,0BAAmB,EAAC,OAAO,CAAC,CAAC;AAC7B,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAAC;AAE9B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface SkillConfig {
|
|
2
|
+
enabled?: boolean;
|
|
3
|
+
settings?: Record<string, unknown>;
|
|
4
|
+
}
|
|
5
|
+
export interface GenSkillsConfig {
|
|
6
|
+
version: string;
|
|
7
|
+
installPath: string;
|
|
8
|
+
prefix: string;
|
|
9
|
+
categories: Record<string, boolean>;
|
|
10
|
+
skills: Record<string, SkillConfig>;
|
|
11
|
+
hooks: {
|
|
12
|
+
autoRegister: boolean;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Load the genskills config from the project root.
|
|
17
|
+
* Falls back to defaults if no config file exists.
|
|
18
|
+
*/
|
|
19
|
+
export declare function loadConfig(projectRoot: string): GenSkillsConfig;
|
|
20
|
+
/**
|
|
21
|
+
* Save config to the project root.
|
|
22
|
+
*/
|
|
23
|
+
export declare function saveConfig(projectRoot: string, config: GenSkillsConfig): void;
|
|
24
|
+
/**
|
|
25
|
+
* Determine if a skill should be installed based on config.
|
|
26
|
+
* Individual skill `enabled` overrides category-level setting.
|
|
27
|
+
*/
|
|
28
|
+
export declare function isSkillEnabled(config: GenSkillsConfig, category: string, skillName: string): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Get the per-skill settings to write as _config.json.
|
|
31
|
+
*/
|
|
32
|
+
export declare function getSkillSettings(config: GenSkillsConfig, skillName: string): Record<string, unknown>;
|
|
33
|
+
/**
|
|
34
|
+
* Create a default config with all categories and a schema reference.
|
|
35
|
+
*/
|
|
36
|
+
export declare function createDefaultConfig(): GenSkillsConfig;
|
|
37
|
+
//# sourceMappingURL=config-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/config-loader.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,KAAK,EAAE;QACL,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;CACH;AAmBD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAa/D;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,eAAe,GACtB,IAAI,CAGN;AAmBD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAeT;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,CAKrD"}
|
|
@@ -0,0 +1,129 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.loadConfig = loadConfig;
|
|
37
|
+
exports.saveConfig = saveConfig;
|
|
38
|
+
exports.isSkillEnabled = isSkillEnabled;
|
|
39
|
+
exports.getSkillSettings = getSkillSettings;
|
|
40
|
+
exports.createDefaultConfig = createDefaultConfig;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const paths_1 = require("./paths");
|
|
43
|
+
const DEFAULT_CONFIG = {
|
|
44
|
+
version: "1.0",
|
|
45
|
+
installPath: ".claude/skills",
|
|
46
|
+
prefix: "genskills",
|
|
47
|
+
categories: {
|
|
48
|
+
"code-quality": true,
|
|
49
|
+
workflow: true,
|
|
50
|
+
"project-management": true,
|
|
51
|
+
documentation: true,
|
|
52
|
+
development: true,
|
|
53
|
+
},
|
|
54
|
+
skills: {},
|
|
55
|
+
hooks: {
|
|
56
|
+
autoRegister: true,
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Load the genskills config from the project root.
|
|
61
|
+
* Falls back to defaults if no config file exists.
|
|
62
|
+
*/
|
|
63
|
+
function loadConfig(projectRoot) {
|
|
64
|
+
const configPath = (0, paths_1.getConfigPath)(projectRoot);
|
|
65
|
+
if (!fs.existsSync(configPath)) {
|
|
66
|
+
return { ...DEFAULT_CONFIG };
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
const raw = JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
70
|
+
return mergeConfig(DEFAULT_CONFIG, raw);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return { ...DEFAULT_CONFIG };
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Save config to the project root.
|
|
78
|
+
*/
|
|
79
|
+
function saveConfig(projectRoot, config) {
|
|
80
|
+
const configPath = (0, paths_1.getConfigPath)(projectRoot);
|
|
81
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), "utf-8");
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Deep merge user config over defaults.
|
|
85
|
+
*/
|
|
86
|
+
function mergeConfig(defaults, user) {
|
|
87
|
+
return {
|
|
88
|
+
version: user.version || defaults.version,
|
|
89
|
+
installPath: user.installPath || defaults.installPath,
|
|
90
|
+
prefix: user.prefix || defaults.prefix,
|
|
91
|
+
categories: { ...defaults.categories, ...user.categories },
|
|
92
|
+
skills: { ...defaults.skills, ...user.skills },
|
|
93
|
+
hooks: { ...defaults.hooks, ...user.hooks },
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Determine if a skill should be installed based on config.
|
|
98
|
+
* Individual skill `enabled` overrides category-level setting.
|
|
99
|
+
*/
|
|
100
|
+
function isSkillEnabled(config, category, skillName) {
|
|
101
|
+
// Check individual skill override first
|
|
102
|
+
const skillConfig = config.skills[skillName];
|
|
103
|
+
if (skillConfig && typeof skillConfig.enabled === "boolean") {
|
|
104
|
+
return skillConfig.enabled;
|
|
105
|
+
}
|
|
106
|
+
// Fall back to category setting
|
|
107
|
+
const categoryEnabled = config.categories[category];
|
|
108
|
+
if (typeof categoryEnabled === "boolean") {
|
|
109
|
+
return categoryEnabled;
|
|
110
|
+
}
|
|
111
|
+
// Default: enabled
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get the per-skill settings to write as _config.json.
|
|
116
|
+
*/
|
|
117
|
+
function getSkillSettings(config, skillName) {
|
|
118
|
+
return config.skills[skillName]?.settings || {};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Create a default config with all categories and a schema reference.
|
|
122
|
+
*/
|
|
123
|
+
function createDefaultConfig() {
|
|
124
|
+
return {
|
|
125
|
+
...DEFAULT_CONFIG,
|
|
126
|
+
// The $schema field will be added when writing
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=config-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../../src/cli/utils/config-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface InstallResult {
|
|
2
|
+
installed: string[];
|
|
3
|
+
updated: string[];
|
|
4
|
+
skipped: string[];
|
|
5
|
+
errors: string[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Install all enabled skills into the project.
|
|
9
|
+
*/
|
|
10
|
+
export declare function installSkills(projectRoot: string, options?: {
|
|
11
|
+
force?: boolean;
|
|
12
|
+
specific?: string;
|
|
13
|
+
}): InstallResult;
|
|
14
|
+
/**
|
|
15
|
+
* Remove a skill from the project.
|
|
16
|
+
*/
|
|
17
|
+
export declare function removeSkill(projectRoot: string, skillName: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Recursively copy a directory.
|
|
20
|
+
*/
|
|
21
|
+
export declare function copyDirRecursive(src: string, dest: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* Get all installed genskills skill names.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getInstalledSkills(projectRoot: string): string[];
|
|
26
|
+
//# sourceMappingURL=copy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/copy.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GACnD,aAAa,CAsDf;AA6DD;;GAEG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAe3E;AAkBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAehE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAQhE"}
|