import { z } from "zod" export const SkillSourceSchema = z.union([ z.string(), z.object({ path: z.string(), recursive: z.boolean().optional(), glob: z.string().optional(), }), ]) export const SkillDefinitionSchema = z.object({ description: z.string().optional(), template: z.string().optional(), from: z.string().optional(), model: z.string().optional(), agent: z.string().optional(), subtask: z.boolean().optional(), "argument-hint": z.string().optional(), license: z.string().optional(), compatibility: z.string().optional(), metadata: z.record(z.string(), z.unknown()).optional(), "allowed-tools": z.array(z.string()).optional(), disable: z.boolean().optional(), }) export const SkillEntrySchema = z.union([z.boolean(), SkillDefinitionSchema]) export const SkillsConfigSchema = z.union([ z.array(z.string()), z .record(z.string(), SkillEntrySchema) .and( z .object({ sources: z.array(SkillSourceSchema).optional(), enable: z.array(z.string()).optional(), disable: z.array(z.string()).optional(), }) .partial() ), ]) export type SkillsConfig = z.infer export type SkillDefinition = z.infer