Skip to content

Commit cfd2efd

Browse files
committed
improve: skill-workshop prompt banks reactive corrections without a save command
The prompt section only invoked the workshop when the user asked to create/update a skill, so reactive corrections ("that's not what I asked", "you're still doing X") never became proposals unless the user remembered a magic "save that to the skill" follow-up. Field evidence from a live deployment: a session's corrections sat in chat until the user happened to say "update all the skills" - and the ones where nobody said it were lost. - treat reactively-phrased corrections and standing preferences as durable signals - propose the fix into the relevant skill via action=update in the same turn, without waiting for a save request - report which proposal the correction landed in so capture is verifiable
1 parent c9219c7 commit cfd2efd

2 files changed

Lines changed: 8 additions & 0 deletions

File tree

src/agents/skill-workshop-prompt.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ export function buildSkillWorkshopPromptSection(): string[] {
1010
"## Skill Workshop",
1111
"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.",
1212
"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+
'Corrections and standing preferences are durable even when phrased reactively ("that\'s not what I asked", "stop doing X", "you\'re still doing Y", "I don\'t want to repeat myself") — not only when the user explicitly says to save something. When the user corrects how an existing skill\'s work should be done, propose the fix into that skill with `action=update` in the same turn; do not wait for a follow-up like "save that to the skill".',
14+
"After proposing a captured correction, tell the user which skill proposal it landed in so the capture is verifiable rather than a promise.",
1315
"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`.",
1416
"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.",
1517
"For `action=update`, pass a concise `description` when the existing live skill description should be shortened in the proposal listing.",

src/agents/system-prompt.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -754,6 +754,12 @@ describe("buildAgentSystemPrompt", () => {
754754
expect(withTool).toContain(
755755
"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.",
756756
);
757+
expect(withTool).toContain(
758+
"Corrections and standing preferences are durable even when phrased reactively",
759+
);
760+
expect(withTool).toContain(
761+
"propose the fix into that skill with `action=update` in the same turn",
762+
);
757763
expect(withTool).toContain(
758764
"Do not create or change skill proposal files manually with `write`, `edit`, `exec`, shell commands, or direct filesystem operations.",
759765
);

0 commit comments

Comments
 (0)