diff --git a/.github/upstream-sha b/.github/upstream-sha index 86b2538c..d8922bd6 100644 --- a/.github/upstream-sha +++ b/.github/upstream-sha @@ -1 +1 @@ -d457567332aa6989e753ea289f30ea2bfbc80bc0 +88d47514b82e7c44f00f2b2a72ff6dd12158038c diff --git a/PORTING.md b/PORTING.md index e083140b..c1959068 100644 --- a/PORTING.md +++ b/PORTING.md @@ -37,6 +37,8 @@ Upstream is the source of truth for the workflows themselves. This file records ## Port additions beyond substitution +- **sharpen rewrite boundary** (port addition after upstream #729). Keep upstream's four numbered framing asks and the local instructions to return the answers and rewritten prompt, then stop. Preserve the closing restriction that methods and checks deepen the original deliverables. Guide-only requests keep the guide as their only deliverable. Live runs executed the task on Hermes and added converter work on Claude Code; the first boundary still allowed an intermittent extra check script on Grok. The [final validation receipt](evals/promises/results/2026-10-20T1935-sharpen-729-final.md) records the failures and reruns. On sync, merge upstream edits around these boundaries rather than replacing them. + - `worktree-audit.sh` uses inline Python standard-library code for transcript mtimes, local dates, and integer-day recency on Linux and macOS. Preserve it during sync instead of restoring BSD `stat` and `date` calls. The script requires `python3`, `rg`, and `jq`. - `worktree-audit.sh` and the [Worktree cleanup playbook](skills/poteto-mode/playbooks/worktree-cleanup.md) guard kept files, a port fix for #167 from 2026-10 that can be offered upstream. Steps 4 and 5 own the output contract and removal guard. On sync, preserve the script's NUL-delimited status parsing and explicit `--ignored=matching`, `--untracked-files=normal`, and `--ignore-submodules=none` flags. Preserve the nested `.git` scan, which reports a checkout even under an ignored build cache and skips one under an already reported kept directory. Preserve the `git ls-files -v` count of present skip-worktree and assume-unchanged files as `wip`, the case-insensitive fixed-string `rg -F -i` transcript match, and the `unreadable` result with bucket `hold-kept` when status, `ls-files`, or the scan fails. Preserve the porcelain worktree-path parsing with `sed -n 's/^worktree //p'` for paths with spaces. Keep the regression coverage in `tools/test_worktree_audit.py` and `WorktreeAuditPromises` in `evals/promises/test_scripts.py` when upstream rewrites either file, and keep the `ripgrep` install in the `lint.yml` skills job, without which most of `tools/test_worktree_audit.py` skips. Do not restore upstream's disposable `scratch:N` classification. diff --git a/README.md b/README.md index 721ec1f0..05d21688 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ the full rules and playbooks live in [`skills/poteto-mode/SKILL.md`](./skills/po | [`/poteto-mode`](./skills/poteto-mode/SKILL.md) | default entry point for any non-trivial task. | | [`/poteto-help`](./skills/poteto-help/SKILL.md) | you're new to pstack, or unsure which skill, playbook, or principle fits. finds out what you're trying to do, answers that part, and hands you a prompt to type. it doesn't load from its description (on claude code, once `/setup-pstack` sets the skill listing), so type `/poteto-help`. | | [`/in-your-own-words`](./skills/in-your-own-words/SKILL.md) | you want the agent to play back your goal and the problem before it starts. it doesn't load from its description (on claude code, once `/setup-pstack` sets the skill listing), so type `/in-your-own-words`. | -| [`/sharpen`](./skills/sharpen/SKILL.md) | you want a task approached the way a top expert would, aimed at what you're really after, without overspecifying it or deciding your choices for you. | +| [`/sharpen`](./skills/sharpen/SKILL.md) | you want a prompt made deeper, not bigger, before you send it: what a top professional would do that you didn't ask for, the raw material they'd start from, their methods and tools, and an outside check that the result is right. hands back the rewritten prompt and leaves your choices open. doesn't do the task. it doesn't load from its description (on claude code, once `/setup-pstack` sets the skill listing), so type `/sharpen`. | | [`/how`](./skills/how/SKILL.md) | you want a walkthrough of how a subsystem works. | | [`/why`](./skills/why/SKILL.md) | you want to know why something was built this way. discovers available MCPs at run time and queries each evidence category in parallel (source control, issue tracker, long-form docs, real-time chat, infra observability, error tracking, analytics warehouse). | | [`/recall`](./skills/recall/SKILL.md) | you're starting or resuming work and want your recent context on a topic rebuilt from your own chat history and the shared record, handed back as a tight current-state brief. | diff --git a/docs/guide/02-poteto-mode.md b/docs/guide/02-poteto-mode.md index 23f369a9..330159d6 100644 --- a/docs/guide/02-poteto-mode.md +++ b/docs/guide/02-poteto-mode.md @@ -70,13 +70,13 @@ For a noisy report, such as a long thread or a vague bug, make the restatement t A misreading shows up in the restatement, before any code exists. Correct it there, and it costs you one message instead of one wrong fix. For the restatement alone, with no playbook, run [`/in-your-own-words`](../../skills/in-your-own-words/SKILL.md). It restates what the agent thinks your goals are and what problem you're trying to solve. -When you're unsure whether a task is aimed right, put [`/sharpen`](../../skills/sharpen/SKILL.md) in front of it: +When you're unsure whether a prompt is aimed right, run [`/sharpen`](../../skills/sharpen/SKILL.md) on it before you send it: ```text /sharpen write a migration guide for the v2 config format. ``` -Before it starts, the agent asks how a top expert would do the task, what you're really after, and whether the ask is over- or underspecified. It drops constraints that don't serve the goal as readily as it adds ones that do, leaves your choices open, and keeps one outside check that the result is right. Then it does the work. +The agent says what a top professional would do that you didn't ask for, the rawest material they would start from, the methods and tools they would use, and what other than you or the agent would show the result is right. Then it rewrites your prompt to ask for exactly that, deeper but not bigger, and leaves your choices open. It doesn't do the task. Read the rewrite, then send it, for example with `/poteto-mode`. ## Follow up short diff --git a/docs/guide/10-recipes-and-pitfalls.md b/docs/guide/10-recipes-and-pitfalls.md index 474eead8..80301a22 100644 --- a/docs/guide/10-recipes-and-pitfalls.md +++ b/docs/guide/10-recipes-and-pitfalls.md @@ -20,13 +20,13 @@ Mechanics first, history second. Each skill's report tells you which sources it A misreading shows up in the restatement, where it costs one message to correct. Keep your own theory to yourself until the agent has stated its own. `/in-your-own-words` asks for the restatement alone, with no playbook. -## Aim a task before it starts +## Sharpen a prompt before you send it ```text /sharpen write the onboarding doc for the new billing service. ``` -The agent asks how an expert would do the task, what you're really after, and whether the ask says too much or too little. It keeps one outside check that the result is right, then does the work. +The agent names what an expert would do that you didn't ask for, the raw material they'd start from, their methods and tools, and an outside check that the result is right. It hands back your prompt rewritten to ask for that and doesn't do the task. Send the rewrite when it reads right. ## Prototype before you pick diff --git a/evals/promises/ledger.json b/evals/promises/ledger.json index 2a9bf33f..364ce756 100644 --- a/evals/promises/ledger.json +++ b/evals/promises/ledger.json @@ -3198,27 +3198,31 @@ }, "sharpen-frames-task-before-work": { "check": "static", - "claim": "/sharpen asks how a top expert would approach the task, what the user is after, and whether it is over- or underspecified, loosens constraints as readily as it adds them, leaves the user's choices open, keeps one outside check, then does the work.", + "claim": "/sharpen names what a top professional would add, the rawest material, specific methods and tools, and an outside check, then returns a rewritten prompt and leaves the user's choices open.", "evidence": [ { "file": "skills/sharpen/SKILL.md", - "quote": "Before starting, ask how a top expert would approach this task" + "quote": "Say what a top professional in this field would do here that I'm not asking for." }, { "file": "skills/sharpen/SKILL.md", - "quote": "whether the task is over- or underspecified" + "quote": "Name the rawest material they would start from instead of what has already been digested for me." }, { "file": "skills/sharpen/SKILL.md", - "quote": "Loosen constraints that don't serve the goal as readily as you add ones that do, and leave choices that are the user's to make open instead of deciding them." + "quote": "Name the specific methods and tools they would use." }, { "file": "skills/sharpen/SKILL.md", - "quote": "always keep one outside check that the result is right" + "quote": "Say what, other than you or me, would show the result is right." }, { "file": "skills/sharpen/SKILL.md", - "quote": "then do the work." + "quote": "Then rewrite my prompt using only the parts of those answers that deepen the original deliverables." + }, + { + "file": "skills/sharpen/SKILL.md", + "quote": "Leave choices that are mine to make open instead of deciding them." } ], "harness_sensitive": false, @@ -4199,16 +4203,6 @@ ], "text": "Tests check the cases someone thought to write." }, - "0f77d985e3fc": { - "class": "promise", - "file": "02-poteto-mode.md", - "promise": "sharpen-frames-task-before-work", - "sources": [ - "upstream", - "port" - ], - "text": "Before it starts, the agent asks how a top expert would do the task, what you're really after, and whether the ask is over- or underspecified." - }, "0f9cc893bd89": { "class": "context", "file": "03-understand.md", @@ -4312,6 +4306,16 @@ ], "text": "Catch it with a test." }, + "123a352a331d": { + "class": "promise", + "file": "10-recipes-and-pitfalls.md", + "promise": "sharpen-frames-task-before-work", + "sources": [ + "port", + "upstream" + ], + "text": "The agent names what an expert would do that you didn't ask for, the raw material they'd start from, their methods and tools, and an outside check that the result is right." + }, "1278fc9c4d91": { "class": "context", "file": "09-make-it-yours.md", @@ -4845,6 +4849,16 @@ ], "text": "A swarm worker that reads and judges a diff runs on `trail reviewer` instead." }, + "1dd47905086a": { + "class": "promise", + "file": "02-poteto-mode.md", + "promise": "sharpen-frames-task-before-work", + "sources": [ + "port", + "upstream" + ], + "text": "It doesn't do the task." + }, "1e1d1ccadb61": { "class": "context", "file": "04-design.md", @@ -5115,16 +5129,6 @@ ], "text": "A server on your machine holds the webhook's sender key, so the key never reaches the browser or the chat." }, - "25321c29d8ee": { - "class": "promise", - "file": "10-recipes-and-pitfalls.md", - "promise": "sharpen-frames-task-before-work", - "sources": [ - "upstream", - "port" - ], - "text": "It keeps one outside check that the result is right, then does the work." - }, "26331839fa40": { "class": "context", "file": "07-overnight.md", @@ -5760,16 +5764,6 @@ ], "text": "Hermes requires trust for project skills, and its project link can be skipped when `.hermes` does not exist." }, - "370107715792": { - "class": "promise", - "file": "10-recipes-and-pitfalls.md", - "promise": "sharpen-frames-task-before-work", - "sources": [ - "upstream", - "port" - ], - "text": "The agent asks how an expert would do the task, what you're really after, and whether the ask says too much or too little." - }, "3835af2d4290": { "class": "promise", "file": "10-recipes-and-pitfalls.md", @@ -6046,6 +6040,16 @@ ], "text": "Before dispatch, the coordinator records its predecessor and the harness, model, and effort that will run it." }, + "3e74944d2a28": { + "class": "promise", + "file": "10-recipes-and-pitfalls.md", + "promise": "sharpen-frames-task-before-work", + "sources": [ + "port", + "upstream" + ], + "text": "It hands back your prompt rewritten to ask for that and doesn't do the task." + }, "3eec39eb99a9": { "class": "context", "file": "06-verify-and-ship.md", @@ -7613,15 +7617,6 @@ ], "text": "[Attack the Premise](../../skills/principle-attack-the-premise/SKILL.md) writes down the premise that two or more failed fixes shared and tests it directly before the next fix." }, - "6c303f8ac2d4": { - "class": "context", - "file": "02-poteto-mode.md", - "sources": [ - "upstream", - "port" - ], - "text": "Then it does the work." - }, "6c41f8249bef": { "class": "promise", "file": "07-overnight.md", @@ -8513,15 +8508,6 @@ ], "text": "The [Opening a PR playbook](../../skills/poteto-mode/playbooks/opening-a-pr.md) runs `/deslop` on the diff before each commit and applies [`/unslop`](../../skills/unslop/SKILL.md) to the PR description and commit bodies." }, - "8616da1694e0": { - "class": "context", - "file": "02-poteto-mode.md", - "sources": [ - "upstream", - "port" - ], - "text": "When you're unsure whether a task is aimed right, put [`/sharpen`](../../skills/sharpen/SKILL.md) in front of it:" - }, "8626c5a5c0eb": { "class": "promise", "file": "04-design.md", @@ -8983,16 +8969,6 @@ ], "text": "Error messages that say what to do instead." }, - "924614a9e8a9": { - "class": "promise", - "file": "02-poteto-mode.md", - "promise": "sharpen-frames-task-before-work", - "sources": [ - "upstream", - "port" - ], - "text": "It drops constraints that don't serve the goal as readily as it adds ones that do, leaves your choices open, and keeps one outside check that the result is right." - }, "925332aad252": { "class": "promise", "file": "06-verify-and-ship.md", @@ -9271,6 +9247,16 @@ ], "text": "\"bugs included\" keeps the migration from quietly fixing things on the way, which would make the old and new output impossible to compare." }, + "9ead3f17f124": { + "class": "promise", + "file": "02-poteto-mode.md", + "promise": "sharpen-frames-task-before-work", + "sources": [ + "port", + "upstream" + ], + "text": "Then it rewrites your prompt to ask for exactly that, deeper but not bigger, and leaves your choices open." + }, "9ecb08f71efa": { "class": "context", "file": "README.md", @@ -10076,6 +10062,16 @@ ], "text": "Then it runs `/arena` to produce competing design sketches, with the caller's usage written first in each, followed by types, signatures, and a module map." }, + "b1e90eb13b4e": { + "class": "promise", + "file": "02-poteto-mode.md", + "promise": "sharpen-frames-task-before-work", + "sources": [ + "port", + "upstream" + ], + "text": "The agent says what a top professional would do that you didn't ask for, the rawest material they would start from, the methods and tools they would use, and what other than you or the agent would show the result is right." + }, "b1ff4346bd4d": { "also": [ "slash-skills-invocable" @@ -10274,6 +10270,15 @@ ], "text": "Setup also configures `routine`, the model for read-only subagents that scan or parse bulk material, such as a long transcript, and return a short finding." }, + "b78bf6d55700": { + "class": "context", + "file": "02-poteto-mode.md", + "sources": [ + "port", + "upstream" + ], + "text": "Read the rewrite, then send it, for example with `/poteto-mode`." + }, "b79782a127a9": { "class": "promise", "file": "06-verify-and-ship.md", @@ -12210,6 +12215,15 @@ ], "text": "You describe what you want and how you'll know it's done." }, + "eb1880162cb5": { + "class": "context", + "file": "10-recipes-and-pitfalls.md", + "sources": [ + "port", + "upstream" + ], + "text": "Send the rewrite when it reads right." + }, "ec5a61869e11": { "class": "promise", "file": "06-verify-and-ship.md", @@ -12879,6 +12893,15 @@ ], "text": "```text\n/poteto-mode update the review skill so it flags missing migrations, and eval the change.\n```" }, + "ff45621c7b54": { + "class": "context", + "file": "02-poteto-mode.md", + "sources": [ + "port", + "upstream" + ], + "text": "When you're unsure whether a prompt is aimed right, run [`/sharpen`](../../skills/sharpen/SKILL.md) on it before you send it:" + }, "ff8926f17118": { "also": [ "overnight-contract-routes-to-figure-it-out" diff --git a/evals/promises/results/2026-10-20T1935-sharpen-729-final.md b/evals/promises/results/2026-10-20T1935-sharpen-729-final.md new file mode 100644 index 00000000..9e2fbb71 --- /dev/null +++ b/evals/promises/results/2026-10-20T1935-sharpen-729-final.md @@ -0,0 +1,50 @@ +# Final sharpen validation, 2026-10-20 + +Status: PASS for the assessed behaviors below across 26 live CLI turns. The conditional model-setup question remains unverified in the Claude Code sample. Skills were pinned to `815e15cbfbaba27eade02a1b1f91270b0588a63b`, after both local boundary fixes. This receipt retains earlier failures and does not measure unrelated promises. + +## Revision and evidence + +This ports upstream #729, commit `88d47514b82e7c44f00f2b2a72ff6dd12158038c`, onto main `e905e13104593b9ab426ed85d229d3e6cd834cf2`. Commit `639d8e82ee987d1584ff97e99a7eba2da6d66215` added the rewrite-only stop and scope boundary. Commit `815e15cbfbaba27eade02a1b1f91270b0588a63b` constrained the closing rewrite instruction and updated its ledger quote. The four numbered upstream asks remain intact. PORTING.md records the intentional adaptation. + +| Owner file | SHA-256 at the tested revision | +|---|---| +| `skills/sharpen/SKILL.md` | `22328b6c0a3490881bfe6300674f8ecc612c155bf25d22169e25e599199bc91a` | +| `skills/poteto-help/SKILL.md` | `1222cdd21a899f5db437fa367cadf508fb9857c03419c38c95eaf741c1e9be4f` | + +No-mistakes run `01M5DA09M1RAR021PVX95CG1NE`, Test round 3, drove real CLIs through repository adapters in fresh disposable projects. `round3-drive.py` and `round3-drive-extra.py` made 26 turns. All exited 0, none timed out, and all persisted project-status checks were empty. The Test agent also reviewed replies and native tool/question events against the requested behavior. Successful CLI exits alone were not the oracle. + +Retained artifacts include `round3-live-transcripts.md`, `round3-run-summary.json`, and per-case reply, result and trace files in that run's evidence store. Earlier evidence remains under `preserved-round1/`, `round2/` and `scope-fix/validation.md`. Copies are retained in the operator's completed-work archive. Disposable projects and authentication copies were removed. + +Run metadata reports Claude Code 2.1.304 with `claude-opus-5-5`, Codex 0.162.0 with `gpt-6.1-sol`, Hermes 0.21.4 with `gpt-5.6-sol`, and Grok Build 1.0.62 with `grok-4.7-build`. + +## Final matrix + +These are manually assessed scenarios, not a newly rendered canonical `live.py report`. + +| Scenario | Claude Code | Codex | Hermes | Grok | +|---|---|---|---|---| +| Four answers and a migration-guide prompt, with the requested format choice left open | PASS | PASS | PASS | PASS | +| Rewrite an executable script request without creating or running the script | PASS | PASS | PASS | PASS | +| Help routes prompt deepening to sharpen and explains rewrite-only output | PASS | PASS | PASS | PASS | +| Help routes branch review without starting the review | PASS | PASS | PASS | PASS | +| Unclear help asks for topic choices before substantive guidance | PASS | PASS | PASS | PASS | + +The five rows account for 20 turns. Six additional migration-guide turns passed: two original-wording repetitions on Claude Code, two on Grok, and two further Grok scope repetitions. None required a new check script, converter or companion document. All preserved the requested guide deliverable and user choices. + +The separate Now/Later setup question applies when missing configuration matters. Claude Code could not read its home config and said it could not tell whether setup had run. It asked for a topic, but did not ask Now/Later. The missing-config condition was not established, so this sample does not verify that conditional question. Codex, Hermes and Grok did show both choices in their retained replies or native question events. + +Grok's unclear-help final reply supplied setup guidance, but its native trace first called the question tool with both required choices. The headless tool then reported that no interactive user was available and instructed it to continue. Judging only the final reply had incorrectly marked the question interaction as absent. + +## Earlier failures and fixes + +The first Test round preserved upstream's wording. Hermes created and verified `greet.py` in two fresh projects; its repeat omitted the rewritten prompt. Claude Code twice expanded a guide request into converter implementation. The original passing Codex cases had not exposed these failures. + +The first local boundary fixed the observed task execution across all four CLIs. Grok still required "the guide and the check script" once, while a fresh repeat preserved guide-only scope. The gate retained that intermittent failure and added the closing restriction at the tested revision above. + +The focused second-fix validation ran three baseline and three revised Grok requests. All six preserved the required guide deliverable, so that batch did not reproduce the saved intermittent failure. All three revised runs passed. The final validation passed the matrix criteria above, with the conditional Claude setup-question gap noted explicitly. These results describe the observed samples, not every future model response. + +## Comparison baseline + +The newest earlier committed receipt on the tested base is [the 7a9a3ddb post-sync matrix](2026-10-20-sync-7a9a3ddb.md). Its comparison section designates that wave as the next sync's baseline. Its help-routing row already has PASS (2) on all four harnesses. Current help observations agree and add no newly covered harness. Other failures and refusals in that broader matrix are outside this receipt's scope. + +The original #729 validation also ran the canonical `poteto-help-run` and `poteto-help-unclear-run` cases with `live.py run` on all four harnesses at `bf97cceece38422b281db97a403723d050bddd1c`, with eight PASS grades. The help owner's bytes match the final tested revision's hash above. Later gate runs additionally exercised current help and sharpen behavior through native adapters. The rerun did not inherit a native verification-plan object; the original plan was restored externally. This receipt distinguishes those evidence routes and revisions and supersedes earlier passing sharpen samples for the final port. diff --git a/skills/poteto-help/SKILL.md b/skills/poteto-help/SKILL.md index 175d91ae..f82339d2 100644 --- a/skills/poteto-help/SKILL.md +++ b/skills/poteto-help/SKILL.md @@ -58,7 +58,7 @@ The default answer is `/poteto-mode`, which runs most of the others when its ste |---|---| | Do any non-trivial task with rigor | [`/poteto-mode`](../poteto-mode/SKILL.md) | | Check that the agent understood their goal and the problem before it starts | [`/in-your-own-words`](../in-your-own-words/SKILL.md) | -| Aim a task higher before starting: more expert, more outcome-focused, not overspecified | [`/sharpen`](../sharpen/SKILL.md) | +| Get a prompt rewritten deeper, not bigger, before sending it: what a top professional would add, their raw material and methods, and an outside check. It returns the prompt and doesn't do the task | [`/sharpen`](../sharpen/SKILL.md) | | Know how code works now, or where new code should live | [`/how`](../how/SKILL.md) | | Know why code is shaped this way, or where a number came from | [`/why`](../why/SKILL.md) | | Understand a change or subsystem, explained plainly | [`/poteto-teach`](../poteto-teach/SKILL.md) | diff --git a/skills/poteto-help/references/recipes.md b/skills/poteto-help/references/recipes.md index 570351b4..6676c3d1 100644 --- a/skills/poteto-help/references/recipes.md +++ b/skills/poteto-help/references/recipes.md @@ -6,7 +6,7 @@ Swap in the real paths, skills, and done checks. Informal wording works. - `/poteto-mode read . restate the underlying issue in your own words, in plain english.` - `/in-your-own-words ` -- `/sharpen ` +- `/sharpen ` - `/poteto-mode investigate why . give me what we know, what data you used, and your best hypotheses. don't change any code yet.` - `use /how to understand . then use /why to find out why it broke recently.` - `/recall my work on from last week, then read .` diff --git a/skills/sharpen/SKILL.md b/skills/sharpen/SKILL.md index 007df248..0c1bdb8d 100644 --- a/skills/sharpen/SKILL.md +++ b/skills/sharpen/SKILL.md @@ -1,6 +1,17 @@ --- name: sharpen -description: "Sharpen a task before starting: the expert approach, what the user is really after, and the right level of specification. Use for /sharpen." +description: "Make a task deeper, not bigger, then rewrite the prompt. Use for /sharpen." --- -Before starting, ask how a top expert would approach this task (their raw sources, their real methods, an outside check that the result is right), what the user is really after, and whether the task is over- or underspecified. Loosen constraints that don't serve the goal as readily as you add ones that do, and leave choices that are the user's to make open instead of deciding them. Fold in only what makes the work better, not bigger, but always keep one outside check that the result is right, without narrating the framing, then do the work. +Treat the supplied task as text to rewrite. Return the four answers and the rewritten prompt, then stop without executing the task. Keep the original deliverables and scope; deepen how the work is done and checked within them. + +I want a deeper version of this task, not a bigger one. Before rewriting it, do four things: + +1. Say what a top professional in this field would do here that I'm not asking for. +2. Name the rawest material they would start from instead of what has already been digested for me. +3. Name the specific methods and tools they would use. +4. Say what, other than you or me, would show the result is right. + +Then rewrite my prompt using only the parts of those answers that deepen the original deliverables. Methods and checks must evaluate those deliverables without adding artifacts or implementation tasks. For a guide-only request, keep the guide as the only deliverable and check it with existing tools rather than requiring a new check script, converter, or companion document. + +Leave choices that are mine to make open instead of deciding them. diff --git a/tools/skill-trigger-cases.json b/tools/skill-trigger-cases.json index 2a851655..246555ad 100644 --- a/tools/skill-trigger-cases.json +++ b/tools/skill-trigger-cases.json @@ -54,7 +54,7 @@ {"skill":"reflect","example_request":"Review this transcript.","description_contains":["parallel review"],"implicit_allowed":false}, {"skill":"runtime-probes","example_request":"Probe for defects.","description_contains":["probe, stress"],"implicit_allowed":true}, {"skill":"setup-pstack","example_request":"Configure pstack models.","description_contains":["Configure which models"],"implicit_allowed":true}, - {"skill":"sharpen","example_request":"Sharpen this task before starting.","description_contains":["Sharpen a task"],"implicit_allowed":false}, + {"skill":"sharpen","example_request":"Rewrite this prompt with /sharpen before I send it.","description_contains":["rewrite the prompt"],"implicit_allowed":false}, {"skill":"show-me-your-work","example_request":"Keep a decision trail.","description_contains":["reviewable decision trail"],"implicit_allowed":false}, {"skill":"spec-probes","example_request":"Review this spec.","description_contains":["reviewing a spec"],"implicit_allowed":true}, {"skill":"swarm","example_request":"Run parallel workers.","description_contains":["Fan out N"],"implicit_allowed":false},