@dzhechkov/harness-core 0.3.12 → 0.3.14

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/dist/benchmark.js CHANGED
@@ -61,8 +61,8 @@ export function benchmarkSkill(skillDir, skillId) {
61
61
  // S4: trust_tier field
62
62
  const hasTrustTier = /^trust_tier:\s/m.test(content);
63
63
  checks.push({ id: 'S4', name: 'trust_tier field', passed: hasTrustTier });
64
- // S5: Protocol/procedure section
65
- const hasProtocol = /^##\s+(Protocol|Procedure|Steps|When to use)/mi.test(content);
64
+ // S5: Protocol/procedure section (EN + RU)
65
+ const hasProtocol = /^##\s+(Protocol|Procedure|Steps|When to use|Протокол|Процедура|Шаги)/mi.test(content);
66
66
  checks.push({ id: 'S5', name: 'protocol/procedure section', passed: hasProtocol });
67
67
  // S6: Output section or schema reference
68
68
  const hasOutput = /^##\s+Output/mi.test(content) || /schema_path/m.test(content);
@@ -73,8 +73,8 @@ export function benchmarkSkill(skillDir, skillId) {
73
73
  // S8: scripts/validate-config.json exists
74
74
  const hasValidator = existsSync(join(skillDir, 'scripts', 'validate-config.json'));
75
75
  checks.push({ id: 'S8', name: 'scripts/validate-config.json exists', passed: hasValidator });
76
- // S9: When to use section
77
- const hasWhenToUse = /^##\s+(When to use|When To Activate|Use this skill when)/mi.test(content);
76
+ // S9: When to use section (EN + RU)
77
+ const hasWhenToUse = /^##\s+(When to use|When To Activate|Use this skill when|Когда использовать|Когда применять)/mi.test(content);
78
78
  checks.push({ id: 'S9', name: 'when-to-use section', passed: hasWhenToUse });
79
79
  // S10: No TODO/PLACEHOLDER markers
80
80
  const hasTodos = /\[TODO\]|\[PLACEHOLDER\]|\[TBD\]/i.test(content);
@@ -88,11 +88,11 @@ export function benchmarkSkill(skillDir, skillId) {
88
88
  id: 'S12', name: 'content depth (>20 lines)', passed: lineCount > 20,
89
89
  detail: `${lineCount} lines`,
90
90
  });
91
- // S13: Examples section
92
- const hasExamples = /^##\s+(Examples|Example|Quick Start)/mi.test(content);
91
+ // S13: Examples section (EN + RU)
92
+ const hasExamples = /^##\s+(Examples|Example|Quick Start|Примеры|Пример)/mi.test(content);
93
93
  checks.push({ id: 'S13', name: 'examples section', passed: hasExamples });
94
- // S14: Anti-patterns or self-check section
95
- const hasAntiPatterns = /^##\s+(Anti.?[Pp]atterns|Self.?check|Self-check)/mi.test(content);
94
+ // S14: Anti-patterns or self-check section (EN + RU)
95
+ const hasAntiPatterns = /^##\s+(Anti.?[Pp]atterns|Self.?check|Self-check|Антипаттерны|Самопроверка)/mi.test(content);
96
96
  checks.push({ id: 'S14', name: 'anti-patterns or self-check', passed: hasAntiPatterns });
97
97
  const passed = checks.filter((c) => c.passed).length;
98
98
  const passRate = Math.round((passed / checks.length) * 100);
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../src/benchmark.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../src/benchmark.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -19,6 +19,8 @@ export { buildRegistry, searchRegistry, filterByCategory } from './registry.js';
19
19
  export { recommend } from './recommend.js';
20
20
  export { pretrain } from './pretrain.js';
21
21
  export { runSetup } from './setup.js';
22
+ export { generatePlugin } from './plugin.js';
23
+ export type { PluginManifest } from './plugin.js';
22
24
  export type { SetupOptions, SetupResult, SetupStep } from './setup.js';
23
25
  export type { PretrainResult, DetectedTech } from './pretrain.js';
24
26
  export type { RecommendationReport, SkillRecommendation } from './recommend.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,yDAAyD;AACzD,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAClH,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClE,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChF,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACjE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC7D,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,yDAAyD;AACzD,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAClH,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClE,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChF,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACjE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC7D,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -17,6 +17,7 @@ export { buildRegistry, searchRegistry, filterByCategory } from './registry.js';
17
17
  export { recommend } from './recommend.js';
18
18
  export { pretrain } from './pretrain.js';
19
19
  export { runSetup } from './setup.js';
20
+ export { generatePlugin } from './plugin.js';
20
21
  export { discoverPackages, publishPackages } from './publish.js';
21
22
  export { fetchAllDownloads } from './downloads.js';
22
23
  export { discoverInstalled, checkUpgrades } from './upgrade.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,yDAAyD;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAE5C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAElH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,yDAAyD;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAE5C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAElH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAK7C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Claude Plugin format generator — creates .claude-plugin/ from harness inventory.
3
+ *
4
+ * Generates plugin.json and marketplace.json compatible with the Claude
5
+ * plugin ecosystem (pi-claude-marketplace, skill-hub, anthropics/claude-plugins-official).
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import type { Registry } from './registry.js';
10
+ /** Plugin manifest. */
11
+ export interface PluginManifest {
12
+ readonly name: string;
13
+ readonly displayName: string;
14
+ readonly description: string;
15
+ readonly version: string;
16
+ readonly repository: string;
17
+ readonly license: string;
18
+ readonly keywords: readonly string[];
19
+ readonly skillPacks: readonly {
20
+ name: string;
21
+ skills: number;
22
+ description: string;
23
+ }[];
24
+ readonly totalSkills: number;
25
+ }
26
+ /** Generate .claude-plugin/ directory from registry. */
27
+ export declare function generatePlugin(projectRoot: string, registry: Registry, opts?: {
28
+ version?: string | undefined;
29
+ repository?: string | undefined;
30
+ }): {
31
+ pluginJsonPath: string;
32
+ marketplaceJsonPath: string;
33
+ };
34
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,uBAAuB;AACvB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,wDAAwD;AACxD,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,EAClB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAO,GAC3E;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,CAoEzD"}
package/dist/plugin.js ADDED
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Claude Plugin format generator — creates .claude-plugin/ from harness inventory.
3
+ *
4
+ * Generates plugin.json and marketplace.json compatible with the Claude
5
+ * plugin ecosystem (pi-claude-marketplace, skill-hub, anthropics/claude-plugins-official).
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import { existsSync, mkdirSync, writeFileSync, readdirSync } from 'node:fs';
10
+ import { join } from 'node:path';
11
+ /** Generate .claude-plugin/ directory from registry. */
12
+ export function generatePlugin(projectRoot, registry, opts = {}) {
13
+ const pluginDir = join(projectRoot, '.claude-plugin');
14
+ mkdirSync(pluginDir, { recursive: true });
15
+ // Build skill pack info from registry
16
+ const packMap = new Map();
17
+ for (const entry of registry.entries) {
18
+ const count = packMap.get(entry.pack) ?? 0;
19
+ packMap.set(entry.pack, count + 1);
20
+ }
21
+ const packDescriptions = {
22
+ 'skills-devops': 'Infrastructure, CI/CD, security, testing, APIs, databases',
23
+ 'skills-mcp': 'MCP server integrations — search, email, productivity, memory',
24
+ 'skills-web3': 'DeFi, blockchain, crypto — quicknode, zerion, symbiosis',
25
+ 'skills-qe': 'Quality engineering — test generation, coverage, chaos',
26
+ 'skills-meta': 'Development process — explore, feature-adr, knowledge-extractor',
27
+ };
28
+ const skillPacks = [...packMap.entries()].map(([name, count]) => ({
29
+ name: name.replace('skills-', ''),
30
+ skills: count,
31
+ description: packDescriptions[name] ?? `${count} skills`,
32
+ }));
33
+ const pluginJson = {
34
+ name: 'dz-harness-hub',
35
+ displayName: 'DZ Harness Hub',
36
+ description: `Cross-platform AI skill harness — ${registry.totalSkills} skills across ${registry.totalPacks} packs for 5 agent platforms.`,
37
+ version: opts.version ?? '0.1.0',
38
+ repository: opts.repository ?? 'https://github.com/djd1m/dz-harness-hub',
39
+ license: 'MIT',
40
+ keywords: ['agent-skills', 'agentskills.io', 'cross-platform', 'claude-plugin', ...registry.categories],
41
+ skillPacks,
42
+ totalSkills: registry.totalSkills,
43
+ };
44
+ const marketplaceJson = {
45
+ name: 'dz-harness-hub',
46
+ description: pluginJson.description,
47
+ owner: { name: 'dzhechko' },
48
+ plugins: [
49
+ {
50
+ name: 'dz-harness-hub',
51
+ displayName: 'DZ Harness Hub — Full Suite',
52
+ source: './',
53
+ description: pluginJson.description,
54
+ repository: pluginJson.repository,
55
+ license: 'MIT',
56
+ keywords: pluginJson.keywords,
57
+ },
58
+ ...skillPacks.map((pack) => ({
59
+ name: `dz-${pack.name}`,
60
+ displayName: `DZ ${pack.name.charAt(0).toUpperCase() + pack.name.slice(1)} Skills`,
61
+ source: `packages/@dzhechkov/skills-${pack.name}`,
62
+ description: `${pack.skills} ${pack.name} skills — ${pack.description}`,
63
+ keywords: [pack.name],
64
+ })),
65
+ ],
66
+ };
67
+ const pluginJsonPath = join(pluginDir, 'plugin.json');
68
+ const marketplaceJsonPath = join(pluginDir, 'marketplace.json');
69
+ writeFileSync(pluginJsonPath, JSON.stringify(pluginJson, null, 2));
70
+ writeFileSync(marketplaceJsonPath, JSON.stringify(marketplaceJson, null, 2));
71
+ return { pluginJsonPath, marketplaceJsonPath };
72
+ }
73
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -36,12 +36,21 @@ export interface PresetRecommendation {
36
36
  readonly coverage: number;
37
37
  readonly matchedSkills: string[];
38
38
  }
39
+ /** A recommended npx toolkit (full pipeline). */
40
+ export interface ToolkitRecommendation {
41
+ readonly name: string;
42
+ readonly npmPackage: string;
43
+ readonly install: string;
44
+ readonly description: string;
45
+ readonly reason: string;
46
+ }
39
47
  /** Full recommendation report. */
40
48
  export interface RecommendationReport {
41
49
  readonly task: string;
42
50
  readonly topics: readonly string[];
43
51
  readonly skills: readonly SkillRecommendation[];
44
52
  readonly presets: readonly PresetRecommendation[];
53
+ readonly toolkits: readonly ToolkitRecommendation[];
45
54
  readonly commands: readonly CommandRecommendation[];
46
55
  readonly installCommand: string;
47
56
  readonly plan: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"recommend.d.ts","sourceRoot":"","sources":["../src/recommend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAiB,MAAM,eAAe,CAAC;AAE7D,gDAAgD;AAChD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,iCAAiC;AACjC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,4BAA4B;AAC5B,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;CAClC;AAED,kCAAkC;AAClC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AA0FD,wDAAwD;AACxD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,oBAAoB,CAiEhF"}
1
+ {"version":3,"file":"recommend.d.ts","sourceRoot":"","sources":["../src/recommend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAiB,MAAM,eAAe,CAAC;AAE7D,gDAAgD;AAChD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,iCAAiC;AACjC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,4BAA4B;AAC5B,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;CAClC;AAED,iDAAiD;AACjD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,kCAAkC;AAClC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AA2GD,wDAAwD;AACxD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,oBAAoB,CAqFhF"}
package/dist/recommend.js CHANGED
@@ -38,6 +38,11 @@ const TOPIC_KEYWORDS = {
38
38
  'research': ['research', 'explore', 'casarium', 'competitor', 'market', 'analysis'],
39
39
  'docs': ['documentation', 'docs', 'context7', 'library', 'reference'],
40
40
  'scrape': ['scrape', 'crawl', 'extract', 'jina', 'content', 'markdown'],
41
+ 'design-thinking': ['design thinking', 'user research', 'prototype', 'empathize', 'jtbd', 'jobs to be done', 'cjm', 'customer journey', 'vsm', 'value stream', 'hadi', 'lean canvas', 'usability', 'product discovery', 'mvp'],
42
+ 'product': ['product', 'feature', 'roadmap', 'prd', 'requirements', 'sprint', 'backlog'],
43
+ 'academic': ['thesis', 'dissertation', 'defense', 'ВКР', 'защита', 'ГЭК', 'рецензия', 'academic'],
44
+ 'quality': ['quality', 'qa', 'qe', 'quality engineering', 'test strategy', 'coverage'],
45
+ 'health': ['health', 'medical', 'clinical', 'diagnosis', 'drug', 'lab', 'patient'],
41
46
  };
42
47
  /** Command knowledge base — what each command does and when to use it. */
43
48
  const COMMAND_KB = [
@@ -62,12 +67,23 @@ const PRESET_KB = [
62
67
  { name: 'web3', skills: ['quicknode', 'zerion', 'symbiosis', 'ens-primary-name', 'erc-8004', 'veil', 'neynar', 'trails', 'bankr', 'siwa', 'hydrex', 'quotient'], topics: ['web3', 'blockchain', 'defi', 'crypto'] },
63
68
  { name: 'mcp', skills: ['brave-search', 'exa-search', 'gmail', 'google-sheets', 'google-calendar', 'google-tasks', 'clickup', 'reddit', 'jina-reader', 'context7'], topics: ['search', 'email', 'productivity', 'social', 'docs', 'scrape'] },
64
69
  { name: 'qe-engineer', skills: ['qe-test-generation', 'qe-test-execution', 'qe-coverage-analysis', 'qe-quality-assessment', 'qe-requirements-validation', 'qe-defect-intelligence', 'qe-iterative-loop', 'qe-chaos-resilience'], topics: ['testing', 'quality', 'coverage'] },
65
- { name: 'meta', skills: ['explore', 'feature-adr', 'knowledge-extractor'], topics: ['research', 'explore'] },
66
- { name: 'keysarium', skills: ['explore', 'feature-adr', 'knowledge-extractor', 'problem-solver-enhanced', 'analyst-manual-full'], topics: ['research', 'explore', 'analysis'] },
67
- { name: 'health', skills: ['drug-interaction-checker', 'clinical-diagnostic-reasoning', 'lab-results'], topics: ['health', 'medical', 'clinical'] },
68
- { name: 'bto', skills: ['bto'], topics: ['benchmark', 'quality', 'test'] },
69
- { name: 'p-replicator', skills: ['explore', 'reverse-engineering-unicorn', 'sparc-prd-mini'], topics: ['product', 'replicate', 'prd'] },
70
- { name: 'feature-adr', skills: ['explore', 'feature-adr', 'knowledge-extractor', 'problem-solver-enhanced', 'frontend-design'], topics: ['feature', 'adr', 'architecture'] },
70
+ { name: 'meta', skills: ['explore', 'goap-research-ed25519', 'problem-solver-enhanced', 'design-thinking', 'feature-adr', 'knowledge-extractor'], topics: ['research', 'explore', 'design-thinking', 'product'] },
71
+ { name: 'keysarium', skills: ['explore', 'feature-adr', 'knowledge-extractor', 'problem-solver-enhanced', 'analyst-manual-full', 'reverse-engineering-unicorn', 'presentation-storyteller'], topics: ['research', 'explore', 'product'] },
72
+ { name: 'health', skills: ['drug-interaction-checker', 'clinical-diagnostic-reasoning', 'lab-results'], topics: ['health'] },
73
+ { name: 'bto', skills: ['bto'], topics: ['quality'] },
74
+ { name: 'p-replicator', skills: ['explore', 'reverse-engineering-unicorn', 'sparc-prd-mini'], topics: ['product'] },
75
+ { name: 'feature-adr', skills: ['explore', 'feature-adr', 'knowledge-extractor', 'problem-solver-enhanced', 'frontend-design'], topics: ['product', 'feature'] },
76
+ { name: 'academic', skills: ['dissertation-review', 'question-generator', 'document-checker', 'defense-evaluator', 'answer-assessor'], topics: ['academic'] },
77
+ ];
78
+ /** Toolkit knowledge base — npx packages with full pipelines. */
79
+ const TOOLKIT_KB = [
80
+ { name: 'keysarium', npmPackage: '@dzhechkov/keysarium', install: 'npx @dzhechkov/keysarium init', description: '7-phase AI research toolkit with commands, governance, and memory', topics: ['research', 'explore', 'product'] },
81
+ { name: 'p-replicator', npmPackage: '@dzhechkov/p-replicator', install: 'npx @dzhechkov/p-replicator init', description: 'AI product development — /replicate pipeline with SPARC PRD', topics: ['product'] },
82
+ { name: 'health-advisor', npmPackage: '@dzhechkov/health-advisor', install: 'npx @dzhechkov/health-advisor init', description: 'Medical AI toolkit (25 skills)', topics: ['health'] },
83
+ { name: 'skills-bto', npmPackage: '@dzhechkov/skills-bto', install: 'npx @dzhechkov/skills-bto init', description: 'Build-Benchmark-Test-Optimize pipeline', topics: ['quality'] },
84
+ { name: 'skills-feature-adr', npmPackage: '@dzhechkov/skills-feature-adr', install: 'npx @dzhechkov/skills-feature-adr init', description: '11-step feature pipeline with ADR, DDD, QE', topics: ['product', 'feature'] },
85
+ { name: 'agentic-qe', npmPackage: 'agentic-qe', install: 'npm install -g agentic-qe && aqe init --auto', description: 'Full QE platform — 94 skills + 55 agents + MCP server', topics: ['quality', 'testing'] },
86
+ { name: 'skills-analyst-manual', npmPackage: '@dzhechkov/skills-analyst-manual', install: 'npx @dzhechkov/skills-analyst-manual init', description: '3-phase analyst composite (explore → research → solve)', topics: ['research', 'product'] },
71
87
  ];
72
88
  /** Extract topics from a task description. */
73
89
  function extractTopics(task) {
@@ -132,11 +148,27 @@ export function recommend(task, registry) {
132
148
  .filter((c) => c.topics.some((t) => topics.includes(t)) || c.command === 'dz init')
133
149
  .slice(0, 6)
134
150
  .map((c) => ({ command: c.command, description: c.description, example: c.example, phase: c.phase }));
151
+ // Score toolkits — recommend when task needs a full pipeline
152
+ const toolkits = TOOLKIT_KB
153
+ .map((tk) => {
154
+ const matchedTopics = topics.filter((t) => tk.topics.includes(t));
155
+ if (matchedTopics.length === 0)
156
+ return null;
157
+ return {
158
+ name: tk.name,
159
+ npmPackage: tk.npmPackage,
160
+ install: tk.install,
161
+ description: tk.description,
162
+ reason: `Matches: ${matchedTopics.join(', ')}. Full pipeline with commands + governance.`,
163
+ };
164
+ })
165
+ .filter((tk) => tk !== null)
166
+ .slice(0, 3);
135
167
  // Generate install command
136
168
  const topPreset = presets[0];
137
169
  const topSkillIds = skills.slice(0, 5).map((s) => s.id);
138
170
  const installCommand = topPreset
139
- ? `dz init --target claude-code --preset ${topPreset.name}`
171
+ ? `dz setup --target claude-code --preset ${topPreset.name}`
140
172
  : `dz init --target claude-code --select ${topSkillIds.join(',')}`;
141
173
  // Generate step-by-step plan
142
174
  const plan = [];
@@ -145,16 +177,20 @@ export function recommend(task, registry) {
145
177
  if (skills.length > 0) {
146
178
  plan.push(`3. Key skills: ${skills.slice(0, 5).map((s) => s.id).join(', ')}`);
147
179
  }
180
+ if (toolkits.length > 0 && toolkits[0]) {
181
+ plan.push(`4. Full pipeline: ${toolkits[0].install}`);
182
+ plan.push(` (${toolkits[0].description})`);
183
+ }
148
184
  if (topics.includes('testing') || topics.includes('security')) {
149
- plan.push(`4. Quality: dz benchmark --all (L0 gate) → /bto-test (L1/L2 judges)`);
185
+ plan.push(`${plan.length + 1}. Quality: dz benchmark --all (L0 gate) → /bto-test (L1/L2 judges)`);
150
186
  }
151
187
  if (topics.includes('ci-cd')) {
152
- plan.push(`4. CI/CD: Use github-actions skill for pipeline setup`);
188
+ plan.push(`${plan.length + 1}. CI/CD: Use github-actions skill for pipeline setup`);
153
189
  }
154
190
  if (topics.includes('monitoring') || topics.includes('incident')) {
155
- plan.push(`5. Ops: observability skill for monitoring + incident-response for runbooks`);
191
+ plan.push(`${plan.length + 1}. Ops: observability skill for monitoring + incident-response for runbooks`);
156
192
  }
157
193
  plan.push(`${plan.length + 1}. Use your agent normally — skills auto-activate on matching tasks`);
158
- return { task, topics, skills, presets, commands, installCommand, plan };
194
+ return { task, topics, skills, presets, toolkits, commands, installCommand, plan };
159
195
  }
160
196
  //# sourceMappingURL=recommend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recommend.js","sourceRoot":"","sources":["../src/recommend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recommend.js","sourceRoot":"","sources":["../src/recommend.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dzhechkov/harness-core",
3
- "version": "0.3.12",
3
+ "version": "0.3.14",
4
4
  "description": "Shared harness logic - skill loading, additive apply, and the init/sync/verify/doctor operations.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -23,14 +23,21 @@
23
23
  "src",
24
24
  "README.md"
25
25
  ],
26
+ "scripts": {
27
+ "build": "tsc -p tsconfig.json",
28
+ "test": "vitest run",
29
+ "test:watch": "vitest",
30
+ "typecheck": "tsc -p tsconfig.json --noEmit",
31
+ "lint": "tsc -p tsconfig.json --noEmit"
32
+ },
26
33
  "dependencies": {
27
- "yaml": "^2.0.0",
28
- "@dzhechkov/adapter-claude": "0.2.0",
29
- "@dzhechkov/adapter-openclaude": "0.1.0",
30
- "@dzhechkov/adapter-opencode": "0.2.0",
31
- "@dzhechkov/core": "0.2.0",
32
- "@dzhechkov/adapter-codex": "0.2.0",
33
- "@dzhechkov/adapter-hermes": "0.2.0"
34
+ "@dzhechkov/adapter-claude": "workspace:*",
35
+ "@dzhechkov/adapter-codex": "workspace:*",
36
+ "@dzhechkov/adapter-hermes": "workspace:*",
37
+ "@dzhechkov/adapter-openclaude": "workspace:*",
38
+ "@dzhechkov/adapter-opencode": "workspace:*",
39
+ "@dzhechkov/core": "workspace:*",
40
+ "yaml": "^2.0.0"
34
41
  },
35
42
  "devDependencies": {
36
43
  "@types/node": "^25.6.0",
@@ -48,12 +55,5 @@
48
55
  "url": "https://github.com/djd1m/dz-harness-hub.git",
49
56
  "directory": "packages/@dzhechkov/harness-core"
50
57
  },
51
- "homepage": "https://github.com/djd1m/dz-harness-hub/tree/main/packages/@dzhechkov/harness-core#readme",
52
- "scripts": {
53
- "build": "tsc -p tsconfig.json",
54
- "test": "vitest run",
55
- "test:watch": "vitest",
56
- "typecheck": "tsc -p tsconfig.json --noEmit",
57
- "lint": "tsc -p tsconfig.json --noEmit"
58
- }
59
- }
58
+ "homepage": "https://github.com/djd1m/dz-harness-hub/tree/main/packages/@dzhechkov/harness-core#readme"
59
+ }
package/src/benchmark.ts CHANGED
@@ -107,8 +107,8 @@ export function benchmarkSkill(skillDir: string, skillId: string): BenchmarkScor
107
107
  const hasTrustTier = /^trust_tier:\s/m.test(content);
108
108
  checks.push({ id: 'S4', name: 'trust_tier field', passed: hasTrustTier });
109
109
 
110
- // S5: Protocol/procedure section
111
- const hasProtocol = /^##\s+(Protocol|Procedure|Steps|When to use)/mi.test(content);
110
+ // S5: Protocol/procedure section (EN + RU)
111
+ const hasProtocol = /^##\s+(Protocol|Procedure|Steps|When to use|Протокол|Процедура|Шаги)/mi.test(content);
112
112
  checks.push({ id: 'S5', name: 'protocol/procedure section', passed: hasProtocol });
113
113
 
114
114
  // S6: Output section or schema reference
@@ -123,8 +123,8 @@ export function benchmarkSkill(skillDir: string, skillId: string): BenchmarkScor
123
123
  const hasValidator = existsSync(join(skillDir, 'scripts', 'validate-config.json'));
124
124
  checks.push({ id: 'S8', name: 'scripts/validate-config.json exists', passed: hasValidator });
125
125
 
126
- // S9: When to use section
127
- const hasWhenToUse = /^##\s+(When to use|When To Activate|Use this skill when)/mi.test(content);
126
+ // S9: When to use section (EN + RU)
127
+ const hasWhenToUse = /^##\s+(When to use|When To Activate|Use this skill when|Когда использовать|Когда применять)/mi.test(content);
128
128
  checks.push({ id: 'S9', name: 'when-to-use section', passed: hasWhenToUse });
129
129
 
130
130
  // S10: No TODO/PLACEHOLDER markers
@@ -142,12 +142,12 @@ export function benchmarkSkill(skillDir: string, skillId: string): BenchmarkScor
142
142
  detail: `${lineCount} lines`,
143
143
  });
144
144
 
145
- // S13: Examples section
146
- const hasExamples = /^##\s+(Examples|Example|Quick Start)/mi.test(content);
145
+ // S13: Examples section (EN + RU)
146
+ const hasExamples = /^##\s+(Examples|Example|Quick Start|Примеры|Пример)/mi.test(content);
147
147
  checks.push({ id: 'S13', name: 'examples section', passed: hasExamples });
148
148
 
149
- // S14: Anti-patterns or self-check section
150
- const hasAntiPatterns = /^##\s+(Anti.?[Pp]atterns|Self.?check|Self-check)/mi.test(content);
149
+ // S14: Anti-patterns or self-check section (EN + RU)
150
+ const hasAntiPatterns = /^##\s+(Anti.?[Pp]atterns|Self.?check|Self-check|Антипаттерны|Самопроверка)/mi.test(content);
151
151
  checks.push({ id: 'S14', name: 'anti-patterns or self-check', passed: hasAntiPatterns });
152
152
 
153
153
  const passed = checks.filter((c) => c.passed).length;
package/src/index.ts CHANGED
@@ -21,6 +21,8 @@ export { buildRegistry, searchRegistry, filterByCategory } from './registry.js';
21
21
  export { recommend } from './recommend.js';
22
22
  export { pretrain } from './pretrain.js';
23
23
  export { runSetup } from './setup.js';
24
+ export { generatePlugin } from './plugin.js';
25
+ export type { PluginManifest } from './plugin.js';
24
26
  export type { SetupOptions, SetupResult, SetupStep } from './setup.js';
25
27
  export type { PretrainResult, DetectedTech } from './pretrain.js';
26
28
  export type { RecommendationReport, SkillRecommendation } from './recommend.js';
package/src/plugin.ts ADDED
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Claude Plugin format generator — creates .claude-plugin/ from harness inventory.
3
+ *
4
+ * Generates plugin.json and marketplace.json compatible with the Claude
5
+ * plugin ecosystem (pi-claude-marketplace, skill-hub, anthropics/claude-plugins-official).
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+
10
+ import { existsSync, mkdirSync, writeFileSync, readdirSync } from 'node:fs';
11
+ import { join } from 'node:path';
12
+
13
+ import type { Registry } from './registry.js';
14
+
15
+ /** Plugin manifest. */
16
+ export interface PluginManifest {
17
+ readonly name: string;
18
+ readonly displayName: string;
19
+ readonly description: string;
20
+ readonly version: string;
21
+ readonly repository: string;
22
+ readonly license: string;
23
+ readonly keywords: readonly string[];
24
+ readonly skillPacks: readonly { name: string; skills: number; description: string }[];
25
+ readonly totalSkills: number;
26
+ }
27
+
28
+ /** Generate .claude-plugin/ directory from registry. */
29
+ export function generatePlugin(
30
+ projectRoot: string,
31
+ registry: Registry,
32
+ opts: { version?: string | undefined; repository?: string | undefined } = {},
33
+ ): { pluginJsonPath: string; marketplaceJsonPath: string } {
34
+ const pluginDir = join(projectRoot, '.claude-plugin');
35
+ mkdirSync(pluginDir, { recursive: true });
36
+
37
+ // Build skill pack info from registry
38
+ const packMap = new Map<string, number>();
39
+ for (const entry of registry.entries) {
40
+ const count = packMap.get(entry.pack) ?? 0;
41
+ packMap.set(entry.pack, count + 1);
42
+ }
43
+
44
+ const packDescriptions: Record<string, string> = {
45
+ 'skills-devops': 'Infrastructure, CI/CD, security, testing, APIs, databases',
46
+ 'skills-mcp': 'MCP server integrations — search, email, productivity, memory',
47
+ 'skills-web3': 'DeFi, blockchain, crypto — quicknode, zerion, symbiosis',
48
+ 'skills-qe': 'Quality engineering — test generation, coverage, chaos',
49
+ 'skills-meta': 'Development process — explore, feature-adr, knowledge-extractor',
50
+ };
51
+
52
+ const skillPacks = [...packMap.entries()].map(([name, count]) => ({
53
+ name: name.replace('skills-', ''),
54
+ skills: count,
55
+ description: packDescriptions[name] ?? `${count} skills`,
56
+ }));
57
+
58
+ const pluginJson = {
59
+ name: 'dz-harness-hub',
60
+ displayName: 'DZ Harness Hub',
61
+ description: `Cross-platform AI skill harness — ${registry.totalSkills} skills across ${registry.totalPacks} packs for 5 agent platforms.`,
62
+ version: opts.version ?? '0.1.0',
63
+ repository: opts.repository ?? 'https://github.com/djd1m/dz-harness-hub',
64
+ license: 'MIT',
65
+ keywords: ['agent-skills', 'agentskills.io', 'cross-platform', 'claude-plugin', ...registry.categories],
66
+ skillPacks,
67
+ totalSkills: registry.totalSkills,
68
+ };
69
+
70
+ const marketplaceJson = {
71
+ name: 'dz-harness-hub',
72
+ description: pluginJson.description,
73
+ owner: { name: 'dzhechko' },
74
+ plugins: [
75
+ {
76
+ name: 'dz-harness-hub',
77
+ displayName: 'DZ Harness Hub — Full Suite',
78
+ source: './',
79
+ description: pluginJson.description,
80
+ repository: pluginJson.repository,
81
+ license: 'MIT',
82
+ keywords: pluginJson.keywords,
83
+ },
84
+ ...skillPacks.map((pack) => ({
85
+ name: `dz-${pack.name}`,
86
+ displayName: `DZ ${pack.name.charAt(0).toUpperCase() + pack.name.slice(1)} Skills`,
87
+ source: `packages/@dzhechkov/skills-${pack.name}`,
88
+ description: `${pack.skills} ${pack.name} skills — ${pack.description}`,
89
+ keywords: [pack.name],
90
+ })),
91
+ ],
92
+ };
93
+
94
+ const pluginJsonPath = join(pluginDir, 'plugin.json');
95
+ const marketplaceJsonPath = join(pluginDir, 'marketplace.json');
96
+
97
+ writeFileSync(pluginJsonPath, JSON.stringify(pluginJson, null, 2));
98
+ writeFileSync(marketplaceJsonPath, JSON.stringify(marketplaceJson, null, 2));
99
+
100
+ return { pluginJsonPath, marketplaceJsonPath };
101
+ }
package/src/recommend.ts CHANGED
@@ -41,12 +41,22 @@ export interface PresetRecommendation {
41
41
  readonly matchedSkills: string[];
42
42
  }
43
43
 
44
+ /** A recommended npx toolkit (full pipeline). */
45
+ export interface ToolkitRecommendation {
46
+ readonly name: string;
47
+ readonly npmPackage: string;
48
+ readonly install: string;
49
+ readonly description: string;
50
+ readonly reason: string;
51
+ }
52
+
44
53
  /** Full recommendation report. */
45
54
  export interface RecommendationReport {
46
55
  readonly task: string;
47
56
  readonly topics: readonly string[];
48
57
  readonly skills: readonly SkillRecommendation[];
49
58
  readonly presets: readonly PresetRecommendation[];
59
+ readonly toolkits: readonly ToolkitRecommendation[];
50
60
  readonly commands: readonly CommandRecommendation[];
51
61
  readonly installCommand: string;
52
62
  readonly plan: readonly string[];
@@ -78,6 +88,11 @@ const TOPIC_KEYWORDS: Record<string, string[]> = {
78
88
  'research': ['research', 'explore', 'casarium', 'competitor', 'market', 'analysis'],
79
89
  'docs': ['documentation', 'docs', 'context7', 'library', 'reference'],
80
90
  'scrape': ['scrape', 'crawl', 'extract', 'jina', 'content', 'markdown'],
91
+ 'design-thinking': ['design thinking', 'user research', 'prototype', 'empathize', 'jtbd', 'jobs to be done', 'cjm', 'customer journey', 'vsm', 'value stream', 'hadi', 'lean canvas', 'usability', 'product discovery', 'mvp'],
92
+ 'product': ['product', 'feature', 'roadmap', 'prd', 'requirements', 'sprint', 'backlog'],
93
+ 'academic': ['thesis', 'dissertation', 'defense', 'ВКР', 'защита', 'ГЭК', 'рецензия', 'academic'],
94
+ 'quality': ['quality', 'qa', 'qe', 'quality engineering', 'test strategy', 'coverage'],
95
+ 'health': ['health', 'medical', 'clinical', 'diagnosis', 'drug', 'lab', 'patient'],
81
96
  };
82
97
 
83
98
  /** Command knowledge base — what each command does and when to use it. */
@@ -104,12 +119,24 @@ const PRESET_KB: { name: string; skills: string[]; topics: string[] }[] = [
104
119
  { name: 'web3', skills: ['quicknode', 'zerion', 'symbiosis', 'ens-primary-name', 'erc-8004', 'veil', 'neynar', 'trails', 'bankr', 'siwa', 'hydrex', 'quotient'], topics: ['web3', 'blockchain', 'defi', 'crypto'] },
105
120
  { name: 'mcp', skills: ['brave-search', 'exa-search', 'gmail', 'google-sheets', 'google-calendar', 'google-tasks', 'clickup', 'reddit', 'jina-reader', 'context7'], topics: ['search', 'email', 'productivity', 'social', 'docs', 'scrape'] },
106
121
  { name: 'qe-engineer', skills: ['qe-test-generation', 'qe-test-execution', 'qe-coverage-analysis', 'qe-quality-assessment', 'qe-requirements-validation', 'qe-defect-intelligence', 'qe-iterative-loop', 'qe-chaos-resilience'], topics: ['testing', 'quality', 'coverage'] },
107
- { name: 'meta', skills: ['explore', 'feature-adr', 'knowledge-extractor'], topics: ['research', 'explore'] },
108
- { name: 'keysarium', skills: ['explore', 'feature-adr', 'knowledge-extractor', 'problem-solver-enhanced', 'analyst-manual-full'], topics: ['research', 'explore', 'analysis'] },
109
- { name: 'health', skills: ['drug-interaction-checker', 'clinical-diagnostic-reasoning', 'lab-results'], topics: ['health', 'medical', 'clinical'] },
110
- { name: 'bto', skills: ['bto'], topics: ['benchmark', 'quality', 'test'] },
111
- { name: 'p-replicator', skills: ['explore', 'reverse-engineering-unicorn', 'sparc-prd-mini'], topics: ['product', 'replicate', 'prd'] },
112
- { name: 'feature-adr', skills: ['explore', 'feature-adr', 'knowledge-extractor', 'problem-solver-enhanced', 'frontend-design'], topics: ['feature', 'adr', 'architecture'] },
122
+ { name: 'meta', skills: ['explore', 'goap-research-ed25519', 'problem-solver-enhanced', 'design-thinking', 'feature-adr', 'knowledge-extractor'], topics: ['research', 'explore', 'design-thinking', 'product'] },
123
+ { name: 'keysarium', skills: ['explore', 'feature-adr', 'knowledge-extractor', 'problem-solver-enhanced', 'analyst-manual-full', 'reverse-engineering-unicorn', 'presentation-storyteller'], topics: ['research', 'explore', 'product'] },
124
+ { name: 'health', skills: ['drug-interaction-checker', 'clinical-diagnostic-reasoning', 'lab-results'], topics: ['health'] },
125
+ { name: 'bto', skills: ['bto'], topics: ['quality'] },
126
+ { name: 'p-replicator', skills: ['explore', 'reverse-engineering-unicorn', 'sparc-prd-mini'], topics: ['product'] },
127
+ { name: 'feature-adr', skills: ['explore', 'feature-adr', 'knowledge-extractor', 'problem-solver-enhanced', 'frontend-design'], topics: ['product', 'feature'] },
128
+ { name: 'academic', skills: ['dissertation-review', 'question-generator', 'document-checker', 'defense-evaluator', 'answer-assessor'], topics: ['academic'] },
129
+ ];
130
+
131
+ /** Toolkit knowledge base — npx packages with full pipelines. */
132
+ const TOOLKIT_KB: { name: string; npmPackage: string; install: string; description: string; topics: string[] }[] = [
133
+ { name: 'keysarium', npmPackage: '@dzhechkov/keysarium', install: 'npx @dzhechkov/keysarium init', description: '7-phase AI research toolkit with commands, governance, and memory', topics: ['research', 'explore', 'product'] },
134
+ { name: 'p-replicator', npmPackage: '@dzhechkov/p-replicator', install: 'npx @dzhechkov/p-replicator init', description: 'AI product development — /replicate pipeline with SPARC PRD', topics: ['product'] },
135
+ { name: 'health-advisor', npmPackage: '@dzhechkov/health-advisor', install: 'npx @dzhechkov/health-advisor init', description: 'Medical AI toolkit (25 skills)', topics: ['health'] },
136
+ { name: 'skills-bto', npmPackage: '@dzhechkov/skills-bto', install: 'npx @dzhechkov/skills-bto init', description: 'Build-Benchmark-Test-Optimize pipeline', topics: ['quality'] },
137
+ { name: 'skills-feature-adr', npmPackage: '@dzhechkov/skills-feature-adr', install: 'npx @dzhechkov/skills-feature-adr init', description: '11-step feature pipeline with ADR, DDD, QE', topics: ['product', 'feature'] },
138
+ { name: 'agentic-qe', npmPackage: 'agentic-qe', install: 'npm install -g agentic-qe && aqe init --auto', description: 'Full QE platform — 94 skills + 55 agents + MCP server', topics: ['quality', 'testing'] },
139
+ { name: 'skills-analyst-manual', npmPackage: '@dzhechkov/skills-analyst-manual', install: 'npx @dzhechkov/skills-analyst-manual init', description: '3-phase analyst composite (explore → research → solve)', topics: ['research', 'product'] },
113
140
  ];
114
141
 
115
142
  /** Extract topics from a task description. */
@@ -180,11 +207,27 @@ export function recommend(task: string, registry: Registry): RecommendationRepor
180
207
  .slice(0, 6)
181
208
  .map((c) => ({ command: c.command, description: c.description, example: c.example, phase: c.phase }));
182
209
 
210
+ // Score toolkits — recommend when task needs a full pipeline
211
+ const toolkits: ToolkitRecommendation[] = TOOLKIT_KB
212
+ .map((tk) => {
213
+ const matchedTopics = topics.filter((t) => tk.topics.includes(t));
214
+ if (matchedTopics.length === 0) return null;
215
+ return {
216
+ name: tk.name,
217
+ npmPackage: tk.npmPackage,
218
+ install: tk.install,
219
+ description: tk.description,
220
+ reason: `Matches: ${matchedTopics.join(', ')}. Full pipeline with commands + governance.`,
221
+ };
222
+ })
223
+ .filter((tk): tk is ToolkitRecommendation => tk !== null)
224
+ .slice(0, 3);
225
+
183
226
  // Generate install command
184
227
  const topPreset = presets[0];
185
228
  const topSkillIds = skills.slice(0, 5).map((s) => s.id);
186
229
  const installCommand = topPreset
187
- ? `dz init --target claude-code --preset ${topPreset.name}`
230
+ ? `dz setup --target claude-code --preset ${topPreset.name}`
188
231
  : `dz init --target claude-code --select ${topSkillIds.join(',')}`;
189
232
 
190
233
  // Generate step-by-step plan
@@ -194,16 +237,20 @@ export function recommend(task: string, registry: Registry): RecommendationRepor
194
237
  if (skills.length > 0) {
195
238
  plan.push(`3. Key skills: ${skills.slice(0, 5).map((s) => s.id).join(', ')}`);
196
239
  }
240
+ if (toolkits.length > 0 && toolkits[0]) {
241
+ plan.push(`4. Full pipeline: ${toolkits[0].install}`);
242
+ plan.push(` (${toolkits[0].description})`);
243
+ }
197
244
  if (topics.includes('testing') || topics.includes('security')) {
198
- plan.push(`4. Quality: dz benchmark --all (L0 gate) → /bto-test (L1/L2 judges)`);
245
+ plan.push(`${plan.length + 1}. Quality: dz benchmark --all (L0 gate) → /bto-test (L1/L2 judges)`);
199
246
  }
200
247
  if (topics.includes('ci-cd')) {
201
- plan.push(`4. CI/CD: Use github-actions skill for pipeline setup`);
248
+ plan.push(`${plan.length + 1}. CI/CD: Use github-actions skill for pipeline setup`);
202
249
  }
203
250
  if (topics.includes('monitoring') || topics.includes('incident')) {
204
- plan.push(`5. Ops: observability skill for monitoring + incident-response for runbooks`);
251
+ plan.push(`${plan.length + 1}. Ops: observability skill for monitoring + incident-response for runbooks`);
205
252
  }
206
253
  plan.push(`${plan.length + 1}. Use your agent normally — skills auto-activate on matching tasks`);
207
254
 
208
- return { task, topics, skills, presets, commands, installCommand, plan };
255
+ return { task, topics, skills, presets, toolkits, commands, installCommand, plan };
209
256
  }