import { describe, expect, it } from 'vitest'; import { buildInitialSkillDraft, createSkillCanonicalName, } from './skill-create'; import { readFrontmatterScalar, splitSkillMarkdown } from './skill-markdown'; describe('skill creation draft', () => { it('creates a stable canonical name without exposing it to the form', () => { expect(createSkillCanonicalName('Research Assistant', 'abc123')).toBe( 'research-assistant-abc123', ); expect(createSkillCanonicalName('研究助手', 'abc123')).toBe('skill-abc123'); }); it('builds a valid initial SKILL.md package', () => { const skill = buildInitialSkillDraft({ categoryId: 8, displayName: '研究助手', visibilityScope: 'DEPT', }); const parts = splitSkillMarkdown(String(skill.skillContent)); expect(skill).toMatchObject({ categoryId: 8, description: '研究助手', displayName: '研究助手', enabled: true, publishStatus: 'DRAFT', visibilityScope: 'DEPT', }); expect(skill.name).toMatch(/^skill-[a-z0-9]{10}$/); expect(readFrontmatterScalar(parts.frontmatter, 'name')).toBe(skill.name); expect(readFrontmatterScalar(parts.frontmatter, 'description')).toBe( '研究助手', ); expect(parts.body).toContain('# Instructions'); }); });