From 67cfe1dd9dfa98f540dce03a2ea8edfa19d8b8d0 Mon Sep 17 00:00:00 2001 From: Rob Zolkos Date: Wed, 28 Oct 2026 02:26:02 -0400 Subject: [PATCH 1/2] Tell agents how to follow a move or copy, and load the skill for one The skill only triggered on "move card", so a request to move or copy something else into another project might not load it. And the rule that a copy is never repeated lived only in the move and copy commands' own help, which an agent retrying out of habit never reads. Add the triggers, a rule to use the new ID and check a running copy with `filings show`, and an eval case for it. --- skill-evals/cases/copy-still-running.yml | 10 ++++++++++ skills/basecamp/SKILL.md | 9 +++++++++ 2 files changed, 19 insertions(+) create mode 100644 skill-evals/cases/copy-still-running.yml diff --git a/skill-evals/cases/copy-still-running.yml b/skill-evals/cases/copy-still-running.yml new file mode 100644 index 000000000..ae351b9ea --- /dev/null +++ b/skill-evals/cases/copy-still-running.yml @@ -0,0 +1,10 @@ +task: Earlier I asked you to copy to-do 4567 to the Marketing project, and it said filing 735 was still running. Did the copy finish? +tags: [domain, copy] +mocks: + - match: 'filings show[ =]735(?!.*--help)' + output: '{"ok":true,"data":{"id":735,"status":"completed","copy_id":9001},"summary":"Copied #4567 as Todo #9001"}' +expect_sequence: + - match: 'filings show[ =]735(?!.*--help)' +reject: + - '\btodos copy\b' +max_commands: 3 diff --git a/skills/basecamp/SKILL.md b/skills/basecamp/SKILL.md index b5503556a..784822c1f 100644 --- a/skills/basecamp/SKILL.md +++ b/skills/basecamp/SKILL.md @@ -44,6 +44,10 @@ triggers: - mark done - create todo - move card + - move to another project + - copy to another project + - copy todo + - copy card - download file - search basecamp - find in basecamp @@ -136,6 +140,11 @@ apply where supported. block execution. - When a result reports content or description attachments, download and inspect them. Images often contain the essential task context. +- Moves and copies print the item's new ID; use it afterwards, since the old ID + stops taking writes. Never repeat a copy: Basecamp files it in the + background, so a copy that is still running or lost its answer may already + exist. Check it with the `basecamp filings show ` command or the hint it + printed, never by copying again. - Follow the installed command's help over examples remembered from earlier CLI versions. From 6d56662b100f88d4f9441597762976abe1e5eb4d Mon Sep 17 00:00:00 2001 From: Rob Zolkos Date: Wed, 28 Oct 2026 02:34:05 -0400 Subject: [PATCH 2/2] Use the real filings answer in the eval, and keep the new-ID rule to moves A copy leaves the original writable, and a same-project reposition keeps its ID, so the rule now sends writes to the new ID only after a move into another container. The eval mock answers with destination_recording, as filings show does. --- skill-evals/cases/copy-still-running.yml | 2 +- skills/basecamp/SKILL.md | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/skill-evals/cases/copy-still-running.yml b/skill-evals/cases/copy-still-running.yml index ae351b9ea..4f1903d89 100644 --- a/skill-evals/cases/copy-still-running.yml +++ b/skill-evals/cases/copy-still-running.yml @@ -2,7 +2,7 @@ task: Earlier I asked you to copy to-do 4567 to the Marketing project, and it sa tags: [domain, copy] mocks: - match: 'filings show[ =]735(?!.*--help)' - output: '{"ok":true,"data":{"id":735,"status":"completed","copy_id":9001},"summary":"Copied #4567 as Todo #9001"}' + output: '{"ok":true,"data":{"id":735,"status":"completed","type":"Copy","source_recording_id":4567,"destination_recording":{"id":9001,"type":"Todo"}},"summary":"Copied #4567 as Todo #9001"}' expect_sequence: - match: 'filings show[ =]735(?!.*--help)' reject: diff --git a/skills/basecamp/SKILL.md b/skills/basecamp/SKILL.md index 784822c1f..9c36b4683 100644 --- a/skills/basecamp/SKILL.md +++ b/skills/basecamp/SKILL.md @@ -140,8 +140,9 @@ apply where supported. block execution. - When a result reports content or description attachments, download and inspect them. Images often contain the essential task context. -- Moves and copies print the item's new ID; use it afterwards, since the old ID - stops taking writes. Never repeat a copy: Basecamp files it in the +- A move into another container prints the item's new ID; use it afterwards, + since the old ID stops taking writes. A copy prints the copy's ID and leaves + the original as it was. Never repeat a copy: Basecamp files it in the background, so a copy that is still running or lost its answer may already exist. Check it with the `basecamp filings show ` command or the hint it printed, never by copying again.