Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/upstream-sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
d457567332aa6989e753ea289f30ea2bfbc80bc0
88d47514b82e7c44f00f2b2a72ff6dd12158038c
2 changes: 2 additions & 0 deletions PORTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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. |
Expand Down
4 changes: 2 additions & 2 deletions docs/guide/02-poteto-mode.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
4 changes: 2 additions & 2 deletions docs/guide/10-recipes-and-pitfalls.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
151 changes: 87 additions & 64 deletions evals/promises/ledger.json
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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"
Expand Down
Loading
Loading