import type { SkillEntry, SkillLoader, SkillManifest } from '../types/skill.js'; import type { WstackPaths } from '../utils/wstack-paths.js'; export interface SkillLoaderOptions { paths: WstackPaths; bundledDir?: string | undefined; /** Read foreign `.claude/skills` dirs (project + user). Default `true`. */ readClaudeSkills?: boolean | undefined; /** Scan other agents' skill dirs (codex/cursor/agents/qwen/trae/…). Default `true` (all); `string[]` restricts, `false` disables. */ foreignSources?: boolean | string[] | undefined; /** Extra skill directories to scan (lowest priority, before bundled). */ extraDirs?: string[] | undefined; } /** * Discovery order (we walk highest priority first and skip names already * seen, so earlier layers shadow later ones): * 1. Project-committed: /.wrongstack/skills/ * 2. Project foreign: /.claude/skills/ (opt-out) * 3. Project foreign: /.{codex,cursor,agents,…}/skills/ * 4. User profile: ~/.wrongstack/profiles//skills/ * 5. User foreign: ~/.claude/skills/ (opt-out) * 6. User foreign: ~/.{codex,cursor,agents,…}/skills/ * 7. Extra dirs: config.skills.extraDirs (user config only) * 8. Bundled with build: packages/core/skills/ * * The `.claude/*` layers let skills authored for other coding agents (Claude * Code, Codex, Gemini, `asm`, `gh skill`) be used without copying. They are * read-only — the installer never writes there. */ export declare class DefaultSkillLoader implements SkillLoader { private readonly dirs; private cache?; private entriesCache?; private readonly bodyCache; constructor(opts: SkillLoaderOptions); list(): Promise; find(name: string): Promise; manifestText(): Promise; listEntries(): Promise; invalidateCache(): void; readBody(name: string): Promise; readSaveBody(name: string): Promise; } //# sourceMappingURL=skill-loader.d.ts.map