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
8 changes: 4 additions & 4 deletions corpus/skills/cat-mode/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
7 changes: 7 additions & 0 deletions tests/test_cat_mode.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Loading