◉CLAUDE LABJP
●2.1.301 — Adds the vim % motion, LaTeX math rendering in the VS Code panel, and a retry-watchdog limit for usage-limit waits (10/15)●2.1.299 — Conversations over 200K tokens left idle about 54 minutes get compacted; MCP allow rules now match only the server they name●SONNET 4.5 — Retires on the Claude API on 11/30, 45 days left. Migrate to Sonnet 5.5●WINDOWS — Reports say hooks break silently only on Japanese-locale Windows; check the character encoding first●FAST MODE — Opus 5.5 fast mode is out of research preview and no longer needs the beta header (10/15)●NEW — I Put a Ten-Line Promise File at the To…●2.1.301 — Adds the vim % motion, LaTeX math rendering in the VS Code panel, and a retry-watchdog limit for usage-limit waits (10/15)●2.1.299 — Conversations over 200K tokens left idle about 54 minutes get compacted; MCP allow rules now match only the server they name●SONNET 4.5 — Retires on the Claude API on 11/30, 45 days left. Migrate to Sonnet 5.5●WINDOWS — Reports say hooks break silently only on Japanese-locale Windows; check the character encoding first●FAST MODE — Opus 5.5 fast mode is out of research preview and no longer needs the beta header (10/15)●NEW — I Put a Ten-Line Promise File at the To…
Articles/Cowork
◈ Cowork/2026-03-27Advanced

Cowork Skills × Scheduling: Advanced Automation Patterns and Techniques

Master Cowork's skill and scheduling capabilities. Learn 5 real-world automation patterns: sales reports, daily standups, KPI monitoring, meeting notes, and smart customer follow-ups.

cowork16skills10scheduleautomation109mcp20advanced-patterns

✦ Premium Article

Claude Cowork's true power emerges when you combine skills (reusable workflows) with scheduling (time-based or event-driven execution). What starts as simple automation—"run this task daily"—scales to enterprise workflows: conditional logic, parallel processing, error recovery, and cross-team coordination. Here's how.

Understanding Skills — Reusable Workflow Templates

The Anatomy of a Skill

A skill is a parameterized template with YAML frontmatter and execution steps.

---
name: "Weekly Sales Report"
description: "Auto-generate sales report every Monday, report to executives"
triggers:
  - schedule: "0 9 * * 1"  # Every Monday, 9:00 AM
    timezone: "Asia/Tokyo"
parameters:
  - name: "weeks_back"
    type: "integer"
    default: 1
  - name: "notify_channel"
    type: "string"
    default: "#executive"
---

Steps define the workflow:

steps:
  - name: "fetch_sales_data"
    connector: "hubspot"
    action: "get_deals"
    filter:
      closed_date: "{{ weeks_back }} weeks ago"
    output: "sales_data"
 
  - name: "aggregate_by_rep"
    processor: "group"
    input: "{{ sales_data }}"
    group_by: "owner"
    output: "rep_summary"
 
  - name: "send_report"
    connector: "slack"
    action: "send_message"
    channel: "{{ notify_channel }}"
    message: |
      📊 **Weekly Sales Report**
      Total: ${{ total_sales }}
      By Rep:
      {{ rep_summary | format_as_table }}
 
  - name: "archive"
    connector: "google_drive"
    action: "upload"
    file_name: "Sales_Report_{{ date }}.xlsx"
    folder: "Reports/Sales"
    source: "{{ sales_data }}"

Skill Reusability

One skill, multiple schedules, different parameters:

Skill: "Weekly Sales Report"
  ├─ Weekly run: 1 week of data
  └─ Monthly run: 4 weeks of data (same skill, different param)

Scheduling Patterns

Pattern 1: Time-Based (Cron)

schedule:
  - name: "daily_ops_report"
    skill: "Daily Operations Report"
    cron: "0 9 * * *"       # Every day, 9 AM
    timezone: "Asia/Tokyo"
    retries: 3
    retry_delay: 300        # Retry after 5 minutes

Pattern 2: Conditional Execution

schedule:
  - name: "urgent_review_if_high_volume"
    skill: "Weekly Team Summary"
    trigger:
      cron: "0 18 * * 5"    # Friday, 6 PM
      condition: "{{ pipeline.deals_count }} > {{ threshold }}"
    actions:
      - if: "{{ deals_count }} > 100"
        then: "send_to: #urgent-review"
      - if: "{{ deals_count }} <= 100"
        then: "send_to: #regular-review"

Pattern 3: Event-Driven

schedule:
  - name: "auto_onboard_new_customer"
    skill: "Customer Onboarding"
    trigger:
      type: "webhook"
      source: "hubspot"
      event: "deal_stage_changed"
      filter: "stage == 'Onboarding'"
    on_trigger: "immediate"
✦

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
✦Master 5 real-world automation patterns: sales reports, standups, KPI tracking, meeting minutes, customer follow-ups
✦Learn how to chain MCPs (HubSpot, Slack, Google Drive) for complex multi-step workflows
✦Implement production-grade error handling and audit practices for reliable automation
Secure payment via Stripe · Cancel anytime
✦

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Claude Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • ✦Copy-paste ready implementation code
  • ✦New advanced guides published daily
  • ✦$5/mo or $10 for lifetime access
View Membership →

Related Articles

◈ Cowork2026-08-23
Not Every Unreachable Connector Means the Same Thing in an Unattended Run
When an unattended task cannot reach a connector, the cause splits into three states: still connecting, unauthenticated, or genuinely absent. Each demands the opposite response. Here is the resolver that tells them apart.
◈ Cowork2026-09-08
Until I planted a failing sample, my unattended checks had never once failed
A check running on an unattended schedule lost its exit code to a single pipe added for readable logs. I measured where the status disappears and built a small harness that checks the checker.
◈ Cowork2026-05-04
Why Cowork Scheduled Tasks Stop Mid-Run and How to Recover
Diagnose Cowork scheduled task failures using measured exit codes and real error output — why safe.directory delays failure instead of fixing it, how to pick a writable root before cloning, and how to structure logs with reason codes.