ai-devkit 0.7.0 → 0.8.1
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 +0 -3
- package/dist/lib/GlobalConfig.d.ts +8 -0
- package/dist/lib/GlobalConfig.d.ts.map +1 -0
- package/dist/lib/GlobalConfig.js +70 -0
- package/dist/lib/GlobalConfig.js.map +1 -0
- package/dist/lib/SkillManager.d.ts +5 -2
- package/dist/lib/SkillManager.d.ts.map +1 -1
- package/dist/lib/SkillManager.js +31 -6
- package/dist/lib/SkillManager.js.map +1 -1
- package/dist/templates/env/base.md +24 -6
- package/dist/templates/templates/env/base.md +24 -6
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/templates/env/base.md +24 -6
- package/jest.config.js +0 -22
- package/project.json +0 -29
package/README.md
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
# @ai-devkit/cli
|
|
2
|
-
> Part of [AI DevKit](https://github.com/Codeaholicguy/ai-devkit)
|
|
3
|
-
|
|
4
1
|
The official command-line interface for **AI DevKit**.
|
|
5
2
|
|
|
6
3
|
This tool orchestrates the setup and management of AI-assisted development environments, ensuring your project is ready for agents like Cursor, Claude Code, and more.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { GlobalDevKitConfig } from '../types';
|
|
2
|
+
export declare class GlobalConfigManager {
|
|
3
|
+
exists(): Promise<boolean>;
|
|
4
|
+
read(): Promise<GlobalDevKitConfig | null>;
|
|
5
|
+
getSkillRegistries(): Promise<Record<string, string>>;
|
|
6
|
+
private getGlobalConfigPath;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=GlobalConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlobalConfig.d.ts","sourceRoot":"","sources":["../../src/lib/GlobalConfig.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,qBAAa,mBAAmB;IACxB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAI1B,IAAI,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAc1C,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAa3D,OAAO,CAAC,mBAAmB;CAG5B"}
|
|
@@ -0,0 +1,70 @@
|
|
|
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.GlobalConfigManager = void 0;
|
|
37
|
+
const fs = __importStar(require("fs-extra"));
|
|
38
|
+
const os = __importStar(require("os"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
class GlobalConfigManager {
|
|
41
|
+
async exists() {
|
|
42
|
+
return fs.pathExists(this.getGlobalConfigPath());
|
|
43
|
+
}
|
|
44
|
+
async read() {
|
|
45
|
+
if (!await this.exists()) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
return await fs.readJson(this.getGlobalConfigPath());
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
53
|
+
console.warn(`Warning: Failed to read global config at ${this.getGlobalConfigPath()}. ${message}`);
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async getSkillRegistries() {
|
|
58
|
+
const config = await this.read();
|
|
59
|
+
const registries = config?.skills?.registries;
|
|
60
|
+
if (!registries || typeof registries !== 'object' || Array.isArray(registries)) {
|
|
61
|
+
return {};
|
|
62
|
+
}
|
|
63
|
+
return Object.fromEntries(Object.entries(registries).filter(([, value]) => typeof value === 'string'));
|
|
64
|
+
}
|
|
65
|
+
getGlobalConfigPath() {
|
|
66
|
+
return path.join(os.homedir(), '.ai-devkit', '.ai-devkit.json');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.GlobalConfigManager = GlobalConfigManager;
|
|
70
|
+
//# sourceMappingURL=GlobalConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlobalConfig.js","sourceRoot":"","sources":["../../src/lib/GlobalConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,uCAAyB;AACzB,2CAA6B;AAG7B,MAAa,mBAAmB;IAC9B,KAAK,CAAC,MAAM;QACV,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,OAAO,CAAC,IAAI,CAAC,4CAA4C,IAAI,CAAC,mBAAmB,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;YACnG,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;QAE9C,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/E,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAC5E,CAAC;IACJ,CAAC;IAEO,mBAAmB;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAClE,CAAC;CACF;AAnCD,kDAmCC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ConfigManager } from './Config';
|
|
2
|
+
import { GlobalConfigManager } from './GlobalConfig';
|
|
2
3
|
import { EnvironmentSelector } from './EnvironmentSelector';
|
|
3
4
|
interface InstalledSkill {
|
|
4
5
|
name: string;
|
|
@@ -8,7 +9,8 @@ interface InstalledSkill {
|
|
|
8
9
|
export declare class SkillManager {
|
|
9
10
|
private configManager;
|
|
10
11
|
private environmentSelector;
|
|
11
|
-
|
|
12
|
+
private globalConfigManager;
|
|
13
|
+
constructor(configManager: ConfigManager, environmentSelector?: EnvironmentSelector, globalConfigManager?: GlobalConfigManager);
|
|
12
14
|
/**
|
|
13
15
|
* Add a skill to the project
|
|
14
16
|
* @param registryId - e.g., "anthropics/skills"
|
|
@@ -24,7 +26,8 @@ export declare class SkillManager {
|
|
|
24
26
|
* @param skillName - Name of the skill to remove
|
|
25
27
|
*/
|
|
26
28
|
removeSkill(skillName: string): Promise<void>;
|
|
27
|
-
private
|
|
29
|
+
private fetchDefaultRegistry;
|
|
30
|
+
private fetchMergedRegistry;
|
|
28
31
|
private getInstallationTargets;
|
|
29
32
|
private cloneRepositoryToCache;
|
|
30
33
|
private filterSkillCapableEnvironments;
|
|
@@ -1 +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;
|
|
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,gBAAgB,CAAC;AACrD,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;IAC3B,OAAO,CAAC,mBAAmB;gBAFnB,aAAa,EAAE,aAAa,EAC5B,mBAAmB,GAAE,mBAA+C,EACpE,mBAAmB,GAAE,mBAA+C;IAG9E;;;;OAIG;IACG,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkFpE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IA8D7C;;;OAGG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAqCrC,oBAAoB;YAuBpB,mBAAmB;IAoBjC,OAAO,CAAC,sBAAsB;YAiBhB,sBAAsB;IAkBpC,OAAO,CAAC,8BAA8B;CAMvC"}
|
package/dist/lib/SkillManager.js
CHANGED
|
@@ -38,6 +38,7 @@ const fs = __importStar(require("fs-extra"));
|
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
39
|
const https = __importStar(require("https"));
|
|
40
40
|
const os = __importStar(require("os"));
|
|
41
|
+
const GlobalConfig_1 = require("./GlobalConfig");
|
|
41
42
|
const EnvironmentSelector_1 = require("./EnvironmentSelector");
|
|
42
43
|
const env_1 = require("../util/env");
|
|
43
44
|
const git_1 = require("../util/git");
|
|
@@ -45,9 +46,10 @@ const skill_1 = require("../util/skill");
|
|
|
45
46
|
const REGISTRY_URL = 'https://raw.githubusercontent.com/Codeaholicguy/ai-devkit/main/skills/registry.json';
|
|
46
47
|
const SKILL_CACHE_DIR = path.join(os.homedir(), '.ai-devkit', 'skills');
|
|
47
48
|
class SkillManager {
|
|
48
|
-
constructor(configManager, environmentSelector = new EnvironmentSelector_1.EnvironmentSelector()) {
|
|
49
|
+
constructor(configManager, environmentSelector = new EnvironmentSelector_1.EnvironmentSelector(), globalConfigManager = new GlobalConfig_1.GlobalConfigManager()) {
|
|
49
50
|
this.configManager = configManager;
|
|
50
51
|
this.environmentSelector = environmentSelector;
|
|
52
|
+
this.globalConfigManager = globalConfigManager;
|
|
51
53
|
}
|
|
52
54
|
/**
|
|
53
55
|
* Add a skill to the project
|
|
@@ -59,11 +61,13 @@ class SkillManager {
|
|
|
59
61
|
(0, skill_1.validateRegistryId)(registryId);
|
|
60
62
|
(0, skill_1.validateSkillName)(skillName);
|
|
61
63
|
await (0, git_1.ensureGitInstalled)();
|
|
62
|
-
console.log('Fetching
|
|
63
|
-
const registry = await this.
|
|
64
|
+
console.log('Fetching registries...');
|
|
65
|
+
const registry = await this.fetchMergedRegistry();
|
|
64
66
|
const gitUrl = registry.registries[registryId];
|
|
65
|
-
|
|
66
|
-
|
|
67
|
+
const cachedPath = path.join(SKILL_CACHE_DIR, registryId);
|
|
68
|
+
if (!gitUrl && !await fs.pathExists(cachedPath)) {
|
|
69
|
+
const available = Object.keys(registry.registries);
|
|
70
|
+
throw new Error(`Registry "${registryId}" not found. Available: ${available.length ? available.join(', ') : 'none'}`);
|
|
67
71
|
}
|
|
68
72
|
console.log('Checking local cache...');
|
|
69
73
|
const repoPath = await this.cloneRepositoryToCache(registryId, gitUrl);
|
|
@@ -152,6 +156,7 @@ class SkillManager {
|
|
|
152
156
|
}
|
|
153
157
|
}
|
|
154
158
|
catch {
|
|
159
|
+
// Ignore errors
|
|
155
160
|
}
|
|
156
161
|
skills.push({
|
|
157
162
|
name: skillName,
|
|
@@ -198,7 +203,7 @@ class SkillManager {
|
|
|
198
203
|
console.log(`Note: Cached copy in ~/.ai-devkit/skills/ preserved for other projects.`);
|
|
199
204
|
}
|
|
200
205
|
}
|
|
201
|
-
async
|
|
206
|
+
async fetchDefaultRegistry() {
|
|
202
207
|
return new Promise((resolve, reject) => {
|
|
203
208
|
https.get(REGISTRY_URL, (res) => {
|
|
204
209
|
if (res.statusCode !== 200) {
|
|
@@ -220,6 +225,23 @@ class SkillManager {
|
|
|
220
225
|
});
|
|
221
226
|
});
|
|
222
227
|
}
|
|
228
|
+
async fetchMergedRegistry() {
|
|
229
|
+
let defaultRegistries = {};
|
|
230
|
+
try {
|
|
231
|
+
const defaultRegistry = await this.fetchDefaultRegistry();
|
|
232
|
+
defaultRegistries = defaultRegistry.registries || {};
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
defaultRegistries = {};
|
|
236
|
+
}
|
|
237
|
+
const customRegistries = await this.globalConfigManager.getSkillRegistries();
|
|
238
|
+
return {
|
|
239
|
+
registries: {
|
|
240
|
+
...defaultRegistries,
|
|
241
|
+
...customRegistries
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
}
|
|
223
245
|
getInstallationTargets(environments) {
|
|
224
246
|
const targets = [];
|
|
225
247
|
for (const env of environments) {
|
|
@@ -239,6 +261,9 @@ class SkillManager {
|
|
|
239
261
|
console.log(' → Using cached repository');
|
|
240
262
|
return repoPath;
|
|
241
263
|
}
|
|
264
|
+
if (!gitUrl) {
|
|
265
|
+
throw new Error(`Registry "${registryId}" is not cached and has no configured URL.`);
|
|
266
|
+
}
|
|
242
267
|
console.log(` → Cloning ${registryId} (this may take a moment)...`);
|
|
243
268
|
await fs.ensureDir(path.dirname(repoPath));
|
|
244
269
|
return await (0, git_1.cloneRepository)(SKILL_CACHE_DIR, registryId, gitUrl);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkillManager.js","sourceRoot":"","sources":["../../src/lib/SkillManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,2CAA6B;AAC7B,6CAA+B;AAC/B,uCAAyB;AAEzB,+DAA4D;AAC5D,qCAA2C;AAC3C,qCAAkE;AAClE,yCAAsE;AAEtE,MAAM,YAAY,GAAG,qFAAqF,CAAC;AAC3G,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAYxE,MAAa,YAAY;IACvB,YACU,aAA4B,EAC5B,sBAA2C,IAAI,yCAAmB,EAAE;
|
|
1
|
+
{"version":3,"file":"SkillManager.js","sourceRoot":"","sources":["../../src/lib/SkillManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,8 +28,26 @@ This project uses ai-devkit for structured AI-assisted development. Phase docume
|
|
|
28
28
|
- For new features, start with requirements clarification
|
|
29
29
|
- Update phase docs when significant changes or decisions are made
|
|
30
30
|
|
|
31
|
+
## Skills (Extend Your Capabilities)
|
|
32
|
+
Skills are packaged capabilities that teach you new competencies, patterns, and best practices. Check for installed skills in the project's skill directory and use them to enhance your work.
|
|
33
|
+
|
|
34
|
+
### Using Installed Skills
|
|
35
|
+
1. **Check for skills**: Look for `SKILL.md` files in the project's skill directory
|
|
36
|
+
2. **Read skill instructions**: Each skill contains detailed guidance on when and how to use it
|
|
37
|
+
3. **Apply skill knowledge**: Follow the patterns, commands, and best practices defined in the skill
|
|
38
|
+
|
|
39
|
+
### Key Installed Skills
|
|
40
|
+
- **memory**: Use AI DevKit's memory service via CLI commands when MCP is unavailable. Read the skill for detailed `memory store` and `memory search` command usage.
|
|
41
|
+
|
|
42
|
+
### When to Reference Skills
|
|
43
|
+
- Before implementing features that match a skill's domain
|
|
44
|
+
- When MCP tools are unavailable but skill provides CLI alternatives
|
|
45
|
+
- To follow established patterns and conventions defined in skills
|
|
46
|
+
|
|
31
47
|
## Knowledge Memory (Always Use When Helpful)
|
|
32
|
-
The AI assistant should proactively use knowledge memory throughout all interactions
|
|
48
|
+
The AI assistant should proactively use knowledge memory throughout all interactions.
|
|
49
|
+
|
|
50
|
+
> **Tip**: If MCP is unavailable, use the **memory skill** for detailed CLI command reference.
|
|
33
51
|
|
|
34
52
|
### When to Search Memory
|
|
35
53
|
- Before starting any task, search for relevant project conventions, patterns, or decisions
|
|
@@ -39,7 +57,7 @@ The AI assistant should proactively use knowledge memory throughout all interact
|
|
|
39
57
|
|
|
40
58
|
**How to search**:
|
|
41
59
|
- Use `memory.searchKnowledge` MCP tool with relevant keywords, tags, and scope
|
|
42
|
-
- If MCP tools are unavailable, use `npx ai-devkit memory search` CLI command
|
|
60
|
+
- If MCP tools are unavailable, use `npx ai-devkit memory search` CLI command (see memory skill for details)
|
|
43
61
|
- Example: Search for "authentication patterns" when implementing auth features
|
|
44
62
|
|
|
45
63
|
### When to Store Memory
|
|
@@ -49,8 +67,8 @@ The AI assistant should proactively use knowledge memory throughout all interact
|
|
|
49
67
|
- When you establish new conventions or standards for the project
|
|
50
68
|
|
|
51
69
|
**How to store**:
|
|
52
|
-
- Use `memory.storeKnowledge` MCP tool
|
|
53
|
-
- If MCP tools are unavailable, use `npx ai-devkit memory store` CLI command
|
|
70
|
+
- Use `memory.storeKnowledge` MCP tool
|
|
71
|
+
- If MCP tools are unavailable, use `npx ai-devkit memory store` CLI command (see memory skill for details)
|
|
54
72
|
- Include clear title, detailed content, relevant tags, and appropriate scope
|
|
55
73
|
- Make knowledge specific and actionable, not generic advice
|
|
56
74
|
|
|
@@ -79,5 +97,5 @@ When working on this project, you can run commands to:
|
|
|
79
97
|
- Review architectural decisions (`review-design`)
|
|
80
98
|
- Plan and execute tasks (`execute-plan`)
|
|
81
99
|
- Verify implementation against design (`check-implementation`)
|
|
82
|
-
-
|
|
83
|
-
- Perform structured code reviews (`code-review`)
|
|
100
|
+
- Writing tests (`writing-test`)
|
|
101
|
+
- Perform structured code reviews (`code-review`)
|
|
@@ -28,8 +28,26 @@ This project uses ai-devkit for structured AI-assisted development. Phase docume
|
|
|
28
28
|
- For new features, start with requirements clarification
|
|
29
29
|
- Update phase docs when significant changes or decisions are made
|
|
30
30
|
|
|
31
|
+
## Skills (Extend Your Capabilities)
|
|
32
|
+
Skills are packaged capabilities that teach you new competencies, patterns, and best practices. Check for installed skills in the project's skill directory and use them to enhance your work.
|
|
33
|
+
|
|
34
|
+
### Using Installed Skills
|
|
35
|
+
1. **Check for skills**: Look for `SKILL.md` files in the project's skill directory
|
|
36
|
+
2. **Read skill instructions**: Each skill contains detailed guidance on when and how to use it
|
|
37
|
+
3. **Apply skill knowledge**: Follow the patterns, commands, and best practices defined in the skill
|
|
38
|
+
|
|
39
|
+
### Key Installed Skills
|
|
40
|
+
- **memory**: Use AI DevKit's memory service via CLI commands when MCP is unavailable. Read the skill for detailed `memory store` and `memory search` command usage.
|
|
41
|
+
|
|
42
|
+
### When to Reference Skills
|
|
43
|
+
- Before implementing features that match a skill's domain
|
|
44
|
+
- When MCP tools are unavailable but skill provides CLI alternatives
|
|
45
|
+
- To follow established patterns and conventions defined in skills
|
|
46
|
+
|
|
31
47
|
## Knowledge Memory (Always Use When Helpful)
|
|
32
|
-
The AI assistant should proactively use knowledge memory throughout all interactions
|
|
48
|
+
The AI assistant should proactively use knowledge memory throughout all interactions.
|
|
49
|
+
|
|
50
|
+
> **Tip**: If MCP is unavailable, use the **memory skill** for detailed CLI command reference.
|
|
33
51
|
|
|
34
52
|
### When to Search Memory
|
|
35
53
|
- Before starting any task, search for relevant project conventions, patterns, or decisions
|
|
@@ -39,7 +57,7 @@ The AI assistant should proactively use knowledge memory throughout all interact
|
|
|
39
57
|
|
|
40
58
|
**How to search**:
|
|
41
59
|
- Use `memory.searchKnowledge` MCP tool with relevant keywords, tags, and scope
|
|
42
|
-
- If MCP tools are unavailable, use `npx ai-devkit memory search` CLI command
|
|
60
|
+
- If MCP tools are unavailable, use `npx ai-devkit memory search` CLI command (see memory skill for details)
|
|
43
61
|
- Example: Search for "authentication patterns" when implementing auth features
|
|
44
62
|
|
|
45
63
|
### When to Store Memory
|
|
@@ -49,8 +67,8 @@ The AI assistant should proactively use knowledge memory throughout all interact
|
|
|
49
67
|
- When you establish new conventions or standards for the project
|
|
50
68
|
|
|
51
69
|
**How to store**:
|
|
52
|
-
- Use `memory.storeKnowledge` MCP tool
|
|
53
|
-
- If MCP tools are unavailable, use `npx ai-devkit memory store` CLI command
|
|
70
|
+
- Use `memory.storeKnowledge` MCP tool
|
|
71
|
+
- If MCP tools are unavailable, use `npx ai-devkit memory store` CLI command (see memory skill for details)
|
|
54
72
|
- Include clear title, detailed content, relevant tags, and appropriate scope
|
|
55
73
|
- Make knowledge specific and actionable, not generic advice
|
|
56
74
|
|
|
@@ -79,5 +97,5 @@ When working on this project, you can run commands to:
|
|
|
79
97
|
- Review architectural decisions (`review-design`)
|
|
80
98
|
- Plan and execute tasks (`execute-plan`)
|
|
81
99
|
- Verify implementation against design (`check-implementation`)
|
|
82
|
-
-
|
|
83
|
-
- Perform structured code reviews (`code-review`)
|
|
100
|
+
- Writing tests (`writing-test`)
|
|
101
|
+
- Perform structured code reviews (`code-review`)
|
package/dist/types.d.ts
CHANGED
|
@@ -18,6 +18,12 @@ export interface DevKitConfig {
|
|
|
18
18
|
createdAt: string;
|
|
19
19
|
updatedAt: string;
|
|
20
20
|
}
|
|
21
|
+
export interface SkillRegistriesConfig {
|
|
22
|
+
registries?: Record<string, string>;
|
|
23
|
+
}
|
|
24
|
+
export interface GlobalDevKitConfig {
|
|
25
|
+
skills?: SkillRegistriesConfig;
|
|
26
|
+
}
|
|
21
27
|
export interface PhaseMetadata {
|
|
22
28
|
phase: string;
|
|
23
29
|
title: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GACb,cAAc,GACd,QAAQ,GACR,UAAU,GACV,gBAAgB,GAChB,SAAS,GACT,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,GAAG,aAAa,CAAC;AAEzJ,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,iBAAiB,EAAE,KAAK,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,EAQnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAQrD,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GACb,cAAc,GACd,QAAQ,GACR,UAAU,GACV,gBAAgB,GAChB,SAAS,GACT,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,GAAG,aAAa,CAAC;AAEzJ,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,iBAAiB,EAAE,KAAK,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,qBAAqB,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,EAQnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAQrD,CAAC"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA6Ca,QAAA,gBAAgB,GAAY;IACvC,cAAc;IACd,QAAQ;IACR,UAAU;IACV,gBAAgB;IAChB,SAAS;IACT,YAAY;IACZ,YAAY;CACb,CAAC;AAEW,QAAA,mBAAmB,GAA0B;IACxD,YAAY,EAAE,sCAAsC;IACpD,MAAM,EAAE,8BAA8B;IACtC,QAAQ,EAAE,mCAAmC;IAC7C,cAAc,EAAE,sBAAsB;IACtC,OAAO,EAAE,kBAAkB;IAC3B,UAAU,EAAE,qBAAqB;IACjC,UAAU,EAAE,4BAA4B;CACzC,CAAC"}
|
package/package.json
CHANGED
package/templates/env/base.md
CHANGED
|
@@ -28,8 +28,26 @@ This project uses ai-devkit for structured AI-assisted development. Phase docume
|
|
|
28
28
|
- For new features, start with requirements clarification
|
|
29
29
|
- Update phase docs when significant changes or decisions are made
|
|
30
30
|
|
|
31
|
+
## Skills (Extend Your Capabilities)
|
|
32
|
+
Skills are packaged capabilities that teach you new competencies, patterns, and best practices. Check for installed skills in the project's skill directory and use them to enhance your work.
|
|
33
|
+
|
|
34
|
+
### Using Installed Skills
|
|
35
|
+
1. **Check for skills**: Look for `SKILL.md` files in the project's skill directory
|
|
36
|
+
2. **Read skill instructions**: Each skill contains detailed guidance on when and how to use it
|
|
37
|
+
3. **Apply skill knowledge**: Follow the patterns, commands, and best practices defined in the skill
|
|
38
|
+
|
|
39
|
+
### Key Installed Skills
|
|
40
|
+
- **memory**: Use AI DevKit's memory service via CLI commands when MCP is unavailable. Read the skill for detailed `memory store` and `memory search` command usage.
|
|
41
|
+
|
|
42
|
+
### When to Reference Skills
|
|
43
|
+
- Before implementing features that match a skill's domain
|
|
44
|
+
- When MCP tools are unavailable but skill provides CLI alternatives
|
|
45
|
+
- To follow established patterns and conventions defined in skills
|
|
46
|
+
|
|
31
47
|
## Knowledge Memory (Always Use When Helpful)
|
|
32
|
-
The AI assistant should proactively use knowledge memory throughout all interactions
|
|
48
|
+
The AI assistant should proactively use knowledge memory throughout all interactions.
|
|
49
|
+
|
|
50
|
+
> **Tip**: If MCP is unavailable, use the **memory skill** for detailed CLI command reference.
|
|
33
51
|
|
|
34
52
|
### When to Search Memory
|
|
35
53
|
- Before starting any task, search for relevant project conventions, patterns, or decisions
|
|
@@ -39,7 +57,7 @@ The AI assistant should proactively use knowledge memory throughout all interact
|
|
|
39
57
|
|
|
40
58
|
**How to search**:
|
|
41
59
|
- Use `memory.searchKnowledge` MCP tool with relevant keywords, tags, and scope
|
|
42
|
-
- If MCP tools are unavailable, use `npx ai-devkit memory search` CLI command
|
|
60
|
+
- If MCP tools are unavailable, use `npx ai-devkit memory search` CLI command (see memory skill for details)
|
|
43
61
|
- Example: Search for "authentication patterns" when implementing auth features
|
|
44
62
|
|
|
45
63
|
### When to Store Memory
|
|
@@ -49,8 +67,8 @@ The AI assistant should proactively use knowledge memory throughout all interact
|
|
|
49
67
|
- When you establish new conventions or standards for the project
|
|
50
68
|
|
|
51
69
|
**How to store**:
|
|
52
|
-
- Use `memory.storeKnowledge` MCP tool
|
|
53
|
-
- If MCP tools are unavailable, use `npx ai-devkit memory store` CLI command
|
|
70
|
+
- Use `memory.storeKnowledge` MCP tool
|
|
71
|
+
- If MCP tools are unavailable, use `npx ai-devkit memory store` CLI command (see memory skill for details)
|
|
54
72
|
- Include clear title, detailed content, relevant tags, and appropriate scope
|
|
55
73
|
- Make knowledge specific and actionable, not generic advice
|
|
56
74
|
|
|
@@ -79,5 +97,5 @@ When working on this project, you can run commands to:
|
|
|
79
97
|
- Review architectural decisions (`review-design`)
|
|
80
98
|
- Plan and execute tasks (`execute-plan`)
|
|
81
99
|
- Verify implementation against design (`check-implementation`)
|
|
82
|
-
-
|
|
83
|
-
- Perform structured code reviews (`code-review`)
|
|
100
|
+
- Writing tests (`writing-test`)
|
|
101
|
+
- Perform structured code reviews (`code-review`)
|
package/jest.config.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
preset: 'ts-jest',
|
|
3
|
-
testEnvironment: 'node',
|
|
4
|
-
roots: ['<rootDir>/src'],
|
|
5
|
-
testMatch: ['**/__tests__/**/*.test.ts', '**/?(*.)+(spec|test).ts'],
|
|
6
|
-
collectCoverageFrom: [
|
|
7
|
-
'src/**/*.{ts,js}',
|
|
8
|
-
'!src/**/*.d.ts',
|
|
9
|
-
'!src/cli.ts',
|
|
10
|
-
'!src/index.ts'
|
|
11
|
-
],
|
|
12
|
-
coverageDirectory: 'coverage',
|
|
13
|
-
coverageReporters: ['text', 'lcov', 'html'],
|
|
14
|
-
coverageThreshold: {
|
|
15
|
-
global: {
|
|
16
|
-
branches: 80,
|
|
17
|
-
functions: 80,
|
|
18
|
-
lines: 80,
|
|
19
|
-
statements: 80
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
};
|
package/project.json
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "cli",
|
|
3
|
-
"root": "packages/cli",
|
|
4
|
-
"sourceRoot": "packages/cli/src",
|
|
5
|
-
"projectType": "library",
|
|
6
|
-
"targets": {
|
|
7
|
-
"build": {
|
|
8
|
-
"executor": "nx:run-commands",
|
|
9
|
-
"options": {
|
|
10
|
-
"command": "npm run build",
|
|
11
|
-
"cwd": "packages/cli"
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"test": {
|
|
15
|
-
"executor": "nx:run-commands",
|
|
16
|
-
"options": {
|
|
17
|
-
"command": "npm run test",
|
|
18
|
-
"cwd": "packages/cli"
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
"lint": {
|
|
22
|
-
"executor": "nx:run-commands",
|
|
23
|
-
"options": {
|
|
24
|
-
"command": "npm run lint",
|
|
25
|
-
"cwd": "packages/cli"
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|