/** * Skills unification for Signet * * Unifies skills from multiple harness sources (OpenClaw, Claude Code, etc.) * into a single unified registry with optional symlinking. */ /** * Metadata for a unified skill */ export interface SkillMeta { /** Skill name */ name: string; /** Optional version string */ version?: string; /** Source harness */ source: "openclaw" | "claude-code" | "opencode" | "codex" | "manual"; /** When the skill was installed */ installedAt?: Date; /** Whether this skill is symlinked (vs copied) */ symlinked?: boolean; /** Path to the skill directory */ path?: string; } /** * A skill source configuration */ export interface SkillSource { /** Type of source (e.g., 'openclaw', 'claude-code') */ type: string; /** Path to the source directory */ path: string; } /** * The unified skill registry */ export interface SkillRegistry { /** Map of skill name to metadata */ skills: Record; /** List of configured sources */ sources: SkillSource[]; } /** * Configuration for skills unification */ export interface SkillsConfig { /** External registries to import from */ registries?: Array<{ /** Path to the registry */ path: string; /** Harness type */ harness: string; /** Whether to symlink instead of copy */ symlink?: boolean; }>; } /** * Result of skills unification */ export interface SkillsResult { /** The unified registry */ registry: SkillRegistry; /** Number of skills imported */ imported: number; /** Number of skills symlinked */ symlinked: number; /** Number of skills skipped */ skipped: number; } /** * Raw skill data from lock.json files */ type RawSkillData = Record; /** * Load the OpenClaw lock.json registry if it exists * * @param basePath - Base path to look for .clawdhub/lock.json * @returns Parsed lock.json or null if not found */ export declare function loadClawdhubLock(basePath: string): RawSkillData | null; /** * Symlink skills from ~/.claude/skills/ to the unified skills directory * * @param basePath - Base path containing the skills/ directory * @returns Object with count of symlinked skills and their names */ export declare function symlinkClaudeSkills(basePath: string): { symlinked: number; skills: string[]; }; /** * Write the unified skill registry to skills/registry.json * * @param basePath - Base path containing the skills/ directory * @param registry - The registry to write */ export declare function writeRegistry(basePath: string, registry: SkillRegistry): void; /** * Unify skills from multiple harness sources into a single registry * * This function: * - Imports skills from .clawdhub/lock.json (OpenClaw registry) if it exists * - Symlinks skills from ~/.claude/skills/ (Claude Code) to skills/ directory * - Writes unified registry to skills/registry.json * * @param basePath - Base path for the unified skills directory * @param config - Configuration for skill sources * @returns Result with registry and counts */ export declare function unifySkills(basePath: string, config?: SkillsConfig): Promise; export {}; //# sourceMappingURL=skills.d.ts.map