@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.
Files changed (73) hide show
  1. package/README.md +64 -5
  2. package/dist/claudemd/convention-extractor.js +3 -3
  3. package/dist/claudemd/convention-extractor.js.map +1 -1
  4. package/dist/cli/commands/init.d.ts.map +1 -1
  5. package/dist/cli/commands/init.js +1 -0
  6. package/dist/cli/commands/init.js.map +1 -1
  7. package/dist/cli/commands/rules.d.ts +8 -0
  8. package/dist/cli/commands/rules.d.ts.map +1 -0
  9. package/dist/cli/commands/rules.js +89 -0
  10. package/dist/cli/commands/rules.js.map +1 -0
  11. package/dist/cli/commands/stats.d.ts +8 -0
  12. package/dist/cli/commands/stats.d.ts.map +1 -0
  13. package/dist/cli/commands/stats.js +79 -0
  14. package/dist/cli/commands/stats.js.map +1 -0
  15. package/dist/cli/commands/template.d.ts +8 -0
  16. package/dist/cli/commands/template.d.ts.map +1 -0
  17. package/dist/cli/commands/template.js +68 -0
  18. package/dist/cli/commands/template.js.map +1 -0
  19. package/dist/cli/index.js +6 -0
  20. package/dist/cli/index.js.map +1 -1
  21. package/dist/core/storage/sqlite.d.ts +25 -0
  22. package/dist/core/storage/sqlite.d.ts.map +1 -1
  23. package/dist/core/storage/sqlite.js +26 -0
  24. package/dist/core/storage/sqlite.js.map +1 -1
  25. package/dist/core/types.d.ts +3 -0
  26. package/dist/core/types.d.ts.map +1 -1
  27. package/dist/daemon/handlers/pre-tool-use.d.ts +6 -1
  28. package/dist/daemon/handlers/pre-tool-use.d.ts.map +1 -1
  29. package/dist/daemon/handlers/pre-tool-use.js +45 -46
  30. package/dist/daemon/handlers/pre-tool-use.js.map +1 -1
  31. package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
  32. package/dist/daemon/handlers/user-prompt.js +8 -3
  33. package/dist/daemon/handlers/user-prompt.js.map +1 -1
  34. package/dist/daemon/index.d.ts.map +1 -1
  35. package/dist/daemon/index.js +34 -2
  36. package/dist/daemon/index.js.map +1 -1
  37. package/dist/engine/conventions/basic-security.yaml +15 -0
  38. package/dist/engine/conventions/database-safety.yaml +74 -0
  39. package/dist/engine/conventions/docker-safety.yaml +69 -0
  40. package/dist/engine/conventions/git-safety.yaml +12 -0
  41. package/dist/engine/conventions/go-best-practices.yaml +84 -0
  42. package/dist/engine/conventions/python-best-practices.yaml +96 -0
  43. package/dist/engine/conventions/react-best-practices.yaml +96 -0
  44. package/dist/engine/dsl/parser.d.ts.map +1 -1
  45. package/dist/engine/dsl/parser.js +7 -1
  46. package/dist/engine/dsl/parser.js.map +1 -1
  47. package/dist/engine/dsl/types.d.ts +26 -1
  48. package/dist/engine/dsl/types.d.ts.map +1 -1
  49. package/dist/engine/rule-engine.d.ts +2 -1
  50. package/dist/engine/rule-engine.d.ts.map +1 -1
  51. package/dist/engine/rule-engine.js +56 -20
  52. package/dist/engine/rule-engine.js.map +1 -1
  53. package/dist/skills/matcher.d.ts +17 -1
  54. package/dist/skills/matcher.d.ts.map +1 -1
  55. package/dist/skills/matcher.js +92 -2
  56. package/dist/skills/matcher.js.map +1 -1
  57. package/dist/skills/registry.d.ts +26 -5
  58. package/dist/skills/registry.d.ts.map +1 -1
  59. package/dist/skills/registry.js +100 -10
  60. package/dist/skills/registry.js.map +1 -1
  61. package/dist/skills/semantic-matcher.d.ts +58 -0
  62. package/dist/skills/semantic-matcher.d.ts.map +1 -0
  63. package/dist/skills/semantic-matcher.js +189 -0
  64. package/dist/skills/semantic-matcher.js.map +1 -0
  65. package/dist/templates/template-manager.d.ts +52 -0
  66. package/dist/templates/template-manager.d.ts.map +1 -0
  67. package/dist/templates/template-manager.js +129 -0
  68. package/dist/templates/template-manager.js.map +1 -0
  69. package/dist/web/server.d.ts.map +1 -1
  70. package/dist/web/server.js +129 -2
  71. package/dist/web/server.js.map +1 -1
  72. package/dist/web/static/index.html +337 -0
  73. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../src/engine/rule-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../src/engine/rule-engine.ts"],"names":[],"mappings":"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"}
@@ -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,CAE9D"}
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"}
@@ -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
- return `[Forge 技能推荐] ${skill.name}\n\n${skill.content}`;
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":"AAEA;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,aAAuB;IACnE,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACzC,OAAO,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAY;IACpD,OAAO,gBAAgB,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;AAC1D,CAAC"}
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
- constructor();
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
- * Requires at least 2 keyword matches to avoid false positives.
24
- * Returns the highest-scoring skill above threshold, or null.
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[]): Skill | null;
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":"AASA,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;;IAM/C;;;OAGG;IACH,OAAO,CAAC,IAAI;IA4DZ;;;;OAIG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,EAAO,GAAG,KAAK,GAAG,IAAI;IAyB5D,+BAA+B;IAC/B,MAAM,IAAI,KAAK,EAAE;IAIjB,mCAAmC;IACnC,MAAM,IAAI,IAAI;CAIf"}
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"}
@@ -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
- constructor() {
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
- * Requires at least 2 keyword matches to avoid false positives.
77
- * Returns the highest-scoring skill above threshold, or null.
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
- match(prompt, keywords = []) {
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 (promptLower.includes(kwLower))
89
- score++;
90
- if (extraLower.some(ek => ek.includes(kwLower)))
91
- score++;
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
- if (score >= 2 && score > bestScore) {
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":"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"}
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"}