agentic-qe 2.0.0 → 2.1.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 (116) hide show
  1. package/.claude/agents/qx-partner.md +17 -4
  2. package/.claude/skills/accessibility-testing/SKILL.md +144 -692
  3. package/.claude/skills/agentic-quality-engineering/SKILL.md +176 -529
  4. package/.claude/skills/api-testing-patterns/SKILL.md +180 -560
  5. package/.claude/skills/brutal-honesty-review/SKILL.md +113 -603
  6. package/.claude/skills/bug-reporting-excellence/SKILL.md +116 -517
  7. package/.claude/skills/chaos-engineering-resilience/SKILL.md +127 -72
  8. package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +209 -404
  9. package/.claude/skills/code-review-quality/SKILL.md +158 -608
  10. package/.claude/skills/compatibility-testing/SKILL.md +148 -38
  11. package/.claude/skills/compliance-testing/SKILL.md +132 -63
  12. package/.claude/skills/consultancy-practices/SKILL.md +114 -446
  13. package/.claude/skills/context-driven-testing/SKILL.md +117 -381
  14. package/.claude/skills/contract-testing/SKILL.md +176 -141
  15. package/.claude/skills/database-testing/SKILL.md +137 -130
  16. package/.claude/skills/exploratory-testing-advanced/SKILL.md +160 -629
  17. package/.claude/skills/holistic-testing-pact/SKILL.md +140 -188
  18. package/.claude/skills/localization-testing/SKILL.md +145 -33
  19. package/.claude/skills/mobile-testing/SKILL.md +132 -448
  20. package/.claude/skills/mutation-testing/SKILL.md +147 -41
  21. package/.claude/skills/performance-testing/SKILL.md +200 -546
  22. package/.claude/skills/quality-metrics/SKILL.md +164 -519
  23. package/.claude/skills/refactoring-patterns/SKILL.md +132 -699
  24. package/.claude/skills/regression-testing/SKILL.md +120 -926
  25. package/.claude/skills/risk-based-testing/SKILL.md +157 -660
  26. package/.claude/skills/security-testing/SKILL.md +199 -538
  27. package/.claude/skills/sherlock-review/SKILL.md +163 -699
  28. package/.claude/skills/shift-left-testing/SKILL.md +161 -465
  29. package/.claude/skills/shift-right-testing/SKILL.md +161 -519
  30. package/.claude/skills/six-thinking-hats/SKILL.md +175 -1110
  31. package/.claude/skills/skills-manifest.json +71 -20
  32. package/.claude/skills/tdd-london-chicago/SKILL.md +131 -448
  33. package/.claude/skills/technical-writing/SKILL.md +103 -154
  34. package/.claude/skills/test-automation-strategy/SKILL.md +166 -772
  35. package/.claude/skills/test-data-management/SKILL.md +126 -910
  36. package/.claude/skills/test-design-techniques/SKILL.md +179 -89
  37. package/.claude/skills/test-environment-management/SKILL.md +136 -91
  38. package/.claude/skills/test-reporting-analytics/SKILL.md +169 -92
  39. package/.claude/skills/testability-scoring/SKILL.md +172 -538
  40. package/.claude/skills/testability-scoring/scripts/generate-html-report.js +0 -0
  41. package/.claude/skills/visual-testing-advanced/SKILL.md +155 -78
  42. package/.claude/skills/xp-practices/SKILL.md +151 -587
  43. package/CHANGELOG.md +48 -0
  44. package/README.md +23 -16
  45. package/dist/agents/QXPartnerAgent.d.ts +8 -1
  46. package/dist/agents/QXPartnerAgent.d.ts.map +1 -1
  47. package/dist/agents/QXPartnerAgent.js +1174 -112
  48. package/dist/agents/QXPartnerAgent.js.map +1 -1
  49. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
  50. package/dist/agents/lifecycle/AgentLifecycleManager.js +34 -31
  51. package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
  52. package/dist/cli/commands/init-claude-md-template.d.ts.map +1 -1
  53. package/dist/cli/commands/init-claude-md-template.js +14 -0
  54. package/dist/cli/commands/init-claude-md-template.js.map +1 -1
  55. package/dist/core/SwarmCoordinator.d.ts +180 -0
  56. package/dist/core/SwarmCoordinator.d.ts.map +1 -0
  57. package/dist/core/SwarmCoordinator.js +473 -0
  58. package/dist/core/SwarmCoordinator.js.map +1 -0
  59. package/dist/core/metrics/MetricsAggregator.d.ts +228 -0
  60. package/dist/core/metrics/MetricsAggregator.d.ts.map +1 -0
  61. package/dist/core/metrics/MetricsAggregator.js +482 -0
  62. package/dist/core/metrics/MetricsAggregator.js.map +1 -0
  63. package/dist/core/metrics/index.d.ts +5 -0
  64. package/dist/core/metrics/index.d.ts.map +1 -0
  65. package/dist/core/metrics/index.js +11 -0
  66. package/dist/core/metrics/index.js.map +1 -0
  67. package/dist/core/optimization/SwarmOptimizer.d.ts +5 -0
  68. package/dist/core/optimization/SwarmOptimizer.d.ts.map +1 -1
  69. package/dist/core/optimization/SwarmOptimizer.js +17 -0
  70. package/dist/core/optimization/SwarmOptimizer.js.map +1 -1
  71. package/dist/core/orchestration/AdaptiveScheduler.d.ts +190 -0
  72. package/dist/core/orchestration/AdaptiveScheduler.d.ts.map +1 -0
  73. package/dist/core/orchestration/AdaptiveScheduler.js +460 -0
  74. package/dist/core/orchestration/AdaptiveScheduler.js.map +1 -0
  75. package/dist/core/orchestration/WorkflowOrchestrator.d.ts +13 -0
  76. package/dist/core/orchestration/WorkflowOrchestrator.d.ts.map +1 -1
  77. package/dist/core/orchestration/WorkflowOrchestrator.js +32 -0
  78. package/dist/core/orchestration/WorkflowOrchestrator.js.map +1 -1
  79. package/dist/core/recovery/CircuitBreaker.d.ts +176 -0
  80. package/dist/core/recovery/CircuitBreaker.d.ts.map +1 -0
  81. package/dist/core/recovery/CircuitBreaker.js +382 -0
  82. package/dist/core/recovery/CircuitBreaker.js.map +1 -0
  83. package/dist/core/recovery/RecoveryOrchestrator.d.ts +186 -0
  84. package/dist/core/recovery/RecoveryOrchestrator.d.ts.map +1 -0
  85. package/dist/core/recovery/RecoveryOrchestrator.js +476 -0
  86. package/dist/core/recovery/RecoveryOrchestrator.js.map +1 -0
  87. package/dist/core/recovery/RetryStrategy.d.ts +127 -0
  88. package/dist/core/recovery/RetryStrategy.d.ts.map +1 -0
  89. package/dist/core/recovery/RetryStrategy.js +314 -0
  90. package/dist/core/recovery/RetryStrategy.js.map +1 -0
  91. package/dist/core/recovery/index.d.ts +8 -0
  92. package/dist/core/recovery/index.d.ts.map +1 -0
  93. package/dist/core/recovery/index.js +27 -0
  94. package/dist/core/recovery/index.js.map +1 -0
  95. package/dist/core/skills/DependencyResolver.d.ts +99 -0
  96. package/dist/core/skills/DependencyResolver.d.ts.map +1 -0
  97. package/dist/core/skills/DependencyResolver.js +260 -0
  98. package/dist/core/skills/DependencyResolver.js.map +1 -0
  99. package/dist/core/skills/ManifestGenerator.d.ts +114 -0
  100. package/dist/core/skills/ManifestGenerator.d.ts.map +1 -0
  101. package/dist/core/skills/ManifestGenerator.js +449 -0
  102. package/dist/core/skills/ManifestGenerator.js.map +1 -0
  103. package/dist/core/skills/index.d.ts +9 -0
  104. package/dist/core/skills/index.d.ts.map +1 -0
  105. package/dist/core/skills/index.js +24 -0
  106. package/dist/core/skills/index.js.map +1 -0
  107. package/dist/mcp/server.d.ts +9 -9
  108. package/dist/mcp/server.d.ts.map +1 -1
  109. package/dist/mcp/server.js +1 -2
  110. package/dist/mcp/server.js.map +1 -1
  111. package/dist/types/qx.d.ts +39 -7
  112. package/dist/types/qx.d.ts.map +1 -1
  113. package/dist/types/qx.js.map +1 -1
  114. package/dist/visualization/api/RestEndpoints.js +1 -1
  115. package/dist/visualization/api/RestEndpoints.js.map +1 -1
  116. package/package.json +13 -55
