/** * 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//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; /** * 条件管理 `botmux-whiteboard` skill —— 跟随白板能力开关(与 {@link ensureAskSkill} * 同构)。白板默认关闭,是可选增强,所以它的 skill 不进 `BUILTIN_SKILLS`(那会被 * 无条件安装),而是按开关动态写入 / 删除: * * - `install=true`(白板已开启):写入 SKILL.md,让 agent 看得到并能用 * `botmux whiteboard read/update`。 * - `install=false`(白板关闭):删除该 skill 目录,避免给 agent 暴露一个当前 * 用不了(CLI 读写会被拒)的能力;也清理旧版本无条件装下的残留。 * * 由 worker-pool 的 `ensureCliSkills` 在每次 spawn 时按 `whiteboardEnabled()` * 调用(不走一次性缓存),所以运行时切换开关下一个会话即生效,无需重启 daemon。 * 幂等:install 时内容相同则跳过;remove 时不存在则跳过。 */ export declare function ensureWhiteboardSkill(cliId: string, skillsDir: string | undefined, install: boolean): void; /** * 条件管理 v3 Workflow skill 家族(`botmux-workflow` / `botmux-workflow-create` / * `botmux-goal-ask`)—— 跟随机器级 workflow 开关(与 {@link ensureWhiteboardSkill} * 同构)。这三个 skill 不进 `BUILTIN_SKILLS`(那会被无条件安装),而是按开关动态 * 写入 / 删除: * * - `install=true`(workflow 功能开启,默认):写入每个 SKILL.md,让 agent 看得到 * 并能用 `/workflow` / botmux-workflow 能力。 * - `install=false`(workflow 功能关闭):删除这三个 skill 目录,避免给 agent 暴露 * 一个当前会被 daemon/CLI 拒绝的能力;也清理旧版本无条件装下的残留。 * * `botmux-orchestrate` 不在此列——它是独立的多 bot 长期编排能力,不随本开关关闭。 * * 由 worker-pool 的 `ensureCliSkills` 在每次 spawn 时按 `isWorkflowFeatureEnabled()` * 调用(不走一次性缓存),所以运行时切换开关下一个会话即生效,无需重启 daemon。 * 幂等:install 时内容相同则跳过;remove 时不存在则跳过。 */ export declare function ensureWorkflowSkills(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}//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