@winspan/claude-forge 8.2.0 → 8.11.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 +64 -5
- package/dist/claudemd/convention-extractor.js +3 -3
- package/dist/claudemd/convention-extractor.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +1 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/rules.d.ts +8 -0
- package/dist/cli/commands/rules.d.ts.map +1 -0
- package/dist/cli/commands/rules.js +89 -0
- package/dist/cli/commands/rules.js.map +1 -0
- package/dist/cli/commands/stats.d.ts +8 -0
- package/dist/cli/commands/stats.d.ts.map +1 -0
- package/dist/cli/commands/stats.js +79 -0
- package/dist/cli/commands/stats.js.map +1 -0
- package/dist/cli/commands/template.d.ts +8 -0
- package/dist/cli/commands/template.d.ts.map +1 -0
- package/dist/cli/commands/template.js +68 -0
- package/dist/cli/commands/template.js.map +1 -0
- package/dist/cli/index.js +6 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/storage/sqlite.d.ts +25 -0
- package/dist/core/storage/sqlite.d.ts.map +1 -1
- package/dist/core/storage/sqlite.js +26 -0
- package/dist/core/storage/sqlite.js.map +1 -1
- package/dist/core/types.d.ts +3 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/daemon/handlers/pre-tool-use.d.ts +6 -1
- package/dist/daemon/handlers/pre-tool-use.d.ts.map +1 -1
- package/dist/daemon/handlers/pre-tool-use.js +45 -46
- package/dist/daemon/handlers/pre-tool-use.js.map +1 -1
- package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
- package/dist/daemon/handlers/user-prompt.js +8 -3
- package/dist/daemon/handlers/user-prompt.js.map +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +34 -2
- package/dist/daemon/index.js.map +1 -1
- package/dist/engine/conventions/basic-security.yaml +15 -0
- package/dist/engine/conventions/database-safety.yaml +74 -0
- package/dist/engine/conventions/docker-safety.yaml +69 -0
- package/dist/engine/conventions/git-safety.yaml +12 -0
- package/dist/engine/conventions/go-best-practices.yaml +84 -0
- package/dist/engine/conventions/python-best-practices.yaml +96 -0
- package/dist/engine/conventions/react-best-practices.yaml +96 -0
- package/dist/engine/dsl/parser.d.ts.map +1 -1
- package/dist/engine/dsl/parser.js +7 -1
- package/dist/engine/dsl/parser.js.map +1 -1
- package/dist/engine/dsl/types.d.ts +26 -1
- package/dist/engine/dsl/types.d.ts.map +1 -1
- package/dist/engine/rule-engine.d.ts +2 -1
- package/dist/engine/rule-engine.d.ts.map +1 -1
- package/dist/engine/rule-engine.js +56 -20
- package/dist/engine/rule-engine.js.map +1 -1
- package/dist/skills/matcher.d.ts +17 -1
- package/dist/skills/matcher.d.ts.map +1 -1
- package/dist/skills/matcher.js +92 -2
- package/dist/skills/matcher.js.map +1 -1
- package/dist/skills/registry.d.ts +26 -5
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +100 -10
- package/dist/skills/registry.js.map +1 -1
- package/dist/skills/semantic-matcher.d.ts +58 -0
- package/dist/skills/semantic-matcher.d.ts.map +1 -0
- package/dist/skills/semantic-matcher.js +189 -0
- package/dist/skills/semantic-matcher.js.map +1 -0
- package/dist/templates/template-manager.d.ts +52 -0
- package/dist/templates/template-manager.d.ts.map +1 -0
- package/dist/templates/template-manager.js +129 -0
- package/dist/templates/template-manager.js.map +1 -0
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +129 -2
- package/dist/web/server.js.map +1 -1
- package/dist/web/static/index.html +337 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../src/engine/rule-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../src/engine/rule-engine.ts"],"names":[],"mappings":"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"}
|
package/dist/skills/matcher.d.ts
CHANGED
|
@@ -1,10 +1,26 @@
|
|
|
1
1
|
import type { Skill } from './registry.js';
|
|
2
|
+
export interface MatchContext {
|
|
3
|
+
prompt: string;
|
|
4
|
+
intentKeywords?: string[];
|
|
5
|
+
projectPath?: string;
|
|
6
|
+
recentFiles?: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface MatchResult {
|
|
9
|
+
skill: Skill;
|
|
10
|
+
confidence: number;
|
|
11
|
+
matchedKeywords: string[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Calculate match confidence score (0-100)
|
|
15
|
+
*/
|
|
16
|
+
export declare function calculateMatchScore(skill: Skill, context: MatchContext): MatchResult | null;
|
|
2
17
|
/**
|
|
3
18
|
* Check if any of the skill's keywords appear in the prompt (case-insensitive).
|
|
19
|
+
* @deprecated Use calculateMatchScore instead
|
|
4
20
|
*/
|
|
5
21
|
export declare function matchKeywords(prompt: string, skillKeywords: string[]): boolean;
|
|
6
22
|
/**
|
|
7
23
|
* Format a skill as a recommendation message for the user.
|
|
8
24
|
*/
|
|
9
|
-
export declare function formatSkillRecommendation(skill: Skill): string;
|
|
25
|
+
export declare function formatSkillRecommendation(skill: Skill, confidence?: number): string;
|
|
10
26
|
//# sourceMappingURL=matcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../src/skills/matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAG9E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../src/skills/matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAoBD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,GAAG,WAAW,GAAG,IAAI,CA4C3F;AA0CD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAG9E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAGnF"}
|
package/dist/skills/matcher.js
CHANGED
|
@@ -1,5 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced keyword matching with word boundary detection
|
|
3
|
+
* Reduces false positives by requiring whole-word matches
|
|
4
|
+
*/
|
|
5
|
+
function matchKeywordStrict(text, keyword) {
|
|
6
|
+
const textLower = text.toLowerCase();
|
|
7
|
+
const kwLower = keyword.toLowerCase();
|
|
8
|
+
// For Chinese/multi-word keywords, use simple includes
|
|
9
|
+
if (kwLower.includes(' ') || /[一-龥]/.test(kwLower)) {
|
|
10
|
+
return textLower.includes(kwLower);
|
|
11
|
+
}
|
|
12
|
+
// For single English word keywords, require word boundaries
|
|
13
|
+
const regex = new RegExp(`\\b${kwLower.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\b`);
|
|
14
|
+
return regex.test(textLower);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Calculate match confidence score (0-100)
|
|
18
|
+
*/
|
|
19
|
+
export function calculateMatchScore(skill, context) {
|
|
20
|
+
const { prompt, intentKeywords = [] } = context;
|
|
21
|
+
const allText = [prompt, ...intentKeywords].join(' ');
|
|
22
|
+
let matchedKeywords = [];
|
|
23
|
+
let score = 0;
|
|
24
|
+
// 1. Keyword matching with flexible scoring
|
|
25
|
+
for (const kw of skill.keywords) {
|
|
26
|
+
if (matchKeywordStrict(allText, kw)) {
|
|
27
|
+
matchedKeywords.push(kw);
|
|
28
|
+
// Base score: 15 points per keyword
|
|
29
|
+
// Bonus for longer keywords (more specific)
|
|
30
|
+
const lengthBonus = Math.min(10, Math.floor(kw.length / 3));
|
|
31
|
+
score += 15 + lengthBonus;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// 2. Negative keywords check (disqualify if present)
|
|
35
|
+
const negativeKeywords = getNegativeKeywords(skill.id);
|
|
36
|
+
for (const negKw of negativeKeywords) {
|
|
37
|
+
if (matchKeywordStrict(allText, negKw)) {
|
|
38
|
+
return null; // Disqualify
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// 3. Context bonus (max 30 points)
|
|
42
|
+
const contextBonus = calculateContextBonus(skill, context);
|
|
43
|
+
score += contextBonus;
|
|
44
|
+
// Normalize to 0-100
|
|
45
|
+
const confidence = Math.min(100, score);
|
|
46
|
+
// Lower threshold: >= 40% confidence and at least 1 keyword match
|
|
47
|
+
// This is more lenient than the old "2 keywords" rule but still filters noise
|
|
48
|
+
if (confidence < 40 || matchedKeywords.length < 1) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
skill,
|
|
53
|
+
confidence,
|
|
54
|
+
matchedKeywords,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get negative keywords that disqualify a skill
|
|
59
|
+
*/
|
|
60
|
+
function getNegativeKeywords(skillId) {
|
|
61
|
+
const negativeMap = {
|
|
62
|
+
'official-tdd': ['existing', 'legacy', 'refactor', '重构', '遗留'],
|
|
63
|
+
'official-harness-engineering': ['new feature', '新功能', 'from scratch'],
|
|
64
|
+
'official-debug': ['working', 'works fine', '正常'],
|
|
65
|
+
'official-performance-optimization': ['slow network', 'api timeout', '网络慢'],
|
|
66
|
+
};
|
|
67
|
+
return negativeMap[skillId] || [];
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Calculate context-based bonus score
|
|
71
|
+
*/
|
|
72
|
+
function calculateContextBonus(skill, context) {
|
|
73
|
+
let bonus = 0;
|
|
74
|
+
// File extension matching
|
|
75
|
+
if (context.recentFiles && context.recentFiles.length > 0) {
|
|
76
|
+
const fileExts = context.recentFiles.map(f => f.split('.').pop()?.toLowerCase());
|
|
77
|
+
if (skill.id === 'official-tdd' && fileExts.some(ext => ext === 'test' || ext === 'spec')) {
|
|
78
|
+
bonus += 20;
|
|
79
|
+
}
|
|
80
|
+
if (skill.id === 'webapp-testing' && fileExts.some(ext => ['tsx', 'jsx', 'html'].includes(ext || ''))) {
|
|
81
|
+
bonus += 20;
|
|
82
|
+
}
|
|
83
|
+
if (skill.id === 'official-db-schema-design' && fileExts.some(ext => ext === 'sql')) {
|
|
84
|
+
bonus += 20;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return bonus;
|
|
88
|
+
}
|
|
1
89
|
/**
|
|
2
90
|
* Check if any of the skill's keywords appear in the prompt (case-insensitive).
|
|
91
|
+
* @deprecated Use calculateMatchScore instead
|
|
3
92
|
*/
|
|
4
93
|
export function matchKeywords(prompt, skillKeywords) {
|
|
5
94
|
const promptLower = prompt.toLowerCase();
|
|
@@ -8,7 +97,8 @@ export function matchKeywords(prompt, skillKeywords) {
|
|
|
8
97
|
/**
|
|
9
98
|
* Format a skill as a recommendation message for the user.
|
|
10
99
|
*/
|
|
11
|
-
export function formatSkillRecommendation(skill) {
|
|
12
|
-
|
|
100
|
+
export function formatSkillRecommendation(skill, confidence) {
|
|
101
|
+
const confidenceStr = confidence ? ` (${confidence}% 匹配)` : '';
|
|
102
|
+
return `[Forge 技能推荐]${confidenceStr} ${skill.name}\n\n${skill.content}`;
|
|
13
103
|
}
|
|
14
104
|
//# sourceMappingURL=matcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../src/skills/matcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../src/skills/matcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,18 +12,39 @@ export interface Skill {
|
|
|
12
12
|
*/
|
|
13
13
|
export declare class SkillRegistry {
|
|
14
14
|
private skills;
|
|
15
|
-
|
|
15
|
+
private semanticMatcher;
|
|
16
|
+
constructor(apiKey?: string);
|
|
16
17
|
/**
|
|
17
18
|
* Scan ~/.claude/skills/ for markdown files with frontmatter
|
|
18
19
|
* Official skills are loaded first, then user skills (which can override)
|
|
19
20
|
*/
|
|
20
21
|
private scan;
|
|
21
22
|
/**
|
|
22
|
-
* Match a prompt against skill keywords
|
|
23
|
-
*
|
|
24
|
-
*
|
|
23
|
+
* Match a prompt against skill keywords with hybrid approach:
|
|
24
|
+
* 1. Try semantic matching (AI-powered) if available
|
|
25
|
+
* 2. Fall back to keyword matching if semantic fails or not configured
|
|
25
26
|
*/
|
|
26
|
-
match(prompt: string, keywords?: string[]
|
|
27
|
+
match(prompt: string, keywords?: string[], context?: {
|
|
28
|
+
recentFiles?: string[];
|
|
29
|
+
}): Promise<Skill | null>;
|
|
30
|
+
/**
|
|
31
|
+
* Keyword-based matching (fallback method)
|
|
32
|
+
*/
|
|
33
|
+
private matchKeywords;
|
|
34
|
+
/**
|
|
35
|
+
* Flexible keyword matching with word boundary for English, substring for Chinese
|
|
36
|
+
*/
|
|
37
|
+
private matchKeywordFlexible;
|
|
38
|
+
/**
|
|
39
|
+
* Match with full result details (for debugging/logging)
|
|
40
|
+
*/
|
|
41
|
+
matchWithDetails(prompt: string, keywords?: string[], context?: {
|
|
42
|
+
recentFiles?: string[];
|
|
43
|
+
}): Promise<{
|
|
44
|
+
skill: Skill;
|
|
45
|
+
confidence: number;
|
|
46
|
+
matchedKeywords: string[];
|
|
47
|
+
}[]>;
|
|
27
48
|
/** Return all loaded skills */
|
|
28
49
|
getAll(): Skill[];
|
|
29
50
|
/** Re-scan the skills directory */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,eAAe,CAAqC;gBAEhD,MAAM,CAAC,EAAE,MAAM;IAY3B;;;OAGG;IACH,OAAO,CAAC,IAAI;IA4DZ;;;;OAIG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,EAAO,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IA0BjH;;OAEG;YACW,aAAa;IA6C3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,EAAO,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE;;;;;IAkCpG,+BAA+B;IAC/B,MAAM,IAAI,KAAK,EAAE;IAIjB,mCAAmC;IACnC,MAAM,IAAI,IAAI;CAIf"}
|
package/dist/skills/registry.js
CHANGED
|
@@ -4,6 +4,7 @@ import { homedir } from 'node:os';
|
|
|
4
4
|
import matter from 'gray-matter';
|
|
5
5
|
import { logger } from '../core/utils/logger.js';
|
|
6
6
|
import { OFFICIAL_SKILLS } from './official-skills.js';
|
|
7
|
+
import { SemanticSkillMatcher } from './semantic-matcher.js';
|
|
7
8
|
const SKILLS_DIR = path.join(homedir(), '.claude', 'skills');
|
|
8
9
|
/**
|
|
9
10
|
* Simple skill registry that scans ~/.claude/skills/*.md
|
|
@@ -11,8 +12,17 @@ const SKILLS_DIR = path.join(homedir(), '.claude', 'skills');
|
|
|
11
12
|
*/
|
|
12
13
|
export class SkillRegistry {
|
|
13
14
|
skills = new Map();
|
|
14
|
-
|
|
15
|
+
semanticMatcher = null;
|
|
16
|
+
constructor(apiKey) {
|
|
15
17
|
this.scan();
|
|
18
|
+
// Initialize semantic matcher if API key is provided
|
|
19
|
+
if (apiKey) {
|
|
20
|
+
this.semanticMatcher = new SemanticSkillMatcher(apiKey);
|
|
21
|
+
logger.info('[SkillRegistry] Semantic matching enabled');
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
logger.debug('[SkillRegistry] Semantic matching disabled (no API key)');
|
|
25
|
+
}
|
|
16
26
|
}
|
|
17
27
|
/**
|
|
18
28
|
* Scan ~/.claude/skills/ for markdown files with frontmatter
|
|
@@ -72,11 +82,35 @@ export class SkillRegistry {
|
|
|
72
82
|
}
|
|
73
83
|
}
|
|
74
84
|
/**
|
|
75
|
-
* Match a prompt against skill keywords
|
|
76
|
-
*
|
|
77
|
-
*
|
|
85
|
+
* Match a prompt against skill keywords with hybrid approach:
|
|
86
|
+
* 1. Try semantic matching (AI-powered) if available
|
|
87
|
+
* 2. Fall back to keyword matching if semantic fails or not configured
|
|
88
|
+
*/
|
|
89
|
+
async match(prompt, keywords = [], context) {
|
|
90
|
+
// Try semantic matching first
|
|
91
|
+
if (this.semanticMatcher) {
|
|
92
|
+
try {
|
|
93
|
+
const semanticResult = await this.semanticMatcher.match(Array.from(this.skills.values()), {
|
|
94
|
+
prompt,
|
|
95
|
+
intentKeywords: keywords,
|
|
96
|
+
recentFiles: context?.recentFiles,
|
|
97
|
+
});
|
|
98
|
+
if (semanticResult) {
|
|
99
|
+
logger.info(`[SkillRegistry] Semantic match: ${semanticResult.skill.id} (${semanticResult.confidence}%)`);
|
|
100
|
+
return semanticResult.skill;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
logger.warn(`[SkillRegistry] Semantic matching failed, falling back to keyword matching: ${err}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Fall back to keyword matching
|
|
108
|
+
return this.matchKeywords(prompt, keywords, context);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Keyword-based matching (fallback method)
|
|
78
112
|
*/
|
|
79
|
-
|
|
113
|
+
async matchKeywords(prompt, keywords = [], context) {
|
|
80
114
|
const promptLower = prompt.toLowerCase();
|
|
81
115
|
const extraLower = keywords.map(k => k.toLowerCase());
|
|
82
116
|
let bestSkill = null;
|
|
@@ -85,18 +119,74 @@ export class SkillRegistry {
|
|
|
85
119
|
let score = 0;
|
|
86
120
|
for (const kw of skill.keywords) {
|
|
87
121
|
const kwLower = kw.toLowerCase();
|
|
88
|
-
if
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
122
|
+
// Check if keyword appears in prompt or intent keywords
|
|
123
|
+
if (this.matchKeywordFlexible(promptLower, kwLower)) {
|
|
124
|
+
score += 1;
|
|
125
|
+
}
|
|
126
|
+
if (extraLower.some(ek => this.matchKeywordFlexible(ek, kwLower))) {
|
|
127
|
+
score += 1;
|
|
128
|
+
}
|
|
92
129
|
}
|
|
93
|
-
|
|
130
|
+
// Official skills get priority: require 1+ match, user skills require 2+ matches
|
|
131
|
+
const threshold = skill.isOfficial ? 1 : 2;
|
|
132
|
+
if (score >= threshold && score > bestScore) {
|
|
94
133
|
bestScore = score;
|
|
95
134
|
bestSkill = skill;
|
|
96
135
|
}
|
|
136
|
+
else if (score === bestScore && skill.isOfficial && !bestSkill?.isOfficial) {
|
|
137
|
+
// If scores are equal, prefer official skill
|
|
138
|
+
bestSkill = skill;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (bestSkill) {
|
|
142
|
+
logger.info(`[SkillRegistry] Keyword match: ${bestSkill.id} (score: ${bestScore})`);
|
|
97
143
|
}
|
|
98
144
|
return bestSkill;
|
|
99
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Flexible keyword matching with word boundary for English, substring for Chinese
|
|
148
|
+
*/
|
|
149
|
+
matchKeywordFlexible(text, keyword) {
|
|
150
|
+
// For Chinese or multi-word keywords, use simple includes
|
|
151
|
+
if (/[一-龥]/.test(keyword) || keyword.includes(' ')) {
|
|
152
|
+
return text.includes(keyword);
|
|
153
|
+
}
|
|
154
|
+
// For single English words, require word boundaries to avoid false positives
|
|
155
|
+
// e.g., "test" won't match "latest"
|
|
156
|
+
const regex = new RegExp(`\\b${keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\b`);
|
|
157
|
+
return regex.test(text);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Match with full result details (for debugging/logging)
|
|
161
|
+
*/
|
|
162
|
+
async matchWithDetails(prompt, keywords = [], context) {
|
|
163
|
+
const promptLower = prompt.toLowerCase();
|
|
164
|
+
const extraLower = keywords.map(k => k.toLowerCase());
|
|
165
|
+
const results = [];
|
|
166
|
+
for (const skill of this.skills.values()) {
|
|
167
|
+
let score = 0;
|
|
168
|
+
const matchedKeywords = [];
|
|
169
|
+
for (const kw of skill.keywords) {
|
|
170
|
+
const kwLower = kw.toLowerCase();
|
|
171
|
+
if (this.matchKeywordFlexible(promptLower, kwLower)) {
|
|
172
|
+
score += 1;
|
|
173
|
+
matchedKeywords.push(kw);
|
|
174
|
+
}
|
|
175
|
+
if (extraLower.some(ek => this.matchKeywordFlexible(ek, kwLower))) {
|
|
176
|
+
score += 1;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (score >= 1) {
|
|
180
|
+
results.push({
|
|
181
|
+
skill,
|
|
182
|
+
confidence: Math.min(100, score * 20), // Simple scoring: 1 match = 20%, 5 matches = 100%
|
|
183
|
+
matchedKeywords,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
results.sort((a, b) => b.confidence - a.confidence);
|
|
188
|
+
return results;
|
|
189
|
+
}
|
|
100
190
|
/** Return all loaded skills */
|
|
101
191
|
getAll() {
|
|
102
192
|
return Array.from(this.skills.values());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI-powered semantic skill matcher using Claude API
|
|
3
|
+
* Provides more accurate skill recommendations by understanding user intent
|
|
4
|
+
*/
|
|
5
|
+
import type { Skill } from './registry.js';
|
|
6
|
+
export interface SemanticMatchResult {
|
|
7
|
+
skill: Skill;
|
|
8
|
+
confidence: number;
|
|
9
|
+
reasoning: string;
|
|
10
|
+
}
|
|
11
|
+
export interface SemanticMatchContext {
|
|
12
|
+
prompt: string;
|
|
13
|
+
intentKeywords?: string[];
|
|
14
|
+
recentFiles?: string[];
|
|
15
|
+
projectPath?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Semantic matcher using Claude API for intent understanding
|
|
19
|
+
*/
|
|
20
|
+
export declare class SemanticSkillMatcher {
|
|
21
|
+
private client;
|
|
22
|
+
private cache;
|
|
23
|
+
private readonly CACHE_TTL;
|
|
24
|
+
private cacheTimestamps;
|
|
25
|
+
constructor(apiKey?: string);
|
|
26
|
+
/**
|
|
27
|
+
* Match skills using semantic understanding
|
|
28
|
+
* Falls back to keyword matching if API is not configured
|
|
29
|
+
*/
|
|
30
|
+
match(skills: Skill[], context: SemanticMatchContext): Promise<SemanticMatchResult | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Use Claude API to understand intent and match skills
|
|
33
|
+
*/
|
|
34
|
+
private matchWithAI;
|
|
35
|
+
/**
|
|
36
|
+
* Build the matching prompt for Claude API
|
|
37
|
+
*/
|
|
38
|
+
private buildMatchingPrompt;
|
|
39
|
+
/**
|
|
40
|
+
* Parse AI response into match result
|
|
41
|
+
*/
|
|
42
|
+
private parseAIResponse;
|
|
43
|
+
/**
|
|
44
|
+
* Extract description from skill content
|
|
45
|
+
*/
|
|
46
|
+
private extractDescription;
|
|
47
|
+
/**
|
|
48
|
+
* Cache management
|
|
49
|
+
*/
|
|
50
|
+
private getCacheKey;
|
|
51
|
+
private getFromCache;
|
|
52
|
+
private setCache;
|
|
53
|
+
/**
|
|
54
|
+
* Clear cache
|
|
55
|
+
*/
|
|
56
|
+
clearCache(): void;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=semantic-matcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-matcher.d.ts","sourceRoot":"","sources":["../../src/skills/semantic-matcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAG3C,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,KAAK,CAAsD;IACnE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,eAAe,CAAkC;gBAE7C,MAAM,CAAC,EAAE,MAAM;IAM3B;;;OAGG;IACG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAwBhG;;OAEG;YACW,WAAW;IAkCzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA8B3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkCvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,QAAQ;IAahB;;OAEG;IACH,UAAU,IAAI,IAAI;CAInB"}
|