/** A functional surface directory found nested inside the manifest directory. */ export interface PluginLayoutFinding { /** The misplaced surface directory name (e.g. `"skills"`). */ readonly dir: string; /** Human-readable explanation + fix. */ readonly message: string; } export interface PluginLayoutOptions { /** REQUIRED, injected: does this path exist? (disk: node:fs existsSync) */ readonly existsSync: (p: string) => boolean; /** * REQUIRED, injected: is this path a directory? (disk: node:fs * statSync(p).isDirectory(), returning false on any throw) */ readonly isDirectory: (p: string) => boolean; } /** * Surface directories found nested INSIDE the manifest directory, where they are * invisible to the harness. * * `manifestDir` is the absolute path to the manifest directory (e.g. the repo's * `.claude-plugin/`). `surfaceDirNames` are the harness's functional surface * directory names, injected from the layout (e.g. `["skills","agents","commands", * "hooks"]`) so the detector stays harness-agnostic — NEVER hard-code them. * * Returns `[]` when the manifest dir doesn't exist or holds no misplaced surface * dirs. */ export declare function pluginDirLayoutIssues(manifestDir: string, surfaceDirNames: readonly string[], opts: PluginLayoutOptions): PluginLayoutFinding[]; //# sourceMappingURL=plugin-dir-layout.d.ts.map