skill-creator 1.2.3 → 1.3.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 +43 -19
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +84 -64
- package/dist/cli.js.map +1 -1
- package/dist/commands/createSkill.d.ts +6 -0
- package/dist/commands/createSkill.d.ts.map +1 -0
- package/dist/commands/createSkill.js +32 -0
- package/dist/commands/createSkill.js.map +1 -0
- package/dist/commands/downloadContext7.js +1 -1
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/shared.js +2 -12
- package/dist/commands/shared.js.map +1 -1
- package/dist/core/searchEngineFactory.js +2 -2
- package/dist/core/searchEngineFactory.js.map +1 -1
- package/dist/core/skillCreator.d.ts +0 -1
- package/dist/core/skillCreator.d.ts.map +1 -1
- package/dist/core/skillCreator.js +9 -54
- package/dist/core/skillCreator.js.map +1 -1
- package/dist/types/index.d.ts +5 -15
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +0 -3
- package/dist/types/index.js.map +1 -1
- package/dist/utils/config.d.ts +3 -15
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +2 -11
- package/dist/utils/config.js.map +1 -1
- package/package.json +15 -9
- package/templates/SKILL.md +2 -25
- package/templates/SKILL.zh-CN.md +2 -25
- package/templates/skill-creator.zh-CN.md +5 -5
- package/dist/core/templateManager.d.ts +0 -28
- package/dist/core/templateManager.d.ts.map +0 -1
- package/dist/core/templateManager.js +0 -583
- package/dist/core/templateManager.js.map +0 -1
- package/dist/utils/claudeCodeDetection.d.ts +0 -27
- package/dist/utils/claudeCodeDetection.d.ts.map +0 -1
- package/dist/utils/claudeCodeDetection.js +0 -81
- package/dist/utils/claudeCodeDetection.js.map +0 -1
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Main skill creator class
|
|
3
3
|
*/
|
|
4
|
-
import { join
|
|
4
|
+
import { join } from 'node:path';
|
|
5
5
|
import { existsSync, mkdirSync, writeFileSync, readdirSync, readFileSync } from 'node:fs';
|
|
6
|
-
import { homedir } from 'node:os';
|
|
7
|
-
import { Config } from '../utils/config.js';
|
|
8
6
|
export class SkillCreator {
|
|
9
7
|
templateDir;
|
|
10
8
|
constructor() {
|
|
@@ -14,25 +12,10 @@ export class SkillCreator {
|
|
|
14
12
|
const result = {
|
|
15
13
|
created: false,
|
|
16
14
|
message: '',
|
|
17
|
-
docsInitialized: false,
|
|
18
15
|
};
|
|
19
16
|
try {
|
|
20
|
-
// Get package version
|
|
21
|
-
const { PackageUtils } = await import('../utils/package.js');
|
|
22
|
-
const version = options.version ?? (await PackageUtils.getPackageVersion(options.packageName));
|
|
23
|
-
if (!version) {
|
|
24
|
-
console.warn(`⚠️ Could not determine version for ${options.packageName}`);
|
|
25
|
-
}
|
|
26
|
-
// Create skill folder name
|
|
27
|
-
const skillName = PackageUtils.createSkillFolderName(options.packageName, version ?? '1.0.0');
|
|
28
|
-
// Determine output path
|
|
29
|
-
const outputPath = options.scope === 'user'
|
|
30
|
-
? join(homedir(), '.claude', 'skills')
|
|
31
|
-
: options.path
|
|
32
|
-
? resolve(options.path) // Ensure absolute path
|
|
33
|
-
: join(process.cwd(), '.claude', 'skills');
|
|
34
17
|
// Create skill directory
|
|
35
|
-
const skillDir = join(
|
|
18
|
+
const skillDir = join(options.baseDir, options.skillDirname);
|
|
36
19
|
if (existsSync(skillDir)) {
|
|
37
20
|
const files = readdirSync(skillDir);
|
|
38
21
|
// Filter out .gitkeep files
|
|
@@ -46,30 +29,13 @@ export class SkillCreator {
|
|
|
46
29
|
}
|
|
47
30
|
}
|
|
48
31
|
mkdirSync(skillDir, { recursive: true });
|
|
49
|
-
// Create configuration
|
|
50
|
-
const config = Config.createDefault({
|
|
51
|
-
skillName,
|
|
52
|
-
context7Id: options.context7Id ?? `/${options.packageName.replace('@', '').replace('/', '__')}/docs`,
|
|
53
|
-
});
|
|
54
32
|
// Create directory structure
|
|
55
|
-
|
|
56
|
-
// Create basic config.json (minimal configuration)
|
|
57
|
-
const skillConfig = {
|
|
58
|
-
packageName: options.packageName,
|
|
59
|
-
context7LibraryId: options.context7Id ?? `/${options.packageName.replace('@', '').replace('/', '__')}/docs`,
|
|
60
|
-
};
|
|
61
|
-
this.createBasicConfig(skillDir, skillConfig);
|
|
33
|
+
this.createDirectoryStructure(skillDir);
|
|
62
34
|
// Create SKILL.md from template
|
|
63
|
-
await this.createSkillMdFromTemplate(skillDir,
|
|
35
|
+
await this.createSkillMdFromTemplate(skillDir, options);
|
|
64
36
|
result.created = true;
|
|
65
37
|
result.skillPath = skillDir;
|
|
66
38
|
result.message = `Skill created successfully: ${skillDir}`;
|
|
67
|
-
// Initialize documentation if requested
|
|
68
|
-
if (!options.noInitDocs && options.context7Id) {
|
|
69
|
-
// Note: We'll skip auto-initialization for now to avoid dependency issues
|
|
70
|
-
result.docsInitialized = false;
|
|
71
|
-
result.message += ' | Documentation initialization skipped - run manually';
|
|
72
|
-
}
|
|
73
39
|
return result;
|
|
74
40
|
}
|
|
75
41
|
catch (error) {
|
|
@@ -90,15 +56,7 @@ export class SkillCreator {
|
|
|
90
56
|
writeFileSync(join(dirPath, '.gitkeep'), '');
|
|
91
57
|
}
|
|
92
58
|
}
|
|
93
|
-
|
|
94
|
-
const basicConfig = {
|
|
95
|
-
packageName: config.packageName,
|
|
96
|
-
context7LibraryId: config.context7LibraryId || '',
|
|
97
|
-
};
|
|
98
|
-
const configPath = join(skillDir, 'config.json');
|
|
99
|
-
writeFileSync(configPath, JSON.stringify(basicConfig, null, 2));
|
|
100
|
-
}
|
|
101
|
-
async createSkillMdFromTemplate(skillDir, config, options) {
|
|
59
|
+
async createSkillMdFromTemplate(skillDir, options) {
|
|
102
60
|
const templatePath = join(this.templateDir, 'SKILL.md');
|
|
103
61
|
if (!existsSync(templatePath)) {
|
|
104
62
|
throw new Error(`SKILL.md template not found at ${templatePath}`);
|
|
@@ -106,13 +64,10 @@ export class SkillCreator {
|
|
|
106
64
|
let templateContent = readFileSync(templatePath, 'utf-8');
|
|
107
65
|
// Replace template variables with options data
|
|
108
66
|
templateContent = templateContent
|
|
109
|
-
.replace(/{{NAME}}/g,
|
|
110
|
-
.replace(/{{DESCRIPTION}}/g, options.
|
|
111
|
-
`Specialized ${
|
|
112
|
-
.replace(/{{
|
|
113
|
-
.replace(/{{LICENSE}}/g, 'MIT')
|
|
114
|
-
.replace(/{{SKILL_PATH}}/g, skillDir)
|
|
115
|
-
.replace(/{{CONTEXT7_ID}}/g, options.context7Id || '{{CONTEXT7_ID}}');
|
|
67
|
+
.replace(/{{NAME}}/g, options.skillName)
|
|
68
|
+
.replace(/{{DESCRIPTION}}/g, options.skillDescription ||
|
|
69
|
+
`Specialized ${options.skillName} expert assistant providing comprehensive technical support`)
|
|
70
|
+
.replace(/{{SKILL_PATH}}/g, skillDir);
|
|
116
71
|
writeFileSync(join(skillDir, 'SKILL.md'), templateContent);
|
|
117
72
|
}
|
|
118
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillCreator.js","sourceRoot":"","sources":["../../src/core/skillCreator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"skillCreator.js","sourceRoot":"","sources":["../../src/core/skillCreator.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Core type definitions for skill creator
|
|
3
|
-
*/
|
|
4
|
-
export interface SkillConfig {
|
|
5
|
-
packageName?: string;
|
|
6
|
-
context7LibraryId?: string;
|
|
7
|
-
}
|
|
1
|
+
export type { SkillConfig } from '../utils/config.js';
|
|
8
2
|
export interface SearchResult {
|
|
9
3
|
id: string;
|
|
10
4
|
title: string;
|
|
@@ -30,20 +24,16 @@ export interface ContentItem {
|
|
|
30
24
|
modified: Date;
|
|
31
25
|
}
|
|
32
26
|
export interface CreateSkillOptions {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
noInitDocs?: boolean;
|
|
38
|
-
scope?: 'current' | 'user' | 'project';
|
|
39
|
-
version?: string;
|
|
27
|
+
baseDir: string;
|
|
28
|
+
skillDirname: string;
|
|
29
|
+
skillName: string;
|
|
30
|
+
skillDescription?: string;
|
|
40
31
|
force?: boolean;
|
|
41
32
|
}
|
|
42
33
|
export interface CreateSkillResult {
|
|
43
34
|
created: boolean;
|
|
44
35
|
skillPath?: string;
|
|
45
36
|
message: string;
|
|
46
|
-
docsInitialized: boolean;
|
|
47
37
|
}
|
|
48
38
|
export interface UpdateContext7Result {
|
|
49
39
|
updated: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAErD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,GAAG,UAAU,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,OAAO,CAAA;IACtB,iBAAiB,EAAE,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,GAAG,UAAU,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,IAAI,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;KAChB,CAAC,CAAA;IACF,YAAY,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;CACF;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,8BAA8B,EAAE,MAAM,CAAA;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB"}
|
package/dist/types/index.js
CHANGED
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
package/dist/utils/config.d.ts
CHANGED
|
@@ -2,23 +2,11 @@
|
|
|
2
2
|
* Configuration utilities
|
|
3
3
|
*/
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
-
import type { SkillConfig } from '../types/index.js';
|
|
6
5
|
export declare const SkillConfigSchema: z.ZodObject<{
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
packageName?: string | undefined;
|
|
11
|
-
context7LibraryId?: string | undefined;
|
|
12
|
-
}, {
|
|
13
|
-
packageName?: string | undefined;
|
|
14
|
-
context7LibraryId?: string | undefined;
|
|
15
|
-
}>;
|
|
16
|
-
export type SkillConfigInput = z.input<typeof SkillConfigSchema>;
|
|
6
|
+
context7ProjectId: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
export type SkillConfig = z.input<typeof SkillConfigSchema>;
|
|
17
9
|
export declare class Config {
|
|
18
|
-
static createDefault(options: {
|
|
19
|
-
skillName: string;
|
|
20
|
-
context7Id?: string;
|
|
21
|
-
}): SkillConfig;
|
|
22
10
|
static load(filePath: string): SkillConfig;
|
|
23
11
|
static save(config: SkillConfig, filePath: string): void;
|
|
24
12
|
static loadWithDefaults(filePath: string): SkillConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,iBAAiB;;iBAE5B,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D,qBAAa,MAAM;IACjB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAU1C,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;CASvD"}
|
package/dist/utils/config.js
CHANGED
|
@@ -4,16 +4,9 @@
|
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { readFileSync, writeFileSync } from 'node:fs';
|
|
6
6
|
export const SkillConfigSchema = z.object({
|
|
7
|
-
|
|
8
|
-
context7LibraryId: z.string().optional(),
|
|
7
|
+
context7ProjectId: z.string().optional(),
|
|
9
8
|
});
|
|
10
9
|
export class Config {
|
|
11
|
-
static createDefault(options) {
|
|
12
|
-
return {
|
|
13
|
-
packageName: options.skillName,
|
|
14
|
-
context7LibraryId: options.context7Id || '',
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
10
|
static load(filePath) {
|
|
18
11
|
try {
|
|
19
12
|
const content = readFileSync(filePath, 'utf-8');
|
|
@@ -34,9 +27,7 @@ export class Config {
|
|
|
34
27
|
catch (error) {
|
|
35
28
|
// If config file doesn't exist or is invalid, return a minimal default config
|
|
36
29
|
console.warn(`⚠️ Warning: Could not load config from ${filePath}. Using default values.`);
|
|
37
|
-
return {
|
|
38
|
-
packageName: 'unknown',
|
|
39
|
-
};
|
|
30
|
+
return {};
|
|
40
31
|
}
|
|
41
32
|
}
|
|
42
33
|
}
|
package/dist/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAErD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAA;AAIF,MAAM,OAAO,MAAM;IACjB,MAAM,CAAC,IAAI,CAAC,QAAgB;QAC1B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAC/C,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;YAC3D,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,KAAK,KAAK,EAAE,CAAC,CAAA;QACrE,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAmB,EAAE,QAAgB;QAC/C,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,QAAgB;QACtC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8EAA8E;YAC9E,OAAO,CAAC,IAAI,CAAC,2CAA2C,QAAQ,yBAAyB,CAAC,CAAA;YAC1F,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skill-creator",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Create claude-code-skills with documentation management",
|
|
5
5
|
"bin": {
|
|
6
6
|
"skill-creator": "dist/cli.js"
|
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
"cli": "node dist/cli.js",
|
|
13
13
|
"test": "vitest run",
|
|
14
14
|
"format": "prettier --write .",
|
|
15
|
-
"type-check": "tsc --noEmit"
|
|
15
|
+
"type-check": "tsc --noEmit",
|
|
16
|
+
"pre-release": "node scripts/pre-release-check.js",
|
|
17
|
+
"pre-release-check": "node scripts/pre-release-check.js"
|
|
16
18
|
},
|
|
17
19
|
"keywords": [
|
|
18
20
|
"claude-code",
|
|
@@ -27,27 +29,31 @@
|
|
|
27
29
|
"@chroma-core/default-embed": "^0.1.8",
|
|
28
30
|
"@leeoniya/ufuzzy": "^1.0.19",
|
|
29
31
|
"chromadb": "^3.0.17",
|
|
30
|
-
"commander": "^
|
|
32
|
+
"commander": "^14.0.1",
|
|
31
33
|
"dedent": "^1.5.3",
|
|
32
34
|
"fuse.js": "^7.1.0",
|
|
33
35
|
"glob": "^11.0.0",
|
|
34
36
|
"gradient-string": "^3.0.0",
|
|
35
|
-
"inquirer": "^10.
|
|
37
|
+
"inquirer": "^12.10.0",
|
|
36
38
|
"markdown-it": "^14.1.0",
|
|
37
|
-
"ora": "^
|
|
38
|
-
"zod": "^
|
|
39
|
+
"ora": "^9.0.0",
|
|
40
|
+
"zod": "^4.1.12"
|
|
39
41
|
},
|
|
40
42
|
"devDependencies": {
|
|
41
43
|
"@types/inquirer": "^9.0.9",
|
|
42
44
|
"@types/markdown-it": "^14.1.2",
|
|
43
|
-
"@types/node": "^
|
|
44
|
-
"@vitest/coverage-v8": "^2.
|
|
45
|
+
"@types/node": "^24.9.1",
|
|
46
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
45
47
|
"@vitest/ui": "^3.2.4",
|
|
46
48
|
"jsdom": "^27.0.1",
|
|
47
49
|
"prettier": "^3.4.2",
|
|
48
50
|
"tsx": "^4.19.2",
|
|
49
51
|
"typescript": "^5.7.2",
|
|
50
|
-
"vitest": "^2.
|
|
52
|
+
"vitest": "^3.2.4"
|
|
53
|
+
},
|
|
54
|
+
"repository": {
|
|
55
|
+
"type": "git",
|
|
56
|
+
"url": "https://github.com/gaubee/skill-creator"
|
|
51
57
|
},
|
|
52
58
|
"files": [
|
|
53
59
|
"dist",
|
package/templates/SKILL.md
CHANGED
|
@@ -30,18 +30,6 @@ Continuous updates, following version iterations to continuously optimize and en
|
|
|
30
30
|
- **Missing Best Practices**: Summarize common design patterns and best practices to avoid common pitfalls
|
|
31
31
|
- **Version Update Challenges**: Track version changes promptly, providing migration guides and new feature descriptions
|
|
32
32
|
|
|
33
|
-
### Installation & Setup
|
|
34
|
-
```bash
|
|
35
|
-
# npm installation
|
|
36
|
-
npm install {{PACKAGE_NAME}}
|
|
37
|
-
|
|
38
|
-
# yarn installation
|
|
39
|
-
yarn add {{PACKAGE_NAME}}
|
|
40
|
-
|
|
41
|
-
# pnpm installation
|
|
42
|
-
pnpm add {{PACKAGE_NAME}}
|
|
43
|
-
```
|
|
44
|
-
|
|
45
33
|
## Usage Guidelines
|
|
46
34
|
|
|
47
35
|
### Search Documentation Knowledge
|
|
@@ -159,27 +147,16 @@ skill-creator add-skill --pwd="{{SKILL_PATH}}" --title "Knowledge Title" --conte
|
|
|
159
147
|
### Update Official Documentation
|
|
160
148
|
Fetch and re-slice the latest official documentation:
|
|
161
149
|
|
|
162
|
-
```bash
|
|
163
|
-
skill-creator download-context7 --pwd="{{SKILL_PATH}}" {{CONTEXT7_ID}}
|
|
164
|
-
```
|
|
165
|
-
|
|
166
150
|
**Force Update (overwrite existing documentation):**
|
|
167
151
|
```bash
|
|
168
|
-
skill-creator download-context7 --pwd="{{SKILL_PATH}}"
|
|
152
|
+
skill-creator download-context7 --pwd="{{SKILL_PATH}}" --force
|
|
169
153
|
```
|
|
170
154
|
|
|
171
155
|
### List All Content
|
|
172
156
|
View all available knowledge points in the skill:
|
|
173
157
|
|
|
174
158
|
```bash
|
|
175
|
-
skill-creator
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
### Rebuild Search Index
|
|
179
|
-
Manually rebuild index when search results are inaccurate:
|
|
180
|
-
|
|
181
|
-
```bash
|
|
182
|
-
skill-creator run-script build-index --pwd="{{SKILL_PATH}}"
|
|
159
|
+
skill-creator list-content --pwd="{{SKILL_PATH}}"
|
|
183
160
|
```
|
|
184
161
|
|
|
185
162
|
## Documentation Structure
|
package/templates/SKILL.zh-CN.md
CHANGED
|
@@ -30,18 +30,6 @@ description: 通过智能搜索增强的 {{NAME}} 文档技能
|
|
|
30
30
|
- **最佳实践缺失**: 总结常见设计模式和最佳实践,避免常见陷阱
|
|
31
31
|
- **版本更新困扰**: 及时跟踪版本变化,提供迁移指南和新增特性说明
|
|
32
32
|
|
|
33
|
-
### 安装和配置
|
|
34
|
-
```bash
|
|
35
|
-
# npm安装
|
|
36
|
-
npm install {{PACKAGE_NAME}}
|
|
37
|
-
|
|
38
|
-
# yarn安装
|
|
39
|
-
yarn add {{PACKAGE_NAME}}
|
|
40
|
-
|
|
41
|
-
# pnpm安装
|
|
42
|
-
pnpm add {{PACKAGE_NAME}}
|
|
43
|
-
```
|
|
44
|
-
|
|
45
33
|
## 使用指南
|
|
46
34
|
|
|
47
35
|
### 搜索文档知识点
|
|
@@ -159,27 +147,16 @@ skill-creator add-skill --pwd="{{SKILL_PATH}}" --title "知识点标题" --conte
|
|
|
159
147
|
### 更新官方文档
|
|
160
148
|
获取最新的官方文档并重新切片:
|
|
161
149
|
|
|
162
|
-
```bash
|
|
163
|
-
skill-creator download-context7 --pwd="{{SKILL_PATH}}" {{CONTEXT7_ID}}
|
|
164
|
-
```
|
|
165
|
-
|
|
166
150
|
**强制更新(覆盖现有文档):**
|
|
167
151
|
```bash
|
|
168
|
-
skill-creator download-context7 --pwd="{{SKILL_PATH}}"
|
|
152
|
+
skill-creator download-context7 --pwd="{{SKILL_PATH}}" --force
|
|
169
153
|
```
|
|
170
154
|
|
|
171
155
|
### 查看所有内容
|
|
172
156
|
列出技能中所有可用的知识点:
|
|
173
157
|
|
|
174
158
|
```bash
|
|
175
|
-
skill-creator
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
### 重建搜索索引
|
|
179
|
-
如果搜索结果不准确,可以手动重建索引:
|
|
180
|
-
|
|
181
|
-
```bash
|
|
182
|
-
skill-creator run-script build-index --pwd="{{SKILL_PATH}}"
|
|
159
|
+
skill-creator list-content --pwd="{{SKILL_PATH}}"
|
|
183
160
|
```
|
|
184
161
|
|
|
185
162
|
## 文档结构说明
|
|
@@ -67,9 +67,9 @@ npm install -g skill-creator
|
|
|
67
67
|
- 我们在 SKILL.md 中,主要包含两部分的内容:
|
|
68
68
|
1. 介绍对于这个包基础信息:包括它的设计哲学和理念、解决什么问题、如何安装等基础信息。
|
|
69
69
|
2. 介绍配套的工具如何在这个 `skill_dir_fullpath` 文件夹内使用:来搜索技能信息、更新技能、扩展技能信息
|
|
70
|
-
- `skill-creator --pwd
|
|
71
|
-
- `skill-creator --pwd
|
|
72
|
-
- `skill-creator --pwd
|
|
70
|
+
- `skill-creator search-skill --pwd "{skill_dir_fullpath}" "test query"` 查询知识点
|
|
71
|
+
- `skill-creator add-skill --pwd "{skill_dir_fullpath}" --title "T" --content "C"` 添加“用户知识点”
|
|
72
|
+
- `skill-creator download-context7 --pwd "{skill_dir_fullpath}" {project-id} --force`强制更新,会清空context7文件夹,重新切分知识点文件
|
|
73
73
|
- 注意,默认情况下,我们完全不需要去创建scripts文件夹,因为我们已经有 `skill-creator` 这个cli来替代scripts了。
|
|
74
74
|
|
|
75
75
|
4. **获取Context7项目ID并下载文档**
|
|
@@ -81,14 +81,14 @@ npm install -g skill-creator
|
|
|
81
81
|
- 从这个最佳条目中,提取出 **project-id** (即 'Context7-compatible library ID')。
|
|
82
82
|
- 确认 project-id 后,执行下载:
|
|
83
83
|
```bash
|
|
84
|
-
skill-creator --pwd
|
|
84
|
+
skill-creator download-context7 --pwd "{skill_dir_fullpath}" {project-id}
|
|
85
85
|
```
|
|
86
86
|
> 这里 `download-context7` 命令会下载 llms.txt,并将它切分成很多个知识点文件
|
|
87
87
|
|
|
88
88
|
5. **测试搜索**
|
|
89
89
|
|
|
90
90
|
```bash
|
|
91
|
-
skill-creator --pwd
|
|
91
|
+
skill-creator search-skill --pwd "{skill_dir_fullpath}" "test query"
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
- 第一次搜索,`search-skill` 命令会去构建索引
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Template system for framework-specific skill enhancements
|
|
3
|
-
*/
|
|
4
|
-
import type { SkillConfig } from '../types/index.js';
|
|
5
|
-
export interface FrameworkTemplate {
|
|
6
|
-
name: string;
|
|
7
|
-
description: string;
|
|
8
|
-
context7Ids?: string[];
|
|
9
|
-
additionalDependencies?: Record<string, string>;
|
|
10
|
-
additionalScripts?: Record<string, string>;
|
|
11
|
-
postCreateScript?: string;
|
|
12
|
-
}
|
|
13
|
-
export declare class TemplateManager {
|
|
14
|
-
private templatesDir;
|
|
15
|
-
private templates;
|
|
16
|
-
constructor();
|
|
17
|
-
private loadTemplates;
|
|
18
|
-
getTemplate(name: string): FrameworkTemplate | undefined;
|
|
19
|
-
getAllTemplates(): FrameworkTemplate[];
|
|
20
|
-
detectFramework(packageName: string): FrameworkTemplate | null;
|
|
21
|
-
applyTemplate(template: FrameworkTemplate, skillPath: string, config: SkillConfig): void;
|
|
22
|
-
private generateFrameworkScripts;
|
|
23
|
-
private createExpressServerExample;
|
|
24
|
-
private createTypeormEntityGenerator;
|
|
25
|
-
private createPrismaSchemaGenerator;
|
|
26
|
-
private createReactExampleScripts;
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=templateManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"templateManager.d.ts","sourceRoot":"","sources":["../../src/core/templateManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAsB,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAExE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,SAAS,CAA4C;;IAS7D,OAAO,CAAC,aAAa;IAyHrB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIxD,eAAe,IAAI,iBAAiB,EAAE;IAItC,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAoC9D,aAAa,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI;IAiCxF,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,0BAA0B;IAiClC,OAAO,CAAC,4BAA4B;IAsGpC,OAAO,CAAC,2BAA2B;IAgGnC,OAAO,CAAC,yBAAyB;CAmJlC"}
|