Tell agents how to follow a move or copy, and load the skill for one
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 runsfilings showand nevertodos 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 runfilings showand reject anytodos copywhen asked whether a copy finished.