/**
 * Skill system — discovery, loading, and prompt injection.
 *
 * Skills are markdown files (SKILL.md) with YAML frontmatter that contain
 * specialized instructions for the LLM. They are injected into the system
 * prompt as an `<available_skills>` block, and the LLM reads the full file
 * via file.read when the task matches the skill's description.
 *
 * Compatible with OpenClaw skill format.
 */
export interface Skill {
    /** Skill identifier (directory name). */
    id: string;
    /** Human-readable name from frontmatter. */
    name: string;
    /** Description from frontmatter — used by LLM to decide when to use it. */
    description: string;
    /** Absolute path to the SKILL.md file. */
    filePath: string;
    /** Source directory. */
    source: "bundled" | "user" | "workspace" | "plugin";
    /** Whether the skill is enabled. */
    enabled: boolean;
}
export interface SkillFrontmatter {
    name?: string;
    description?: string;
    homepage?: string;
    metadata?: Record<string, unknown>;
}
/**
 * Parse YAML frontmatter from a markdown file.
 * Handles the `---` delimited block at the start of the file.
 * Only extracts top-level string fields — enough for name + description.
 */
export declare function parseFrontmatter(content: string): SkillFrontmatter;
/** User-level skills directory: ~/.jait/skills/ */
export declare function userSkillsDir(): string;
export declare class SkillRegistry {
    private skills;
    /** Discover skills from multiple directories. Later sources override earlier. */
    discover(dirs: {
        path: string;
        source: Skill["source"];
    }[]): Promise<void>;
    /** Add a single skill (e.g., from a plugin). */
    add(skill: Skill): void;
    /** List all discovered skills. */
    list(): Skill[];
    /** List only enabled skills. */
    listEnabled(): Skill[];
    /** Get a specific skill. */
    get(id: string): Skill | undefined;
    /** Remove a skill from the registry (e.g., after uninstall). */
    remove(id: string): void;
    /** Enable/disable a skill. */
    setEnabled(id: string, enabled: boolean): void;
    /** Apply an allow-list of enabled skill ids (disable everything else). */
    applyAllowList(enabledIds: string[]): void;
    /** Get the count. */
    get size(): number;
}
/**
 * Format skills into an XML block for the system prompt.
 * Compatible with OpenClaw's `<available_skills>` format.
 */
export interface SkillPromptFormatOptions {
    readToolInstruction?: string;
}
export declare function formatSkillsForPrompt(skills: Skill[], options?: SkillPromptFormatOptions): string;
//# sourceMappingURL=index.d.ts.map