@winspan/claude-forge 8.51.0 → 8.53.2

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 (85) hide show
  1. package/CLAUDE.md +6 -6
  2. package/dist/cli/commands/skills.d.ts.map +1 -1
  3. package/dist/cli/commands/skills.js +115 -0
  4. package/dist/cli/commands/skills.js.map +1 -1
  5. package/dist/core/constants.d.ts +2 -0
  6. package/dist/core/constants.d.ts.map +1 -1
  7. package/dist/core/constants.js +4 -0
  8. package/dist/core/constants.js.map +1 -1
  9. package/dist/daemon/hook-sync.d.ts +17 -0
  10. package/dist/daemon/hook-sync.d.ts.map +1 -0
  11. package/dist/daemon/hook-sync.js +74 -0
  12. package/dist/daemon/hook-sync.js.map +1 -0
  13. package/dist/daemon/index.d.ts.map +1 -1
  14. package/dist/daemon/index.js +21 -1
  15. package/dist/daemon/index.js.map +1 -1
  16. package/dist/daemon/skill-sync.d.ts +21 -0
  17. package/dist/daemon/skill-sync.d.ts.map +1 -0
  18. package/dist/daemon/skill-sync.js +75 -0
  19. package/dist/daemon/skill-sync.js.map +1 -0
  20. package/dist/hooks/notification.sh +1 -1
  21. package/dist/hooks/post-tool-use.sh +1 -1
  22. package/dist/hooks/pre-tool-use.sh +1 -1
  23. package/dist/hooks/stop.sh +1 -1
  24. package/dist/hooks/user-prompt-submit.sh +1 -1
  25. package/dist/skills/official/code-simplifier.md +37 -1
  26. package/dist/skills/official/find-skills.md +120 -1
  27. package/dist/skills/official/official-api-design.md +14 -1
  28. package/dist/skills/official/official-architecture-decision.md +22 -1
  29. package/dist/skills/official/official-db-schema-design.md +19 -1
  30. package/dist/skills/official/official-debug.md +9 -1
  31. package/dist/skills/official/official-pr-review.md +1 -1
  32. package/dist/skills/official/official-security-hardening.md +7 -1
  33. package/dist/skills/official/planning-with-files.md +206 -2
  34. package/dist/skills/official/ui-ux-pro-max.md +88 -1
  35. package/dist/skills/official/webapp-testing.md +85 -1
  36. package/dist/skills/registry.d.ts +1 -1
  37. package/dist/skills/registry.d.ts.map +1 -1
  38. package/dist/skills/registry.js +2 -2
  39. package/dist/skills/registry.js.map +1 -1
  40. package/dist/skills/semantic-matcher.d.ts +2 -1
  41. package/dist/skills/semantic-matcher.d.ts.map +1 -1
  42. package/dist/skills/semantic-matcher.js +6 -3
  43. package/dist/skills/semantic-matcher.js.map +1 -1
  44. package/dist/skills/upgrade-engine.d.ts +91 -0
  45. package/dist/skills/upgrade-engine.d.ts.map +1 -0
  46. package/dist/skills/upgrade-engine.js +436 -0
  47. package/dist/skills/upgrade-engine.js.map +1 -0
  48. package/dist/skills/upgrade-prompt.d.ts +20 -0
  49. package/dist/skills/upgrade-prompt.d.ts.map +1 -0
  50. package/dist/skills/upgrade-prompt.js +75 -0
  51. package/dist/skills/upgrade-prompt.js.map +1 -0
  52. package/docs/design/skill-ai-upgrade-spec-20260518-1930.md +297 -0
  53. package/docs/implementation/daemon-skill-sync-changelog-20260518-2000.md +22 -0
  54. package/docs/implementation/skill-ai-upgrade-changelog-20260518-1930.md +49 -0
  55. package/package.json +1 -1
  56. package/src/cli/commands/skills.ts +143 -0
  57. package/src/core/constants.ts +5 -0
  58. package/src/daemon/hook-sync.ts +91 -0
  59. package/src/daemon/index.ts +21 -1
  60. package/src/daemon/skill-sync.ts +88 -0
  61. package/src/hooks/notification.sh +1 -1
  62. package/src/hooks/post-tool-use.sh +1 -1
  63. package/src/hooks/pre-tool-use.sh +1 -1
  64. package/src/hooks/stop.sh +1 -1
  65. package/src/hooks/user-prompt-submit.sh +1 -1
  66. package/src/skills/official/code-simplifier.md +37 -1
  67. package/src/skills/official/find-skills.md +120 -1
  68. package/src/skills/official/official-api-design.md +14 -1
  69. package/src/skills/official/official-architecture-decision.md +22 -1
  70. package/src/skills/official/official-db-schema-design.md +19 -1
  71. package/src/skills/official/official-debug.md +9 -1
  72. package/src/skills/official/official-pr-review.md +1 -1
  73. package/src/skills/official/official-security-hardening.md +7 -1
  74. package/src/skills/official/planning-with-files.md +206 -2
  75. package/src/skills/official/ui-ux-pro-max.md +88 -1
  76. package/src/skills/official/webapp-testing.md +85 -1
  77. package/src/skills/registry.ts +2 -2
  78. package/src/skills/semantic-matcher.ts +6 -3
  79. package/src/skills/upgrade-engine.ts +541 -0
  80. package/src/skills/upgrade-prompt.ts +84 -0
  81. package/tests/unit/daemon/hook-sync.test.ts +71 -0
  82. package/tests/unit/daemon/skill-sync.test.ts +75 -0
  83. package/tests/unit/skills/upgrade-engine-parse.test.ts +138 -0
  84. package/tests/unit/skills/upgrade-engine.test.ts +401 -0
  85. package/tests/unit/skills/upgrade-prompt.test.ts +89 -0
