From b031d2a3f00dde5c1755d8c097bccfb6957b5ac3 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 10 Oct 2026 22:04:42 +0000 Subject: [PATCH 1/3] feat(pstack): add /ketchup skill /ketchup catches the user up on everything since their last message, in plain words. Each action item gets an executive summary with enough context to decide. The skill points at /bro for its voice and sits next to /recall in the README and /poteto-help tables. Bump pstack to 0.15.16. Co-authored-by: lauren --- pstack/README.md | 1 + pstack/skills/ketchup/SKILL.md | 23 +++++++++++++++++++++++ pstack/skills/poteto-help/SKILL.md | 1 + 3 files changed, 25 insertions(+) create mode 100644 pstack/skills/ketchup/SKILL.md diff --git a/pstack/README.md b/pstack/README.md index 7227da33b..f335b4349 100644 --- a/pstack/README.md +++ b/pstack/README.md @@ -114,6 +114,7 @@ to keep [`/poteto-mode`](./skills/poteto-mode/SKILL.md) on across turns, pick it | [`/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. | +| [`/ketchup`](./skills/ketchup/SKILL.md) | you want everything in this chat since your last message, in plain words, with an executive summary for each action item so you can make the call. | | [`/blast-radius`](./skills/blast-radius/SKILL.md) | you have a small-looking change and want to know what else it could break, with the one fact it's safe because of proven by running code, not asserted. | | [`/architect`](./skills/architect/SKILL.md) | you're about to write code that crosses a function boundary and want the caller's usage, types, and module shape settled first. | | [`/arena`](./skills/arena/SKILL.md) | you want N parallel attempts at the same thing, then to grab the best parts of each. | diff --git a/pstack/skills/ketchup/SKILL.md b/pstack/skills/ketchup/SKILL.md new file mode 100644 index 000000000..f9fabe591 --- /dev/null +++ b/pstack/skills/ketchup/SKILL.md @@ -0,0 +1,23 @@ +--- +name: ketchup +description: "Catch the user up on everything since their last message, in plain words. Give each action item an executive summary with enough context to make the call. Use for /ketchup." +disable-model-invocation: true +--- + +# Ketchup + +Catch the user up on everything since their last message. Write in the voice that [`/bro`](../bro/SKILL.md) describes. Assume the user remembers their last message and nothing after it. Call each PR, branch, or agent by a name they would know, not by a label you invented during the work. + +## Gather what changed + +Collect everything since that message: your own work, reports from subagents, and messages from anyone else. Check the current state of anything that can change on its own, such as a PR, a CI run, or a running agent. Say which items you could not check. + +An action item is a decision only the user can make, such as a product choice, an approval, an irreversible step, or access you lack. Work you can do yourself is not an action item. Do it, or say that you will. + +## Write the reply + +Open with one sentence that says how many action items there are, or that there are none. If nothing happened, say so and stop. + +Then say what happened, most important first. Give each result and what it means for the user. Skip steps that changed nothing. + +Then give each action item a short executive summary. Cover the decision to make, why it matters now, the options and what each costs, your recommendation, and what happens if the user does not answer. Link to the detail, and write the summary so the user can decide without opening the link. diff --git a/pstack/skills/poteto-help/SKILL.md b/pstack/skills/poteto-help/SKILL.md index a97ecddf8..56689936b 100644 --- a/pstack/skills/poteto-help/SKILL.md +++ b/pstack/skills/poteto-help/SKILL.md @@ -67,6 +67,7 @@ The default answer is `/poteto-mode`, which runs most of the others when its ste | Know why code is shaped this way, or where a number came from | [`/why`](../why/SKILL.md) | | Understand a change or subsystem, explained plainly | [`/teach`](../teach/SKILL.md) | | Catch up on their own recent work on a topic | [`/recall`](../recall/SKILL.md) | +| Catch up on everything in this chat since their last message, with enough context to decide each action item | [`/ketchup`](../ketchup/SKILL.md) | | Know what a small diff could break outside itself | [`/blast-radius`](../blast-radius/SKILL.md) | | Settle types and module shape before code that crosses a function boundary | [`/architect`](../architect/SKILL.md) | | Get several attempts at one brief, merged into the best one | [`/arena`](../arena/SKILL.md) | From d6318ced3377a7461335571de0129e2d41fd1751 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 10 Oct 2026 22:12:41 +0000 Subject: [PATCH 2/3] Tighten /ketchup scope, anchor, and read-only turn Anchor the catch-up on the last message the user wrote before /ketchup, scope it to this chat, keep the turn read-only, carry forward decisions still waiting on the user, and take only /bro's voice. Add a /ketchup close call next to /recall in /poteto-help. Co-authored-by: lauren --- pstack/skills/ketchup/SKILL.md | 14 +++++++------- pstack/skills/poteto-help/SKILL.md | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pstack/skills/ketchup/SKILL.md b/pstack/skills/ketchup/SKILL.md index f9fabe591..f00fccbc8 100644 --- a/pstack/skills/ketchup/SKILL.md +++ b/pstack/skills/ketchup/SKILL.md @@ -1,23 +1,23 @@ --- name: ketchup -description: "Catch the user up on everything since their last message, in plain words. Give each action item an executive summary with enough context to make the call. Use for /ketchup." +description: "Catch the user up on everything in this chat since their last message, in plain words. Give each action item an executive summary with enough context to make the call. Use for /ketchup." disable-model-invocation: true --- # Ketchup -Catch the user up on everything since their last message. Write in the voice that [`/bro`](../bro/SKILL.md) describes. Assume the user remembers their last message and nothing after it. Call each PR, branch, or agent by a name they would know, not by a label you invented during the work. +Catch the user up on everything in this chat since the last message they wrote before `/ketchup`. Notifications and subagent results are not their messages. Write in the plain voice of [`/bro`](../bro/SKILL.md), and skip its restating step. Assume the user remembers their last message and nothing after it. Call each PR, branch, or agent by a name they would know, not by a label you invented during the work. ## Gather what changed -Collect everything since that message: your own work, reports from subagents, and messages from anyone else. Check the current state of anything that can change on its own, such as a PR, a CI run, or a running agent. Say which items you could not check. +Keep this turn read-only. Collect your own work since that message, reports from subagents, and messages from anyone else in this chat. Check the current state of each PR, CI run, or agent this chat touched. Say which are still running and which you could not check. -An action item is a decision only the user can make, such as a product choice, an approval, an irreversible step, or access you lack. Work you can do yourself is not an action item. Do it, or say that you will. +An action item is a decision or step only the user can take, such as a product choice, an approval, an irreversible action, or access you lack. Include any still waiting on the user, even one raised before their last message. Work you can still do yourself is not an action item. ## Write the reply -Open with one sentence that says how many action items there are, or that there are none. If nothing happened, say so and stop. +Open with one sentence that says how many action items there are, or that there are none. If nothing happened and nothing waits on the user, say so and stop. -Then say what happened, most important first. Give each result and what it means for the user. Skip steps that changed nothing. +Then say what happened, most important first. Give each result and what it means for the user. Skip steps that changed nothing. Name in one line any work left that you can do yourself. -Then give each action item a short executive summary. Cover the decision to make, why it matters now, the options and what each costs, your recommendation, and what happens if the user does not answer. Link to the detail, and write the summary so the user can decide without opening the link. +Then give each action item a short executive summary. Cover the decision to make, why it matters now, the options and what each costs, your recommendation, and what happens if the user does not answer. If you do not know a part, say so instead of guessing. Link to the detail when there is one, and write the summary so the user can decide without opening it. diff --git a/pstack/skills/poteto-help/SKILL.md b/pstack/skills/poteto-help/SKILL.md index 56689936b..575d80fbf 100644 --- a/pstack/skills/poteto-help/SKILL.md +++ b/pstack/skills/poteto-help/SKILL.md @@ -99,7 +99,7 @@ Close calls: - `/arena` gives every worker the same brief and merges the best parts. `/swarm` splits work into slices or a race and returns one report. - `/architect` implements right after it settles the design. Add "with checkpoint" to review the design before it writes code. - `/interrogate` reviews the diff. `/blast-radius` looks for breakage outside the diff and proves the one fact that makes the change safe. -- `/recall` rebuilds context across recent chats. Resuming one specific chat or branch is the Session pickup playbook. +- `/recall` rebuilds context across recent chats. `/ketchup` covers only this chat since the user's last message. Resuming one specific chat or branch is the Session pickup playbook. - `/figure-it-out` designs one rigorous run. The Orchestrate playbook runs a program that spans days and many PRs. The Autonomous run playbook drives one task to a finish condition. Not in pstack: From bfe1073cfa45f134b62baaf2c7f1c564614e1dc8 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 10 Oct 2026 22:43:46 +0000 Subject: [PATCH 3/3] chore(pstack): bump to 0.15.17 Co-authored-by: lauren --- pstack/.cursor-plugin/plugin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pstack/.cursor-plugin/plugin.json b/pstack/.cursor-plugin/plugin.json index b39e7626e..7d786382d 100644 --- a/pstack/.cursor-plugin/plugin.json +++ b/pstack/.cursor-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "pstack", "displayName": "pstack", - "version": "0.15.16", + "version": "0.15.17", "description": "if you want to go fast, go deep first. pstack helps you write less, but higher quality code. rigorous agent workflows you can parallelize with confidence.", "author": { "name": "Lauren Tan"