@@ -0,0 +1,449 @@
1
+ "use strict";
2
+ /**
3
+ * Manifest Generator for Dynamic Skill Loading
4
+ * Scans skill directories and generates/updates skills-manifest.json
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.ManifestGenerator = void 0;
41
+ exports.generateManifest = generateManifest;
42
+ exports.updateManifest = updateManifest;
43
+ exports.validateManifest = validateManifest;
44
+ const fs = __importStar(require("fs/promises"));
45
+ const path = __importStar(require("path"));
46
+ /**
47
+ * Category detection rules based on skill name patterns
48
+ */
49
+ const CATEGORY_PATTERNS = {
50
+ 'agentic-quality': 'qe-core',
51
+ 'holistic-testing': 'qe-core',
52
+ 'tdd-': 'qe-methodology',
53
+ 'context-driven': 'qe-methodology',
54
+ 'exploratory': 'qe-methodology',
55
+ 'api-testing': 'qe-specialized',
56
+ 'performance-': 'qe-specialized',
57
+ 'security-': 'qe-specialized',
58
+ 'accessibility-': 'qe-specialized',
59
+ 'mobile-': 'qe-specialized',
60
+ 'mutation-': 'qe-advanced',
61
+ 'chaos-': 'qe-advanced',
62
+ 'contract-': 'qe-advanced',
63
+ 'github-': 'integration',
64
+ 'flow-nexus': 'integration',
65
+ 'hooks-': 'advanced',
66
+ 'swarm-': 'advanced',
67
+ 'hive-mind': 'advanced',
68
+ };
69
+ /**
70
+ * Priority detection based on skill characteristics
71
+ */
72
+ const PRIORITY_KEYWORDS = {
73
+ critical: ['agentic-quality-engineering', 'holistic-testing-pact'],
74
+ high: ['tdd', 'context-driven', 'api-testing', 'security'],
75
+ medium: ['performance', 'exploratory', 'regression', 'integration'],
76
+ low: ['localization', 'compatibility', 'visual'],
77
+ };
78
+ /**
79
+ * Manifest Generator for creating and updating skill manifests
80
+ */
81
+ class ManifestGenerator {
82
+ constructor(config = {}) {
83
+ this.config = {
84
+ skillsDir: path.resolve(process.cwd(), '.claude/skills'),
85
+ outputPath: path.resolve(process.cwd(), '.claude/skills/skills-manifest.json'),
86
+ defaultPriority: 'medium',
87
+ tokensPerLine: 4, // Approximate tokens per line
88
+ ...config,
89
+ };
90
+ }
91
+ /**
92
+ * Generate manifest from skill directories
93
+ */
94
+ async generate() {
95
+ const skills = await this.scanSkillDirectories();
96
+ const categoryCounts = this.calculateCategoryCounts(skills);
97
+ const manifest = {
98
+ version: '1.1.0',
99
+ generatedAt: new Date().toISOString(),
100
+ totalSkills: skills.length,
101
+ categoryCounts,
102
+ skills,
103
+ };
104
+ await this.writeManifest(manifest);
105
+ return manifest;
106
+ }
107
+ /**
108
+ * Update existing manifest with new/changed skills
109
+ */
110
+ async update() {
111
+ let existingManifest = null;
112
+ try {
113
+ const content = await fs.readFile(this.config.outputPath, 'utf-8');
114
+ existingManifest = JSON.parse(content);
115
+ }
116
+ catch {
117
+ // No existing manifest, generate from scratch
118
+ return this.generate();
119
+ }
120
+ const currentSkills = await this.scanSkillDirectories();
121
+ // TypeScript flow analysis: existingManifest is guaranteed non-null here
122
+ // because catch block returns early via this.generate()
123
+ const existingSkillMap = new Map(existingManifest.skills.map(s => [s.id, s]));
124
+ // Merge: keep existing metadata where possible, add new skills
125
+ const mergedSkills = [];
126
+ for (const skill of currentSkills) {
127
+ const existing = existingSkillMap.get(skill.id);
128
+ if (existing) {
129
+ // Update only if file changed (check lastUpdated)
130
+ const fileStats = await this.getFileStats(skill.id);
131
+ if (fileStats && fileStats > new Date(existing.lastUpdated)) {
132
+ mergedSkills.push(skill);
133
+ }
134
+ else {
135
+ mergedSkills.push(existing);
136
+ }
137
+ }
138
+ else {
139
+ mergedSkills.push(skill);
140
+ }
141
+ }
142
+ const manifest = {
143
+ version: '1.1.0',
144
+ generatedAt: new Date().toISOString(),
145
+ totalSkills: mergedSkills.length,
146
+ categoryCounts: this.calculateCategoryCounts(mergedSkills),
147
+ skills: mergedSkills,
148
+ };
149
+ await this.writeManifest(manifest);
150
+ return manifest;
151
+ }
152
+ /**
153
+ * Validate existing manifest against actual skill files
154
+ */
155
+ async validate() {
156
+ const errors = [];
157
+ const warnings = [];
158
+ let manifest;
159
+ try {
160
+ const content = await fs.readFile(this.config.outputPath, 'utf-8');
161
+ manifest = JSON.parse(content);
162
+ }
163
+ catch (error) {
164
+ return {
165
+ valid: false,
166
+ errors: [`Cannot read manifest: ${error instanceof Error ? error.message : String(error)}`],
167
+ warnings: [],
168
+ };
169
+ }
170
+ // Check each skill exists
171
+ for (const skill of manifest.skills) {
172
+ const skillPath = path.join(this.config.skillsDir, skill.path);
173
+ try {
174
+ await fs.access(skillPath);
175
+ }
176
+ catch {
177
+ errors.push(`Skill file missing: ${skill.id} (${skill.path})`);
178
+ }
179
+ }
180
+ // Check for orphan skills (files without manifest entries)
181
+ const manifestIds = new Set(manifest.skills.map(s => s.id));
182
+ const actualSkills = await this.getSkillDirectories();
183
+ for (const skillId of actualSkills) {
184
+ if (!manifestIds.has(skillId)) {
185
+ warnings.push(`Skill not in manifest: ${skillId}`);
186
+ }
187
+ }
188
+ // Validate category counts
189
+ const actualCounts = this.calculateCategoryCounts(manifest.skills);
190
+ for (const [category, count] of Object.entries(manifest.categoryCounts)) {
191
+ if (actualCounts[category] !== count) {
192
+ warnings.push(`Category count mismatch for ${category}: manifest=${count}, actual=${actualCounts[category] || 0}`);
193
+ }
194
+ }
195
+ return {
196
+ valid: errors.length === 0,
197
+ errors,
198
+ warnings,
199
+ };
200
+ }
201
+ /**
202
+ * Scan skill directories and extract metadata
203
+ */
204
+ async scanSkillDirectories() {
205
+ const skillDirs = await this.getSkillDirectories();
206
+ const skills = [];
207
+ for (const skillId of skillDirs) {
208
+ try {
209
+ const metadata = await this.extractMetadata(skillId);
210
+ if (metadata) {
211
+ skills.push(metadata);
212
+ }
213
+ }
214
+ catch (error) {
215
+ console.warn(`Failed to extract metadata for ${skillId}: ${error}`);
216
+ }
217
+ }
218
+ // Sort by priority then name
219
+ return skills.sort((a, b) => {
220
+ const priorityOrder = { critical: 0, high: 1, medium: 2, low: 3 };
221
+ const priorityDiff = priorityOrder[a.priority] - priorityOrder[b.priority];
222
+ return priorityDiff !== 0 ? priorityDiff : a.name.localeCompare(b.name);
223
+ });
224
+ }
225
+ /**
226
+ * Get list of skill directories
227
+ */
228
+ async getSkillDirectories() {
229
+ try {
230
+ const entries = await fs.readdir(this.config.skillsDir, { withFileTypes: true });
231
+ return entries
232
+ .filter(e => e.isDirectory() && !e.name.startsWith('.'))
233
+ .map(e => e.name);
234
+ }
235
+ catch {
236
+ return [];
237
+ }
238
+ }
239
+ /**
240
+ * Extract metadata from a skill directory
241
+ */
242
+ async extractMetadata(skillId) {
243
+ const skillDir = path.join(this.config.skillsDir, skillId);
244
+ const skillFile = path.join(skillDir, 'SKILL.md');
245
+ try {
246
+ const content = await fs.readFile(skillFile, 'utf-8');
247
+ const frontmatter = this.parseFrontmatter(content);
248
+ const stats = await fs.stat(skillFile);
249
+ return {
250
+ id: skillId,
251
+ name: frontmatter.name || this.formatName(skillId),
252
+ category: this.detectCategory(skillId, frontmatter),
253
+ description: frontmatter.description || this.extractDescription(content),
254
+ keywords: this.extractKeywords(frontmatter, content),
255
+ dependencies: frontmatter.dependencies?.split(',').map((d) => d.trim()) || [],
256
+ estimatedTokens: this.estimateTokens(content),
257
+ priority: this.detectPriority(skillId, frontmatter),
258
+ path: `${skillId}/SKILL.md`,
259
+ lastUpdated: stats.mtime.toISOString(),
260
+ };
261
+ }
262
+ catch {
263
+ return null;
264
+ }
265
+ }
266
+ /**
267
+ * Parse YAML frontmatter from markdown
268
+ */
269
+ parseFrontmatter(content) {
270
+ const match = content.match(/^---\n([\s\S]*?)\n---/);
271
+ if (!match)
272
+ return {};
273
+ const frontmatter = {};
274
+ const lines = match[1].split('\n');
275
+ for (const line of lines) {
276
+ const colonIndex = line.indexOf(':');
277
+ if (colonIndex === -1)
278
+ continue;
279
+ const key = line.substring(0, colonIndex).trim();
280
+ let value = line.substring(colonIndex + 1).trim();
281
+ // Handle arrays in YAML
282
+ if (value.startsWith('[') && value.endsWith(']')) {
283
+ value = value.slice(1, -1);
284
+ frontmatter[key] = value.split(',').map(v => v.trim().replace(/['"]/g, ''));
285
+ }
286
+ else {
287
+ frontmatter[key] = value.replace(/['"]/g, '');
288
+ }
289
+ }
290
+ return frontmatter;
291
+ }
292
+ /**
293
+ * Detect category based on skill ID and frontmatter
294
+ */
295
+ detectCategory(skillId, frontmatter) {
296
+ // Prefer explicit category from frontmatter
297
+ if (frontmatter.category && this.isValidCategory(frontmatter.category)) {
298
+ return frontmatter.category;
299
+ }
300
+ // Pattern matching
301
+ for (const [pattern, category] of Object.entries(CATEGORY_PATTERNS)) {
302
+ if (skillId.includes(pattern)) {
303
+ return category;
304
+ }
305
+ }
306
+ // Default based on skill characteristics
307
+ if (skillId.includes('testing') || skillId.includes('test')) {
308
+ return 'qe-specialized';
309
+ }
310
+ return 'qe-methodology';
311
+ }
312
+ /**
313
+ * Check if category is valid
314
+ */
315
+ isValidCategory(category) {
316
+ const validCategories = [
317
+ 'qe-core', 'qe-methodology', 'qe-specialized', 'qe-advanced', 'advanced', 'integration'
318
+ ];
319
+ return validCategories.includes(category);
320
+ }
321
+ /**
322
+ * Detect priority based on skill ID and frontmatter
323
+ */
324
+ detectPriority(skillId, frontmatter) {
325
+ // Prefer explicit priority from frontmatter
326
+ if (frontmatter.priority && ['critical', 'high', 'medium', 'low'].includes(frontmatter.priority)) {
327
+ return frontmatter.priority;
328
+ }
329
+ // Keyword matching
330
+ for (const [priority, keywords] of Object.entries(PRIORITY_KEYWORDS)) {
331
+ for (const keyword of keywords) {
332
+ if (skillId.includes(keyword)) {
333
+ return priority;
334
+ }
335
+ }
336
+ }
337
+ return this.config.defaultPriority;
338
+ }
339
+ /**
340
+ * Extract description from content (first paragraph after frontmatter)
341
+ */
342
+ extractDescription(content) {
343
+ const withoutFrontmatter = content.replace(/^---\n[\s\S]*?\n---\n?/, '');
344
+ const lines = withoutFrontmatter.split('\n').filter(l => l.trim() && !l.startsWith('#'));
345
+ if (lines.length > 0) {
346
+ return lines[0].trim().substring(0, 100);
347
+ }
348
+ return 'No description available';
349
+ }
350
+ /**
351
+ * Extract keywords from frontmatter and content
352
+ */
353
+ extractKeywords(frontmatter, content) {
354
+ const keywords = new Set();
355
+ // From frontmatter tags
356
+ if (Array.isArray(frontmatter.tags)) {
357
+ frontmatter.tags.forEach((tag) => keywords.add(tag.toLowerCase()));
358
+ }
359
+ // From frontmatter keywords
360
+ if (Array.isArray(frontmatter.keywords)) {
361
+ frontmatter.keywords.forEach((kw) => keywords.add(kw.toLowerCase()));
362
+ }
363
+ // Extract from headers
364
+ const headers = content.match(/^#+\s+(.+)$/gm) || [];
365
+ headers.forEach(h => {
366
+ const text = h.replace(/^#+\s+/, '').toLowerCase();
367
+ if (text.length <= 30) {
368
+ keywords.add(text);
369
+ }
370
+ });
371
+ return Array.from(keywords).slice(0, 10);
372
+ }
373
+ /**
374
+ * Estimate token count for content
375
+ */
376
+ estimateTokens(content) {
377
+ const lines = content.split('\n').length;
378
+ return Math.ceil(lines * this.config.tokensPerLine);
379
+ }
380
+ /**
381
+ * Format skill ID as human-readable name
382
+ */
383
+ formatName(skillId) {
384
+ return skillId
385
+ .split('-')
386
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
387
+ .join(' ');
388
+ }
389
+ /**
390
+ * Calculate category counts
391
+ */
392
+ calculateCategoryCounts(skills) {
393
+ const counts = {
394
+ 'qe-core': 0,
395
+ 'qe-methodology': 0,
396
+ 'qe-specialized': 0,
397
+ 'qe-advanced': 0,
398
+ 'advanced': 0,
399
+ 'integration': 0,
400
+ };
401
+ for (const skill of skills) {
402
+ counts[skill.category]++;
403
+ }
404
+ return counts;
405
+ }
406
+ /**
407
+ * Get file modification time
408
+ */
409
+ async getFileStats(skillId) {
410
+ try {
411
+ const skillPath = path.join(this.config.skillsDir, skillId, 'SKILL.md');
412
+ const stats = await fs.stat(skillPath);
413
+ return stats.mtime;
414
+ }
415
+ catch {
416
+ return null;
417
+ }
418
+ }
419
+ /**
420
+ * Write manifest to file
421
+ */
422
+ async writeManifest(manifest) {
423
+ const content = JSON.stringify(manifest, null, 2);
424
+ await fs.writeFile(this.config.outputPath, content, 'utf-8');
425
+ }
426
+ }
427
+ exports.ManifestGenerator = ManifestGenerator;
428
+ /**
429
+ * CLI entry point for manifest generation
430
+ */
431
+ async function generateManifest(options = {}) {
432
+ const generator = new ManifestGenerator(options);
433
+ return generator.generate();
434
+ }
435
+ /**
436
+ * CLI entry point for manifest update
437
+ */
438
+ async function updateManifest(options = {}) {
439
+ const generator = new ManifestGenerator(options);
440
+ return generator.update();
441
+ }
442
+ /**
443
+ * CLI entry point for manifest validation
444
+ */
445
+ async function validateManifest(options = {}) {
446
+ const generator = new ManifestGenerator(options);
447
+ return generator.validate();
448
+ }
449
+ //# sourceMappingURL=ManifestGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManifestGenerator.js","sourceRoot":"","sources":["../../../src/core/skills/ManifestGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Skills Module - Progressive Disclosure System
3
+ * Achieves 98% token reduction by lazy-loading skills on demand
4
+ */
5
+ export { Skill, SkillMetadata, SkillManifest, SkillLoaderConfig, SkillUsageStats, SkillSearchFilter, SkillPriority, SkillCategory, } from './types.js';
6
+ export { DynamicSkillLoader, getDefaultLoader, resetDefaultLoader, } from './DynamicSkillLoader.js';
7
+ export { ManifestGenerator, ManifestGeneratorConfig, generateManifest, updateManifest, validateManifest, } from './ManifestGenerator.js';
8
+ export { DependencyResolver, DependencyResolution, DependencyNode, ResolverOptions, createDependencyResolver, visualizeDependencyTree, } from './DependencyResolver.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/skills/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,KAAK,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * Skills Module - Progressive Disclosure System
4
+ * Achieves 98% token reduction by lazy-loading skills on demand
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.visualizeDependencyTree = exports.createDependencyResolver = exports.DependencyResolver = exports.validateManifest = exports.updateManifest = exports.generateManifest = exports.ManifestGenerator = exports.resetDefaultLoader = exports.getDefaultLoader = exports.DynamicSkillLoader = void 0;
8
+ // Dynamic Skill Loader
9
+ var DynamicSkillLoader_js_1 = require("./DynamicSkillLoader.js");
10
+ Object.defineProperty(exports, "DynamicSkillLoader", { enumerable: true, get: function () { return DynamicSkillLoader_js_1.DynamicSkillLoader; } });
11
+ Object.defineProperty(exports, "getDefaultLoader", { enumerable: true, get: function () { return DynamicSkillLoader_js_1.getDefaultLoader; } });
12
+ Object.defineProperty(exports, "resetDefaultLoader", { enumerable: true, get: function () { return DynamicSkillLoader_js_1.resetDefaultLoader; } });
13
+ // Manifest Generator
14
+ var ManifestGenerator_js_1 = require("./ManifestGenerator.js");
15
+ Object.defineProperty(exports, "ManifestGenerator", { enumerable: true, get: function () { return ManifestGenerator_js_1.ManifestGenerator; } });
16
+ Object.defineProperty(exports, "generateManifest", { enumerable: true, get: function () { return ManifestGenerator_js_1.generateManifest; } });
17
+ Object.defineProperty(exports, "updateManifest", { enumerable: true, get: function () { return ManifestGenerator_js_1.updateManifest; } });
18
+ Object.defineProperty(exports, "validateManifest", { enumerable: true, get: function () { return ManifestGenerator_js_1.validateManifest; } });
19
+ // Dependency Resolver
20
+ var DependencyResolver_js_1 = require("./DependencyResolver.js");
21
+ Object.defineProperty(exports, "DependencyResolver", { enumerable: true, get: function () { return DependencyResolver_js_1.DependencyResolver; } });
22
+ Object.defineProperty(exports, "createDependencyResolver", { enumerable: true, get: function () { return DependencyResolver_js_1.createDependencyResolver; } });
23
+ Object.defineProperty(exports, "visualizeDependencyTree", { enumerable: true, get: function () { return DependencyResolver_js_1.visualizeDependencyTree; } });
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/skills/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAcH,uBAAuB;AACvB,iEAIiC;AAH/B,2HAAA,kBAAkB,OAAA;AAClB,yHAAA,gBAAgB,OAAA;AAChB,2HAAA,kBAAkB,OAAA;AAGpB,qBAAqB;AACrB,+DAMgC;AAL9B,yHAAA,iBAAiB,OAAA;AAEjB,wHAAA,gBAAgB,OAAA;AAChB,sHAAA,cAAc,OAAA;AACd,wHAAA,gBAAgB,OAAA;AAGlB,sBAAsB;AACtB,iEAOiC;AAN/B,2HAAA,kBAAkB,OAAA;AAIlB,iIAAA,wBAAwB,OAAA;AACxB,gIAAA,uBAAuB,OAAA"}
@@ -60,43 +60,43 @@ export declare class AgenticQEMCPServer {
60
60
  * Get available tools
61
61
  */
62
62
  getTools(): {
63
- [x: string]: unknown;
64
- name: string;
65
63
  inputSchema: {
66
64
  [x: string]: unknown;
67
65
  type: "object";
68
- required?: string[] | undefined;
69
66
  properties?: {
70
- [x: string]: unknown;
67
+ [x: string]: object;
71
68
  } | undefined;
69
+ required?: string[] | undefined;
72
70
  };
71
+ name: string;
73
72
  description?: string | undefined;
74
- title?: string | undefined;
75
73
  outputSchema?: {
76
74
  [x: string]: unknown;
77
75
  type: "object";
78
- required?: string[] | undefined;
79
76
  properties?: {
80
- [x: string]: unknown;
77
+ [x: string]: object;
81
78
  } | undefined;
79
+ required?: string[] | undefined;
82
80
  } | undefined;
83
81
  annotations?: {
84
- [x: string]: unknown;
85
82
  title?: string | undefined;
86
83
  readOnlyHint?: boolean | undefined;
87
84
  destructiveHint?: boolean | undefined;
88
85
  idempotentHint?: boolean | undefined;
89
86
  openWorldHint?: boolean | undefined;
90
87
  } | undefined;
88
+ execution?: {
89
+ taskSupport?: "required" | "forbidden" | "optional" | undefined;
90
+ } | undefined;
91
91
  _meta?: {
92
92
  [x: string]: unknown;
93
93
  } | undefined;
94
94
  icons?: {
95
- [x: string]: unknown;
96
95
  src: string;
97
96
  mimeType?: string | undefined;
98
97
  sizes?: string[] | undefined;
99
98
  }[] | undefined;
99
+ title?: string | undefined;
100
100
  }[];
101
101
  /**
102
102
  * Check if tool is supported
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAkGjF;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,gBAAgB,CAA+B;;IAgDvD;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuJ1B;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IAmClC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuW5B;;OAEG;IACG,KAAK,CAAC,SAAS,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIR;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGxC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAIzE;AAED;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAuB1C"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAkGjF;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,gBAAgB,CAA+B;;IA+CvD;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuJ1B;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IAmClC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuW5B;;OAEG;IACG,KAAK,CAAC,SAAS,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIR;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGxC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAIzE;AAED;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAuB1C"}
@@ -92,8 +92,7 @@ class AgenticQEMCPServer {
92
92
  constructor() {
93
93
  this.server = new index_js_1.Server({
94
94
  name: 'agentic-qe-server',
95
- version: '1.0.0',
96
- description: 'Agentic Quality Engineering Fleet MCP Server'
95
+ version: '1.0.0'
97
96
  }, {
98
97
  capabilities: {
99
98
  tools: {},