{"slug": "how-to-harden-the-briefing-routine-template", "title": "How to harden the Briefing routine template", "summary": "Anthropic ships eight free starter templates on the Templates tab at claude.ai/code/routines, and a worked example shows how to harden the Briefing template against four silent failures: a dead calendar connector rendering as an empty schedule, a 7am brief produced at 11pm and still written in the present tense, three overlapping meetings compressed into \"a busy morning\", and runs that leave no trace. The hardened prompt adds a clock step that flags runs more than 3 hours late and skips the focus section after 18:00 local, records each source as either \"read: <count> items\" or \"unavailable: <exact error text>\", and applies eight checks including idempotency via a slot-derived run-id, an OK/PARTIAL status, and a hard ban on write actions.", "body_md": "Anthropic ships eight starter templates on the **Templates** tab at claude.ai/code/routines. They are free, they are a sensible place to begin, and most people begin there. They are also unhardened: they describe what to do, and say nothing about what to do when it doesn’t work.\n\nThis is a complete worked example of fixing that — one template, start to finish, with the full prompt at the end for you to paste in.\n\nThe template is **Briefing**: summarise your calendar, email and messages into a morning brief. It is the one most people turn on first, and the one whose failures are hardest to notice.\n\n## First, how it fails when nobody is watching\n\nFour specific failures, none of which produces an error in the run list.\n\n### A dead connector reads as a free day\n\nIf the calendar connector fails, the brief renders an empty schedule. Nothing in the output distinguishes “you have no meetings” from “I could not read your meetings”. You act on the first and discover the second on Thursday.\n\n### It reports the wrong day\n\nA local Desktop task that misses its slot runs one catch-up when the machine next wakes. A 7am brief can be produced at 11pm and still be written in the present tense about “today”. Cloud routines have a milder version of the same thing: runs scheduled exactly on the hour can start several minutes late, which is why Anthropic suggests 9:07 over 9:00.\n\n### It compresses away the thing you needed\n\nThree overlapping meetings become “a busy morning”. The conflict — the single most actionable fact in the whole brief — has been summarised out of existence.\n\n### It leaves no trace\n\nNext week you cannot tell whether Tuesday’s brief ran and found nothing, or never ran at all. Both look identical from where you sit, which is to say: they look like nothing.\n\n## The eight checks applied\n\nEach fix below maps to one of the checks in [the eight-point pass](https://runbook.scosovan.com/claude-code-routine-reported-success-did-nothing/).\n\n| Check | What it changes in this prompt | \n|---|---|\n| Self-contained | Names the slot time, the sources, the caps and the output file. No conversational context assumed. | \n| Sources named | A SOURCES section with a status line and an item count per source. | \n| Verified | Step 4 re-opens the report and checks counts, times and traceability — and can set the run to PARTIAL. | \n| Idempotent | A run-id derived from the slot; a repeat run replaces its own log line instead of adding a second. | \n| Honest when blind | Two outcomes per source — `read` or`unavailable` . Never one. | \n| Least privilege | A hard rule banning every write action, plus trimming the connector list before the first run. | \n| Fails loudly | An explicit OK / PARTIAL status and one log line per run. | \n| Time-aware | Step 1 reads the clock and changes the output — not just a note about it. | \n\n## The hardened prompt\n\nPaste this over the template’s instructions. Adjust the slot time and the source list to match yours; leave the structure alone.\n\n```\nYou are running unattended as the \"Morning Brief\" routine. You have no conversation\ncontext. Everything you need is named in this prompt.\n\nSTEP 1 — CLOCK\nRead the current local date and time before anything else. Compare it with the\nintended slot of 07:05 local.\n- Within 3 hours of the slot: proceed normally.\n- More than 3 hours late: put \"LATE RUN — produced at <time> for the <date> slot\"\n  as the first line of the report, and cover the period the slot intended, not the\n  last 24 hours from now.\n- After 18:00 local: produce the SCHEDULE and OPEN LOOPS sections only. Skip\n  \"Today's focus\" entirely — a focus list written at 11pm is noise.\n\nSTEP 2 — READ, ONE SOURCE AT A TIME\nFor each source — calendar, email, messages — record one of exactly two outcomes:\n  read: <count> items for <explicit window>\n  unavailable: <the exact error or refusal text>\nNever infer absence from a failure. If a source is unavailable, the section it feeds\nsays \"unavailable: <reason>\" and keeps any previous value with its ORIGINAL date\nstamp. An empty section and an unreadable section must never look the same.\nCap each source at 50 items. If you hit the cap, say so and name what you did not read.\n\nSTEP 3 — WRITE\nReport sections: SOURCES (the status lines from step 2), SCHEDULE, NEEDS A REPLY,\nOPEN LOOPS, TODAY'S FOCUS (max 3, each traceable to an item above).\nList every calendar item individually with its real start time. Do not summarise a\nschedule into an adjective. Flag overlapping items explicitly as CONFLICT.\n\nSTEP 4 — VERIFY BEFORE YOU REPORT\nRe-open the report you wrote. Confirm: the item counts in SOURCES match the number\nof items actually listed below; every meeting time appears as read, not rounded;\nevery focus item traces to a listed item. List these three checks and their results\nin a VERIFICATION section. If any check fails, the status is PARTIAL, not OK.\n\nSTEP 5 — LOG\nAppend one line to logs/RUNLOG.md:\n<ISO time> | brief | <run-id> | OK|PARTIAL | <one-line summary> | <owner action or none>\nCompute run-id as <YYYYMMDD-HHMM>-brief. If a line with this run-id already exists,\nreplace it rather than adding a second.\n\nHARD RULES\nNever send, reply to, archive, delete or post anything. This routine reads and\nwrites one report file. Nothing else.\n```\n\n## One more thing before you turn it on\n\nThe prompt is only half of it. Open the routine’s **Connectors** section and remove everything the brief does not need.\n\nEvery connector attached to your account is included in a new routine by default, and during a run Claude can use any tool from an included connector — writes included — without asking. A read-only brief has no business holding a connector that can send mail. The HARD RULES block above is a second line of defence, not the first one.\n\n## What changed, in one paragraph\n\nA clock check that alters the output rather than annotating it. Per-source status lines, so blindness becomes visible instead of invisible. Individual meeting times instead of an adjective. A verification section that is capable of failing. And a run log keyed to a run-id, so a double fire does not double-write and a fortnight of silence is something you can look up.\n\nThat is the whole method. The other seven templates — Email triage, System health check, Issue triage, PR review digest, Dependency update check, Release notes drafter, Flaky test tracker — each fail in their own specific way and each get the same eight-point treatment in [The Routines Runbook](https://runbook.scosovan.com/product/the-routines-runbook/), along with 32 ready-made routines built this way from the start.\n\nWant the other seven hardened the same way? [The Routines Runbook](https://runbook.scosovan.com/product/the-routines-runbook/) covers all eight templates plus 32 ready-made routines and the fourteen guardrail patterns behind them — or [take the free 5-routine starter](https://runbook.scosovan.com/checkout/?add-to-cart=28) first.\n\n*This page describes the failure modes of the *task*, not the wording of Anthropic’s templates, and does not reproduce their prompt text. Platform behaviour was checked against the [Routines](https://code.claude.com/docs/en/routines) and [Desktop scheduled tasks](https://code.claude.com/docs/en/desktop-scheduled-tasks) documentation on 5 October 2026. Not affiliated with Anthropic.*", "url": "https://wpnews.pro/news/how-to-harden-the-briefing-routine-template", "canonical_source": "https://runbook.scosovan.com/harden-the-briefing-routine-template/", "published_at": "2026-10-05 07:16:29+00:00", "updated_at": "2026-10-05 22:18:55.504658+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "artificial-intelligence"], "entities": ["Anthropic", "Claude", "claude.ai/code/routines", "Briefing template"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/how-to-harden-the-briefing-routine-template", "markdown": "https://wpnews.pro/news/how-to-harden-the-briefing-routine-template.md", "text": "https://wpnews.pro/news/how-to-harden-the-briefing-routine-template.txt", "jsonld": "https://wpnews.pro/news/how-to-harden-the-briefing-routine-template.jsonld"}}