@@ -0,0 +1,89 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { buildEvaluationPrompt } from '../../../src/skills/upgrade-prompt.js';
3
+ import type { CandidateSkill } from '../../../src/skills/upgrade-engine.js';
4
+ import type { OfficialSkill } from '../../../src/skills/official-skills.js';
5
+
6
+ const candidateMock: CandidateSkill = {
7
+ id: 'database-design',
8
+ source: 'agent-skills',
9
+ filePath: '/tmp/agent-skills/database-design/SKILL.md',
10
+ name: 'database-design',
11
+ description: 'Comprehensive database design guide with sharding strategies',
12
+ keywords: ['database', 'schema', 'migration', 'sharding'],
13
+ content: '---\nname: database-design\n---\n# Database Design\n\nContent here about schemas and migrations.',
14
+ };
15
+
16
+ const officialMock: OfficialSkill = {
17
+ name: 'official-db-schema-design',
18
+ version: '1.0.0',
19
+ description: '数据库设计方法论',
20
+ keywords: ['schema', 'database', 'sql'],
21
+ content: '---\nname: official-db-schema-design\n---\n# DB Schema Design\n\nOfficial content here.',
22
+ };
23
+
24
+ describe('buildEvaluationPrompt', () => {
25
+ it('returns an object with system and user keys', () => {
26
+ const result = buildEvaluationPrompt(candidateMock, officialMock);
27
+ expect(result).toHaveProperty('system');
28
+ expect(result).toHaveProperty('user');
29
+ });
30
+
31
+ it('system prompt contains upgrade keyword', () => {
32
+ const { system } = buildEvaluationPrompt(candidateMock, officialMock);
33
+ expect(system.toLowerCase()).toContain('upgrade');
34
+ });
35
+
36
+ it('system prompt contains merge keyword', () => {
37
+ const { system } = buildEvaluationPrompt(candidateMock, officialMock);
38
+ expect(system.toLowerCase()).toContain('merge');
39
+ });
40
+
41
+ it('system prompt contains skip keyword', () => {
42
+ const { system } = buildEvaluationPrompt(candidateMock, officialMock);
43
+ expect(system.toLowerCase()).toContain('skip');
44
+ });
45
+
46
+ it('system prompt contains JSON format requirement', () => {
47
+ const { system } = buildEvaluationPrompt(candidateMock, officialMock);
48
+ // Should mention JSON format with the required fields
49
+ expect(system).toContain('action');
50
+ expect(system).toContain('confidence');
51
+ expect(system).toContain('reasoning');
52
+ expect(system).toContain('merged_content');
53
+ });
54
+
55
+ it('user prompt contains official skill name', () => {
56
+ const { user } = buildEvaluationPrompt(candidateMock, officialMock);
57
+ expect(user).toContain('official-db-schema-design');
58
+ });
59
+
60
+ it('user prompt contains candidate skill source', () => {
61
+ const { user } = buildEvaluationPrompt(candidateMock, officialMock);
62
+ expect(user).toContain('agent-skills');
63
+ });
64
+
65
+ it('user prompt contains candidate skill id', () => {
66
+ const { user } = buildEvaluationPrompt(candidateMock, officialMock);
67
+ expect(user).toContain('database-design');
68
+ });
69
+
70
+ it('user prompt truncates long content to ~2000 chars', () => {
71
+ const longContent = 'x'.repeat(5000);
72
+ const candidate: CandidateSkill = { ...candidateMock, content: longContent };
73
+ const { user } = buildEvaluationPrompt(candidate, officialMock);
74
+ // Content should be truncated - user prompt should not contain 5000 x's
75
+ expect(user).not.toContain('x'.repeat(3000));
76
+ // But should contain truncation marker
77
+ expect(user).toContain('[content truncated]');
78
+ });
79
+
80
+ it('user prompt includes official skill keywords', () => {
81
+ const { user } = buildEvaluationPrompt(candidateMock, officialMock);
82
+ expect(user).toContain('schema');
83
+ });
84
+
85
+ it('user prompt includes JSON instruction', () => {
86
+ const { user } = buildEvaluationPrompt(candidateMock, officialMock);
87
+ expect(user.toLowerCase()).toContain('json');
88
+ });
89
+ });