Writing skills that survive Cowork
Claude Cowork runs your skill in a sandbox with rules that differ from the Claude Code CLI in ways that will silently break an otherwise-correct skill. This site covers the nine failure modes that actually show up: wrong path forms, deliverables that vanish on delivery, delete calls that fail with a permission error, a shell that cannot see your environment, runtime detection that reports the wrong answer, plugin paths that resolve differently per consumer, an input prompt the host steers away from, sub-agent assumptions that do not hold, and behaviour that changes with no version bump at all.
Derived from shipped binaries and live sessions. This site does not detect product changes.
Start from the symptom
What you saw → why → what to do insteadThe five that break the most skills
If you read nothing else.
-
01
Absolute session paths are denied by the file tools every time, and from Desktop 2.7032.0 so are bare filenames.
-
02
Write to a stated path, present it, and name the path anyway.
-
03
The shell your skill runs in is sealed — including from your own hooks.
-
04
A bare environment-variable check false-negatives where it matters most.
-
05
The surface is served, not shipped. It can change mid-session.
How to read the labels
- MEASURED
- Observed live in a real session, with a control where noted.
- FROM BINARY
- Read from a shipped artifact (the app, the agent or the sandbox image). The behaviour itself was not exercised.
- INFERENCE
- Stated as an inference from the evidence, not observed directly. Read the caveats.
- SILENT
- Nothing errors. Your skill carries on with wrong results, and you only find out by checking.
- LOUD
- You get an error straight away. Annoying, but you'll notice.
- FRICTION
- It works, but costs the user an extra prompt or step.
- Local sandbox
- Applies to the sandbox on the user's own computer. Not established for the cloud one.
- Remote sandbox
- Applies to the cloud sandbox. Not established for the one on the user's computer.
- Both sandboxes
- Established for both sandboxes.
- Checked live
- Checked live: exercised in a real session on that date, against the builds shown.
- Re-read from the shipped code
- Re-read from the shipped code on that date, against the builds shown. The behaviour itself was not re-run.
- As of the … capture
- Not individually re-checked since the rule last changed. The date and build are the capture that was current then, so the rule may have been checked earlier, never later.
9 failure modes, one page each
Where this fits in your workflow
Same author as this site, and not part of the verified material.A skill for building skills: draft, run evals against a baseline, review the results, iterate. Based on Anthropic's skill-creator and substantially reworked since. Its runtime reference encodes several of the rules documented here — including the two-sandbox delivery split and the fact that a rendered page has no way to send anything back — so a skill scaffolded with it starts on the right side of them.
Runs a skill against Cowork's runtime contract from scenario files — including whether it triggers at all, how it behaves in each sandbox, and whether its output actually gets delivered. Has a replay mode that runs in CI. Every rule here raises the same question — does mine do this? — and clicking through a real session to find out is slow, and easy to get wrong in exactly the ways this site documents.
87 rules in total · see them all on one page