diff --git a/corpus/skills/cat-mode/SKILL.md b/corpus/skills/cat-mode/SKILL.md index 11b57ffba..813fa5c31 100644 --- a/corpus/skills/cat-mode/SKILL.md +++ b/corpus/skills/cat-mode/SKILL.md @@ -50,10 +50,10 @@ Once direction is set, act — don't ask permission for each sub-step. One fully - **An open PR is not evidence it is still needed.** Run `scripts/ci/check_branch_not_superseded.py` and report it before a land. - **A hand-back ("open the app and do it") is an unverified claim.** - "Cannot" needs the same evidence as any claim; keep manual steps for what - only a human can do (OAuth consent, a store upload). Before handing back, - name every surface tried and grep the artifact already located (`--help`, - bundle/asar, DB, logs). + "Cannot" needs evidence; keep manual steps for what only a human can do + (OAuth consent). First try the step once in the main session: a block a + helper reports is the helper's, not yours (no known prior art). Then + name every surface tried and grep the artifact already located (logs, DB). - **A blocked hand-back relays the gate's exit word for word.** When a hook, guard, or check blocks and the user must act, paste its exit message and the exact command, path, or marker it names, unshortened; a summary can drop the one step that gets them out. - Destructive or hard-to-reverse actions (force-push, bypassing a merge queue guard, schema changes) get one stop-and-ask. In the user's own repo, diff --git a/tests/test_cat_mode.py b/tests/test_cat_mode.py index e13770598..2bcc35b33 100644 --- a/tests/test_cat_mode.py +++ b/tests/test_cat_mode.py @@ -355,6 +355,13 @@ def test_hand_back_is_an_unverified_claim(self): self.assertIn("name every surface tried", text) self.assertIn("grep the artifact already located", text) + def test_helper_reported_block_is_tried_in_the_main_session(self): + """A subagent's guard block does not bind the parent: session 189436d4 + handed the user publish scripts for 66 minutes on a helper's report.""" + text = normalized_skill_text() + self.assertIn("First try the step once in the main session", text) + self.assertIn("a block a helper reports is the helper's, not yours", text) + def test_typed_slash_command_is_checked_on_disk(self): text = normalized_skill_text() self.assertIn("A typed `/name` is a named constraint", text)