To get Claude Cowork to do the right thing on complex tasks, write prompts like a short technical specification: Objective → Scope → Constraints → Deliverables → Validation → Execution rules. Start with a one-sentence objective that is measurable (“Create out/report.md summarizing all docs and extract decisions into out/decisions.csv”). Then define scope precisely: which folder it can use, which subfolders are included, and which file types to process (for example, “only .md and .txt; ignore node_modules/ and tmp/”). Next list constraints that prevent unwanted behavior: “do not delete anything,” “do not overwrite originals,” “write new outputs to out/ only,” “if unsure, leave blank and record in out/open_questions.md,” and “do not browse the internet unless I explicitly ask.” This structure removes ambiguity and gives Cowork a clear operating boundary, which matters because the agent can otherwise “helpfully” do things you didn’t intend.
For multi-step work, force checkpoints. A reliable pattern is: Phase 1 inventory (list files and detect formats), Phase 2 plan (propose actions and outputs), Phase 3 execute on a copy (operate in work/ not raw/), Phase 4 validate (schema checks, counts, spot-check samples), Phase 5 deliver (write final artifacts and an actions.log). You can encode this directly in the prompt: “First produce out/plan.md describing each step; wait for confirmation; then execute and write out/actions.log with every file changed/created.” Also define error handling rules up front: “If a PDF is unreadable, list it in out/errors.csv,” “If two sources conflict, prefer the newest timestamp and record conflicts,” “If a rename would collide, append -v2.” These rules make the outcome repeatable, which is what developers usually mean by “does the right thing.”
If the task is part of a larger workflow (for example, building a searchable knowledge base), include ingestion-ready requirements in the prompt so Cowork produces outputs your pipeline can consume. For instance: “Split documents into chunks of roughly 400–800 tokens,” “assign stable IDs like DOC-###_S##,” “emit out/metadata.jsonl with fields doc_id, chunk_id, title, source_path, updated_at, tags,” and “write chunk files to out/chunks/.” That makes the next step—embedding and indexing—straightforward in a vector database such as Milvus or Zilliz Cloud. The key is to make success testable: if you can validate Cowork’s outputs with simple scripts (schema validation, counts, required fields), you can trust it for complex tasks without turning it into an opaque black box.