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.
Files changed (97) hide show
  1. package/README.md +259 -0
  2. package/dist/cli/commands/clean.d.ts +3 -0
  3. package/dist/cli/commands/clean.d.ts.map +1 -0
  4. package/dist/cli/commands/clean.js +100 -0
  5. package/dist/cli/commands/clean.js.map +1 -0
  6. package/dist/cli/commands/disable.d.ts +3 -0
  7. package/dist/cli/commands/disable.d.ts.map +1 -0
  8. package/dist/cli/commands/disable.js +44 -0
  9. package/dist/cli/commands/disable.js.map +1 -0
  10. package/dist/cli/commands/doctor.d.ts +3 -0
  11. package/dist/cli/commands/doctor.d.ts.map +1 -0
  12. package/dist/cli/commands/doctor.js +151 -0
  13. package/dist/cli/commands/doctor.js.map +1 -0
  14. package/dist/cli/commands/enable.d.ts +3 -0
  15. package/dist/cli/commands/enable.d.ts.map +1 -0
  16. package/dist/cli/commands/enable.js +48 -0
  17. package/dist/cli/commands/enable.js.map +1 -0
  18. package/dist/cli/commands/init.d.ts +3 -0
  19. package/dist/cli/commands/init.d.ts.map +1 -0
  20. package/dist/cli/commands/init.js +94 -0
  21. package/dist/cli/commands/init.js.map +1 -0
  22. package/dist/cli/commands/install.d.ts +3 -0
  23. package/dist/cli/commands/install.d.ts.map +1 -0
  24. package/dist/cli/commands/install.js +40 -0
  25. package/dist/cli/commands/install.js.map +1 -0
  26. package/dist/cli/commands/list.d.ts +3 -0
  27. package/dist/cli/commands/list.d.ts.map +1 -0
  28. package/dist/cli/commands/list.js +60 -0
  29. package/dist/cli/commands/list.js.map +1 -0
  30. package/dist/cli/commands/update.d.ts +3 -0
  31. package/dist/cli/commands/update.d.ts.map +1 -0
  32. package/dist/cli/commands/update.js +58 -0
  33. package/dist/cli/commands/update.js.map +1 -0
  34. package/dist/cli/index.d.ts +8 -0
  35. package/dist/cli/index.d.ts.map +1 -0
  36. package/dist/cli/index.js +33 -0
  37. package/dist/cli/index.js.map +1 -0
  38. package/dist/cli/utils/config-loader.d.ts +37 -0
  39. package/dist/cli/utils/config-loader.d.ts.map +1 -0
  40. package/dist/cli/utils/config-loader.js +129 -0
  41. package/dist/cli/utils/config-loader.js.map +1 -0
  42. package/dist/cli/utils/copy.d.ts +26 -0
  43. package/dist/cli/utils/copy.d.ts.map +1 -0
  44. package/dist/cli/utils/copy.js +182 -0
  45. package/dist/cli/utils/copy.js.map +1 -0
  46. package/dist/cli/utils/dependency-resolver.d.ts +26 -0
  47. package/dist/cli/utils/dependency-resolver.d.ts.map +1 -0
  48. package/dist/cli/utils/dependency-resolver.js +181 -0
  49. package/dist/cli/utils/dependency-resolver.js.map +1 -0
  50. package/dist/cli/utils/hooks.d.ts +22 -0
  51. package/dist/cli/utils/hooks.d.ts.map +1 -0
  52. package/dist/cli/utils/hooks.js +124 -0
  53. package/dist/cli/utils/hooks.js.map +1 -0
  54. package/dist/cli/utils/logger.d.ts +13 -0
  55. package/dist/cli/utils/logger.d.ts.map +1 -0
  56. package/dist/cli/utils/logger.js +57 -0
  57. package/dist/cli/utils/logger.js.map +1 -0
  58. package/dist/cli/utils/manifest.d.ts +29 -0
  59. package/dist/cli/utils/manifest.d.ts.map +1 -0
  60. package/dist/cli/utils/manifest.js +110 -0
  61. package/dist/cli/utils/manifest.js.map +1 -0
  62. package/dist/cli/utils/paths.d.ts +46 -0
  63. package/dist/cli/utils/paths.d.ts.map +1 -0
  64. package/dist/cli/utils/paths.js +150 -0
  65. package/dist/cli/utils/paths.js.map +1 -0
  66. package/dist/index.d.ts +12 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +30 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/postinstall.d.ts +9 -0
  71. package/dist/postinstall.d.ts.map +1 -0
  72. package/dist/postinstall.js +58 -0
  73. package/dist/postinstall.js.map +1 -0
  74. package/package.json +52 -0
  75. package/plugin.json +60 -0
  76. package/schemas/genskills-config.schema.json +91 -0
  77. package/skills/code-quality/code-review/SKILL.md +65 -0
  78. package/skills/code-quality/lint-fix/SKILL.md +44 -0
  79. package/skills/code-quality/refactor/SKILL.md +43 -0
  80. package/skills/code-quality/security-audit/SKILL.md +71 -0
  81. package/skills/code-quality/test-generator/SKILL.md +51 -0
  82. package/skills/code-quality/type-check/SKILL.md +41 -0
  83. package/skills/development/debug/SKILL.md +53 -0
  84. package/skills/development/migrate/SKILL.md +50 -0
  85. package/skills/development/perf-optimize/SKILL.md +64 -0
  86. package/skills/development/scaffold/SKILL.md +52 -0
  87. package/skills/documentation/api-docs/SKILL.md +51 -0
  88. package/skills/documentation/doc-gen/SKILL.md +49 -0
  89. package/skills/documentation/readme-gen/SKILL.md +68 -0
  90. package/skills/project-management/changelog-gen/SKILL.md +61 -0
  91. package/skills/project-management/release-notes/SKILL.md +62 -0
  92. package/skills/project-management/task-tracker/SKILL.md +42 -0
  93. package/skills/workflow/branch-manager/SKILL.md +50 -0
  94. package/skills/workflow/ci-fix/SKILL.md +44 -0
  95. package/skills/workflow/deploy/SKILL.md +53 -0
  96. package/skills/workflow/git-commit/SKILL.md +58 -0
  97. 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,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerInstallCommand(program: Command): void;
3
+ //# sourceMappingURL=install.d.ts.map
@@ -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,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerListCommand(program: Command): void;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -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,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerUpdateCommand(program: Command): void;
3
+ //# sourceMappingURL=update.d.ts.map
@@ -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,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * GenSkills CLI — Manage your Claude Code skills library
4
+ *
5
+ * Usage: npx genskills <command> [options]
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}