/**
 * Materialise the built-in skills as a Claude Code *plugin* under `pluginDir`,
 * so they can be injected per-session via `--plugin-dir` instead of polluting
 * the user's global `~/.claude/skills`. Writes:
 *   - {pluginDir}/.claude-plugin/plugin.json   (manifest, name='botmux')
 *   - {pluginDir}/skills/<name>/SKILL.md        (one per built-in skill)
 * Idempotent — only writes when content differs. Skill files are written by
 * reusing `ensureSkills` against `{pluginDir}/skills` (same flat layout).
 */
export declare function ensurePluginSkills(cliId: string, pluginDir: string | undefined): void;
/**
 * Remove botmux-owned skill directories that earlier versions installed into a
 * shared global skills dir (e.g. `~/.claude/skills`). Once skills move to a
 * per-session plugin dir, these stale global copies would keep leaking into the
 * user's standalone CLI sessions, so we delete them on upgrade.
 *
 * Matches by the `botmux-` directory-name prefix (the namespace botmux owns)
 * rather than the static `BUILTIN_SKILLS` list — a daemon may have previously
 * installed skills that a *different* botmux version shipped (e.g.
 * `botmux-handoff`), and those must be cleaned too. Non-`botmux-` user skills
 * are never touched.
 */
export declare function removeGlobalBotmuxSkills(globalSkillsDir: string | undefined): void;
/**
 * 条件管理 `botmux-ask` skill —— hook 优先 + 非 hook CLI 兜底策略。
 *
 * - `install=false`（CLI 支持 hook 接管 askUserQuestion）：删除该 skill，避免
 *   skill 与 hook 双重弹卡 / 抢工具。
 * - `install=true`（CLI 无 hook 接管能力）：写入该 skill，让 agent 至少能用
 *   `botmux ask buttons` 把选择题引到飞书（不如 hook 可靠，但有得用）。
 *
 * 幂等：install 时内容相同则跳过；remove 时不存在则跳过。
 */
export declare function ensureAskSkill(cliId: string, skillsDir: string | undefined, install: boolean): void;
/**
 * Install (or refresh) the built-in skill library into the given CLI's skills
 * directory. Idempotent — only writes when content differs.
 *
 * Each skill becomes {skillsDir}/<name>/SKILL.md. Sub-directory layout
 * matches Claude Code / Gemini / OpenCode convention. Retired skills (renamed
 * or removed in a later version) are deleted from the directory so the CLI
 * doesn't keep surfacing stale entries alongside their replacements.
 */
export declare function ensureSkills(cliId: string, skillsDir: string | undefined): void;
//# sourceMappingURL=installer.d.ts.map