Tell agents how to follow a move or copy, and load the skill for one

Merged
RO
6h ago
+20-0

The skill triggered only 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.

  • Triggers: move to another project, copy to another project, copy todo, copy card.
  • One non-negotiable rule: use the new ID a move or copy prints, and never repeat a copy. A copy still running or one that lost its answer may already exist, so check it with basecamp filings show <id> or the hint it printed.
  • Eval case copy-still-running.yml: asked whether a running copy finished, the agent runs filings show and never todos copy. Not run against a model here (no API key).

A live headless-agent check of v0.20.0's moves (22 natural-language requests, every family) picked the right command first time throughout; this closes the two gaps that check couldn't reach: skill loading, and a lost copy answer.

SKILL.md is 15.2 KB of its 16 KiB budget. make check-skill-drift, make check-eval-patterns, make check-eval-harness and bin/ci pass.


Summary by cubic

The Basecamp skill only triggered on "move card", so moves or copies into another project could miss it. It now loads for those requests and tells agents to follow the new ID a move prints and never repeat a copy, with an eval case covering the lost-answer case.

  • Adds triggers for move to/copy to another project, copy todo, and copy card.
  • After a move into another container, sends writes to the printed new ID since the old one stops taking them; copies leave the original writable, so their ID matters only for checking progress.
  • Never repeats a copy — Basecamp files it in the background, so a still-running or unanswered copy may already exist; check it with basecamp filings show <id>.
  • Adds copy-still-running.yml, where the agent must run filings show and reject any todos copy when asked whether a copy finished.