ai-devkit 0.5.0 → 0.7.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 (128) hide show
  1. package/README.md +31 -81
  2. package/dist/cli.js +10 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/init.d.ts.map +1 -1
  5. package/dist/commands/init.js +1 -1
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/memory.d.ts +3 -0
  8. package/dist/commands/memory.d.ts.map +1 -0
  9. package/dist/commands/memory.js +53 -0
  10. package/dist/commands/memory.js.map +1 -0
  11. package/dist/commands/setup.d.ts +6 -0
  12. package/dist/commands/setup.d.ts.map +1 -0
  13. package/dist/commands/setup.js +112 -0
  14. package/dist/commands/setup.js.map +1 -0
  15. package/dist/commands/skill.d.ts +3 -0
  16. package/dist/commands/skill.d.ts.map +1 -0
  17. package/dist/commands/skill.js +77 -0
  18. package/dist/commands/skill.js.map +1 -0
  19. package/dist/lib/EnvironmentSelector.d.ts +3 -1
  20. package/dist/lib/EnvironmentSelector.d.ts.map +1 -1
  21. package/dist/lib/EnvironmentSelector.js +74 -18
  22. package/dist/lib/EnvironmentSelector.js.map +1 -1
  23. package/dist/lib/SkillManager.d.ts +33 -0
  24. package/dist/lib/SkillManager.d.ts.map +1 -0
  25. package/dist/lib/SkillManager.js +254 -0
  26. package/dist/lib/SkillManager.js.map +1 -0
  27. package/dist/lib/TemplateManager.d.ts +9 -0
  28. package/dist/lib/TemplateManager.d.ts.map +1 -1
  29. package/dist/lib/TemplateManager.js +50 -0
  30. package/dist/lib/TemplateManager.js.map +1 -1
  31. package/dist/templates/commands/capture-knowledge.md +50 -0
  32. package/dist/templates/commands/check-implementation.md +25 -0
  33. package/dist/templates/commands/code-review.md +85 -0
  34. package/dist/templates/commands/debug.md +49 -0
  35. package/dist/templates/commands/execute-plan.md +75 -0
  36. package/dist/templates/commands/new-requirement.md +131 -0
  37. package/dist/templates/commands/remember.md +27 -0
  38. package/dist/templates/commands/review-design.md +16 -0
  39. package/dist/templates/commands/review-requirements.md +14 -0
  40. package/dist/templates/commands/simplify-implementation.md +148 -0
  41. package/dist/templates/commands/update-planning.md +65 -0
  42. package/dist/templates/commands/writing-test.md +48 -0
  43. package/dist/templates/env/base.md +83 -0
  44. package/dist/templates/phases/deployment.md +72 -0
  45. package/dist/templates/phases/design.md +60 -0
  46. package/dist/templates/phases/implementation.md +65 -0
  47. package/dist/templates/phases/monitoring.md +80 -0
  48. package/dist/templates/phases/planning.md +60 -0
  49. package/dist/templates/phases/requirements.md +51 -0
  50. package/dist/templates/phases/testing.md +81 -0
  51. package/dist/templates/templates/commands/capture-knowledge.md +50 -0
  52. package/dist/templates/templates/commands/check-implementation.md +25 -0
  53. package/dist/templates/templates/commands/code-review.md +85 -0
  54. package/dist/templates/templates/commands/debug.md +49 -0
  55. package/dist/templates/templates/commands/execute-plan.md +75 -0
  56. package/dist/templates/templates/commands/new-requirement.md +131 -0
  57. package/dist/templates/templates/commands/remember.md +27 -0
  58. package/dist/templates/templates/commands/review-design.md +16 -0
  59. package/dist/templates/templates/commands/review-requirements.md +14 -0
  60. package/dist/templates/templates/commands/simplify-implementation.md +148 -0
  61. package/dist/templates/templates/commands/update-planning.md +65 -0
  62. package/dist/templates/templates/commands/writing-test.md +48 -0
  63. package/dist/templates/templates/env/base.md +83 -0
  64. package/dist/templates/templates/phases/deployment.md +72 -0
  65. package/dist/templates/templates/phases/design.md +60 -0
  66. package/dist/templates/templates/phases/implementation.md +65 -0
  67. package/dist/templates/templates/phases/monitoring.md +80 -0
  68. package/dist/templates/templates/phases/planning.md +60 -0
  69. package/dist/templates/templates/phases/requirements.md +51 -0
  70. package/dist/templates/templates/phases/testing.md +81 -0
  71. package/dist/types.d.ts +2 -0
  72. package/dist/types.d.ts.map +1 -1
  73. package/dist/types.js.map +1 -1
  74. package/dist/util/env.d.ts +4 -0
  75. package/dist/util/env.d.ts.map +1 -1
  76. package/dist/util/env.js +25 -0
  77. package/dist/util/env.js.map +1 -1
  78. package/dist/util/git.d.ts +15 -0
  79. package/dist/util/git.d.ts.map +1 -0
  80. package/dist/util/git.js +82 -0
  81. package/dist/util/git.js.map +1 -0
  82. package/dist/util/skill.d.ts +13 -0
  83. package/dist/util/skill.d.ts.map +1 -0
  84. package/dist/util/skill.js +34 -0
  85. package/dist/util/skill.js.map +1 -0
  86. package/package.json +4 -2
  87. package/project.json +29 -0
  88. package/templates/commands/remember.md +27 -0
  89. package/templates/commands/review-design.md +1 -0
  90. package/templates/commands/review-requirements.md +1 -0
  91. package/templates/env/base.md +32 -0
  92. package/CHANGELOG.md +0 -87
  93. package/web/.nojekyll +0 -2
  94. package/web/CNAME +0 -1
  95. package/web/README.md +0 -100
  96. package/web/app/favicon.ico +0 -0
  97. package/web/app/globals.css +0 -122
  98. package/web/app/layout.tsx +0 -106
  99. package/web/app/page.tsx +0 -119
  100. package/web/app/roadmap/page.tsx +0 -150
  101. package/web/app/robots.ts +0 -16
  102. package/web/app/sitemap.ts +0 -46
  103. package/web/app/vision/page.tsx +0 -49
  104. package/web/components/Footer.tsx +0 -81
  105. package/web/components/GitHubButton.tsx +0 -49
  106. package/web/components/GitHubStars.tsx +0 -27
  107. package/web/components/Header.tsx +0 -108
  108. package/web/components/MarkdownContent.tsx +0 -35
  109. package/web/components/SkipToContent.tsx +0 -11
  110. package/web/content/pages/vision.md +0 -44
  111. package/web/content/roadmap/1-web.md +0 -9
  112. package/web/content/roadmap/2-integrations.md +0 -7
  113. package/web/content/roadmap/3-cli-enhancements.md +0 -8
  114. package/web/content/roadmap/4-local-memory.md +0 -8
  115. package/web/eslint.config.mjs +0 -18
  116. package/web/lib/GitHubContext.tsx +0 -57
  117. package/web/lib/content/loader.ts +0 -152
  118. package/web/lib/content/types.ts +0 -37
  119. package/web/lib/utils.ts +0 -12
  120. package/web/next.config.ts +0 -11
  121. package/web/package-lock.json +0 -8837
  122. package/web/package.json +0 -34
  123. package/web/postcss.config.mjs +0 -7
  124. package/web/public/file.svg +0 -1
  125. package/web/public/globe.svg +0 -1
  126. package/web/public/next.svg +0 -1
  127. package/web/public/vercel.svg +0 -1
  128. package/web/public/window.svg +0 -1
