Give bots skills: runbooks they load when a job matches

A skill is a runbook: a name, a unique slug, a one-line description of when
it applies, and the markdown body. A run only ever sees the slug and
description (one load_skill tool carries them), and reads the whole body
only when it calls the tool, so a long runbook costs nothing until needed.

Skills are the third extension kind beside MCP servers and custom tools, on
the same botExtensionsSql path, so per-bot, per-workspace and all-bots
grants work the same way, and attachDefaultExtensions hands an every-bot
skill to new bots. load_skill is a reserved tool name, so a custom tool
cannot shadow it, and a built-in wins a clash.

Managed on Settings > Skills; ExtensionRow links each kind to its own page
and a skill never reports a failure, since nothing connects or runs.
This commit is contained in:
2026-10-22 12:31:42 +01:00
parent 379ef35e08
commit 08d02e6033
62 changed files with 1438 additions and 79 deletions
+2
View File
@@ -1,5 +1,6 @@
import {
Bell,
BookOpen,
Bot,
CpuAi,
DatabaseBackup,
@@ -61,6 +62,7 @@ export const SettingsPages: SettingsPage[] = [
{ title: "Computers", url: SettingsComputersPath, Icon: Monitor, can_view: canManageCrew },
{ title: "MCPs", url: "/admin/settings/mcps", Icon: Plug, can_view: canManageCrew },
{ title: "Tools", url: "/admin/settings/tools", Icon: Wrench, can_view: canManageCrew },
{ title: "Skills", url: "/admin/settings/skills", Icon: BookOpen, can_view: canManageCrew },
{
title: "Users",
url: "/admin/settings/users",