feat: add skills system for extensible capability packages
Implement a three-tier skill system (bundled/managed/workspace) that extends Flynn's abilities via SKILL.md instructions injected into the system prompt. - SkillManifest/Skill types with requirements gating (OS, binaries, env) - Loader: discovers skills from directories, validates manifests, checks system requirements, infers manifest from SKILL.md if missing - SkillRegistry: holds skills, generates system prompt additions, supports override by name (workspace > managed > bundled) - SkillInstaller: copies/removes skills in managed directory with upgrade support - Config: add skills.workspace_dir, managed_dir, bundled_dir options - Daemon: loads all skills at startup, injects available skill instructions into the system prompt - Tests: 45 new tests (loader 22, registry 11, installer 12)
This commit is contained in:
@@ -50,6 +50,15 @@ const hooksSchema = z.object({
|
||||
silent: z.array(z.string()).default([]),
|
||||
}).default({});
|
||||
|
||||
const skillsSchema = z.object({
|
||||
/** Directory for user-created workspace skills. */
|
||||
workspace_dir: z.string().optional(),
|
||||
/** Directory for managed (installed) skills. Defaults to ~/.flynn/workspace/skills. */
|
||||
managed_dir: z.string().optional(),
|
||||
/** Directory for bundled skills shipped with Flynn. */
|
||||
bundled_dir: z.string().optional(),
|
||||
}).default({});
|
||||
|
||||
const mcpServerSchema = z.object({
|
||||
name: z.string(),
|
||||
command: z.string(),
|
||||
@@ -68,6 +77,7 @@ export const configSchema = z.object({
|
||||
models: modelsSchema,
|
||||
backends: backendsSchema.default({}),
|
||||
hooks: hooksSchema.default({}),
|
||||
skills: skillsSchema.default({}),
|
||||
mcp: mcpSchema.default({ servers: [] }),
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user