Shorten orchestration skill description under the Agent Skills 1024-char limit

The folded description was 1038 chars, so spec-conforming installers such
as SkillStar rejected the bundled orchestration skill. Drop the two clauses
already covered elsewhere in the same description: "decomposing work across
agents" (implied by "structured multi-agent coordination") and "automation
of the browser embedded inside Orca" (restated by the locked `orca-cli`
embedded-pages sentence). Every routing trigger asserted by
orchestration-skill-guidance.test.mjs, the orca-cli handoff boundary, and
the Computer Use boundary are unchanged. Result: 958 chars.

Add config/scripts/skill-description-length.test.mjs, which parses every
skills/*/SKILL.md frontmatter with `yaml` and fails on an empty or >1024
char description, so the regression cannot return. orca-cli sits at 1015
and is left as is.

Fixes #17935
This commit is contained in:
Jinwoo-H
2026-09-04 14:06:59 -04:00
parent b0df874b7b
commit c49a738f5f
6 changed files with 77 additions and 38 deletions
@@ -0,0 +1,39 @@
import { readdirSync, readFileSync } from 'node:fs'
import { join, resolve } from 'node:path'
import { describe, expect, it } from 'vitest'
import { parse } from 'yaml'
const skillsDir = resolve(import.meta.dirname, '../../skills')
// Why: the Agent Skills spec caps `description` at 1024 chars and conforming installers
// reject the whole skill (#17935); the frontmatter is what the installer parses, so check it.
const MAX_DESCRIPTION_LENGTH = 1024
function readDescription(skillName) {
const skillMarkdown = readFileSync(join(skillsDir, skillName, 'SKILL.md'), 'utf8')
const frontmatter = /^---\r?\n([\s\S]*?)\r?\n---\r?\n/u.exec(skillMarkdown)?.[1]
expect(frontmatter, `${skillName}: missing frontmatter`).toBeDefined()
return parse(frontmatter ?? '').description
}
describe('bundled skill descriptions', () => {
const skillNames = readdirSync(skillsDir, { withFileTypes: true })
.filter((entry) => entry.isDirectory())
.map((entry) => entry.name)
it('discovers the bundled skills', () => {
expect(skillNames).toContain('orchestration')
})
it.each(skillNames)('%s keeps description within the Agent Skills spec limit', (name) => {
const description = readDescription(name)
expect(typeof description, `${name}: description must be a string`).toBe('string')
expect(description.trim().length, `${name}: description is empty`).toBeGreaterThan(0)
expect(
description.length,
`${name}: description is ${description.length} chars`
).toBeLessThanOrEqual(MAX_DESCRIPTION_LENGTH)
})
})
+6 -6
View File
@@ -131,17 +131,17 @@
"name": "orchestration",
"sourcePath": "skills/orchestration",
"releaseRevision": 29,
"packageDigest": "7a386ce558ba54abe02b4a0de5d71fe3d63c944ef0888ddde130c729b37f7cc8",
"gitTreeSha": "4199ec6988801dd491631706cba62631b4bed8fb",
"packageDigest": "ec23f60ac90751e3f714a3f3833d335b92e8923c3a1dec338fc9f8e882dc4e0f",
"gitTreeSha": "a46215169ad52b5f0d4793bc484ef000500a67d4",
"files": [
{
"path": "SKILL.md",
"size": 4451,
"size": 4371,
"executable": false,
"classification": "text",
"exactSha256": "a7e3350f037698ebbce36b2818d8383ec6e96c2a4825537caab39a83b4fb4b7f",
"textNormalizedSha256": "a7e3350f037698ebbce36b2818d8383ec6e96c2a4825537caab39a83b4fb4b7f",
"identitySha256": "a7e3350f037698ebbce36b2818d8383ec6e96c2a4825537caab39a83b4fb4b7f"
"exactSha256": "0f062bd6c2046fa4436b2a27d4812f32ac797da0d9b915addff80248aec28860",
"textNormalizedSha256": "0f062bd6c2046fa4436b2a27d4812f32ac797da0d9b915addff80248aec28860",
"identitySha256": "0f062bd6c2046fa4436b2a27d4812f32ac797da0d9b915addff80248aec28860"
}
]
}
+6 -6
View File
@@ -1046,17 +1046,17 @@
},
{
"releaseRevision": 29,
"packageDigest": "7a386ce558ba54abe02b4a0de5d71fe3d63c944ef0888ddde130c729b37f7cc8",
"gitTreeSha": "4199ec6988801dd491631706cba62631b4bed8fb",
"packageDigest": "ec23f60ac90751e3f714a3f3833d335b92e8923c3a1dec338fc9f8e882dc4e0f",
"gitTreeSha": "a46215169ad52b5f0d4793bc484ef000500a67d4",
"files": [
{
"path": "SKILL.md",
"size": 4451,
"size": 4371,
"executable": false,
"classification": "text",
"exactSha256": "a7e3350f037698ebbce36b2818d8383ec6e96c2a4825537caab39a83b4fb4b7f",
"textNormalizedSha256": "a7e3350f037698ebbce36b2818d8383ec6e96c2a4825537caab39a83b4fb4b7f",
"identitySha256": "a7e3350f037698ebbce36b2818d8383ec6e96c2a4825537caab39a83b4fb4b7f"
"exactSha256": "0f062bd6c2046fa4436b2a27d4812f32ac797da0d9b915addff80248aec28860",
"textNormalizedSha256": "0f062bd6c2046fa4436b2a27d4812f32ac797da0d9b915addff80248aec28860",
"identitySha256": "0f062bd6c2046fa4436b2a27d4812f32ac797da0d9b915addff80248aec28860"
}
]
}
+12 -12
View File
@@ -3,18 +3,18 @@ name: orchestration
description: >-
Use Orca orchestration for structured multi-agent coordination: threaded
messages, blocking ask/reply flows, task dispatch, worker_done/escalation
waits, task DAGs, decision gates, coordinator loops, or decomposing work
across agents. Use `orca-cli` instead for full ownership handoffs, including
requests phrased as "hand off", "handoff", "handover", "give this to another
agent", or "another worktree" when the user did not explicitly ask to
supervise, monitor, wait for results, or coordinate a DAG. Use `orca-cli` for
terminal control, lightweight terminal prompts, shell commands, Orca
worktree management, reading or waiting on terminals, and automation of the
browser embedded inside Orca. Use Computer Use for external browser windows,
webviews, Orca app UI, or desktop UI outside Orca's embedded browser only when
the task requires OS/window-level control such as focus, menus, dialogs,
coordinates, or screenshots. Use `orca-cli` for Orca's embedded pages and a
page-automation tool such as Playwright or CDP for external pages.
waits, task DAGs, decision gates, or coordinator loops. Use `orca-cli`
instead for full ownership handoffs, including requests phrased as "hand
off", "handoff", "handover", "give this to another agent", or "another
worktree" when the user did not explicitly ask to supervise, monitor, wait
for results, or coordinate a DAG. Use `orca-cli` for terminal control,
lightweight terminal prompts, shell commands, Orca worktree management, and
reading or waiting on terminals. Use Computer Use for external browser
windows, webviews, Orca app UI, or desktop UI outside Orca's embedded browser
only when the task requires OS/window-level control such as focus, menus,
dialogs, coordinates, or screenshots. Use `orca-cli` for Orca's embedded
pages and a page-automation tool such as Playwright or CDP for external
pages.
---
# Orca Inter-Agent Orchestration
+12 -12
View File
@@ -3,18 +3,18 @@ name: orchestration
description: >-
Use Orca orchestration for structured multi-agent coordination: threaded
messages, blocking ask/reply flows, task dispatch, worker_done/escalation
waits, task DAGs, decision gates, coordinator loops, or decomposing work
across agents. Use `orca-cli` instead for full ownership handoffs, including
requests phrased as "hand off", "handoff", "handover", "give this to another
agent", or "another worktree" when the user did not explicitly ask to
supervise, monitor, wait for results, or coordinate a DAG. Use `orca-cli` for
terminal control, lightweight terminal prompts, shell commands, Orca
worktree management, reading or waiting on terminals, and automation of the
browser embedded inside Orca. Use Computer Use for external browser windows,
webviews, Orca app UI, or desktop UI outside Orca's embedded browser only when
the task requires OS/window-level control such as focus, menus, dialogs,
coordinates, or screenshots. Use `orca-cli` for Orca's embedded pages and a
page-automation tool such as Playwright or CDP for external pages.
waits, task DAGs, decision gates, or coordinator loops. Use `orca-cli`
instead for full ownership handoffs, including requests phrased as "hand
off", "handoff", "handover", "give this to another agent", or "another
worktree" when the user did not explicitly ask to supervise, monitor, wait
for results, or coordinate a DAG. Use `orca-cli` for terminal control,
lightweight terminal prompts, shell commands, Orca worktree management, and
reading or waiting on terminals. Use Computer Use for external browser
windows, webviews, Orca app UI, or desktop UI outside Orca's embedded browser
only when the task requires OS/window-level control such as focus, menus,
dialogs, coordinates, or screenshots. Use `orca-cli` for Orca's embedded
pages and a page-automation tool such as Playwright or CDP for external
pages.
---
# Orca Orchestration
File diff suppressed because one or more lines are too long