/ src / lib / skill-save-payload.ts
skill-save-payload.ts
 1  import type { Skill } from '@/types'
 2  
 3  export type SkillScope = 'global' | 'agent'
 4  
 5  export interface SkillDraftInput {
 6    name: string
 7    filename: string
 8    description: string
 9    content: string
10    scope: SkillScope
11    agentIds: string[]
12  }
13  
14  export function buildSkillSavePayload(draft: SkillDraftInput, metadataPreview?: Partial<Skill> | null) {
15    return {
16      name: draft.name.trim() || 'Unnamed Skill',
17      filename: draft.filename.trim() || `${draft.name.trim().toLowerCase().replace(/\s+/g, '-')}.md`,
18      description: draft.description,
19      content: draft.content,
20      scope: draft.scope,
21      agentIds: draft.scope === 'agent' ? draft.agentIds : [],
22      sourceUrl: metadataPreview?.sourceUrl,
23      sourceFormat: metadataPreview?.sourceFormat,
24      author: metadataPreview?.author,
25      tags: metadataPreview?.tags,
26      version: metadataPreview?.version,
27      homepage: metadataPreview?.homepage,
28      primaryEnv: metadataPreview?.primaryEnv,
29      skillKey: metadataPreview?.skillKey,
30      always: metadataPreview?.always,
31      installOptions: metadataPreview?.installOptions,
32      skillRequirements: metadataPreview?.skillRequirements,
33      detectedEnvVars: metadataPreview?.detectedEnvVars,
34      security: metadataPreview?.security,
35      frontmatter: metadataPreview?.frontmatter,
36    }
37  }