You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
perf(agents): slim Skill Workshop prompt section to its routing contract (#100449)
Prompt section drops from 13 lines to 2 (2128 -> 319 bytes); action
mechanics move into the skill_workshop tool schema (+25 bytes), for a
net -1784 bytes per request on affected sessions. Routing contract and
approval flow unchanged.
"Use `skill_workshop` when the user wants to create, update, revise, list, inspect, apply, reject, or quarantine a reusable skill, Skill Workshop proposal, playbook, workflow, procedure, or durable instruction.",
12
-
"Treat a request as durable when it should be saved, repeated, proposed, installed later, shared as a skill, or used as a standing workflow instead of answered once in chat.",
13
-
"Do not create or change skill proposal files manually with `write`, `edit`, `exec`, shell commands, or direct filesystem operations. The final proposal artifact must go through `skill_workshop`.",
14
-
"Use `action=create` for a new skill, `action=update` for an existing approved/live skill, and `action=revise` for an existing pending proposal; keep `description` under 160 bytes and `proposal_content` within the configured body limit.",
15
-
"For `action=update`, pass a concise `description` when the existing live skill description should be shortened in the proposal listing.",
16
-
"For `action=revise`, pass `proposal_id` when known. If it is not known, pass the proposal or skill name in `name` so `skill_workshop` can resolve the pending proposal or return candidates.",
17
-
"Use `action=list` or `action=inspect` only for pending proposal discovery/inspection. Do not use filesystem search for proposal discovery.",
18
-
"If the user names an existing live skill, read or view that skill when needed for context, but create the update proposal through `skill_workshop`.",
19
-
"Generated skills are pending proposals by default. Do not apply, install, approve, enable, or write into live skills unless the user explicitly asks for that separate action.",
20
-
"Use `action=apply`, `action=reject`, or `action=quarantine` only after the user explicitly asks to approve/use/apply, reject, or quarantine a specific proposal. Pass `proposal_id`; if it is not known, use `action=list` or `action=inspect` first.",
21
-
"Do not apply, reject, or quarantine proposals manually with filesystem operations or shell commands. Proposal lifecycle changes must use `skill_workshop`.",
22
-
"You may gather context first, but the durable proposal write or lifecycle change must use `skill_workshop`.",
11
+
"Route durable skill work — creating, updating, or managing reusable skills, playbooks, or standing workflows — through the `skill_workshop` tool; never write proposal or skill files directly.",
12
+
"Generated skills are pending proposals. Apply, reject, or quarantine only when the user explicitly asks.",
"Use `skill_workshop` when the user wants to create, update, revise, list, inspect, apply, reject, or quarantine a reusable skill, Skill Workshop proposal, playbook, workflow, procedure, or durable instruction.",
753
-
);
754
-
expect(withTool).toContain(
755
-
"Treat a request as durable when it should be saved, repeated, proposed, installed later, shared as a skill, or used as a standing workflow instead of answered once in chat.",
756
-
);
757
-
expect(withTool).toContain(
758
-
"Do not create or change skill proposal files manually with `write`, `edit`, `exec`, shell commands, or direct filesystem operations.",
759
-
);
760
-
expect(withTool).toContain("keep `description` under 160 bytes");
761
-
expect(withTool).toContain("`proposal_content` within the configured body limit");
762
-
expect(withTool).toContain(
763
-
"Use `action=list` or `action=inspect` only for pending proposal discovery/inspection. Do not use filesystem search for proposal discovery.",
764
-
);
765
-
expect(withTool).toContain("`action=revise` for an existing pending proposal");
766
-
expect(withTool).toContain("pass the proposal or skill name in `name`");
767
-
expect(withTool).toContain(
768
-
"Use `action=apply`, `action=reject`, or `action=quarantine` only after the user explicitly asks to approve/use/apply, reject, or quarantine a specific proposal.",
769
-
);
770
-
expect(withTool).toContain("Generated skills are pending proposals by default.");
771
-
expect(withTool).toContain(
772
-
"Do not apply, reject, or quarantine proposals manually with filesystem operations or shell commands.",
773
-
);
774
-
expect(withTool).toContain(
775
-
"You may gather context first, but the durable proposal write or lifecycle change must use `skill_workshop`.",
"create for a new skill proposal, update for an existing skill, revise for a pending proposal, list or inspect proposals for proposal discovery, apply/reject/quarantine for explicit proposal lifecycle actions.",
58
+
"create = new skill; update = existing live skill; revise = existing pending proposal; list/inspect discover pending proposals (not filesystem search); apply/reject/quarantine are explicit lifecycle actions.",
0 commit comments