agentic-qe 1.9.4 → 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.
- package/.claude/agents/qe-api-contract-validator.md +95 -1336
- package/.claude/agents/qe-chaos-engineer.md +152 -1211
- package/.claude/agents/qe-code-complexity.md +144 -707
- package/.claude/agents/qe-coverage-analyzer.md +147 -743
- package/.claude/agents/qe-deployment-readiness.md +143 -1496
- package/.claude/agents/qe-flaky-test-hunter.md +132 -1529
- package/.claude/agents/qe-fleet-commander.md +12 -12
- package/.claude/agents/qe-performance-tester.md +150 -886
- package/.claude/agents/qe-production-intelligence.md +155 -1396
- package/.claude/agents/qe-quality-analyzer.md +6 -6
- package/.claude/agents/qe-quality-gate.md +151 -648
- package/.claude/agents/qe-regression-risk-analyzer.md +132 -1150
- package/.claude/agents/qe-requirements-validator.md +149 -932
- package/.claude/agents/qe-security-scanner.md +157 -797
- package/.claude/agents/qe-test-data-architect.md +96 -1365
- package/.claude/agents/qe-test-executor.md +8 -8
- package/.claude/agents/qe-test-generator.md +145 -1540
- package/.claude/agents/qe-visual-tester.md +153 -1257
- package/.claude/agents/qx-partner.md +248 -0
- package/.claude/agents/subagents/qe-code-reviewer.md +40 -136
- package/.claude/agents/subagents/qe-coverage-gap-analyzer.md +40 -480
- package/.claude/agents/subagents/qe-data-generator.md +41 -125
- package/.claude/agents/subagents/qe-flaky-investigator.md +55 -411
- package/.claude/agents/subagents/qe-integration-tester.md +53 -141
- package/.claude/agents/subagents/qe-performance-validator.md +54 -130
- package/.claude/agents/subagents/qe-security-auditor.md +56 -114
- package/.claude/agents/subagents/qe-test-data-architect-sub.md +57 -548
- package/.claude/agents/subagents/qe-test-implementer.md +58 -551
- package/.claude/agents/subagents/qe-test-refactorer.md +65 -722
- package/.claude/agents/subagents/qe-test-writer.md +63 -726
- package/.claude/skills/accessibility-testing/SKILL.md +144 -692
- package/.claude/skills/agentic-quality-engineering/SKILL.md +176 -529
- package/.claude/skills/api-testing-patterns/SKILL.md +180 -560
- package/.claude/skills/brutal-honesty-review/SKILL.md +113 -603
- package/.claude/skills/bug-reporting-excellence/SKILL.md +116 -517
- package/.claude/skills/chaos-engineering-resilience/SKILL.md +127 -72
- package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +209 -404
- package/.claude/skills/code-review-quality/SKILL.md +158 -608
- package/.claude/skills/compatibility-testing/SKILL.md +148 -38
- package/.claude/skills/compliance-testing/SKILL.md +132 -63
- package/.claude/skills/consultancy-practices/SKILL.md +114 -446
- package/.claude/skills/context-driven-testing/SKILL.md +117 -381
- package/.claude/skills/contract-testing/SKILL.md +176 -141
- package/.claude/skills/database-testing/SKILL.md +137 -130
- package/.claude/skills/exploratory-testing-advanced/SKILL.md +160 -629
- package/.claude/skills/holistic-testing-pact/SKILL.md +140 -188
- package/.claude/skills/localization-testing/SKILL.md +145 -33
- package/.claude/skills/mobile-testing/SKILL.md +132 -448
- package/.claude/skills/mutation-testing/SKILL.md +147 -41
- package/.claude/skills/performance-testing/SKILL.md +200 -546
- package/.claude/skills/quality-metrics/SKILL.md +164 -519
- package/.claude/skills/refactoring-patterns/SKILL.md +132 -699
- package/.claude/skills/regression-testing/SKILL.md +120 -926
- package/.claude/skills/risk-based-testing/SKILL.md +157 -660
- package/.claude/skills/security-testing/SKILL.md +199 -538
- package/.claude/skills/sherlock-review/SKILL.md +163 -699
- package/.claude/skills/shift-left-testing/SKILL.md +161 -465
- package/.claude/skills/shift-right-testing/SKILL.md +161 -519
- package/.claude/skills/six-thinking-hats/SKILL.md +175 -1110
- package/.claude/skills/skills-manifest.json +683 -0
- package/.claude/skills/tdd-london-chicago/SKILL.md +131 -448
- package/.claude/skills/technical-writing/SKILL.md +103 -154
- package/.claude/skills/test-automation-strategy/SKILL.md +166 -772
- package/.claude/skills/test-data-management/SKILL.md +126 -910
- package/.claude/skills/test-design-techniques/SKILL.md +179 -89
- package/.claude/skills/test-environment-management/SKILL.md +136 -91
- package/.claude/skills/test-reporting-analytics/SKILL.md +169 -92
- package/.claude/skills/testability-scoring/README.md +71 -0
- package/.claude/skills/testability-scoring/SKILL.md +245 -0
- package/.claude/skills/testability-scoring/resources/templates/config.template.js +84 -0
- package/.claude/skills/testability-scoring/resources/templates/testability-scoring.spec.template.js +532 -0
- package/.claude/skills/testability-scoring/scripts/generate-html-report.js +1007 -0
- package/.claude/skills/testability-scoring/scripts/run-assessment.sh +70 -0
- package/.claude/skills/visual-testing-advanced/SKILL.md +155 -78
- package/.claude/skills/xp-practices/SKILL.md +151 -587
- package/CHANGELOG.md +110 -0
- package/README.md +55 -21
- package/dist/agents/QXPartnerAgent.d.ts +146 -0
- package/dist/agents/QXPartnerAgent.d.ts.map +1 -0
- package/dist/agents/QXPartnerAgent.js +1831 -0
- package/dist/agents/QXPartnerAgent.js.map +1 -0
- package/dist/agents/index.d.ts +1 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +82 -2
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.js +34 -31
- package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
- package/dist/cli/commands/debug/agent.d.ts.map +1 -1
- package/dist/cli/commands/debug/agent.js +19 -6
- package/dist/cli/commands/debug/agent.js.map +1 -1
- package/dist/cli/commands/debug/health-check.js +20 -7
- package/dist/cli/commands/debug/health-check.js.map +1 -1
- package/dist/cli/commands/init-claude-md-template.d.ts +1 -0
- package/dist/cli/commands/init-claude-md-template.d.ts.map +1 -1
- package/dist/cli/commands/init-claude-md-template.js +18 -3
- package/dist/cli/commands/init-claude-md-template.js.map +1 -1
- package/dist/cli/commands/workflow/cancel.d.ts.map +1 -1
- package/dist/cli/commands/workflow/cancel.js +4 -3
- package/dist/cli/commands/workflow/cancel.js.map +1 -1
- package/dist/cli/commands/workflow/list.d.ts.map +1 -1
- package/dist/cli/commands/workflow/list.js +4 -3
- package/dist/cli/commands/workflow/list.js.map +1 -1
- package/dist/cli/commands/workflow/pause.d.ts.map +1 -1
- package/dist/cli/commands/workflow/pause.js +4 -3
- package/dist/cli/commands/workflow/pause.js.map +1 -1
- package/dist/cli/init/claude-config.d.ts.map +1 -1
- package/dist/cli/init/claude-config.js +3 -8
- package/dist/cli/init/claude-config.js.map +1 -1
- package/dist/cli/init/claude-md.d.ts.map +1 -1
- package/dist/cli/init/claude-md.js +44 -2
- package/dist/cli/init/claude-md.js.map +1 -1
- package/dist/cli/init/database-init.js +1 -1
- package/dist/cli/init/index.d.ts.map +1 -1
- package/dist/cli/init/index.js +13 -6
- package/dist/cli/init/index.js.map +1 -1
- package/dist/cli/init/skills.d.ts.map +1 -1
- package/dist/cli/init/skills.js +2 -1
- package/dist/cli/init/skills.js.map +1 -1
- package/dist/core/SwarmCoordinator.d.ts +180 -0
- package/dist/core/SwarmCoordinator.d.ts.map +1 -0
- package/dist/core/SwarmCoordinator.js +473 -0
- package/dist/core/SwarmCoordinator.js.map +1 -0
- package/dist/core/memory/AgentDBIntegration.d.ts +24 -6
- package/dist/core/memory/AgentDBIntegration.d.ts.map +1 -1
- package/dist/core/memory/AgentDBIntegration.js +66 -10
- package/dist/core/memory/AgentDBIntegration.js.map +1 -1
- package/dist/core/memory/UnifiedMemoryCoordinator.d.ts +341 -0
- package/dist/core/memory/UnifiedMemoryCoordinator.d.ts.map +1 -0
- package/dist/core/memory/UnifiedMemoryCoordinator.js +986 -0
- package/dist/core/memory/UnifiedMemoryCoordinator.js.map +1 -0
- package/dist/core/memory/index.d.ts +5 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +23 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/core/metrics/MetricsAggregator.d.ts +228 -0
- package/dist/core/metrics/MetricsAggregator.d.ts.map +1 -0
- package/dist/core/metrics/MetricsAggregator.js +482 -0
- package/dist/core/metrics/MetricsAggregator.js.map +1 -0
- package/dist/core/metrics/index.d.ts +5 -0
- package/dist/core/metrics/index.d.ts.map +1 -0
- package/dist/core/metrics/index.js +11 -0
- package/dist/core/metrics/index.js.map +1 -0
- package/dist/core/optimization/SwarmOptimizer.d.ts +190 -0
- package/dist/core/optimization/SwarmOptimizer.d.ts.map +1 -0
- package/dist/core/optimization/SwarmOptimizer.js +648 -0
- package/dist/core/optimization/SwarmOptimizer.js.map +1 -0
- package/dist/core/optimization/index.d.ts +9 -0
- package/dist/core/optimization/index.d.ts.map +1 -0
- package/dist/core/optimization/index.js +25 -0
- package/dist/core/optimization/index.js.map +1 -0
- package/dist/core/optimization/types.d.ts +53 -0
- package/dist/core/optimization/types.d.ts.map +1 -0
- package/dist/core/optimization/types.js +6 -0
- package/dist/core/optimization/types.js.map +1 -0
- package/dist/core/orchestration/AdaptiveScheduler.d.ts +190 -0
- package/dist/core/orchestration/AdaptiveScheduler.d.ts.map +1 -0
- package/dist/core/orchestration/AdaptiveScheduler.js +460 -0
- package/dist/core/orchestration/AdaptiveScheduler.js.map +1 -0
- package/dist/core/orchestration/PriorityQueue.d.ts +54 -0
- package/dist/core/orchestration/PriorityQueue.d.ts.map +1 -0
- package/dist/core/orchestration/PriorityQueue.js +122 -0
- package/dist/core/orchestration/PriorityQueue.js.map +1 -0
- package/dist/core/orchestration/WorkflowOrchestrator.d.ts +189 -0
- package/dist/core/orchestration/WorkflowOrchestrator.d.ts.map +1 -0
- package/dist/core/orchestration/WorkflowOrchestrator.js +845 -0
- package/dist/core/orchestration/WorkflowOrchestrator.js.map +1 -0
- package/dist/core/orchestration/index.d.ts +7 -0
- package/dist/core/orchestration/index.d.ts.map +1 -0
- package/dist/core/orchestration/index.js +11 -0
- package/dist/core/orchestration/index.js.map +1 -0
- package/dist/core/orchestration/types.d.ts +96 -0
- package/dist/core/orchestration/types.d.ts.map +1 -0
- package/dist/core/orchestration/types.js +6 -0
- package/dist/core/orchestration/types.js.map +1 -0
- package/dist/core/recovery/CircuitBreaker.d.ts +176 -0
- package/dist/core/recovery/CircuitBreaker.d.ts.map +1 -0
- package/dist/core/recovery/CircuitBreaker.js +382 -0
- package/dist/core/recovery/CircuitBreaker.js.map +1 -0
- package/dist/core/recovery/RecoveryOrchestrator.d.ts +186 -0
- package/dist/core/recovery/RecoveryOrchestrator.d.ts.map +1 -0
- package/dist/core/recovery/RecoveryOrchestrator.js +476 -0
- package/dist/core/recovery/RecoveryOrchestrator.js.map +1 -0
- package/dist/core/recovery/RetryStrategy.d.ts +127 -0
- package/dist/core/recovery/RetryStrategy.d.ts.map +1 -0
- package/dist/core/recovery/RetryStrategy.js +314 -0
- package/dist/core/recovery/RetryStrategy.js.map +1 -0
- package/dist/core/recovery/index.d.ts +8 -0
- package/dist/core/recovery/index.d.ts.map +1 -0
- package/dist/core/recovery/index.js +27 -0
- package/dist/core/recovery/index.js.map +1 -0
- package/dist/core/skills/DependencyResolver.d.ts +99 -0
- package/dist/core/skills/DependencyResolver.d.ts.map +1 -0
- package/dist/core/skills/DependencyResolver.js +260 -0
- package/dist/core/skills/DependencyResolver.js.map +1 -0
- package/dist/core/skills/DynamicSkillLoader.d.ts +96 -0
- package/dist/core/skills/DynamicSkillLoader.d.ts.map +1 -0
- package/dist/core/skills/DynamicSkillLoader.js +353 -0
- package/dist/core/skills/DynamicSkillLoader.js.map +1 -0
- package/dist/core/skills/ManifestGenerator.d.ts +114 -0
- package/dist/core/skills/ManifestGenerator.d.ts.map +1 -0
- package/dist/core/skills/ManifestGenerator.js +449 -0
- package/dist/core/skills/ManifestGenerator.js.map +1 -0
- package/dist/core/skills/index.d.ts +9 -0
- package/dist/core/skills/index.d.ts.map +1 -0
- package/dist/core/skills/index.js +24 -0
- package/dist/core/skills/index.js.map +1 -0
- package/dist/core/skills/types.d.ts +118 -0
- package/dist/core/skills/types.d.ts.map +1 -0
- package/dist/core/skills/types.js +7 -0
- package/dist/core/skills/types.js.map +1 -0
- package/dist/core/transport/QUICTransport.d.ts +320 -0
- package/dist/core/transport/QUICTransport.d.ts.map +1 -0
- package/dist/core/transport/QUICTransport.js +711 -0
- package/dist/core/transport/QUICTransport.js.map +1 -0
- package/dist/core/transport/index.d.ts +40 -0
- package/dist/core/transport/index.d.ts.map +1 -0
- package/dist/core/transport/index.js +46 -0
- package/dist/core/transport/index.js.map +1 -0
- package/dist/core/transport/quic-loader.d.ts +123 -0
- package/dist/core/transport/quic-loader.d.ts.map +1 -0
- package/dist/core/transport/quic-loader.js +293 -0
- package/dist/core/transport/quic-loader.js.map +1 -0
- package/dist/core/transport/quic.d.ts +154 -0
- package/dist/core/transport/quic.d.ts.map +1 -0
- package/dist/core/transport/quic.js +214 -0
- package/dist/core/transport/quic.js.map +1 -0
- package/dist/mcp/server.d.ts +9 -9
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +1 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
- package/dist/mcp/services/AgentRegistry.js +4 -1
- package/dist/mcp/services/AgentRegistry.js.map +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/qx.d.ts +429 -0
- package/dist/types/qx.d.ts.map +1 -0
- package/dist/types/qx.js +71 -0
- package/dist/types/qx.js.map +1 -0
- package/dist/visualization/api/RestEndpoints.js +2 -2
- package/dist/visualization/api/RestEndpoints.js.map +1 -1
- package/dist/visualization/api/WebSocketServer.d.ts +44 -0
- package/dist/visualization/api/WebSocketServer.d.ts.map +1 -1
- package/dist/visualization/api/WebSocketServer.js +144 -23
- package/dist/visualization/api/WebSocketServer.js.map +1 -1
- package/dist/visualization/core/DataTransformer.d.ts +10 -0
- package/dist/visualization/core/DataTransformer.d.ts.map +1 -1
- package/dist/visualization/core/DataTransformer.js +60 -5
- package/dist/visualization/core/DataTransformer.js.map +1 -1
- package/dist/visualization/emit-event.d.ts +75 -0
- package/dist/visualization/emit-event.d.ts.map +1 -0
- package/dist/visualization/emit-event.js +213 -0
- package/dist/visualization/emit-event.js.map +1 -0
- package/dist/visualization/index.d.ts +1 -0
- package/dist/visualization/index.d.ts.map +1 -1
- package/dist/visualization/index.js +7 -1
- package/dist/visualization/index.js.map +1 -1
- package/docs/reference/skills.md +63 -1
- package/package.json +16 -58
|
@@ -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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progressive Disclosure System for Skill Management
|
|
3
|
+
* Achieves 98% token reduction by lazy-loading skills on demand
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Skill priority levels for loading strategy
|
|
7
|
+
*/
|
|
8
|
+
export type SkillPriority = 'critical' | 'high' | 'medium' | 'low';
|
|
9
|
+
/**
|
|
10
|
+
* Skill categories for organization and discovery
|
|
11
|
+
*/
|
|
12
|
+
export type SkillCategory = 'qe-core' | 'qe-methodology' | 'qe-specialized' | 'qe-advanced' | 'advanced' | 'integration';
|
|
13
|
+
/**
|
|
14
|
+
* Lightweight metadata for skill discovery without loading full content
|
|
15
|
+
* Reduces initialization tokens from ~50,000 to ~1,000 (98% reduction)
|
|
16
|
+
*/
|
|
17
|
+
export interface SkillMetadata {
|
|
18
|
+
/** Unique skill identifier (matches directory name) */
|
|
19
|
+
id: string;
|
|
20
|
+
/** Human-readable skill name */
|
|
21
|
+
name: string;
|
|
22
|
+
/** Category for organization and filtering */
|
|
23
|
+
category: SkillCategory;
|
|
24
|
+
/** Short description (<100 chars) for quick reference */
|
|
25
|
+
description: string;
|
|
26
|
+
/** Keywords for semantic search and discovery */
|
|
27
|
+
keywords: string[];
|
|
28
|
+
/** Other skills this skill depends on (lazy-loaded together) */
|
|
29
|
+
dependencies?: string[];
|
|
30
|
+
/** Estimated token count for full skill content */
|
|
31
|
+
estimatedTokens: number;
|
|
32
|
+
/** Loading priority (critical skills preloaded on init) */
|
|
33
|
+
priority: SkillPriority;
|
|
34
|
+
/** File path relative to .claude/skills/ */
|
|
35
|
+
path: string;
|
|
36
|
+
/** Last updated timestamp */
|
|
37
|
+
lastUpdated: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Full skill content (loaded on demand)
|
|
41
|
+
*/
|
|
42
|
+
export interface Skill {
|
|
43
|
+
/** Metadata (duplicated for convenience) */
|
|
44
|
+
metadata: SkillMetadata;
|
|
45
|
+
/** Full markdown content */
|
|
46
|
+
content: string;
|
|
47
|
+
/** Parsed frontmatter from SKILL.md */
|
|
48
|
+
frontmatter: {
|
|
49
|
+
name: string;
|
|
50
|
+
description: string;
|
|
51
|
+
[key: string]: any;
|
|
52
|
+
};
|
|
53
|
+
/** Timestamp when loaded into memory */
|
|
54
|
+
loadedAt: Date;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Manifest containing all skill metadata
|
|
58
|
+
*/
|
|
59
|
+
export interface SkillManifest {
|
|
60
|
+
/** Manifest version for compatibility checking */
|
|
61
|
+
version: string;
|
|
62
|
+
/** Generation timestamp */
|
|
63
|
+
generatedAt: string;
|
|
64
|
+
/** Total number of skills */
|
|
65
|
+
totalSkills: number;
|
|
66
|
+
/** Skills by category for quick filtering */
|
|
67
|
+
categoryCounts: Record<SkillCategory, number>;
|
|
68
|
+
/** All skill metadata (lightweight) */
|
|
69
|
+
skills: SkillMetadata[];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Skill loader configuration
|
|
73
|
+
*/
|
|
74
|
+
export interface SkillLoaderConfig {
|
|
75
|
+
/** Path to skills directory */
|
|
76
|
+
skillsDir: string;
|
|
77
|
+
/** Path to manifest file */
|
|
78
|
+
manifestPath: string;
|
|
79
|
+
/** LRU cache size (number of skills to keep in memory) */
|
|
80
|
+
cacheSize: number;
|
|
81
|
+
/** Cache TTL in milliseconds (0 = no expiry) */
|
|
82
|
+
cacheTTL: number;
|
|
83
|
+
/** Preload critical skills on initialization */
|
|
84
|
+
preloadCritical: boolean;
|
|
85
|
+
/** Enable usage analytics for optimization */
|
|
86
|
+
enableAnalytics: boolean;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Skill usage statistics for optimization
|
|
90
|
+
*/
|
|
91
|
+
export interface SkillUsageStats {
|
|
92
|
+
/** Skill ID */
|
|
93
|
+
skillId: string;
|
|
94
|
+
/** Number of times loaded */
|
|
95
|
+
loadCount: number;
|
|
96
|
+
/** Last load timestamp */
|
|
97
|
+
lastLoaded: Date;
|
|
98
|
+
/** Average time to load (ms) */
|
|
99
|
+
avgLoadTime: number;
|
|
100
|
+
/** Agents that use this skill */
|
|
101
|
+
usedByAgents: string[];
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Search filter for skill discovery
|
|
105
|
+
*/
|
|
106
|
+
export interface SkillSearchFilter {
|
|
107
|
+
/** Filter by category */
|
|
108
|
+
category?: SkillCategory;
|
|
109
|
+
/** Filter by priority */
|
|
110
|
+
priority?: SkillPriority;
|
|
111
|
+
/** Keyword search */
|
|
112
|
+
keyword?: string;
|
|
113
|
+
/** Full-text search in description */
|
|
114
|
+
query?: string;
|
|
115
|
+
/** Filter by dependencies */
|
|
116
|
+
hasDependencies?: boolean;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/skills/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,gBAAgB,GAChB,gBAAgB,GAChB,aAAa,GACb,UAAU,GACV,aAAa,CAAC;AAElB;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,EAAE,EAAE,MAAM,CAAC;IAEX,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IAEb,8CAA8C;IAC9C,QAAQ,EAAE,aAAa,CAAC;IAExB,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IAEpB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,mDAAmD;IACnD,eAAe,EAAE,MAAM,CAAC;IAExB,2DAA2D;IAC3D,QAAQ,EAAE,aAAa,CAAC;IAExB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IAEb,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,4CAA4C;IAC5C,QAAQ,EAAE,aAAa,CAAC;IAExB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAEhB,uCAAuC;IACvC,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;IAEF,wCAAwC;IACxC,QAAQ,EAAE,IAAI,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAEhB,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IAEpB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IAEpB,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAE9C,uCAAuC;IACvC,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAElB,4BAA4B;IAC5B,YAAY,EAAE,MAAM,CAAC;IAErB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAElB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IAEjB,gDAAgD;IAChD,eAAe,EAAE,OAAO,CAAC;IAEzB,8CAA8C;IAC9C,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAEhB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAElB,0BAA0B;IAC1B,UAAU,EAAE,IAAI,CAAC;IAEjB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IAEpB,iCAAiC;IACjC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yBAAyB;IACzB,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEzB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEzB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,6BAA6B;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/skills/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|