From 1c82b787c3f22a15cb2af819430c5c0cf9960912 Mon Sep 17 00:00:00 2001 From: 3metaJun <251347867+3metaJun@users.noreply.github.com> Date: Sun, 11 Oct 2026 16:53:15 +0800 Subject: [PATCH 1/3] chore(upstream): sync latest pstack --- automations/benny/FOR_AGENTS.md | 8 +- automations/benny/README.md | 2 +- .../skills/reproduce-and-fix-issues/SKILL.md | 22 +---- .../references/control-adapter.md | 21 +---- .../references/feature-map.example.md | 11 +-- .../references/verify-existing-fix.md | 6 -- automations/benny/skills/setup-benny/SKILL.md | 37 ++------ .../templates/configuration.example.yaml | 2 +- .../templates/reproduce-automation-prompt.md | 5 -- docs/guide/01-setup.md | 14 +-- docs/guide/03-understand.md | 2 +- docs/guide/04-design.md | 2 +- docs/guide/06-verify-and-ship.md | 14 +-- docs/guide/07-overnight.md | 1 - docs/guide/README.md | 5 +- profiles/skill-manifest.json | 88 ++++++++++--------- profiles/skills.json | 1 + profiles/upstream-manifest.json | 10 +-- profiles/upstreams.json | 3 +- skills/ketchup/SKILL.md | 22 +++++ 20 files changed, 106 insertions(+), 170 deletions(-) create mode 100644 skills/ketchup/SKILL.md diff --git a/automations/benny/FOR_AGENTS.md b/automations/benny/FOR_AGENTS.md index d5d4823..8f76061 100644 --- a/automations/benny/FOR_AGENTS.md +++ b/automations/benny/FOR_AGENTS.md @@ -50,13 +50,7 @@ i want two cursor automations that work together in one slack issue channel. - budgets: `` - optional bot token capability: `` -start from [`configuration.example.yaml`](./templates/configuration.example.yaml). -copy and fill the configuration outside this pack, for example under -`.cursor/benny/`. when the project has a shared contract, set the feature-map -path to `.harness/verify//features/README.md`. read its linked feature files -and app contract instead of creating a benny-only map. use -[`feature-map.example.md`](./skills/reproduce-and-fix-issues/references/feature-map.example.md) -for the required content. keep secret values in a secret manager or environment. +start from [`configuration.example.yaml`](./templates/configuration.example.yaml) and [`feature-map.example.md`](./skills/reproduce-and-fix-issues/references/feature-map.example.md). copy and fill them outside this pack, for example under `.cursor/benny/`. keep secret values in a secret manager or environment. ## for the agent diff --git a/automations/benny/README.md b/automations/benny/README.md index ca9701d..c1e767d 100644 --- a/automations/benny/README.md +++ b/automations/benny/README.md @@ -18,6 +18,6 @@ the files in this directory are dormant setup and automation sources. they do no } ``` -4. keep user-owned configuration outside the copied pack, for example in `.cursor/benny/`. adapt [`configuration.example.yaml`](./templates/configuration.example.yaml). point `control.feature_map_path` at `.harness/verify//features/README.md` when the project has a shared verification contract. benny reads the linked feature files and the same contract as other Harnesses. use the [map example](./skills/reproduce-and-fix-issues/references/feature-map.example.md) for required content, not a second copy of project facts. +4. keep user-owned configuration outside the copied pack, for example in `.cursor/benny/`. adapt [`configuration.example.yaml`](./templates/configuration.example.yaml) and [`feature-map.example.md`](./skills/reproduce-and-fix-issues/references/feature-map.example.md). 5. commit `.cursor/settings.json`, `.cursor/automations/benny/`, and any secret-free configuration before enabling either automation. 6. review each new automation draft or update existing automations in their editors. then send a harmless test report and verify every source-channel post stays in the original thread. diff --git a/automations/benny/skills/reproduce-and-fix-issues/SKILL.md b/automations/benny/skills/reproduce-and-fix-issues/SKILL.md index 68a9e6a..950339e 100644 --- a/automations/benny/skills/reproduce-and-fix-issues/SKILL.md +++ b/automations/benny/skills/reproduce-and-fix-issues/SKILL.md @@ -10,12 +10,6 @@ Wait for a trusted triage marker in the source thread. Reproduce the exact sympt Load the external Benny configuration supplied by the automation. If the config, required actions, control adapter, or completed feature map is missing, fail closed. -Read `AGENTS.md` and `.harness/workflow.md` when present. Use the shared project -workflow for writable worktree isolation, declared revisions, and evidence. -Resolve `.harness/policy.json` before selecting an app map. The automation's -configuration must point at that app's canonical feature index. Report a stale -or conflicting map instead of silently following it. - ## Hard safety rules - Freeze the source channel and root thread coordinates before doing any work. @@ -131,16 +125,9 @@ If no operations channel is configured, keep detailed status in the automation r ## 5. Load and check the control adapter -Read `references/control-adapter.md` and the completed map at -`control.feature_map_path`, then invoke the skill named by `control.skill_name`. -For a canonical `features/README.md`, read the matching linked feature file and -its app's `contract.md`. Resolve a wrapper's `metadata.verification-contract` -from the repository root. Adapt the contract to the available driver without -creating a second map or changing the required proof. +Read `references/control-adapter.md` and the completed map at `control.feature_map_path`, then invoke the skill named by `control.skill_name`. -Find the mapped feature that matches the reported user path. Read it before -driving the app. If no entry covers the feature, mark the run blocked instead of -inventing a path or selector. +Find the feature-map section that matches the reported user path. Read it before driving the app. If no section covers the feature, mark the run blocked instead of inventing a path or selector. Require all seven capabilities: @@ -299,10 +286,7 @@ Run focused tests, then smoke the blast radius around the changed behavior. Cove Only after before-and-after proof: - Review the final diff for unrelated changes and secrets. -- Run the repository's required checks. When `.harness/policy.json` exists, - follow `.harness/workflow.md` to record the final commit and canonical feature - evidence. Include the receipt and retained artifacts in the review handoff. - Passing commands alone do not prove the reported UI behavior. +- Run the repository's required checks. - Create small ordered commits when the repository workflow allows it. - Open a draft pull request. Never merge or deploy from this workflow. - Link the configured tracker issue using the tracker's supported pull request syntax. diff --git a/automations/benny/skills/reproduce-and-fix-issues/references/control-adapter.md b/automations/benny/skills/reproduce-and-fix-issues/references/control-adapter.md index 425decb..3399491 100644 --- a/automations/benny/skills/reproduce-and-fix-issues/references/control-adapter.md +++ b/automations/benny/skills/reproduce-and-fix-issues/references/control-adapter.md @@ -4,20 +4,7 @@ Benny does not know how to start or drive every app. The user must configure one Set its skill name in `control.skill_name`. -Set `control.feature_map_path` to the app's canonical feature index, such as -`.harness/verify/web/features/README.md`, when the repository uses a shared -project contract. Load its linked feature files and adjacent `contract.md`. -The control skill may be a neutral `verify-` wrapper that resolves -`metadata.verification-contract` from the repository root. - -Keep driver-specific capability adaptation in the installed control skill. -Launch commands, fixtures, user paths, expected results, and cleanup belong to -the canonical contract. Do not copy them into Benny configuration. - -For a legacy project without a shared policy, an existing completed external -map can remain until migration. The [map example](./feature-map.example.md) -describes the required content. Keep any user-owned map outside the copied -pack, and replace it with the canonical index during mixed-Harness adoption. +Set the completed user-facing feature map path in `control.feature_map_path`. Copy and fill [`feature-map.example.md`](./feature-map.example.md) outside `.cursor/automations/benny/` instead of editing the copied example. If the skill, feature map, or a required capability is absent, ambiguous, or incomplete, repro and fix work must fail closed. @@ -65,8 +52,7 @@ Do not set internal state, call hidden app methods, write directly to storage, o ### Drive mapped features and states -Read the relevant feature file or legacy map section before driving the app. -An index is a list of links, not the complete feature definition. +Read the relevant feature-map section before driving the app. The adapter must expose ways to: @@ -148,8 +134,7 @@ The adapter must: - Surface startup failures as failures. - Bound retries. - Keep secrets out of logs and artifacts. -- Keep captures outside tracked source. A shared project's ignored artifact - location can hold files referenced by its run receipt. +- Keep captures outside the repository. - Support a fresh or reset state between the two repro attempts. - Avoid production changes unless the user explicitly configured a safe test action. diff --git a/automations/benny/skills/reproduce-and-fix-issues/references/feature-map.example.md b/automations/benny/skills/reproduce-and-fix-issues/references/feature-map.example.md index 99a55c1..620dded 100644 --- a/automations/benny/skills/reproduce-and-fix-issues/references/feature-map.example.md +++ b/automations/benny/skills/reproduce-and-fix-issues/references/feature-map.example.md @@ -1,17 +1,8 @@ # Feature-map example -In a project with `.harness/policy.json`, use these fields to complete the -canonical feature files under `.harness/verify//features/`. Set Benny's -`control.feature_map_path` to their `README.md` index. Do not create a separate -Benny map. This single-file example also describes legacy maps used before -shared-project adoption. - Map every user-facing feature Benny may reproduce. Read the relevant section before driving the app. Keep this map at the user point of view. Discover internals and current code paths at runtime instead of freezing them here. -For a legacy project without a shared contract, copy this file outside -`.cursor/automations/benny/`, then set `control.feature_map_path` to the completed -copy. Pack refreshes must not overwrite it. During mixed-Harness migration, -move its reconciled facts to the canonical feature files and retire the copy. +Copy this file outside `.cursor/automations/benny/`, for example to `.cursor/benny/feature-map.md`, and set `control.feature_map_path` to the copy. Pack refreshes must not overwrite it. ## Per-feature template diff --git a/automations/benny/skills/reproduce-and-fix-issues/references/verify-existing-fix.md b/automations/benny/skills/reproduce-and-fix-issues/references/verify-existing-fix.md index dc6a4f8..e3cda3c 100644 --- a/automations/benny/skills/reproduce-and-fix-issues/references/verify-existing-fix.md +++ b/automations/benny/skills/reproduce-and-fix-issues/references/verify-existing-fix.md @@ -31,12 +31,6 @@ Use regular `github.com` pull request links. ## Measure the baseline -Load the shared project workflow and canonical contract when present. Resolve -the configured feature index to the matching feature file. Give baseline and -patched builds separate instance state as the contract requires, and identify -each tested commit in the evidence. If an older revision lacks the mapped path, -report that limitation rather than applying the current map without checking. - For an open pull request, use its base branch as the baseline. For a merged fix, use the revision immediately before the fix when that revision builds and represents the old behavior. diff --git a/automations/benny/skills/setup-benny/SKILL.md b/automations/benny/skills/setup-benny/SKILL.md index 5760c5d..7827cc0 100644 --- a/automations/benny/skills/setup-benny/SKILL.md +++ b/automations/benny/skills/setup-benny/SKILL.md @@ -78,35 +78,16 @@ Open these copied examples: Create user-owned copies outside `.cursor/automations/benny/`. These are configuration files, not pack files. Example locations: - Project config, such as `.cursor/benny/configuration.yaml` -- Canonical feature index, such as `.harness/verify/web/features/README.md` +- Project feature map, such as `.cursor/benny/feature-map.md` - Project routing map, such as `.cursor/benny/routing.md` - User config, such as `~/.config/benny/configuration.yaml` -- Legacy user feature map, when the project has no shared contract +- User feature map, such as `~/.config/benny/feature-map.md` -When the project has `.harness/policy.json`, read `.harness/workflow.md` and -select its canonical app. Set `control.feature_map_path` to that app's -`features/README.md`. Read the linked feature files and the adjacent -`contract.md`. Reuse them instead of making a Benny-only copy. The configured -control skill supplies the available driver and follows that contract. - -When canonical verification does not exist, use `/create-verification-skill` to -create or migrate it as part of authorized verification setup. A legacy project -without a shared policy may keep an existing completed external map until it -migrates. Never keep both definitions active after adoption. - -Map every user-facing feature the automation may reproduce. Keep user paths and -expected observations in the canonical feature files. Discover implementation -paths from source when investigating a report. +Fill one feature-map section for every user-facing feature the automation may reproduce. Keep it at the user point of view. Do not freeze implementation details or current code paths in the map. Do not edit the copied examples. Pack refreshes may update source-managed files after conflict review, but they must never touch the user-owned copies. -Require the shared project workflow, canonical contract, and feature files to -be committed before enabling an automation that uses them. Reference their -repository paths instead of paraphrasing project facts into the prompt. For -configuration unrelated to verification, prefer committed, secret-free files -when a fresh automation checkout must read them. Otherwise paraphrase the -required values. Reference a repository file only after the built-in -`/automate` skill confirms that it is committed in the automation repository. +Prefer committed, secret-free files in the target repository when a fresh automation checkout must read them. Otherwise paraphrase the required values into the live prompt. Reference a repository file only after the built-in `/automate` skill confirms that the file is committed in the repository where the automation runs. Use stable repository-relative paths for committed pack and configuration files. Never reference the plugin source directory or a plugin cache path from a live automation. @@ -169,10 +150,7 @@ If no routing map is configured, triage may classify a report but must not guess ## 6. Verify the control adapter -Read `../reproduce-and-fix-issues/references/control-adapter.md` and the user's -completed feature map. For a canonical index, load every linked feature file -and its adjacent app contract. Verify that the configured map agrees with the -project policy. Run the policy check when present. +Read `../reproduce-and-fix-issues/references/control-adapter.md` and the user's completed feature map. Confirm that the named skill can: @@ -226,10 +204,7 @@ After the triage editor handoff is complete, give `automate` this complete repro - Trigger on the same new top-level reports in the configured source Slack channel. - Use the configured repository and default branch. - Read the source thread and reply only inside it. -- Include pull request creation and the configured tracker, control-adapter, - and feature-map requirements. For a shared project contract, require its - committed canonical paths. For a legacy project, paraphrase mapped user paths - only when `automate` cannot reference an eligible committed map. +- Include pull request creation and the configured tracker, control-adapter, and feature-map requirements. Paraphrase mapped user paths and states unless `automate` confirms an eligible committed file in the same repository. - Wait for a trusted triage marker before acting. - Reproduce the exact symptom twice through the mapped real UI and capture evidence. - Verify an existing fix without authoring over it. diff --git a/automations/benny/templates/configuration.example.yaml b/automations/benny/templates/configuration.example.yaml index 95f6299..8616f5f 100644 --- a/automations/benny/templates/configuration.example.yaml +++ b/automations/benny/templates/configuration.example.yaml @@ -46,7 +46,7 @@ routing: control: skill_name: "control-target-app" - feature_map_path: ".harness/verify/web/features/README.md" + feature_map_path: ".cursor/benny/feature-map.md" environment: "safe-test-environment-placeholder" artifact_directory: "/tmp/benny-artifacts" artifact_retention_hours: 24 diff --git a/automations/benny/templates/reproduce-automation-prompt.md b/automations/benny/templates/reproduce-automation-prompt.md index 5bf61af..5c66c92 100644 --- a/automations/benny/templates/reproduce-automation-prompt.md +++ b/automations/benny/templates/reproduce-automation-prompt.md @@ -22,11 +22,6 @@ Trigger: The creation intent should describe this as a new top-level report in the configured source Slack channel. It should include the configured repository, default branch, issue tracker, control adapter, feature map, and draft pull request capability. -When the repository has `.harness/policy.json`, include the instruction to read -`.harness/workflow.md` and use its canonical app contract. The configured -feature-map path must be that app's `features/README.md`; load its linked files -before driving. Keep the prompt as an entry pointer rather than a copied map. - Treat the source channel and root thread timestamp as immutable. If either is missing or does not match configuration, stop without posting. Wait for a configured triage marker from the configured triage identity in this exact thread. Proceed only for `[benny:bug]` or `[benny:performance]`. diff --git a/docs/guide/01-setup.md b/docs/guide/01-setup.md index 86c417f..bdba7d6 100644 --- a/docs/guide/01-setup.md +++ b/docs/guide/01-setup.md @@ -23,17 +23,17 @@ Run: [`/setup-mstack`](../../skills/setup-mstack/SKILL.md) detects the models you have access to, asks for a reasoning budget, shows you each role (code delegates, judgment, the review panels), and asks what you want. Answer the questions. It writes `~/.config/mstack/models.json`, the portable configuration every mstack skill reads. -You only override what you care about. To restore a role to the parent chat model, set it to `inherit-parent` or run `/setup-mstack` again. Setup preserves other choices and Harness overrides. +The defaults run at `xhigh` reasoning, the same as the `large` budget. `unlimited` lifts each model to its highest tier, up to `max`. Opus goes to `max`. Grok tops out at `xhigh`, so it stays there. `medium` and `small` lower the reasoning and spend fewer tokens. + +You only override what you care about. A role with no line in the rule keeps the skill's default. To restore a default, delete that role's line. A rerun of `/setup-mstack` keeps any role whose model differs from the default. When a default changes, a rule written before the change still pins the old default, so delete those role lines, or delete the file, then run `/setup-mstack` again. Use `inherit-parent` for the current chat model through the Harness's documented native inheritance. A new CLI process needs `run-role --parent-model ` to use that same model. `auto` requests the Harness's default selection, which may differ from the chat model. Neither value is a model name. The `reviewer` role accepts a model string or a non-empty list of unique model strings. `/interrogate` runs one reviewer per list entry. CLI fanout uses `--all-models --read-only`; select just one entry with `--model-index 0`. The `implementer` role sets the default model for `/swarm` workers unless a race names a model for each arm. ## Accept the verification offer, or don't -At the end of setup, `/setup-mstack` looks for a shared verification contract, a `verify-*` wrapper, or an existing repository driver. Several wrappers pointing at one contract count as one workflow. Setup reports conflicting legacy definitions instead of creating another copy. - -If it finds neither a reusable verification workflow nor a repository driver, setup offers once to run [`/create-verification-skill`](../../skills/create-verification-skill/SKILL.md). When you accept, the generator writes `.harness/verify//contract.md`, its feature map, and thin discovery wrappers. It proves one feature in the real app before handing over the result. Model setup alone does not start the app or create a team policy. +At the end of setup, `/setup-mstack` looks for a way to prove app behavior in your project, either a `verify-*` skill or an existing harness. If it finds neither, it offers once to generate one with [`/create-verification-skill`](../../skills/create-verification-skill/SKILL.md). -Say no and setup moves on. You can run `/create-verification-skill` yourself any time. [Verify and ship](./06-verify-and-ship.md#create-a-project-verification-skill) covers the proof. For a team using both native pstack and mstack, follow [the mixed-Harness adoption guide](./11-mixed-harness.md) to add the shared project workflow and CI checks. +Say yes and it writes `verify-/` under the active Harness's project skill root. See [the project skill paths](../../skills/create-verification-skill/references/harness-paths.md) for the root used by each Harness. The generated skill teaches agents to drive your app the way a user does, and setup proves it once before handing it over. Say no and setup moves on. You can run `/create-verification-skill` yourself any time. [Verify and ship](./06-verify-and-ship.md#create-a-project-verification-skill) covers it in depth. If you're new to mstack, say yes. An agent that can check its own work keeps going until the check passes. An agent that can't hands every result back to you to check by hand. Of everything in this guide, the verification skill pays off the most. @@ -44,7 +44,7 @@ After setup, start a new session. The model configuration applies to new session mstack spends extra tokens on subagents and review panels. That's the price of the rigor. To spend fewer: - Rerun `/setup-mstack` and pick a smaller reasoning budget or cheaper models. A strong model in the main chat with cheaper, faster models in the code roles is a good split. -- Set a role to `inherit-parent` so it runs on the chat's own model. +- Set a role to `auto` or `inherit-parent` so it runs on the chat's own model. - Shorten a panel list. Each entry runs one subagent. - Save `/meta-mode` for work that needs rigor. A small, obvious edit doesn't. @@ -58,6 +58,6 @@ Pick something real but small, and describe it the way you'd describe it to a co Watch the todo list. Its first items are the matched playbook's steps copied in, the Feature playbook for this prompt. If `/meta-mode` skips a step, the step stays in the list with `skip: `, so you can see what it chose not to do. -From here you can type normal follow-ups. `/meta-mode` stays active for the current task and fades as the chat moves on. When it fades, start the next task with `/meta-mode`, or pin it for the whole chat if your Harness can pin a skill or mode. Mid-chat, "new task" makes it match a fresh playbook. +From here you can type normal follow-ups. To keep `/meta-mode` on for the whole chat, pick it from the `/` menu with Option+Enter (Mac) or Alt+Enter (Windows) instead of Enter. That makes it a [Custom Mode](https://cursor.com/docs/skills), which stays in context on every turn until you exit it. Custom Modes are available in the Agents Window and the CLI. Plain Enter attaches the skill to one message, and it fades as the chat moves on. Next: [Route work through `/meta-mode`](./02-meta-mode.md). diff --git a/docs/guide/03-understand.md b/docs/guide/03-understand.md index 49e8506..02cb390 100644 --- a/docs/guide/03-understand.md +++ b/docs/guide/03-understand.md @@ -72,7 +72,7 @@ When another agent (or you, last week) left a branch mid-flight: /meta-mode take over this branch. read the decision log, figure out what's done, and continue from there. don't redo finished work. ``` -The [Session pickup playbook](../../skills/meta-mode/playbooks/session-pickup.md) treats the prior trail as authoritative. It first reads the latest project-local checkpoint with `node "/resume.mjs" read --project .`, follows its note and evidence paths, reconstructs the branch state and decisions, names the resume point, and verifies inherited claims against the original goal instead of re-deriving everything from scratch. Checkpoints live under Git metadata, so this workflow does not depend on a particular Harness or vendor path. +The [Session pickup playbook](../../skills/meta-mode/playbooks/session-pickup.md) treats the prior trail as authoritative. It reconstructs the branch state and decisions, names the resume point, and verifies inherited claims against the original goal instead of re-deriving everything from scratch. **Pitfall:** don't skip this page's skills because "the agent will read the code anyway." An agent that starts editing without a traced model tends to fix the symptom at the first plausible spot. `/how` first is cheaper than the second bug. diff --git a/docs/guide/04-design.md b/docs/guide/04-design.md index af4e252..7ad340a 100644 --- a/docs/guide/04-design.md +++ b/docs/guide/04-design.md @@ -66,7 +66,7 @@ Reach for it when parallelism buys coverage or lets independent checks race. `/a /interrogate the whole branch, but skeptically. no nitpicks unless it's an actual bug or regression. ``` -[`/interrogate`](../../skills/interrogate/SKILL.md) sends the same diff, intent, and rubric to several reviewers on different model families. Model diversity is the point. Different models have different blind spots, so a finding two models raise independently is high-confidence signal. The lead sorts everything into `Act on`, `Consider`, `Noted`, and `Dismissed`, with a reason for each dismissal, and applies nothing automatically. +[`/interrogate`](../../skills/interrogate/SKILL.md) sends the same diff, intent, and rubric to reviewers on different model families. Model diversity is the point. Different models have different blind spots, so a finding two models raise independently is high-confidence signal. The lead sorts everything into `Act on`, `Consider`, `Noted`, and `Dismissed`, with a reason for each dismissal, and applies nothing automatically. Read the dismissals too. The lead is a pragmatic senior engineer, not an oracle, and you can override it. diff --git a/docs/guide/06-verify-and-ship.md b/docs/guide/06-verify-and-ship.md index f9e407c..8c2c9be 100644 --- a/docs/guide/06-verify-and-ship.md +++ b/docs/guide/06-verify-and-ship.md @@ -58,11 +58,7 @@ The UI bullet above hides a real requirement. The agent needs a scripted way to [`/create-verification-skill`](../../skills/create-verification-skill/SKILL.md) interviews the repository, not you. It works out what a user touches, how the app launches locally, what can drive it (an existing harness first, otherwise browser and CDP, a PTY, or plain HTTP), what evidence proves behavior, and whether two instances can run side by side. It asks you only what the code can't answer. -It writes one `.harness/verify//contract.md` with Launch, Isolation, Doctor, Drive, Evidence, Cleanup, and Helpers sections. The adjacent `features/README.md` indexes the app's user paths and expected results. Owned scripts live in `helpers/`. The [worked feature-map example](../../skills/create-verification-skill/references/feature-map-example/) shows the required detail. - -The generator then renders thin `verify-` wrappers for the configured Harnesses. Each wrapper's `metadata.verification-contract` points at the same contract from the repository root. Wrappers select an available driver without copying launch commands, selectors, or proof requirements. Because Cursor also discovers `.agents/skills/`, a project using both Cursor and Codex has one shared wrapper there. See [the wrapper paths](../../skills/create-verification-skill/references/harness-paths.md). - -Before handing over the result, the generator launches an isolated instance, runs Doctor, drives one feature, captures evidence, and cleans up. The evidence must survive cleanup. One successful feature does not prove every mapped path or every Harness. A missing required capability remains a reported gap. +It writes `verify-/` under the active Harness's project skill root. See [the project skill paths](../../skills/create-verification-skill/references/harness-paths.md) for the root used by each Harness. The generated skill contains exact Launch, Doctor, Drive, Evidence, and Cleanup sections, plus a feature map under `features/` that indexes what the app does and what result proves each feature works. The skill ships a [worked feature-map example](../../skills/create-verification-skill/references/feature-map-example/) with a README index and one file per feature using the four required H2s. Before handing it over, the generator proves the skill once end to end: launch, doctor check, drive one feature, capture evidence, and clean up. If that proof fails, don't use the output. From then on, "verify it in the app" is a step any agent can execute, in this repo, with no setup conversation. Name it in the prompt when you want the proof in a specific form: @@ -74,7 +70,7 @@ From then on, "verify it in the app" is a step any agent can execute, in this re /meta-mode repro this with /verify-. if it repros on main, fix it and show me a video as proof. ``` -Once the verify skill works, a [`/swarm`](../../skills/swarm/SKILL.md) can split a full pass by feature-map entry and aggregate the results. Give concurrent drivers separate instances, ports, and data directories. When the app cannot isolate them, keep one coordinator driving serially. A swarm of verifiers also confirms a perf win over a big enough sample, or fuzzes the app for regressions before a PR ships. +Once the verify skill works, a [`/swarm`](../../skills/swarm/SKILL.md) can split a full pass by feature-map entry and aggregate the results. A swarm of verifiers also confirms a perf win over a big enough sample, or fuzzes the app for regressions before a PR ships. Treat the verification skill as infrastructure, not a one-off. Commit it, so every person and every agent on the team drives the app the same way. Then [build the lever](../../skills/principle-build-the-lever/SKILL.md). When agents keep writing throwaway scripts to click through the app, ask for a small control CLI that the skill calls instead. Agents spend fewer tokens, and every run becomes repeatable. A CLI that agents use well has these traits: @@ -95,11 +91,7 @@ Apps change and feature maps rot. Run this at least once a day, ideally from a s /maintain-verification-skill ``` -[`/maintain-verification-skill`](../../skills/maintain-verification-skill/SKILL.md) resolves wrappers to the canonical contract. Read-only source readers cover features in parallel, then one coordinator drives every mapped feature. Corrections go into `.harness/verify//`, with wrapper regeneration only when needed. Cursor automation and a local Claude Code session maintain the same map. - -The outcome is `clean` when all features have source and live coverage without corrections, `changed` when one PR contains proven corrections, or `blocked` when coverage cannot finish. The pass never edits product code. It reports product regressions without changing the map to accept broken behavior. - -For repositories with `.harness/policy.json`, follow `.harness/workflow.md` to run required commands and record evidence at the final commit. A passing policy check or command receipt does not certify app behavior. Review the named artifacts against the mapped feature. [Mixed-Harness adoption](./11-mixed-harness.md) describes the CI and handoff steps. +[`/maintain-verification-skill`](../../skills/maintain-verification-skill/SKILL.md) audits the generated skill: one read-only source reader per feature in parallel, then one live pass that drives every mapped feature. It ends in exactly one of three outcomes. `clean` means full coverage and nothing to ship. `changed` means one PR of proven corrections, confined to the verification skill's own directory. `blocked` names the blocker. It never edits product code. If the live pass catches a product regression, it reports the regression instead of papering over it in docs. ## Open the PR diff --git a/docs/guide/07-overnight.md b/docs/guide/07-overnight.md index 31f306a..b98d900 100644 --- a/docs/guide/07-overnight.md +++ b/docs/guide/07-overnight.md @@ -33,7 +33,6 @@ Walk through what each line buys you: - "fresh worktree off ``" keeps the run from colliding with anything else you have open. - "don't ask me before committing" pre-answers the permission the agent would otherwise block on. - A Harness loop or background job is the wake mechanism. The [Autonomous run playbook](../../skills/meta-mode/playbooks/autonomous-run.md) uses the active Harness's native mechanism when it has one, or a persistent local process with a saved log as its fallback. -- On a host with its own scheduler, the schedule can live there instead of in a session loop. In T3 Code the agent uses `schedule_task`, which runs even when no turn is active and posts each run back into the same thread. The prompt must be self-contained and carry the finish condition, because the run sees nothing else. Pause it with `update_scheduled_task` and `enabled: false`, and delete it when the finish condition holds. The [T3 Code page](../t3code.md#orchestration-overlap) lists what else changes there. - The escape hatch lets it stop at a genuine dead end and write up why, which beats eight hours of creative goal reinterpretation. Because you'll review this work after stepping away, `/meta-mode` routes it through [`/figure-it-out`](../../skills/figure-it-out/SKILL.md), which designs the run's phases before any code and wires in the decision log. diff --git a/docs/guide/README.md b/docs/guide/README.md index ebcfdb5..af7a4ce 100644 --- a/docs/guide/README.md +++ b/docs/guide/README.md @@ -10,13 +10,10 @@ Here's what you'll learn: 4. [Design the change](./04-design.md). `/architect`, `/arena`, `/swarm`, `/interrogate`, prototypes, and plans before code locks in a shape. 5. [Build and clean the change](./05-build-and-clean.md). The build playbooks, `/tdd`, `/unslop`, and `/no-comments`. 6. [Verify and ship](./06-verify-and-ship.md). Prove behavior on the real app, vet numbers with `/benchmark-checklist`, then open a focused PR and drive it to merged. -7. [Run work while you sleep](./07-overnight.md). Trust before loops, an overnight contract, a decision log you can audit, and coordinator threads and automations that scale past one agent. +7. [Run work while you sleep](./07-overnight.md). Trust before loops, an overnight contract, a decision log you can audit, and Projects and automations that scale past one agent. 8. [Steer with principle names](./08-principles.md). The 24 names that redirect an agent mid-task. 9. [Make it yours](./09-make-it-yours.md). Your own mode, `/correct` for repeated mistakes, and how to test a skill change. 10. [Recipes and pitfalls](./10-recipes-and-pitfalls.md). Prompts to copy and mistakes to skip. -11. [Mix pstack and mstack in one repository](./11-mixed-harness.md). Share verification facts, isolate work, and check evidence across Harnesses. - -12. [How mstack is layered, and the Claude Code session hook](./12-claude-code-routing.md). What sits under `/meta-mode`, how the Claude Code plugin routes a new session to it, and how to turn that off. Read the pages in order the first time. After that, each page stands alone. diff --git a/profiles/skill-manifest.json b/profiles/skill-manifest.json index 39ddc19..05208e8 100644 --- a/profiles/skill-manifest.json +++ b/profiles/skill-manifest.json @@ -1,7 +1,7 @@ { "version": 1, "sources": { - "pstack": "2cbf58508f40de470d7490b55c51d71241928fa2", + "pstack": "11713c683fe4add4fd403ea880580abbc9e0875f", "mattpocock/skills": "49dd158d1076134a641b33efb035946536778336" }, "files": { @@ -20,19 +20,19 @@ "skills/architect/references/runner-prompt.md": { "upstream": "pstack", "source": "skills/architect/references/runner-prompt.md", - "sourceDigest": "983bf2820cc14ed8ecab6e448e1033e5cfe6031967d0a9287b48c7fa9c33d925", + "sourceDigest": "21dd5314aab778c5007228027a4591d97693fbec6ab86524037772b63f40948e", "targetDigest": "983bf2820cc14ed8ecab6e448e1033e5cfe6031967d0a9287b48c7fa9c33d925" }, "skills/architect/SKILL.md": { "upstream": "pstack", "source": "skills/architect/SKILL.md", - "sourceDigest": "741901140ee382ebf93263a7ed03c6ee3719e578416d81afcd195876fa16c496", + "sourceDigest": "31f8e97a52bfa5432edd61f68ade2a8632ef0bacbc2d2a6802d7a0e6821944ac", "targetDigest": "76c299297a79236fa519d401716a6ad1845ecc1a3f4fdff2aa052309261651aa" }, "skills/arena/SKILL.md": { "upstream": "pstack", "source": "skills/arena/SKILL.md", - "sourceDigest": "e3a1f6c49a08b7e0b92134e53300d146f1f22ba83386d2019926e736df421851", + "sourceDigest": "f15524f216c1c63804b89edb4ff8e53bb21a7b8ed367368dedeb9468eeec6a92", "targetDigest": "f100383e190b806567015d2cbbaf90b9a1b0151ae60b08aa6185fc6eca3c9552" }, "skills/automate-me/SKILL.md": { @@ -44,13 +44,13 @@ "skills/benchmark-checklist/SKILL.md": { "upstream": "pstack", "source": "skills/benchmark-checklist/SKILL.md", - "sourceDigest": "6a767e788a60428fa14e645ee10fe2e49896e514ff654f668b1d824deb9038e8", + "sourceDigest": "ba109e96c8f6c1c391baccf19e5d11e14370df7b3f2605e1572cd565a6c0fca0", "targetDigest": "3fc701eecd146557b75c0e7d26929ca5d5469632def12ef032109710ae23c1c0" }, "skills/blast-radius/SKILL.md": { "upstream": "pstack", "source": "skills/blast-radius/SKILL.md", - "sourceDigest": "5f02db9101ccf26c20254718f0fcd5c2c7ac5d4292b0e0923d0944ac47237aff", + "sourceDigest": "2e10745b97f5862323dcda3b29ca60d56b5c3c98e37020085d26b48efbe0a436", "targetDigest": "72113714dc5e7ef634a8b220e3a8dacea7b0e82d1f24136c13e04013749ef41a" }, "skills/bro/SKILL.md": { @@ -144,7 +144,7 @@ "skills/figure-it-out/SKILL.md": { "upstream": "pstack", "source": "skills/figure-it-out/SKILL.md", - "sourceDigest": "0eb9485f0e7d84fee56b5d0f0af0faf4635e3ca87c8cba3970c01293b76ecc19", + "sourceDigest": "d9574cc24929773d5c23f40626ae1e09660afddd7de48e08dd6494d9fff9bbf0", "targetDigest": "37c25a3c0b354da74e33a2a291fc21e62140304eee2447ed73400bc2759402ec" }, "skills/how/references/explainer-prompt.md": { @@ -162,7 +162,7 @@ "skills/how/SKILL.md": { "upstream": "pstack", "source": "skills/how/SKILL.md", - "sourceDigest": "d31805589c7f6a63a6db6c9fadebbd79fb9660682cf1654e9b2e5e1e7cd30bc0", + "sourceDigest": "47cfe3e6fe55c49c3bdf8ad1b645dcd5fece8f0c36fd22d2e7221f9faa71f648", "targetDigest": "a3e2acb068e126bad1ddadb4b16bb14154d5687fffc8ce2fe8209660b83c2e4b" }, "skills/interrogate/references/code-quality-review.md": { @@ -180,21 +180,27 @@ "skills/interrogate/references/reviewer-prompt.md": { "upstream": "pstack", "source": "skills/interrogate/references/reviewer-prompt.md", - "sourceDigest": "e0598e254792b56de39bb16b1e6db559b03a522fdc54b98f942d254090920ae6", + "sourceDigest": "f6005cc2b535006fca97a96c5bfda49df57312eedf1ffd8d1aaaf3eb33817c25", "targetDigest": "e0598e254792b56de39bb16b1e6db559b03a522fdc54b98f942d254090920ae6" }, "skills/interrogate/references/rubric.md": { "upstream": "pstack", "source": "skills/interrogate/references/rubric.md", - "sourceDigest": "a85aa801abbaf14434f00579440abc0d8e2723227ba8bf57de7cca8d6e7d2f25", + "sourceDigest": "0f9c6bdb0b96e26dbde5f6407f417e0c02f54080e7a1268d8994f3c3ec6c5ac0", "targetDigest": "a85aa801abbaf14434f00579440abc0d8e2723227ba8bf57de7cca8d6e7d2f25" }, "skills/interrogate/SKILL.md": { "upstream": "pstack", "source": "skills/interrogate/SKILL.md", - "sourceDigest": "59d498c3e9848a24b2d105eb3f05b808aa4152adf4cb1de7bbb6aff4f4cd9b68", + "sourceDigest": "25341c393f515c1e1fa9bce668b7551e9f98c195113a460ff524d3c1f7f50cd9", "targetDigest": "ab2508809da00eac47444b102cd7d11730f15b2476cd6cd947e330cc08814e78" }, + "skills/ketchup/SKILL.md": { + "upstream": "pstack", + "source": "skills/ketchup/SKILL.md", + "sourceDigest": "f460a861cf2179808abc24b5588c94709f8cc3e58d4da2e44baf89556f53b587", + "targetDigest": "451887dc45227e0e1abd9abfb043e0bc231ff0b246a8ed48b05786306ada123a" + }, "skills/maintain-verification-skill/SKILL.md": { "upstream": "pstack", "source": "skills/maintain-verification-skill/SKILL.md", @@ -276,7 +282,7 @@ "skills/meta-mode/playbooks/opening-a-pr.md": { "upstream": "pstack", "source": "skills/poteto-mode/playbooks/opening-a-pr.md", - "sourceDigest": "ab40de7163c1c6e274f46ee559b2e53ef45673703f601f13f4931c199e6fb90f", + "sourceDigest": "931070f5674e81a191277253d4e02b1c45d091b223f93bf506d3896a428a5967", "targetDigest": "a44b4ea2e72e5249eb0ebe26fe9d64317285cc9eb2fd84382e50329e30fc89be" }, "skills/meta-mode/playbooks/orchestrate.md": { @@ -330,7 +336,7 @@ "skills/meta-mode/playbooks/trace-forensics.md": { "upstream": "pstack", "source": "skills/poteto-mode/playbooks/trace-forensics.md", - "sourceDigest": "137ce3984fb96e45971fdff4d3c79fa4ccc647c5b30ae4945783b9fb23f8cec7", + "sourceDigest": "e8a671fd5511a894f90c933bca75815e7a1d730cb53333075a80b0927e81acfc", "targetDigest": "137ce3984fb96e45971fdff4d3c79fa4ccc647c5b30ae4945783b9fb23f8cec7" }, "skills/meta-mode/playbooks/visual-parity.md": { @@ -369,7 +375,7 @@ "skills/meta-mode/SKILL.md": { "upstream": "pstack", "source": "skills/poteto-mode/SKILL.md", - "sourceDigest": "404c0ef4a78e93451b2ab555ca532e7197b5cf87de29205b6f7109dbee5d9c4d", + "sourceDigest": "03d61d15c5a0f7abc2c558c7323ff3c360dedc2915ebadf3c76c9e872f41cb64", "targetDigest": "1bd904d7163d624d390c09e7bd1079bb5dcf3435828ee72fa34882e06f347c52" }, "skills/mstack-help/SKILL.md": { @@ -398,13 +404,13 @@ "skills/principle-build-the-lever/SKILL.md": { "upstream": "pstack", "source": "skills/principle-build-the-lever/SKILL.md", - "sourceDigest": "458b269eab8e95a1573276955312f7d2a13ae8599879a9efc748248f6bc34b56", + "sourceDigest": "3434b0ad0c640c6f1d7960be7a8986c3bcdc14e26060360dec29903df60074ff", "targetDigest": "b49623e8e41c072ce14e6479a0a93cb932cd1a320642334cf0ac8f9e7cf31ded" }, "skills/principle-encode-lessons-in-structure/SKILL.md": { "upstream": "pstack", "source": "skills/principle-encode-lessons-in-structure/SKILL.md", - "sourceDigest": "77044c83a9ac6df78fc643887ea5f1f11f082adaf14b717c060cdaed03cce863", + "sourceDigest": "ad12c26209770c52f632d9480c048ac5334ce8e5d6297f83ade59652a56cb3ef", "targetDigest": "e66d95bd954a1e8ba298bc451ba1e9190c758f6d77c240540bedf8f28c895694" }, "skills/principle-exhaust-the-design-space/SKILL.md": { @@ -422,7 +428,7 @@ "skills/principle-explain-the-number/SKILL.md": { "upstream": "pstack", "source": "skills/principle-explain-the-number/SKILL.md", - "sourceDigest": "5aac99e7ce0bb1b37e2579acf4fe88c32a1456d9d46afd4a57cfe1df9092e89c", + "sourceDigest": "cd5a25f9e7cf023627ccb470dc5faa97542f29b4319496a32b839a8e1e988047", "targetDigest": "0a5cb3579a30e4da9d1635f5ceb11f773e551ec8626ac9c38b5db3985d3ac26b" }, "skills/principle-fix-root-causes/SKILL.md": { @@ -464,19 +470,19 @@ "skills/principle-minimize-reader-load/SKILL.md": { "upstream": "pstack", "source": "skills/principle-minimize-reader-load/SKILL.md", - "sourceDigest": "42551c5dc74cd578163c148da552db3ff67d29b78600ef216bfd311fb828fe69", + "sourceDigest": "1ea2b7fef2391cae5844c4efdbd59031f775e8a52d06b7495d707229a200dcca", "targetDigest": "d44ded81ac7cfc194dca65c9943a55fe8a058660485049a6e607e6bdf5d70738" }, "skills/principle-model-the-domain/SKILL.md": { "upstream": "pstack", "source": "skills/principle-model-the-domain/SKILL.md", - "sourceDigest": "bbadbb9a723fac3f76e782ae45665eb94058ec10993e4bae36d4dc6b0e4eac07", + "sourceDigest": "52c0d85e0c3827c41c18299b642657d7b47eaf77b7b31609e42e0df42b84c75f", "targetDigest": "4464cc1a0a2366ff8249659c30f525dba6206947f037f07f5931238ed0e96f82" }, "skills/principle-never-block-on-the-human/SKILL.md": { "upstream": "pstack", "source": "skills/principle-never-block-on-the-human/SKILL.md", - "sourceDigest": "f2764bb9338cbfc788c903cf4b9cd0a5f4042d3a04dd6d59cbd525d9beaadd0a", + "sourceDigest": "05030a7a083c337676f793881b4e93cd218e8f1dd676529f56e6ac1d3efb8d1f", "targetDigest": "90cd48f4082367fe70fc1659fec5a8d0e76a40cb7f9be4797b4b460cec28a4dd" }, "skills/principle-outcome-oriented-execution/SKILL.md": { @@ -494,7 +500,7 @@ "skills/principle-redesign-from-first-principles/SKILL.md": { "upstream": "pstack", "source": "skills/principle-redesign-from-first-principles/SKILL.md", - "sourceDigest": "a1c7fd0a96b40e12a74bceb0e6bb20a9666dd844dcabfb624acb27da23b929fe", + "sourceDigest": "170e0a658783e43fee8ec5a8c2422a4abb8f69cef621dd1819a95910b8207034", "targetDigest": "b3ac6bc1c707aa8ad1a331851ad71aeb48f179136907ab2015f34881c674d056" }, "skills/principle-separate-before-serializing-shared-state/SKILL.md": { @@ -512,19 +518,19 @@ "skills/principle-subtract-before-you-add/SKILL.md": { "upstream": "pstack", "source": "skills/principle-subtract-before-you-add/SKILL.md", - "sourceDigest": "a983a50e732c1ed315eba7aaf47a61329e31c4794eb1ab9d25d9945265b31e03", + "sourceDigest": "8c93bb9d1a7f38e2ef37655d93f0e790fa59903105af3d500cc8a663ebe45f3f", "targetDigest": "65fa4e1a2a630040eb0abbcfeaf0e82241fd968443021b535f94b4b6d4b7aa0f" }, "skills/principle-test-behavior-not-implementation/SKILL.md": { "upstream": "pstack", "source": "skills/principle-test-behavior-not-implementation/SKILL.md", - "sourceDigest": "87e40efe4e486f7ea639d2ed1fc0abe6c93b8fd0e89a81218086909d2470a52e", + "sourceDigest": "b2b73ba42920f9c3174ecdf808ec6e4591b3a9266ada9a05814f386004266d3a", "targetDigest": "c6104107aa4902342d36eb5c6b7f99862eadff5ba27f367cde011ccdde4d8d17" }, "skills/principle-type-system-discipline/SKILL.md": { "upstream": "pstack", "source": "skills/principle-type-system-discipline/SKILL.md", - "sourceDigest": "c83da8031ffb4c86410030d3e261f659598fca2b7d8158fd9dc269d70a3a025e", + "sourceDigest": "2e492cef34bb25a20b9115df61f9ef3a9837e3fda144ffda8079e5f45a1b72e8", "targetDigest": "9397a9ce6e26e54d0e6e9f81e488f626f3daefd6903509536fbdfb0d021a274f" }, "skills/recall/references/history-sources.md": { @@ -551,31 +557,31 @@ "skills/reflect/references/divergent-reviewer.md": { "upstream": "pstack", "source": "skills/reflect/references/divergent-reviewer.md", - "sourceDigest": "221dfc0abf7cbcd25e1da3cd87323f5d1050fc3bf652e096d093584e183c98fb", + "sourceDigest": "f6030d88e20e906ef5e2d9ba44cb013ce610c49c2fe2ef74c377d32e0dc9e939", "targetDigest": "6b21c64302826cea77c539f2be4bab2188be2821c1caaec536c16ef94f4ad99d" }, "skills/reflect/references/judgment-reviewer.md": { "upstream": "pstack", "source": "skills/reflect/references/judgment-reviewer.md", - "sourceDigest": "a40ecb9b28bd2a3491e11a541157fe58efe158e0eda7b61a5006c14590aabe61", + "sourceDigest": "38f917619fbf346062d643e0ad6b12fc952d58678dfcbbf42ffcf6d8b9c08307", "targetDigest": "eafa6b19333572c21daeebe1506bda066d7dd44f0b0e0f9185ba8b54b2d10a93" }, "skills/reflect/references/synthesizer.md": { "upstream": "pstack", "source": "skills/reflect/references/synthesizer.md", - "sourceDigest": "2f76c847eb45b182dc6fbcbf7d96c8ee7e2986ecfd9e0d640fec44e3cc5a617c", + "sourceDigest": "6af816963de74d1a1aef4070273c1ff533d2072732e488e159ddc0b299fec3cd", "targetDigest": "473acafc84aa4d712721d3424c81e281c9e7efdb4b3a70095840d059fb3938f0" }, "skills/reflect/references/tooling-reviewer.md": { "upstream": "pstack", "source": "skills/reflect/references/tooling-reviewer.md", - "sourceDigest": "bc49ced90fa81eaba3083b88aeb430d900a6d8f14ff40c1d6b52263bacfc77b6", + "sourceDigest": "f81b8697e7366fbbc18feba52c6e3253a101f751091364ebc4396a1d9b5753b4", "targetDigest": "c154b4f948cf470d099acd1770925aa1506edf17ba54de833af16c8d8528bc34" }, "skills/reflect/SKILL.md": { "upstream": "pstack", "source": "skills/reflect/SKILL.md", - "sourceDigest": "36efa48cc4ec2ba6f8131651aae24c6321682b098ed47a1069a7509462bf4a84", + "sourceDigest": "f5e9200f37e2a4567c0eeb0ba244fde66c1b3f35e3b7a883de2f85b3bda7365a", "targetDigest": "5478382b85614482fdf8799c9b0113d0c12c6595ee1003aa62c91f6288b91089" }, "skills/setup-mstack/references/hosts/t3code.md": { @@ -586,7 +592,7 @@ "skills/setup-mstack/SKILL.md": { "upstream": "pstack", "source": "skills/setup-pstack/SKILL.md", - "sourceDigest": "125dd0c8f588782cfb271efae8f97a0719e43e79f56b3495c095f460bcee6389", + "sourceDigest": "d61b47256a18155a81c8e5ef95e3cc6569ce8c18317c35c4dd9c8015cf68cb59", "targetDigest": "ccc9c0c029bc15fcce99a3983cf0c9d461f480d704227fb814396958cb8ffa7a" }, "skills/show-me-your-work/references/decision-log-template.tsv": { @@ -629,7 +635,7 @@ "skills/technical-writing/SKILL.md": { "upstream": "pstack", "source": "skills/technical-writing/SKILL.md", - "sourceDigest": "f5c512ffeec70bc4e0dee50f7bb4c26742e1be77967a6e8b15d1921e1c209ceb", + "sourceDigest": "61fe9c424a798ebf36ad94941f87be049cb8827bdf86d21474a0dde37b513c43", "targetDigest": "b83d616480d74381acdc5accb65a409c01095b71abc7dc02b6cadc496138dc81" }, "skills/typescript-best-practices/references/patterns.md": { @@ -647,19 +653,19 @@ "skills/unslop/SKILL.md": { "upstream": "pstack", "source": "skills/unslop/SKILL.md", - "sourceDigest": "195411d320b5b328f9f642baf59757ed19aaf0931c0838740e0aca273d538dc1", + "sourceDigest": "3126b9e2cf46022f5e0c332e84be5e17a9730669cb3d6ac0a7e5e7e94b1e24fa", "targetDigest": "290a10a90e52f080fdf0f225f043088990b5cd8d8b8307c800a91cfeb1568aa4" }, "skills/why/references/epistemics.md": { "upstream": "pstack", "source": "skills/why/references/epistemics.md", - "sourceDigest": "fcc0f559c072832c869a5ada72434b4849320a637ae63c09e8ee14f7ad787059", + "sourceDigest": "d54a2361b2d5973bc3fe2edf62f446d87935974d4b40d47f23b9529f956ca758", "targetDigest": "fcc0f559c072832c869a5ada72434b4849320a637ae63c09e8ee14f7ad787059" }, "skills/why/references/investigator-prompt.md": { "upstream": "pstack", "source": "skills/why/references/investigator-prompt.md", - "sourceDigest": "6892956a7ab0b5ee6c4babaf4f793703abe89b350ea7cb9463b4a56eea1c8266", + "sourceDigest": "c44afba186f899094f3694e6c9d6de5d14ff7c4ce28b787a9f50fc789c9a7fc3", "targetDigest": "6892956a7ab0b5ee6c4babaf4f793703abe89b350ea7cb9463b4a56eea1c8266" }, "skills/why/references/source-playbook.md": { @@ -671,7 +677,7 @@ "skills/why/references/sources/code-archaeology.md": { "upstream": "pstack", "source": "skills/why/references/sources/code-archaeology.md", - "sourceDigest": "8c14aa382f0de40829b2668d43e3f54814480bb93a486c9282ada4003f6b9dbd", + "sourceDigest": "f6b5c4c3dd4ddc31da446bbbe4d88806e2201f15a76b97b3e44ce25c5862e321", "targetDigest": "8c14aa382f0de40829b2668d43e3f54814480bb93a486c9282ada4003f6b9dbd" }, "skills/why/references/sources/databricks.md": { @@ -683,7 +689,7 @@ "skills/why/references/sources/datadog.md": { "upstream": "pstack", "source": "skills/why/references/sources/datadog.md", - "sourceDigest": "ebe9c07bac28e47757ee7f16fb93b0c01d427a08c501957d047f395a2f37b7e7", + "sourceDigest": "b139faac5dc11b8f26c8255dce6033c1a6ac143b038d3dd103f2034c5dbec9cd", "targetDigest": "ebe9c07bac28e47757ee7f16fb93b0c01d427a08c501957d047f395a2f37b7e7" }, "skills/why/references/sources/incident-postmortem.md": { @@ -707,7 +713,7 @@ "skills/why/references/sources/sentry.md": { "upstream": "pstack", "source": "skills/why/references/sources/sentry.md", - "sourceDigest": "6f292bc4fb1548e956f95e1900b9481abf5134254419f1cd9edec95428c82d73", + "sourceDigest": "e0ed11e474c3d248bc5ac16d37ca1439b2db0253a3413252194556643cf8328a", "targetDigest": "6f292bc4fb1548e956f95e1900b9481abf5134254419f1cd9edec95428c82d73" }, "skills/why/references/sources/slack.md": { @@ -719,13 +725,13 @@ "skills/why/references/synthesizer-prompt.md": { "upstream": "pstack", "source": "skills/why/references/synthesizer-prompt.md", - "sourceDigest": "733a3e9cf897b1aca56aaddeae01a3832e4bfed024c2f602db2d1bf807d7a73b", + "sourceDigest": "11c62671aa7b7a6e3d36929ffe2b59bf95e6ca664eee4d93e6ee527dd3390ddb", "targetDigest": "733a3e9cf897b1aca56aaddeae01a3832e4bfed024c2f602db2d1bf807d7a73b" }, "skills/why/SKILL.md": { "upstream": "pstack", "source": "skills/why/SKILL.md", - "sourceDigest": "2a852ec8680920109d2b56538b027c52867896a597250ac5d18a13e0b42e5b06", + "sourceDigest": "fa1d1e9dec14b15381c1ccccad74044d6b6ea3b4af56821f59ba2d8e59b07545", "targetDigest": "873aedc86d1321093e9a195ac8bff1783241b309a1d33808ab74f181c4b8f22d" }, "skills/writing-for-agents/SKILL-MECHANICS.md": { @@ -774,7 +780,7 @@ "tools/meta-mode/orch/orch.test.ts": { "upstream": "pstack", "source": "skills/poteto-mode/scripts/orch/orch.test.ts", - "sourceDigest": "174b86d21ff51ccd28d1a8c938cb2e0c6fa287b209d4ca6c03932fcb1b53372e", + "sourceDigest": "773153ac74de6eb15f58d2682f487f5f30672d7efe3ef1d24a131aa9129d279b", "targetDigest": "821c2cd328e441590bb236733ca48a6f889e13c7c49447c5a0c170ac999af5a5", "reason": "Runtime tools are packaged separately from portable skill instructions." }, @@ -955,7 +961,7 @@ "pstack:skills/poteto-help/SKILL.md": { "upstream": "pstack", "source": "skills/poteto-help/SKILL.md", - "sourceDigest": "5fc65e4c30c52edcde690d18904e3a8cf6ba6c2424c672d1a5cb6d29ab28645c", + "sourceDigest": "3fe669c7c3b8f52c18b7c68ecce01c8691e844b9d2b41a8a6ff6432341451986", "reason": "Links to repository pages the default installer does not ship. The local mstack-help skill replaces it and points at public URLs for those pages." } } diff --git a/profiles/skills.json b/profiles/skills.json index 2ef08a2..ed715bf 100644 --- a/profiles/skills.json +++ b/profiles/skills.json @@ -13,6 +13,7 @@ "figure-it-out", "how", "interrogate", + "ketchup", "maintain-verification-skill", "make-bot-ui", "meta-mode", diff --git a/profiles/upstream-manifest.json b/profiles/upstream-manifest.json index 7474e94..d472c0e 100644 --- a/profiles/upstream-manifest.json +++ b/profiles/upstream-manifest.json @@ -1,6 +1,6 @@ { "source": "https://github.com/cursor/plugins/tree/main/pstack", - "commit": "2cbf58508f40de470d7490b55c51d71241928fa2", + "commit": "11713c683fe4add4fd403ea880580abbc9e0875f", "canonicalSkills": { "architect": { "source": "8c46078c04ee70fc4f35a9f82a364e49b78992c43625873c82f0635054dc89bd", @@ -295,10 +295,10 @@ "automations/benny/templates/triage-automation-prompt.md": "e0bba594547834f013ec805915610eb597e7929efe3ffbe85ae00339ee16d474" }, "guide": { - "docs/guide/01-setup.md": "058974e262eed41d2c24428109127898d3a6c403538570e7add515c4089d0d84", + "docs/guide/01-setup.md": "a6a9100fc9ace40b6725c7b819928551403a27364e3478ea451fac45eff3dd15", "docs/guide/02-meta-mode.md": "681343e7135540ecd0125c83209e602c5e646534b89c2a6029cc29d4dc2455fd", "docs/guide/03-understand.md": "c7dce3a9b1f1c0de8c00084453a3a18b69f0ad0c6616592b584e2d19add69ebd", - "docs/guide/04-design.md": "83f10b418a0f4d6ec0d7b536918d395fbcdf853f640d5dcbc1f7394a8f3d68ca", + "docs/guide/04-design.md": "588228c2e8fd6f9c75c971c5801568cea53ed7a7e7ce84a6ac88947d96df021d", "docs/guide/05-build-and-clean.md": "af91971988478ed0e53775d7f14f59e40ef7093b524d21df4f0b7917121b4f23", "docs/guide/06-verify-and-ship.md": "e3a8259f2b2450692e43d607848f5a85a7cee894490452968391079e52a8ac50", "docs/guide/07-overnight.md": "b66d8726a888fa8ed2f1b488fc1ca14ac67eab892ff655878bd09bacdcdefabc", @@ -317,7 +317,7 @@ "tools/meta-mode/bootstrap.ts": "d9d39f235da5512de6122f1ff28584b3a0120b170f5447a7a5868f7cf187d12a", "tools/meta-mode/bun.lock": "6413513594536785c3fd52b14934dd52d1ce179ad3ffe99d77535f5b637435a2", "tools/meta-mode/check-plan.mjs": "4f9432d9989880b6afc2bdda503d5b12a9d07d357ecf31936b7ab5e83bc80523", - "tools/meta-mode/orch/orch.test.ts": "174b86d21ff51ccd28d1a8c938cb2e0c6fa287b209d4ca6c03932fcb1b53372e", + "tools/meta-mode/orch/orch.test.ts": "773153ac74de6eb15f58d2682f487f5f30672d7efe3ef1d24a131aa9129d279b", "tools/meta-mode/orch/orch.ts": "f091687df627a0b75fabd54af58945a9cd6c7039ef0622012ac9ed60cd8ec434", "tools/meta-mode/orch/store.ts": "0eae7cf69282e827b1227166f2e32cee3560f2f3e65b3f1f2faf6fb83d3b4c5b", "tools/meta-mode/package.json": "c7ac7fd69bb925415cdc15cd636567304ee40f8d665986e45ed8c0ee658f6caf", @@ -332,7 +332,7 @@ "tools/meta-mode/watch-pr/tsconfig.json": "1ecccc72320b086c63ce3f73c959896fd747363e63553b3b1136296ea4069e45", "tools/meta-mode/watch-pr/types.compile.ts": "621af4c9a664fbf699a9737efccdc248abb416df8819c9dc5f824beae2b9b1d6", "tools/meta-mode/watch-pr/types.ts": "64ba6221e3bfe61bbb292337d199cdec6309455477280efb060203dba34e0e91", - "tools/meta-mode/watch-pr/watch-pr": "d955603be6cc0e8b8ffcec722f635192b2261410b1f2929abea94480e47eb5d4", + "tools/meta-mode/watch-pr/watch-pr": "a17825c7862730dd7c897c1ac076971c0f11d2f9ff8fe37c4a74ebc6db92d549", "tools/meta-mode/worktree-audit.sh": "9f14b5f4f70a6ada93778e49701f854796b11776edccb9f73816ee2a8b8b623c" } } diff --git a/profiles/upstreams.json b/profiles/upstreams.json index 58059d7..89f784c 100644 --- a/profiles/upstreams.json +++ b/profiles/upstreams.json @@ -1,8 +1,9 @@ { "pstack": { "repository": "https://github.com/cursor/plugins/tree/main/pstack", - "commit": "2cbf58508f40de470d7490b55c51d71241928fa2", + "commit": "11713c683fe4add4fd403ea880580abbc9e0875f", "renames": { + "ketchup": "ketchup", "poteto-mode": "meta-mode", "setup-pstack": "setup-mstack", "poteto-agent": "meta-agent" diff --git a/skills/ketchup/SKILL.md b/skills/ketchup/SKILL.md new file mode 100644 index 0000000..d7fa447 --- /dev/null +++ b/skills/ketchup/SKILL.md @@ -0,0 +1,22 @@ +--- +name: 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." +--- + +# Ketchup + +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 + +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 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 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. 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. 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. From 45c19baad98c5485e2ce5472c239cc90f1e5280d Mon Sep 17 00:00:00 2001 From: 3metaJun <251347867+3metaJun@users.noreply.github.com> Date: Sun, 11 Oct 2026 17:20:38 +0800 Subject: [PATCH 2/3] fix(ci): pin validation to synced pstack --- .github/workflows/validate.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 19efa42..0b99030 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -45,7 +45,7 @@ jobs: - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5 with: repository: cursor/plugins - ref: 2cbf58508f40de470d7490b55c51d71241928fa2 + ref: 11713c683fe4add4fd403ea880580abbc9e0875f path: .upstream/cursor-plugins sparse-checkout: pstack - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5 From 92f22d2718e5ca4d0f7f61fc7079e40ae1144628 Mon Sep 17 00:00:00 2001 From: 3metaJun <251347867+3metaJun@users.noreply.github.com> Date: Sun, 11 Oct 2026 17:31:49 +0800 Subject: [PATCH 3/3] fix(ci): refresh upstream review manifest --- profiles/upstream-manifest.json | 86 +++++++++++++++++---------------- 1 file changed, 45 insertions(+), 41 deletions(-) diff --git a/profiles/upstream-manifest.json b/profiles/upstream-manifest.json index d472c0e..2103e40 100644 --- a/profiles/upstream-manifest.json +++ b/profiles/upstream-manifest.json @@ -3,11 +3,11 @@ "commit": "11713c683fe4add4fd403ea880580abbc9e0875f", "canonicalSkills": { "architect": { - "source": "8c46078c04ee70fc4f35a9f82a364e49b78992c43625873c82f0635054dc89bd", + "source": "76ca68a7e061c68a9d387cb60a4c88eeca7f7aa4f472b6053e42e2ec19db6597", "target": "76c299297a79236fa519d401716a6ad1845ecc1a3f4fdff2aa052309261651aa" }, "arena": { - "source": "6cc5f63b9212d91d25a10670f8a5eba8665278013ae0e066d18a25f87b710447", + "source": "39ea26609b17d925e97cea760f03ba60adea45f4f7232af7a701f8ebacd2b569", "target": "f100383e190b806567015d2cbbaf90b9a1b0151ae60b08aa6185fc6eca3c9552" }, "automate-me": { @@ -15,11 +15,11 @@ "target": "6ab6c4c4a4b50a7cb182149408bd1758229d4386fbb8b1a66cf6927847b02c27" }, "benchmark-checklist": { - "source": "6a767e788a60428fa14e645ee10fe2e49896e514ff654f668b1d824deb9038e8", + "source": "ba109e96c8f6c1c391baccf19e5d11e14370df7b3f2605e1572cd565a6c0fca0", "target": "3fc701eecd146557b75c0e7d26929ca5d5469632def12ef032109710ae23c1c0" }, "blast-radius": { - "source": "5f02db9101ccf26c20254718f0fcd5c2c7ac5d4292b0e0923d0944ac47237aff", + "source": "2e10745b97f5862323dcda3b29ca60d56b5c3c98e37020085d26b48efbe0a436", "target": "72113714dc5e7ef634a8b220e3a8dacea7b0e82d1f24136c13e04013749ef41a" }, "bro": { @@ -35,17 +35,21 @@ "target": "eca219cac2808714d6aa3090fd3065d1da6a579d432f277aef334f1ca0dfe770" }, "figure-it-out": { - "source": "cd4c13cfc6553c5ff32458ab1f1a72a83548510f0bba77ca8d6c3846f0da09a4", + "source": "d9ed31f08dcd8b80693dcc0da6c5d8bdaddacb341c2ff4aaabc189fe47561e99", "target": "37c25a3c0b354da74e33a2a291fc21e62140304eee2447ed73400bc2759402ec" }, "how": { - "source": "6492ea0d986c9763d649c665fb331a3b555444c486616136b748ca6c945045b5", + "source": "1ea39010bbb68f9dccd669ac516f5e90b5f3ceaa0b00f4f59c7d4b7f9faf50b8", "target": "a3e2acb068e126bad1ddadb4b16bb14154d5687fffc8ce2fe8209660b83c2e4b" }, "interrogate": { - "source": "08a284d1c40dcfc49df5e33dcd5edac4dbb94664976eda174f3fdc15aad92873", + "source": "facea53a9a920ed50fa5a8ea10fea51ad1d81effbb2a7442496db51e468b8415", "target": "ab2508809da00eac47444b102cd7d11730f15b2476cd6cd947e330cc08814e78" }, + "ketchup": { + "source": "f460a861cf2179808abc24b5588c94709f8cc3e58d4da2e44baf89556f53b587", + "target": "451887dc45227e0e1abd9abfb043e0bc231ff0b246a8ed48b05786306ada123a" + }, "maintain-verification-skill": { "source": "515c0eaa054b3f6be1b1fb06f2c2f173c80fddb58bbcac57576f89c479bc68e8", "target": "b236ab1a439ae067d41d0fc191517992da1130d7935d3c8fa5084def26512296" @@ -54,14 +58,14 @@ "source": "3624c8ef16cf2e48deb2a4049e72c6962a9431c8d6c6af90e7bd7ea0375224ec", "target": "2f04984c34d64ad8119eac43f24298d480528b14a9876d672aee0c942aa0c2da" }, - "meta-mode": { - "source": "2e09a945cbe289dd85448f4a51eeac8c0c3893904decaab9413a33babf96ca08", - "target": "1bd904d7163d624d390c09e7bd1079bb5dcf3435828ee72fa34882e06f347c52" - }, "no-comments": { "source": "5c5b0882297d704c3a9720c52b7a793c68b013eaf717989f0945624efdfe2b05", "target": "f5bc3892fd057751d5928cffbebabbcde58804021a520bf67fac6b550d3399f5" }, + "meta-mode": { + "source": "990d7bd0fdbe817d39e646d7dfb7c3aa038cb7e73c42369a17afe61bfc9e06e2", + "target": "1bd904d7163d624d390c09e7bd1079bb5dcf3435828ee72fa34882e06f347c52" + }, "principle-attack-the-premise": { "source": "c87bd7536f772f8a403ad8155535ee17a1bbec9a353156693eb3bb1520c87ae3", "target": "58c2998cbe0318b648d2f78c080003c5d3685a0ede2a98e56bc29e2fdfa7417a" @@ -71,11 +75,11 @@ "target": "0ebee28a5f8bf5cac890dc37a18f3cdf66c360d85336fe8efa0be04430ecdddf" }, "principle-build-the-lever": { - "source": "458b269eab8e95a1573276955312f7d2a13ae8599879a9efc748248f6bc34b56", + "source": "3434b0ad0c640c6f1d7960be7a8986c3bcdc14e26060360dec29903df60074ff", "target": "b49623e8e41c072ce14e6479a0a93cb932cd1a320642334cf0ac8f9e7cf31ded" }, "principle-encode-lessons-in-structure": { - "source": "77044c83a9ac6df78fc643887ea5f1f11f082adaf14b717c060cdaed03cce863", + "source": "ad12c26209770c52f632d9480c048ac5334ce8e5d6297f83ade59652a56cb3ef", "target": "e66d95bd954a1e8ba298bc451ba1e9190c758f6d77c240540bedf8f28c895694" }, "principle-exhaust-the-design-space": { @@ -87,7 +91,7 @@ "target": "3013367ce42fabb55799ffbcc51ad20b2ae7ec1b898bad4ac4ceaa2f093edbe1" }, "principle-explain-the-number": { - "source": "5aac99e7ce0bb1b37e2579acf4fe88c32a1456d9d46afd4a57cfe1df9092e89c", + "source": "cd5a25f9e7cf023627ccb470dc5faa97542f29b4319496a32b839a8e1e988047", "target": "0a5cb3579a30e4da9d1635f5ceb11f773e551ec8626ac9c38b5db3985d3ac26b" }, "principle-fix-root-causes": { @@ -115,15 +119,15 @@ "target": "388e9cbc9e52bd72d9044d7e37126bd3355c4e8f1188447e2a6850fe4fc549d7" }, "principle-minimize-reader-load": { - "source": "42551c5dc74cd578163c148da552db3ff67d29b78600ef216bfd311fb828fe69", + "source": "1ea2b7fef2391cae5844c4efdbd59031f775e8a52d06b7495d707229a200dcca", "target": "d44ded81ac7cfc194dca65c9943a55fe8a058660485049a6e607e6bdf5d70738" }, "principle-model-the-domain": { - "source": "bbadbb9a723fac3f76e782ae45665eb94058ec10993e4bae36d4dc6b0e4eac07", + "source": "52c0d85e0c3827c41c18299b642657d7b47eaf77b7b31609e42e0df42b84c75f", "target": "4464cc1a0a2366ff8249659c30f525dba6206947f037f07f5931238ed0e96f82" }, "principle-never-block-on-the-human": { - "source": "f2764bb9338cbfc788c903cf4b9cd0a5f4042d3a04dd6d59cbd525d9beaadd0a", + "source": "05030a7a083c337676f793881b4e93cd218e8f1dd676529f56e6ac1d3efb8d1f", "target": "90cd48f4082367fe70fc1659fec5a8d0e76a40cb7f9be4797b4b460cec28a4dd" }, "principle-outcome-oriented-execution": { @@ -135,7 +139,7 @@ "target": "69fe19f428387ffbdf60d81fa6817272f1f88bc30ec7cd7edad408ce607ff39c" }, "principle-redesign-from-first-principles": { - "source": "a1c7fd0a96b40e12a74bceb0e6bb20a9666dd844dcabfb624acb27da23b929fe", + "source": "170e0a658783e43fee8ec5a8c2422a4abb8f69cef621dd1819a95910b8207034", "target": "b3ac6bc1c707aa8ad1a331851ad71aeb48f179136907ab2015f34881c674d056" }, "principle-separate-before-serializing-shared-state": { @@ -147,15 +151,15 @@ "target": "bc512996a3f226d1964444341e3fab1bda7f1b2928b136ab406ac4486150430f" }, "principle-subtract-before-you-add": { - "source": "a983a50e732c1ed315eba7aaf47a61329e31c4794eb1ab9d25d9945265b31e03", + "source": "8c93bb9d1a7f38e2ef37655d93f0e790fa59903105af3d500cc8a663ebe45f3f", "target": "65fa4e1a2a630040eb0abbcfeaf0e82241fd968443021b535f94b4b6d4b7aa0f" }, "principle-test-behavior-not-implementation": { - "source": "87e40efe4e486f7ea639d2ed1fc0abe6c93b8fd0e89a81218086909d2470a52e", + "source": "b2b73ba42920f9c3174ecdf808ec6e4591b3a9266ada9a05814f386004266d3a", "target": "c6104107aa4902342d36eb5c6b7f99862eadff5ba27f367cde011ccdde4d8d17" }, "principle-type-system-discipline": { - "source": "c83da8031ffb4c86410030d3e261f659598fca2b7d8158fd9dc269d70a3a025e", + "source": "2e492cef34bb25a20b9115df61f9ef3a9837e3fda144ffda8079e5f45a1b72e8", "target": "9397a9ce6e26e54d0e6e9f81e488f626f3daefd6903509536fbdfb0d021a274f" }, "recall": { @@ -163,11 +167,11 @@ "target": "be67c9e064a2b6d2ec52e915c19f6507f9f389a112e9961eb93b3c793b565e70" }, "reflect": { - "source": "902cd959ff2a894c44f462b58057afac676fb83fb0c56c2fc3c853db95e02205", + "source": "15c32130fc17fd155852d5e95e81110f390cb5266c1cdd9db59b837d1e31984c", "target": "5478382b85614482fdf8799c9b0113d0c12c6595ee1003aa62c91f6288b91089" }, "setup-mstack": { - "source": "388d2a0869504ef9943f34b217d0d7a3ca13fdaaeea2327078104d3efb807ce3", + "source": "0b6497df7bbb807406afe14c8967ce07bc0e0738e9a341c512d264aa94cc5aa8", "target": "ccc9c0c029bc15fcce99a3983cf0c9d461f480d704227fb814396958cb8ffa7a" }, "show-me-your-work": { @@ -187,7 +191,7 @@ "target": "5a85664f8cce57429af0d8c060a20d8740579867f0976f4981032e8855cab2b5" }, "technical-writing": { - "source": "f5c512ffeec70bc4e0dee50f7bb4c26742e1be77967a6e8b15d1921e1c209ceb", + "source": "61fe9c424a798ebf36ad94941f87be049cb8827bdf86d21474a0dde37b513c43", "target": "b83d616480d74381acdc5accb65a409c01095b71abc7dc02b6cadc496138dc81" }, "typescript-best-practices": { @@ -195,83 +199,83 @@ "target": "02b41b2cbb0ac43940b8f4df8b54c55f1aac0a68890a9379f9b006b2a8f1f4a0" }, "unslop": { - "source": "195411d320b5b328f9f642baf59757ed19aaf0931c0838740e0aca273d538dc1", + "source": "3126b9e2cf46022f5e0c332e84be5e17a9730669cb3d6ac0a7e5e7e94b1e24fa", "target": "290a10a90e52f080fdf0f225f043088990b5cd8d8b8307c800a91cfeb1568aa4" }, "why": { - "source": "073fb39adb2de6d07a6cfbaf98a35b6397be974ff9fe3bb26dc46f7065a04114", + "source": "844130c025ed6025e37bf64c160e9a1d3511c716d0dabe3a90ed297c0f7337ad", "target": "873aedc86d1321093e9a195ac8bff1783241b309a1d33808ab74f181c4b8f22d" } }, "adaptedArtifacts": { "automations/benny/FOR_AGENTS.md": { "source": "9e86916edf7fdddf3325dac869d947d5cab767ee40f1b5eaf5d16e31f2a5322a", - "target": "5a8f7571f9aa66d16434e2d4bb6718c9e76141843f68c14e4e2f6a8fc39accce", + "target": "9e86916edf7fdddf3325dac869d947d5cab767ee40f1b5eaf5d16e31f2a5322a", "reason": "Route native Benny verification and maintenance through the shared canonical contract and feature map." }, "automations/benny/README.md": { "source": "339fa6a5e1b07dbd708e87bc423e31e25ab3ac7e4292b80d3330abe992ee3245", - "target": "4dacbeb44e84630bbb7d88d119bd3ed9a76f679fb691a280463f5473e192d69e", + "target": "339fa6a5e1b07dbd708e87bc423e31e25ab3ac7e4292b80d3330abe992ee3245", "reason": "Route native Benny verification and maintenance through the shared canonical contract and feature map." }, "automations/benny/skills/reproduce-and-fix-issues/references/control-adapter.md": { "source": "58b0615d2fca895f9a20df83266e280042b0d585b5f2fd324e2094a682fd846b", - "target": "02c92e00d47c70c41bf9f469b556ea8d071483ad1eca70c3b27642dbc1f611f5", + "target": "58b0615d2fca895f9a20df83266e280042b0d585b5f2fd324e2094a682fd846b", "reason": "Route native Benny verification and maintenance through the shared canonical contract and feature map." }, "automations/benny/skills/reproduce-and-fix-issues/references/feature-map.example.md": { "source": "1e5c7c8522daec3e43fcc2e73ceb97289ded65b552949ce65a11cc8eb3d2b6ee", - "target": "c8a6639a5f4c377da6ce4e3a75a1ab3a843b1a17bb640cf758939eee0c1af2ea", + "target": "1e5c7c8522daec3e43fcc2e73ceb97289ded65b552949ce65a11cc8eb3d2b6ee", "reason": "Route native Benny verification and maintenance through the shared canonical contract and feature map." }, "automations/benny/skills/reproduce-and-fix-issues/references/verify-existing-fix.md": { "source": "c90eae00abcdec71a58fa8d60f2c495b082a526ad50b8e8e494837609129bf29", - "target": "d62d3a59cddf77f591ee62b123e367faf805f64ae7d18103741ac04207ebbe39", + "target": "c90eae00abcdec71a58fa8d60f2c495b082a526ad50b8e8e494837609129bf29", "reason": "Route native Benny verification and maintenance through the shared canonical contract and feature map." }, "automations/benny/skills/reproduce-and-fix-issues/SKILL.md": { "source": "2cb174442390be10cb7e7767e89bb1e94fda4d014426c40888397ad8286060ff", - "target": "6cd1740f9a1edaf6ab02eaf93f8690d6f4062e68b35be06c50585ac71f9798b6", + "target": "2cb174442390be10cb7e7767e89bb1e94fda4d014426c40888397ad8286060ff", "reason": "Route native Benny verification and maintenance through the shared canonical contract and feature map." }, "automations/benny/skills/setup-benny/SKILL.md": { "source": "c5bbca8d97cc6975d34e84c42ac4fd59e04c7f77892e0af534b3e58ca0fd43df", - "target": "269ab1c55733cbc176eb07c9268b891a5b03051be90fec1d053dc03ecc870b69", + "target": "c5bbca8d97cc6975d34e84c42ac4fd59e04c7f77892e0af534b3e58ca0fd43df", "reason": "Route native Benny verification and maintenance through the shared canonical contract and feature map." }, "automations/benny/templates/configuration.example.yaml": { "source": "13e24b4ce9b9a0913916e85fe3b080b88d45f8e55dccfe8ae38e0751a997b6f5", - "target": "6ba873ecb944db84f46965238f131e195f9ac9e26fd037d6c4a198d9404d3c3b", + "target": "13e24b4ce9b9a0913916e85fe3b080b88d45f8e55dccfe8ae38e0751a997b6f5", "reason": "Route native Benny verification and maintenance through the shared canonical contract and feature map." }, "automations/benny/templates/reproduce-automation-prompt.md": { "source": "71ec574f1844e379394ae4ef14c48d7df10afbaa319d395c788d7f856f0e6899", - "target": "f0238f77e8339eba897e2a85fa1ee328ed3845be14f65d01863a8f0938eb538d", + "target": "71ec574f1844e379394ae4ef14c48d7df10afbaa319d395c788d7f856f0e6899", "reason": "Route native Benny verification and maintenance through the shared canonical contract and feature map." }, "docs/guide/01-setup.md": { - "source": "058974e262eed41d2c24428109127898d3a6c403538570e7add515c4089d0d84", - "target": "780ae4284b48e26032e0e70844d918ade5cd6ffebd6c301784c4432d4b7ac980", + "source": "a6a9100fc9ace40b6725c7b819928551403a27364e3478ea451fac45eff3dd15", + "target": "a6a9100fc9ace40b6725c7b819928551403a27364e3478ea451fac45eff3dd15", "reason": "Document one canonical verification contract and the mixed pstack/mstack project workflow." }, "docs/guide/03-understand.md": { "source": "c7dce3a9b1f1c0de8c00084453a3a18b69f0ad0c6616592b584e2d19add69ebd", - "target": "72e10ba5cac7e7510de58bf4669121f820343304f5050c4bc219dd00668c05f9", + "target": "c7dce3a9b1f1c0de8c00084453a3a18b69f0ad0c6616592b584e2d19add69ebd", "reason": "Point session pickup at the portable project-local resume checkpoint." }, "docs/guide/06-verify-and-ship.md": { "source": "e3a8259f2b2450692e43d607848f5a85a7cee894490452968391079e52a8ac50", - "target": "5fd91e770e7805455668b44d4f39f767498dc5ff6d4f10a9cfbe9de9d0631ac5", + "target": "e3a8259f2b2450692e43d607848f5a85a7cee894490452968391079e52a8ac50", "reason": "Document one canonical verification contract and the mixed pstack/mstack project workflow." }, "docs/guide/07-overnight.md": { "source": "b66d8726a888fa8ed2f1b488fc1ca14ac67eab892ff655878bd09bacdcdefabc", - "target": "b7e45bde8b8e383ca2eeaf97296da9d409a7b13214c26a9f815ff83f4ed1a67e", + "target": "b66d8726a888fa8ed2f1b488fc1ca14ac67eab892ff655878bd09bacdcdefabc", "reason": "Offer a host scheduler as an alternative to a session loop for unattended runs." }, "docs/guide/README.md": { "source": "4b0d617c745e1ff33274bea1c1bc1274f3e23514455bec97affc9e9951f2350b", - "target": "234cc31995332fdc898f1814d611b7cbcd6b2c1915e793dbb75883dd31b8c030", + "target": "4b0d617c745e1ff33274bea1c1bc1274f3e23514455bec97affc9e9951f2350b", "reason": "Document one canonical verification contract and the mixed pstack/mstack project workflow." } },