@@ -9,25 +9,25 @@ const env_1 = require("../util/env");
9
9
  class EnvironmentSelector {
10
10
  async selectEnvironments() {
11
11
  const environments = (0, env_1.getAllEnvironments)();
12
- const choices = environments.map(env => ({
12
+ const choices = environments.map((env) => ({
13
13
  name: env.name,
14
14
  value: env.code,
15
- short: env.name
15
+ short: env.name,
16
16
  }));
17
17
  const answers = await inquirer_1.default.prompt([
18
18
  {
19
- type: 'checkbox',
20
- name: 'environments',
21
- message: 'Select AI environments to set up (use space to select, enter to confirm):',
19
+ type: "checkbox",
20
+ name: "environments",
21
+ message: "Select AI environments to set up (use space to select, enter to confirm):",
22
22
  choices,
23
23
  pageSize: 10,
24
24
  validate: (input) => {
25
25
  if (input.length === 0) {
26
- return 'Please select at least one environment.';
26
+ return "Please select at least one environment.";
27
27
  }
28
28
  return true;
29
- }
30
- }
29
+ },
30
+ },
31
31
  ]);
32
32
  return answers.environments;
33
33
  }
@@ -35,27 +35,83 @@ class EnvironmentSelector {
35
35
  if (conflicts.length === 0) {
36
36
  return true;
37
37
  }
38
- const conflictNames = conflicts.map(id => (0, env_1.getEnvironmentDisplayName)(id));
38
+ const conflictNames = conflicts.map((id) => (0, env_1.getEnvironmentDisplayName)(id));
39
39
  const answers = await inquirer_1.default.prompt([
40
40
  {
41
- type: 'confirm',
42
- name: 'proceed',
43
- message: `The following environments are already set up and will be overwritten:\n ${conflictNames.join(', ')}\n\nDo you want to continue?`,
44
- default: false
45
- }
41
+ type: "confirm",
42
+ name: "proceed",
43
+ message: `The following environments are already set up and will be overwritten:\n ${conflictNames.join(", ")}\n\nDo you want to continue?`,
44
+ default: false,
45
+ },
46
46
  ]);
47
47
  return answers.proceed;
48
48
  }
49
49
  displaySelectionSummary(selected) {
50
50
  if (selected.length === 0) {
51
- console.log('No environments selected.');
51
+ console.log("No environments selected.");
52
52
  return;
53
53
  }
54
- console.log('\nSelected environments:');
55
- selected.forEach(envId => {
54
+ console.log("\nSelected environments:");
55
+ selected.forEach((envId) => {
56
56
  console.log(` ${(0, env_1.getEnvironmentDisplayName)(envId)}`);
57
57
  });
58
- console.log('');
58
+ console.log("");
59
+ }
60
+ async selectGlobalEnvironments() {
61
+ const globalCapableEnvs = (0, env_1.getGlobalCapableEnvironments)();
62
+ if (globalCapableEnvs.length === 0) {
63
+ console.log("No environments support global setup.");
64
+ return [];
65
+ }
66
+ const choices = globalCapableEnvs.map((env) => ({
67
+ name: env.name,
68
+ value: env.code,
69
+ short: env.name,
70
+ }));
71
+ const answers = await inquirer_1.default.prompt([
72
+ {
73
+ type: "checkbox",
74
+ name: "environments",
75
+ message: "Select AI environments for global setup (use space to select, enter to confirm):",
76
+ choices,
77
+ pageSize: 10,
78
+ validate: (input) => {
79
+ if (input.length === 0) {
80
+ return "Please select at least one environment.";
81
+ }
82
+ return true;
83
+ },
84
+ },
85
+ ]);
86
+ return answers.environments;
87
+ }
88
+ async selectSkillEnvironments() {
89
+ const skillCapableEnvs = (0, env_1.getSkillCapableEnvironments)();
90
+ if (skillCapableEnvs.length === 0) {
91
+ console.log("No environments support skills.");
92
+ return [];
93
+ }
94
+ const choices = skillCapableEnvs.map((env) => ({
95
+ name: env.name,
96
+ value: env.code,
97
+ short: env.name,
98
+ }));
99
+ const answers = await inquirer_1.default.prompt([
100
+ {
101
+ type: "checkbox",
102
+ name: "environments",
103
+ message: "Select AI environments for skill installation (use space to select, enter to confirm):",
104
+ choices,
105
+ pageSize: 10,
106
+ validate: (input) => {
107
+ if (input.length === 0) {
108
+ return "Please select at least one environment.";
109
+ }
110
+ return true;
111
+ },
112
+ },
113
+ ]);
114
+ return answers.environments;
59
115
  }
60
116
  }
61
117
  exports.EnvironmentSelector = EnvironmentSelector;
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentSelector.js","sourceRoot":"","sources":["../../src/lib/EnvironmentSelector.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAEhC,qCAAoG;AAEpG,MAAa,mBAAmB;IAC9B,KAAK,CAAC,kBAAkB;QACtB,MAAM,YAAY,GAAG,IAAA,wBAAkB,GAAE,CAAC;QAE1C,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,GAAG,CAAC,IAAuB;YAClC,KAAK,EAAE,GAAG,CAAC,IAAI;SAChB,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,2EAA2E;gBACpF,OAAO;gBACP,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,CAAC,KAAwB,EAAE,EAAE;oBACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACvB,OAAO,yCAAyC,CAAC;oBACnD,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,YAAY,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAA4B;QAChD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAA,+BAAyB,EAAC,EAAE,CAAC,CAAC,CAAC;QAEzE,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,6EAA6E,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B;gBAC5I,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,uBAAuB,CAAC,QAA2B;QACjD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,+BAAyB,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;CACF;AA5DD,kDA4DC"}
1
+ {"version":3,"file":"EnvironmentSelector.js","sourceRoot":"","sources":["../../src/lib/EnvironmentSelector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { ConfigManager } from './Config';
2
+ import { EnvironmentSelector } from './EnvironmentSelector';
3
+ interface InstalledSkill {
4
+ name: string;
5
+ registry: string;
6
+ environments: string[];
7
+ }
8
+ export declare class SkillManager {
9
+ private configManager;
10
+ private environmentSelector;
11
+ constructor(configManager: ConfigManager, environmentSelector?: EnvironmentSelector);
12
+ /**
13
+ * Add a skill to the project
14
+ * @param registryId - e.g., "anthropics/skills"
15
+ * @param skillName - e.g., "frontend-design"
16
+ */
17
+ addSkill(registryId: string, skillName: string): Promise<void>;
18
+ /**
19
+ * List installed skills in the project
20
+ */
21
+ listSkills(): Promise<InstalledSkill[]>;
22
+ /**
23
+ * Remove a skill from the project
24
+ * @param skillName - Name of the skill to remove
25
+ */
26
+ removeSkill(skillName: string): Promise<void>;
27
+ private fetchRegistry;
28
+ private getInstallationTargets;
29
+ private cloneRepositoryToCache;
30
+ private filterSkillCapableEnvironments;
31
+ }
32
+ export {};
33
+ //# sourceMappingURL=SkillManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillManager.d.ts","sourceRoot":"","sources":["../../src/lib/SkillManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAY5D,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,qBAAa,YAAY;IAErB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,mBAAmB;gBADnB,aAAa,EAAE,aAAa,EAC5B,mBAAmB,GAAE,mBAA+C;IAG9E;;;;OAIG;IACG,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgFpE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IA6D7C;;;OAGG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAqCrC,aAAa;IAuB3B,OAAO,CAAC,sBAAsB;YAiBhB,sBAAsB;IAcpC,OAAO,CAAC,8BAA8B;CAMvC"}
@@ -0,0 +1,254 @@
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.SkillManager = void 0;
37
+ const fs = __importStar(require("fs-extra"));
38
+ const path = __importStar(require("path"));
39
+ const https = __importStar(require("https"));
40
+ const os = __importStar(require("os"));
41
+ const EnvironmentSelector_1 = require("./EnvironmentSelector");
42
+ const env_1 = require("../util/env");
43
+ const git_1 = require("../util/git");
44
+ const skill_1 = require("../util/skill");
45
+ const REGISTRY_URL = 'https://raw.githubusercontent.com/Codeaholicguy/ai-devkit/main/skills/registry.json';
46
+ const SKILL_CACHE_DIR = path.join(os.homedir(), '.ai-devkit', 'skills');
47
+ class SkillManager {
48
+ constructor(configManager, environmentSelector = new EnvironmentSelector_1.EnvironmentSelector()) {
49
+ this.configManager = configManager;
50
+ this.environmentSelector = environmentSelector;
51
+ }
52
+ /**
53
+ * Add a skill to the project
54
+ * @param registryId - e.g., "anthropics/skills"
55
+ * @param skillName - e.g., "frontend-design"
56
+ */
57
+ async addSkill(registryId, skillName) {
58
+ console.log(`Validating skill: ${skillName} from ${registryId}`);
59
+ (0, skill_1.validateRegistryId)(registryId);
60
+ (0, skill_1.validateSkillName)(skillName);
61
+ await (0, git_1.ensureGitInstalled)();
62
+ console.log('Fetching registry from GitHub...');
63
+ const registry = await this.fetchRegistry();
64
+ const gitUrl = registry.registries[registryId];
65
+ if (!gitUrl) {
66
+ throw new Error(`Registry "${registryId}" not found. Available: ${Object.keys(registry.registries).join(', ')}`);
67
+ }
68
+ console.log('Checking local cache...');
69
+ const repoPath = await this.cloneRepositoryToCache(registryId, gitUrl);
70
+ const skillPath = path.join(repoPath, 'skills', skillName);
71
+ if (!await fs.pathExists(skillPath)) {
72
+ throw new Error(`Skill "${skillName}" not found in ${registryId}. Check the repository for available skills.`);
73
+ }
74
+ const skillMdPath = path.join(skillPath, 'SKILL.md');
75
+ if (!await fs.pathExists(skillMdPath)) {
76
+ throw new Error(`Invalid skill: SKILL.md not found in ${skillName}. This may not be a valid Agent Skill.`);
77
+ }
78
+ console.log('Loading project configuration...');
79
+ let config = await this.configManager.read();
80
+ if (!config) {
81
+ console.log('No .ai-devkit.json found. Creating configuration...');
82
+ config = await this.configManager.create();
83
+ if (config.environments.length === 0) {
84
+ const selectedEnvs = await this.environmentSelector.selectSkillEnvironments();
85
+ config.environments = selectedEnvs;
86
+ await this.configManager.update({ environments: selectedEnvs });
87
+ console.log('Configuration saved.\n');
88
+ }
89
+ }
90
+ const skillCapableEnvs = this.filterSkillCapableEnvironments(config.environments);
91
+ if (skillCapableEnvs.length === 0) {
92
+ throw new Error('No skill-capable environments configured. Supported: cursor, claude');
93
+ }
94
+ console.log('Installing skill to project...');
95
+ const targets = this.getInstallationTargets(skillCapableEnvs);
96
+ for (const targetDir of targets) {
97
+ const targetPath = path.join(process.cwd(), targetDir, skillName);
98
+ if (await fs.pathExists(targetPath)) {
99
+ console.log(` → ${targetDir}/${skillName} (already exists, skipped)`);
100
+ continue;
101
+ }
102
+ await fs.ensureDir(path.dirname(targetPath));
103
+ try {
104
+ await fs.symlink(skillPath, targetPath, 'dir');
105
+ console.log(` → ${targetDir}/${skillName} (symlinked)`);
106
+ }
107
+ catch (error) {
108
+ await fs.copy(skillPath, targetPath);
109
+ console.log(` → ${targetDir}/${skillName} (copied)`);
110
+ }
111
+ }
112
+ console.log(`\nSuccessfully installed: ${skillName}`);
113
+ console.log(` Source: ${registryId}`);
114
+ console.log(` Installed to: ${skillCapableEnvs.join(', ')}`);
115
+ }
116
+ /**
117
+ * List installed skills in the project
118
+ */
119
+ async listSkills() {
120
+ const skills = [];
121
+ const seenSkills = new Set();
122
+ const config = await this.configManager.read();
123
+ if (!config || config.environments.length === 0) {
124
+ console.log('No .ai-devkit.json found or no environments configured.');
125
+ return [];
126
+ }
127
+ const skillCapableEnvs = this.filterSkillCapableEnvironments(config.environments);
128
+ if (skillCapableEnvs.length === 0) {
129
+ console.log('No skill-capable environments configured.');
130
+ return [];
131
+ }
132
+ const targets = this.getInstallationTargets(skillCapableEnvs);
133
+ for (const targetDir of targets) {
134
+ const fullPath = path.join(process.cwd(), targetDir);
135
+ if (!await fs.pathExists(fullPath)) {
136
+ continue;
137
+ }
138
+ const entries = await fs.readdir(fullPath, { withFileTypes: true });
139
+ for (const entry of entries) {
140
+ if (entry.isDirectory() || entry.isSymbolicLink()) {
141
+ const skillName = entry.name;
142
+ if (!seenSkills.has(skillName)) {
143
+ seenSkills.add(skillName);
144
+ const skillPath = path.join(fullPath, skillName);
145
+ let registry = 'unknown';
146
+ try {
147
+ const realPath = await fs.realpath(skillPath);
148
+ const cacheRelative = path.relative(SKILL_CACHE_DIR, realPath);
149
+ const parts = cacheRelative.split(path.sep);
150
+ if (parts.length >= 2) {
151
+ registry = `${parts[0]}/${parts[1]}`;
152
+ }
153
+ }
154
+ catch {
155
+ }
156
+ skills.push({
157
+ name: skillName,
158
+ registry,
159
+ environments: skillCapableEnvs,
160
+ });
161
+ }
162
+ }
163
+ }
164
+ }
165
+ return skills;
166
+ }
167
+ /**
168
+ * Remove a skill from the project
169
+ * @param skillName - Name of the skill to remove
170
+ */
171
+ async removeSkill(skillName) {
172
+ console.log(`Removing skill: ${skillName}`);
173
+ (0, skill_1.validateSkillName)(skillName);
174
+ const config = await this.configManager.read();
175
+ if (!config || config.environments.length === 0) {
176
+ throw new Error('No .ai-devkit.json found. Run: ai-devkit init');
177
+ }
178
+ const skillCapableEnvs = this.filterSkillCapableEnvironments(config.environments);
179
+ if (skillCapableEnvs.length === 0) {
180
+ throw new Error('No skill-capable environments configured. Supported: cursor, claude');
181
+ }
182
+ const targets = this.getInstallationTargets(skillCapableEnvs);
183
+ let removedCount = 0;
184
+ for (const targetDir of targets) {
185
+ const skillPath = path.join(process.cwd(), targetDir, skillName);
186
+ if (await fs.pathExists(skillPath)) {
187
+ await fs.remove(skillPath);
188
+ console.log(` → Removed from ${targetDir}`);
189
+ removedCount++;
190
+ }
191
+ }
192
+ if (removedCount === 0) {
193
+ console.log(`\nSkill "${skillName}" not found. Nothing to remove.`);
194
+ console.log('Tip: Run "ai-devkit skill list" to see installed skills.');
195
+ }
196
+ else {
197
+ console.log(`\nSuccessfully removed from ${removedCount} location(s).`);
198
+ console.log(`Note: Cached copy in ~/.ai-devkit/skills/ preserved for other projects.`);
199
+ }
200
+ }
201
+ async fetchRegistry() {
202
+ return new Promise((resolve, reject) => {
203
+ https.get(REGISTRY_URL, (res) => {
204
+ if (res.statusCode !== 200) {
205
+ reject(new Error(`Failed to fetch registry: HTTP ${res.statusCode}`));
206
+ return;
207
+ }
208
+ let data = '';
209
+ res.on('data', (chunk) => data += chunk);
210
+ res.on('end', () => {
211
+ try {
212
+ resolve(JSON.parse(data));
213
+ }
214
+ catch (error) {
215
+ reject(new Error('Failed to parse registry JSON'));
216
+ }
217
+ });
218
+ }).on('error', (error) => {
219
+ reject(new Error(`Network error fetching registry: ${error.message}`));
220
+ });
221
+ });
222
+ }
223
+ getInstallationTargets(environments) {
224
+ const targets = [];
225
+ for (const env of environments) {
226
+ const skillPath = (0, env_1.getSkillPath)(env);
227
+ if (skillPath) {
228
+ targets.push(skillPath);
229
+ }
230
+ }
231
+ if (targets.length === 0) {
232
+ throw new Error('No skill-capable environments configured. Supported: cursor, claude');
233
+ }
234
+ return targets;
235
+ }
236
+ async cloneRepositoryToCache(registryId, gitUrl) {
237
+ const repoPath = path.join(SKILL_CACHE_DIR, registryId);
238
+ if (await fs.pathExists(repoPath)) {
239
+ console.log(' → Using cached repository');
240
+ return repoPath;
241
+ }
242
+ console.log(` → Cloning ${registryId} (this may take a moment)...`);
243
+ await fs.ensureDir(path.dirname(repoPath));
244
+ return await (0, git_1.cloneRepository)(SKILL_CACHE_DIR, registryId, gitUrl);
245
+ }
246
+ filterSkillCapableEnvironments(environments) {
247
+ return environments.filter(env => {
248
+ const skillPath = (0, env_1.getSkillPath)(env);
249
+ return skillPath !== undefined;
250
+ });
251
+ }
252
+ }
253
+ exports.SkillManager = SkillManager;
254
+ //# sourceMappingURL=SkillManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillManager.js","sourceRoot":"","sources":["../../src/lib/SkillManager.ts"],"names":[],"mappings":"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"}
@@ -16,5 +16,14 @@ export declare class TemplateManager {
16
16
  * Uses triple quotes for multi-line strings.
17
17
  */
18
18
  private generateTomlContent;
19
+ /**
20
+ * Copy command templates to the global folder for a specific environment.
21
+ * Global folders are located in the user's home directory.
22
+ */
23
+ copyCommandsToGlobal(envCode: EnvironmentCode): Promise<string[]>;
24
+ /**
25
+ * Check if any global commands already exist for a specific environment.
26
+ */
27
+ checkGlobalCommandsExist(envCode: EnvironmentCode): Promise<boolean>;
19
28
  }
20
29
  //# sourceMappingURL=TemplateManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateManager.d.ts","sourceRoot":"","sources":["../../src/lib/TemplateManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,eAAe,EAAyB,MAAM,UAAU,CAAC;AAGzE,qBAAa,eAAe;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,GAAE,MAAsB;IAKvC,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAWhD,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAW1C,yBAAyB,CAC7B,cAAc,EAAE,eAAe,EAAE,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC;IAsBd,sBAAsB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;YAgBxD,sBAAsB;YAsCtB,YAAY;YA+BZ,uBAAuB;YAoBvB,uBAAuB;IA8BrC;;;OAGG;IACH,OAAO,CAAC,mBAAmB;CAS5B"}
1
+ {"version":3,"file":"TemplateManager.d.ts","sourceRoot":"","sources":["../../src/lib/TemplateManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,eAAe,EAAyB,MAAM,UAAU,CAAC;AAGzE,qBAAa,eAAe;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,GAAE,MAAsB;IAKvC,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAWhD,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAW1C,yBAAyB,CAC7B,cAAc,EAAE,eAAe,EAAE,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC;IAsBd,sBAAsB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;YAgBxD,sBAAsB;YAsCtB,YAAY;YA+BZ,uBAAuB;YAoBvB,uBAAuB;IA8BrC;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;OAGG;IACG,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkCvE;;OAEG;IACG,wBAAwB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;CAgB3E"}
@@ -39,6 +39,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.TemplateManager = void 0;
40
40
  const fs = __importStar(require("fs-extra"));
41
41
  const path = __importStar(require("path"));
42
+ const os = __importStar(require("os"));
42
43
  const gray_matter_1 = __importDefault(require("gray-matter"));
43
44
  const env_1 = require("../util/env");
44
45
  class TemplateManager {
@@ -179,6 +180,55 @@ class TemplateManager {
179
180
  prompt='''${escapedPrompt}'''
180
181
  `;
181
182
  }
183
+ /**
184
+ * Copy command templates to the global folder for a specific environment.
185
+ * Global folders are located in the user's home directory.
186
+ */
187
+ async copyCommandsToGlobal(envCode) {
188
+ const env = (0, env_1.getEnvironment)(envCode);
189
+ if (!env || !env.globalCommandPath) {
190
+ throw new Error(`Environment '${envCode}' does not support global setup`);
191
+ }
192
+ const copiedFiles = [];
193
+ const homeDir = os.homedir();
194
+ const globalTargetDir = path.join(homeDir, env.globalCommandPath);
195
+ const commandsSourceDir = path.join(this.templatesDir, "commands");
196
+ try {
197
+ await fs.ensureDir(globalTargetDir);
198
+ const commandFiles = await fs.readdir(commandsSourceDir);
199
+ for (const file of commandFiles) {
200
+ if (!file.endsWith(".md"))
201
+ continue;
202
+ const sourceFile = path.join(commandsSourceDir, file);
203
+ const targetFile = path.join(globalTargetDir, file);
204
+ await fs.copy(sourceFile, targetFile);
205
+ copiedFiles.push(targetFile);
206
+ }
207
+ }
208
+ catch (error) {
209
+ if (error instanceof Error) {
210
+ throw new Error(`Failed to copy commands to global folder: ${error.message}`);
211
+ }
212
+ throw error;
213
+ }
214
+ return copiedFiles;
215
+ }
216
+ /**
217
+ * Check if any global commands already exist for a specific environment.
218
+ */
219
+ async checkGlobalCommandsExist(envCode) {
220
+ const env = (0, env_1.getEnvironment)(envCode);
221
+ if (!env || !env.globalCommandPath) {
222
+ return false;
223
+ }
224
+ const homeDir = os.homedir();
225
+ const globalTargetDir = path.join(homeDir, env.globalCommandPath);
226
+ if (!(await fs.pathExists(globalTargetDir))) {
227
+ return false;
228
+ }
229
+ const files = await fs.readdir(globalTargetDir);
230
+ return files.some((file) => file.endsWith(".md"));
231
+ }
182
232
  }
183
233
  exports.TemplateManager = TemplateManager;
184
234
  //# sourceMappingURL=TemplateManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateManager.js","sourceRoot":"","sources":["../../src/lib/TemplateManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TemplateManager.js","sourceRoot":"","sources":["../../src/lib/TemplateManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,2CAA6B;AAC7B,uCAAyB;AACzB,8DAAiC;AAEjC,qCAA6C;AAE7C,MAAa,eAAe;IAI1B,YAAY,YAAoB,OAAO,CAAC,GAAG,EAAE;QAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,KAAY;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAErD,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEtC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAY;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,IAAI,CAAC,SAAS,EACd,MAAM,EACN,IAAI,EACJ,KAAK,EACL,WAAW,CACZ,CAAC;QACF,OAAO,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,yBAAyB,CAC7B,cAAiC;QAEjC,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,IAAA,oBAAc,EAAC,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,CAAC,IAAI,CAAC,yBAAyB,KAAK,uBAAuB,CAAC,CAAC;gBACpE,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBACxD,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;YAChC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,CAAC,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;gBACpE,MAAM,KAAK,CAAC,CAAC,iDAAiD;YAChE,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,KAAsB;QACjD,MAAM,GAAG,GAAG,IAAA,oBAAc,EAAC,KAAK,CAAC,CAAC;QAElC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;QACvE,MAAM,iBAAiB,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAE/D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QAClE,MAAM,gBAAgB,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAE7D,OAAO,iBAAiB,IAAI,gBAAgB,CAAC;IAC/C,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAClC,GAA0B;QAE1B,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YACrE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;YAErE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBACvC,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;gBAC5C,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,oCAAoC,aAAa,EAAE,CAAC,CAAC;YACpE,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;gBAC7B,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAC5C,CAAC;YAED,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;gBACjB,KAAK,QAAQ;oBACX,MAAM,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;oBAChD,MAAM;gBACR,KAAK,QAAQ;oBACX,MAAM,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;oBAChD,MAAM;gBACR;oBACE,MAAM;YACV,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YAClE,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,GAA0B,EAC1B,WAAqB;QAErB,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACnE,MAAM,gBAAgB,GAAG,GAAG,CAAC,sBAAsB,IAAI,KAAK,CAAC;QAC7D,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QAErE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC3C,MAAM,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAEtC,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACzD,MAAM,OAAO,CAAC,GAAG,CACf,YAAY;iBACT,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBAC9C,GAAG,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;gBAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;gBACzD,MAAM,EAAE,CAAC,IAAI,CACX,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,EAClC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,CACzC,CAAC;gBACF,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;YAC7D,CAAC,CAAC,CACL,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,0CAA0C,iBAAiB,EAAE,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,WAAqB;QACzD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAC9B,IAAI,CAAC,YAAY,EACjB,KAAK,EACL,QAAQ,EACR,OAAO,CACR,CAAC;QACF,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAErE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACxC,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YACnC,MAAM,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YAE9C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACnD,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACzB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,WAAqB;QACzD,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,OAAO,CACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CACzC,CAAC;QACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAE1E,MAAM,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACrC,MAAM,OAAO,CAAC,GAAG,CACf,YAAY;aACT,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAC9C,GAAG,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;YAC1B,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,EAC9C,OAAO,CACR,CAAC;YACF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAA,qBAAM,EAAC,SAAS,CAAC,CAAC;YAC5C,MAAM,WAAW,GAAI,IAAI,CAAC,WAAsB,IAAI,EAAE,CAAC;YACvD,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAE9C,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,EACrC,WAAW,CACZ,CAAC;YACF,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CACL,CAAC;IACJ,CAAC;IAGD;;;OAGG;IACK,mBAAmB,CAAC,WAAmB,EAAE,MAAc;QAC7D,0CAA0C;QAC1C,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAEpD,OAAO,kBAAkB,kBAAkB;YACnC,aAAa;CACxB,CAAC;IACA,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,oBAAoB,CAAC,OAAwB;QACjD,MAAM,GAAG,GAAG,IAAA,oBAAc,EAAC,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,gBAAgB,OAAO,iCAAiC,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAEnE,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAEpC,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACzD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,SAAS;gBAEpC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;gBACtD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;gBAEpD,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBACtC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,6CAA6C,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB,CAAC,OAAwB;QACrD,MAAM,GAAG,GAAG,IAAA,oBAAc,EAAC,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAElE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAChD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;CACF;AArQD,0CAqQC"}
@@ -0,0 +1,50 @@
1
+ ---
2
+ description: Capture structured knowledge about a code entry point and save it to the knowledge docs.
3
+ ---
4
+
5
+ # Knowledge Capture Assistant
6
+
7
+ Guide me through creating a structured understanding of a code entry point and saving it to the knowledge docs.
8
+
9
+ ## Step 1: Gather Context
10
+ - Entry point (file, folder, function, API)
11
+ - Why this entry point matters (feature, bug, investigation)
12
+ - Relevant requirements/design docs (if any)
13
+ - Desired depth or focus areas (logic, dependencies, data flow)
14
+
15
+ ## Step 2: Validate Entry Point
16
+ - Determine entry point type and confirm it exists
17
+ - Surface ambiguity (multiple matches) and ask for clarification
18
+ - If not found, suggest likely alternatives or spelling fixes
19
+
20
+ ## Step 3: Collect Source Context
21
+ - Read the primary file/module and summarize purpose, exports, key patterns
22
+ - For folders: list structure, highlight key modules
23
+ - For functions/APIs: capture signature, parameters, return values, error handling
24
+ - Extract essential snippets (avoid large dumps)
25
+
26
+ ## Step 4: Analyze Dependencies
27
+ - Build a dependency view up to depth 3
28
+ - Track visited nodes to avoid loops
29
+ - Categorize dependencies (imports, function calls, services, external packages)
30
+ - Note important external systems or generated code that should be excluded
31
+
32
+ ## Step 5: Synthesize Explanation
33
+ - Draft an overview (purpose, language, high-level behavior)
34
+ - Detail core logic, key components, execution flow, patterns
35
+ - Highlight error handling, performance, security considerations
36
+ - Identify potential improvements or risks discovered during analysis
37
+
38
+ ## Step 6: Create Documentation
39
+ - Normalize entry point name to kebab-case (`calculateTotalPrice` → `calculate-total-price`)
40
+ - Create `docs/ai/implementation/knowledge-{name}.md` using the headings implied in Step 5 (Overview, Implementation Details, Dependencies, Visual Diagrams, Additional Insights, Metadata, Next Steps)
41
+ - Populate sections with findings, diagrams, and metadata (analysis date, depth, files touched)
42
+ - Include mermaid diagrams when they clarify flows or relationships
43
+
44
+ ## Step 7: Review & Next Actions
45
+ - Summarize key insights and open questions for follow-up
46
+ - Suggest related areas for deeper dives or refactors
47
+ - Confirm the knowledge file path and remind to commit it
48
+ - Encourage running `/capture-knowledge` again for related entry points if needed
49
+
50
+ Let me know the entry point and goals when you’re ready to begin the knowledge capture.
@@ -0,0 +1,25 @@
1
+ ---
2
+ description: Compare implementation with design and requirements docs to ensure alignment.
3
+ ---
4
+
5
+ Compare the current implementation with the design in docs/ai/design/ and requirements in docs/ai/requirements/. Please follow this structured review:
6
+
7
+ 1. Ask me for:
8
+ - Feature/branch description
9
+ - List of modified files
10
+ - Relevant design doc(s) (feature-specific and/or project-level)
11
+ - Any known constraints or assumptions
12
+
13
+ 2. For each design doc:
14
+ - Summarize key architectural decisions and constraints
15
+ - Highlight components, interfaces, and data flows that must be respected
16
+
17
+ 3. File-by-file comparison:
18
+ - Confirm implementation matches design intent
19
+ - Note deviations or missing pieces
20
+ - Flag logic gaps, edge cases, or security issues
21
+ - Suggest simplifications or refactors
22
+ - Identify missing tests or documentation updates
23
+
24
+ 4. Summarize findings with recommended next steps.
25
+