refactor(skills): trim 8 built-in skill descriptions to trigger + boundary (MUL-5546) (#6188)

Every runtime CLI scans SKILL.md frontmatter and renders each description into
its own always-loaded skill listing, so those 3,465 characters are paid on every
run. Most of them did no work: each description carried a "Covers A, B, C..."
content inventory that contributes nothing to routing, since the agent reads the
body anyway once it opens the skill.

Keep the trigger sentence and the reverse boundaries, drop the inventory:
3,465 -> 1,353 chars (-61%), roughly 866 -> 338 tokens.

Also tighten maxDescriptionChars from 1024 to 300. The 927-char description grew
because the old cap never pushed back; trimming the text without moving the gate
fixes the symptom, not the system.

Co-authored-by: Bohan-J <bohan@devv.ai>
Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
Bohan Jiang
2026-07-30 18:27:02 +08:00
committed by GitHub
parent 99d8f29bde
commit a4bca74c6e
9 changed files with 16 additions and 10 deletions

View File

@@ -1,6 +1,6 @@
---
name: multica-autopilots
description: "Use when creating, updating, inspecting, triggering, or debugging Multica autopilots. Covers the full chain: schedule/webhook/manual trigger, create_issue vs run_only execution, agent/squad leader admission, runs, created issues/tasks, webhook URL rotation, and side-effect boundaries."
description: "Use when creating, updating, inspecting, triggering, or debugging a Multica autopilot (scheduled, webhook, or manual)."
user-invocable: false
allowed-tools: Bash(multica *)
---

View File

@@ -1,6 +1,6 @@
---
name: multica-creating-agents
description: "Use when creating, inspecting, or debugging a Multica agent through the `multica agent` CLI or `POST /api/agents` — what each field is, its persisted shape, whether it is metadata-only or consumed by the daemon at claim time, which inputs are validated/rejected, how custom_env secrets are gated, and how skill binding behaves. Not for assigning issues to existing agents or for runtime task prompts."
description: "Use when creating, inspecting, or debugging a Multica agent definition via the `multica agent` CLI or POST /api/agents. Not for assigning issues to agents that already exist, and not for runtime task prompts."
user-invocable: false
allowed-tools: Bash(multica *)
---

View File

@@ -1,6 +1,6 @@
---
name: multica-mentioning
description: "Use when an issue comment needs to @mention someone — link to a person, trigger another agent, hand work to a squad, or broadcast with @all. Documents the verified mention contract: how a mention link is built from a real UUID, the four mention types and exactly what each one enqueues (agent → a run for that agent, squad → a run for the squad leader, member and issue → a rendered link with NO run), comment create/edit preview and suppression, the @all broadcast and how it suppresses the assignee's auto-trigger, and the silent no-op cases (a name where a UUID belongs, a bad/unknown UUID, an already-pending task, an archived agent, a private agent you cannot access). WHETHER to mention — loop avoidance, staying silent on acknowledgements — lives in the runtime brief's Mentions section, not here. This skill is the backend contract only, traced to server/internal/util/mention.go and server/internal/handler/comment.go."
description: "Use when an issue comment needs to @mention someone — link to a person, trigger another agent, hand work to a squad, or broadcast with @all. Whether to mention at all is covered by the runtime brief, not here."
user-invocable: false
allowed-tools: Bash(multica *)
---

View File

@@ -1,6 +1,6 @@
---
name: multica-projects-and-resources
description: "Use when creating, inspecting, updating, or debugging Multica projects and project resources. Covers durable project context, github_repo and local_directory resources, how resources affect future agent task context, when to bind repos, and when not to mutate resources."
description: "Use when creating, inspecting, updating, or debugging Multica projects and their resources (github_repo, local_directory)."
user-invocable: false
allowed-tools: Bash(multica *)
---

View File

@@ -1,6 +1,6 @@
---
name: multica-runtimes-and-repos
description: "Use when inspecting or debugging Multica runtimes, daemon task claiming, agent not running, workdir/session reuse, or repository checkout. Covers runtime online/offline state, daemon heartbeat/claim chain, task-scoped repo checkout, project repo context, local_directory caveats, and safe diagnostic commands."
description: "Use when a Multica runtime or daemon misbehaves: agent not running, task not claimed, runtime offline, workdir or session reuse, repository checkout."
user-invocable: false
allowed-tools: Bash(multica *)
---

View File

@@ -1,6 +1,6 @@
---
name: multica-skill-importing
description: "Use when a user provides a skill URL, slug, or clear intent to import/install a specific skill into the current Multica workspace. Teaches the workspace import API/CLI path (POST /api/skills/import), the supported URL source families, --on-conflict fail|overwrite|rename|skip behavior and structured import results, additive agent binding vs replace-all, and the reserved SKILL.md supporting-file rule. Do not use it to decide which skill the user needs, and never treat an external local installer like npx skills add as the final Multica install."
description: "Use when asked to import or install a specific skill into this Multica workspace from a URL or slug. Not for choosing which skill the user needs; never treat a local installer such as `npx skills add` as the final install."
user-invocable: false
allowed-tools: Bash(multica *)
---

View File

@@ -1,6 +1,6 @@
---
name: multica-squads
description: "Use when creating, inspecting, updating, assigning, mentioning, or debugging Multica squads. Explains what squads are, squad/member fields, CLI commands, leader routing, issue assignment, comments, mentions, autopilot behavior, leader briefing, side effects, and product-gap handling."
description: "Use when creating, inspecting, updating, assigning to, or debugging a Multica squad, including how leader routing picks who runs."
user-invocable: false
allowed-tools: Bash(multica *)
---

View File

@@ -1,6 +1,6 @@
---
name: multica-working-on-issues
description: "Use when working on a Multica issue after the runtime has provided the trigger context — to apply the product contracts the runtime brief does not encode: how PR linking differs from close intent, how to read a linked PR's real state via the pull-requests CLI, which metadata keys are high-signal, what status changes trigger on the server, and how sub-issue create status (todo vs backlog) controls whether assigned agents start immediately."
description: "Use when acting on a Multica issue beyond what the brief covers: PR linking vs close intent, reading a linked PR's real state, metadata keys, status-change side effects, sub-issue todo vs backlog."
user-invocable: false
allowed-tools: Bash(multica *), Bash(git *), Bash(gh *)
---

View File

@@ -24,8 +24,14 @@ const (
// files, not the always-loaded body.
maxSkillBodyLines = 500
// maxDescriptionChars is the frontmatter description cap — it is the only
// thing an agent sees when deciding whether to load the skill.
maxDescriptionChars = 1024
// thing an agent sees when deciding whether to load the skill, and every
// runtime CLI pays for it in the always-loaded skill listing. A description
// earns its characters two ways only: trigger wording that matches how the
// task actually arrives, and reverse boundaries that prevent mis-routing.
// A "Covers A, B, C..." content inventory does neither — the agent reads the
// body once it opens the skill. The cap is deliberately tight (the longest
// built-in sits at 222) so that inventory prose cannot creep back in.
maxDescriptionChars = 300
)
// TestBuiltinSkillsConformToTemplate enforces the standard-template invariants