/ src / lib / skill-save-payload.test.ts
skill-save-payload.test.ts
 1  import assert from 'node:assert/strict'
 2  import test from 'node:test'
 3  
 4  import { buildSkillSavePayload } from './skill-save-payload'
 5  
 6  test('buildSkillSavePayload preserves imported skill metadata when saving', () => {
 7    const payload = buildSkillSavePayload({
 8      name: 'GitHub Sync',
 9      filename: 'github-sync.md',
10      description: 'Sync GitHub issues into tasks.',
11      content: '# Sync issues',
12      scope: 'agent',
13      agentIds: ['agent-1'],
14    }, {
15      sourceUrl: 'https://example.com/SKILL.md',
16      sourceFormat: 'openclaw',
17      author: 'Codex',
18      tags: ['github', 'tasks'],
19      version: '1.2.3',
20      homepage: 'https://example.com/github-sync',
21      primaryEnv: 'GITHUB_TOKEN',
22      skillKey: 'github-sync',
23      always: true,
24      installOptions: [{ kind: 'brew', label: 'gh', bins: ['gh'] }],
25      skillRequirements: { env: ['GITHUB_TOKEN'] },
26      detectedEnvVars: ['GITHUB_TOKEN'],
27      security: { level: 'medium', notes: ['Review install steps.'] },
28      frontmatter: { name: 'github-sync', metadata: { openclaw: { primaryEnv: 'GITHUB_TOKEN' } } },
29    })
30  
31    assert.equal(payload.sourceFormat, 'openclaw')
32    assert.equal(payload.version, '1.2.3')
33    assert.equal(payload.primaryEnv, 'GITHUB_TOKEN')
34    assert.equal(payload.skillKey, 'github-sync')
35    assert.deepEqual(payload.agentIds, ['agent-1'])
36    assert.deepEqual(payload.skillRequirements, { env: ['GITHUB_TOKEN'] })
37    assert.deepEqual(payload.security, { level: 'medium', notes: ['Review install steps.'] })
38    assert.deepEqual(payload.frontmatter, { name: 'github-sync', metadata: { openclaw: { primaryEnv: 'GITHUB_TOKEN' } } })
39  })