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.
- package/README.md +31 -81
- package/dist/cli.js +10 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/memory.d.ts +3 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +53 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/setup.d.ts +6 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +112 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/skill.d.ts +3 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +77 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/lib/EnvironmentSelector.d.ts +3 -1
- package/dist/lib/EnvironmentSelector.d.ts.map +1 -1
- package/dist/lib/EnvironmentSelector.js +74 -18
- package/dist/lib/EnvironmentSelector.js.map +1 -1
- package/dist/lib/SkillManager.d.ts +33 -0
- package/dist/lib/SkillManager.d.ts.map +1 -0
- package/dist/lib/SkillManager.js +254 -0
- package/dist/lib/SkillManager.js.map +1 -0
- package/dist/lib/TemplateManager.d.ts +9 -0
- package/dist/lib/TemplateManager.d.ts.map +1 -1
- package/dist/lib/TemplateManager.js +50 -0
- package/dist/lib/TemplateManager.js.map +1 -1
- package/dist/templates/commands/capture-knowledge.md +50 -0
- package/dist/templates/commands/check-implementation.md +25 -0
- package/dist/templates/commands/code-review.md +85 -0
- package/dist/templates/commands/debug.md +49 -0
- package/dist/templates/commands/execute-plan.md +75 -0
- package/dist/templates/commands/new-requirement.md +131 -0
- package/dist/templates/commands/remember.md +27 -0
- package/dist/templates/commands/review-design.md +16 -0
- package/dist/templates/commands/review-requirements.md +14 -0
- package/dist/templates/commands/simplify-implementation.md +148 -0
- package/dist/templates/commands/update-planning.md +65 -0
- package/dist/templates/commands/writing-test.md +48 -0
- package/dist/templates/env/base.md +83 -0
- package/dist/templates/phases/deployment.md +72 -0
- package/dist/templates/phases/design.md +60 -0
- package/dist/templates/phases/implementation.md +65 -0
- package/dist/templates/phases/monitoring.md +80 -0
- package/dist/templates/phases/planning.md +60 -0
- package/dist/templates/phases/requirements.md +51 -0
- package/dist/templates/phases/testing.md +81 -0
- package/dist/templates/templates/commands/capture-knowledge.md +50 -0
- package/dist/templates/templates/commands/check-implementation.md +25 -0
- package/dist/templates/templates/commands/code-review.md +85 -0
- package/dist/templates/templates/commands/debug.md +49 -0
- package/dist/templates/templates/commands/execute-plan.md +75 -0
- package/dist/templates/templates/commands/new-requirement.md +131 -0
- package/dist/templates/templates/commands/remember.md +27 -0
- package/dist/templates/templates/commands/review-design.md +16 -0
- package/dist/templates/templates/commands/review-requirements.md +14 -0
- package/dist/templates/templates/commands/simplify-implementation.md +148 -0
- package/dist/templates/templates/commands/update-planning.md +65 -0
- package/dist/templates/templates/commands/writing-test.md +48 -0
- package/dist/templates/templates/env/base.md +83 -0
- package/dist/templates/templates/phases/deployment.md +72 -0
- package/dist/templates/templates/phases/design.md +60 -0
- package/dist/templates/templates/phases/implementation.md +65 -0
- package/dist/templates/templates/phases/monitoring.md +80 -0
- package/dist/templates/templates/phases/planning.md +60 -0
- package/dist/templates/templates/phases/requirements.md +51 -0
- package/dist/templates/templates/phases/testing.md +81 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/util/env.d.ts +4 -0
- package/dist/util/env.d.ts.map +1 -1
- package/dist/util/env.js +25 -0
- package/dist/util/env.js.map +1 -1
- package/dist/util/git.d.ts +15 -0
- package/dist/util/git.d.ts.map +1 -0
- package/dist/util/git.js +82 -0
- package/dist/util/git.js.map +1 -0
- package/dist/util/skill.d.ts +13 -0
- package/dist/util/skill.d.ts.map +1 -0
- package/dist/util/skill.js +34 -0
- package/dist/util/skill.js.map +1 -0
- package/package.json +4 -2
- package/project.json +29 -0
- package/templates/commands/remember.md +27 -0
- package/templates/commands/review-design.md +1 -0
- package/templates/commands/review-requirements.md +1 -0
- package/templates/env/base.md +32 -0
- package/CHANGELOG.md +0 -87
- package/web/.nojekyll +0 -2
- package/web/CNAME +0 -1
- package/web/README.md +0 -100
- package/web/app/favicon.ico +0 -0
- package/web/app/globals.css +0 -122
- package/web/app/layout.tsx +0 -106
- package/web/app/page.tsx +0 -119
- package/web/app/roadmap/page.tsx +0 -150
- package/web/app/robots.ts +0 -16
- package/web/app/sitemap.ts +0 -46
- package/web/app/vision/page.tsx +0 -49
- package/web/components/Footer.tsx +0 -81
- package/web/components/GitHubButton.tsx +0 -49
- package/web/components/GitHubStars.tsx +0 -27
- package/web/components/Header.tsx +0 -108
- package/web/components/MarkdownContent.tsx +0 -35
- package/web/components/SkipToContent.tsx +0 -11
- package/web/content/pages/vision.md +0 -44
- package/web/content/roadmap/1-web.md +0 -9
- package/web/content/roadmap/2-integrations.md +0 -7
- package/web/content/roadmap/3-cli-enhancements.md +0 -8
- package/web/content/roadmap/4-local-memory.md +0 -8
- package/web/eslint.config.mjs +0 -18
- package/web/lib/GitHubContext.tsx +0 -57
- package/web/lib/content/loader.ts +0 -152
- package/web/lib/content/types.ts +0 -37
- package/web/lib/utils.ts +0 -12
- package/web/next.config.ts +0 -11
- package/web/package-lock.json +0 -8837
- package/web/package.json +0 -34
- package/web/postcss.config.mjs +0 -7
- package/web/public/file.svg +0 -1
- package/web/public/globe.svg +0 -1
- package/web/public/next.svg +0 -1
- package/web/public/vercel.svg +0 -1
- 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:
|
|
20
|
-
name:
|
|
21
|
-
message:
|
|
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
|
|
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:
|
|
42
|
-
name:
|
|
43
|
-
message: `The following environments are already set up and will be overwritten:\n ${conflictNames.join(
|
|
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(
|
|
51
|
+
console.log("No environments selected.");
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
54
|
-
console.log(
|
|
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,
|
|
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":"
|
|
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":"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"}
|
|
@@ -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
|
+
|