{
  "schemaVersion": "1.0",
  "item": {
    "slug": "afrexai-email-to-calendar",
    "name": "Email to Calendar Extraction Engine",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/1kalin/afrexai-email-to-calendar",
    "canonicalUrl": "https://clawhub.ai/1kalin/afrexai-email-to-calendar",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/afrexai-email-to-calendar",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-email-to-calendar",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/afrexai-email-to-calendar"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/afrexai-email-to-calendar",
    "agentPageUrl": "https://openagent3.xyz/skills/afrexai-email-to-calendar/agent",
    "manifestUrl": "https://openagent3.xyz/skills/afrexai-email-to-calendar/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/afrexai-email-to-calendar/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Email → Calendar Extraction Engine",
        "body": "Turn emails into structured calendar events with zero missed deadlines."
      },
      {
        "title": "Quick Start",
        "body": "When you receive an email (forwarded, pasted, or from inbox):\n\nParse — Extract every time-relevant item using the framework below\nClassify — Score each item by type and confidence\nPresent — Show structured results with numbered selection\nCreate — Use the user's calendar tool to create confirmed events\nFollow up — Track deadlines and send reminders"
      },
      {
        "title": "What to Look For",
        "body": "Scan every email for ALL of these categories:\n\nCategorySignalsPriorityHard Events\"meeting at\", \"call on\", \"event on\", specific date+time🔴 HighDeadlines\"due by\", \"submit before\", \"RSVP by\", \"register by\", \"expires\"🔴 HighSoft Events\"sometime next week\", \"let's meet soon\", \"planning for March\"🟡 MediumRecurring\"every Monday\", \"weekly\", \"monthly\", \"standing meeting\"🟡 MediumAction Items\"please review\", \"can you send\", \"follow up on\", \"action required\"🟡 MediumTravel/LogisticsFlight numbers, hotel confirmations, check-in times, gate info🔴 HighImplicit DeadlinesEvent is Feb 20 → ticket deadline is likely 1-2 weeks before🟡 Medium"
      },
      {
        "title": "Extraction Template",
        "body": "For each item found, extract:\n\n- title: \"Descriptive name (max 80 chars)\"\n  type: event | deadline | action_item | travel | recurring\n  date: \"YYYY-MM-DD\"\n  day_of_week: \"Monday\"  # Always include for verification\n  time_start: \"14:00\"    # 24h format, default 09:00 if unclear\n  time_end: \"15:00\"      # Default: start + 1h for meetings, all-day for deadlines\n  timezone: \"America/New_York\"  # Extract from email headers or content\n  is_all_day: false\n  is_multi_day: false     # If true, include end_date\n  end_date: null\n  recurrence: null        # \"weekly\" | \"biweekly\" | \"monthly\" | \"MWF\" | custom RRULE\n  location: null          # Physical address or video link\n  url: null               # Registration link, event page, or action URL\n  attendees: []           # Names/emails mentioned\n  confidence: high | medium | low\n  source_quote: \"exact text from email that indicates this event\"\n  notes: \"any context the user should know\"\n  deadline_action: null   # \"RSVP\" | \"register\" | \"buy tickets\" | \"submit\"\n  deadline_url: null      # Direct link to take action\n  reminder_minutes: 30    # Suggested reminder (15 for calls, 60 for travel, 1440 for deadlines)"
      },
      {
        "title": "Confidence Scoring",
        "body": "ConfidenceCriteriaHighExplicit date + time + clear event type. E.g. \"Meeting on Feb 15 at 2pm\"MediumDate but no time, or time but approximate date. E.g. \"next Tuesday afternoon\"LowVague reference. E.g. \"we should catch up soon\", \"sometime in March\""
      },
      {
        "title": "Smart Defaults",
        "body": "No time given for meeting → 09:00-10:00 (mark confidence: medium)\nNo time given for deadline → 23:59 (end of day)\nNo timezone → Use user's default timezone, note assumption\n\"Morning\" → 09:00, \"Afternoon\" → 14:00, \"Evening\" → 18:00, \"EOD\" → 17:00\n\"Next week\" → Following Monday (mark confidence: medium)\nMulti-day event → Set is_multi_day: true, include start and end dates"
      },
      {
        "title": "2. Email Classification",
        "body": "Before extracting, classify the email:\n\nEmail TypeHow to HandleCalendar notification (from calendar-notification@google.com, outlook, etc.)SKIP — these are responses to existing eventsNewsletter/marketingExtract only if contains relevant event datesPersonal/work emailFull extractionTravel confirmationExtract ALL logistics: flights, hotels, car rentals, check-insMeeting invite (ICS attachment or structured invite)Extract directly, high confidenceThread/replyOnly extract NEW events, not ones from quoted textForwarded emailProcess the forwarded content, note original sender"
      },
      {
        "title": "Ignore Patterns (Skip These)",
        "body": "Automated calendar responses (Accepted, Declined, Tentative)\nUnsubscribe confirmations\nRead receipts\nAuto-replies / Out of office\nSpam/promotional (unless user explicitly forwards it)"
      },
      {
        "title": "3. Presentation Format",
        "body": "Always present extracted items in this format:\n\n📧 From: [sender] | Subject: [subject] | Date: [received date]\n\nFound [N] calendar items:\n\n1. 🔴 **Team Standup** — Mon Feb 17, 9:00-9:30 AM EST\n   📍 Zoom (link in email) | 👥 Alice, Bob, Charlie\n   🔁 Recurring: Every weekday\n   ✅ Confidence: High\n\n2. 🔴 **Project Deadline: Q1 Report** — Fri Feb 28, EOD\n   ⚠️ ACTION REQUIRED: Submit report\n   🔗 [Submission portal](url)\n   ⏰ Suggested reminder: 3 days before\n   ✅ Confidence: High\n\n3. 🟡 **Team Lunch** — \"sometime next week\"\n   📍 TBD\n   ⚠️ Confidence: Medium — date needs confirmation\n\n---\nReply with numbers to create (e.g. \"1, 2\"), \"all\", or \"none\".\nType \"edit 3\" to modify before creating."
      },
      {
        "title": "Presentation Rules",
        "body": "Always show day of week — humans verify dates by day name\nGroup by date when >5 items\nFlag conflicts — if new event overlaps existing calendar\nHighlight deadlines with ⚠️ and days remaining\nShow source quote for medium/low confidence items\nNever auto-create without user confirmation"
      },
      {
        "title": "4. Calendar Creation",
        "body": "After user confirms, create events using their calendar tool:"
      },
      {
        "title": "Google Calendar (via gog or API)",
        "body": "gog calendar create \\\n  --title \"Event Title\" \\\n  --start \"2026-02-17T09:00:00-05:00\" \\\n  --end \"2026-02-17T10:00:00-05:00\" \\\n  --description \"Extracted from email: [subject]\" \\\n  --location \"Zoom link or address\""
      },
      {
        "title": "Apple Calendar (via osascript)",
        "body": "osascript -e 'tell application \"Calendar\"\n  tell calendar \"Work\"\n    make new event with properties {summary:\"Event Title\", start date:date \"Monday, February 17, 2026 at 9:00:00 AM\", end date:date \"Monday, February 17, 2026 at 10:00:00 AM\", description:\"Extracted from email\", location:\"Zoom\"}\n  end tell\nend tell'"
      },
      {
        "title": "Notion / Other",
        "body": "Format as structured data and use the appropriate API\nOr output as .ics file the user can import anywhere"
      },
      {
        "title": "ICS Export (Universal)",
        "body": "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nDTSTART:20260217T090000\nDTEND:20260217T100000\nSUMMARY:Event Title\nDESCRIPTION:Extracted from email\nLOCATION:Zoom link\nEND:VEVENT\nEND:VCALENDAR"
      },
      {
        "title": "5. Duplicate Detection",
        "body": "Before creating any event, check for duplicates:\n\nSearch calendar for events on the same date with similar title (fuzzy match)\nCheck tracking file — maintain a log of created events:\n\n// memory/email-calendar-log.json\n{\n  \"created_events\": [\n    {\n      \"email_id\": \"msg-123\",\n      \"email_subject\": \"Team Offsite\",\n      \"event_title\": \"Team Offsite\",\n      \"event_date\": \"2026-02-17\",\n      \"calendar_event_id\": \"cal-456\",\n      \"created_at\": \"2026-02-13T10:00:00Z\"\n    }\n  ]\n}\n\nIf duplicate found: Show user and ask — \"This looks similar to [existing event]. Skip, update, or create anyway?\""
      },
      {
        "title": "Deadline Patterns to Detect",
        "body": "PatternExampleActionRSVP deadline\"RSVP by Feb 10\"Create reminder 3 days beforeRegistration\"Register by March 1\"Create reminder 1 week beforeEarly bird\"Early bird ends Feb 15\"Create reminder 2 days beforeTicket sales\"Tickets on sale until...\"Create reminder + calendar eventSubmission\"Submit proposal by...\"Create reminder 3 days beforeExpiration\"Offer expires...\"Create reminder 1 day before"
      },
      {
        "title": "Reminder Strategy",
        "body": ">30 days away: Remind 1 week before\n7-30 days away: Remind 3 days before\n<7 days away: Remind 1 day before\nDeadlines with URLs: Include the action URL in the reminder\nCreate reminder as separate calendar event: \"⚠️ DEADLINE: [action] for [event]\""
      },
      {
        "title": "7. Travel Email Handling",
        "body": "Travel confirmations get special treatment:"
      },
      {
        "title": "Extract ALL of these:",
        "body": "✈️ Flights: airline, flight #, departure/arrival times+airports, terminal, gate, confirmation #\n🏨 Hotels: name, address, check-in/out times, confirmation #\n🚗 Car rentals: company, pickup/dropoff times+locations, confirmation #\n📋 Transfers: shuttle times, train bookings"
      },
      {
        "title": "Create these calendar events:",
        "body": "Flight departure — include terminal, gate, flight # in description\nFlight arrival — for connecting flights too\nHotel check-in — with address and confirmation #\nHotel check-out — with reminder to pack\nCar pickup/dropoff — with location details"
      },
      {
        "title": "Travel-specific reminders:",
        "body": "Flight: 3 hours before (domestic), 4 hours before (international)\nHotel check-out: Morning of departure\nInclude all confirmation numbers in event descriptions"
      },
      {
        "title": "8. Batch Processing",
        "body": "When scanning an inbox for events:\n\nFetch unread emails (or emails from last N days)\nFilter out noise — apply ignore patterns\nExtract from each — run extraction framework\nDeduplicate across emails — same event mentioned in multiple threads\nSort by date — nearest first\nPresent grouped summary:\n\n📬 Inbox Scan: 47 unread → 12 with calendar items → 18 events found\n\nTHIS WEEK (Feb 13-19):\n1. 🔴 Sprint Review — Thu Feb 13, 3:00 PM\n2. 🔴 1:1 with Manager — Fri Feb 14, 10:00 AM\n...\n\nNEXT WEEK (Feb 20-26):\n5. 🟡 Team Lunch — date TBD (mentioned in 2 emails)\n...\n\nDEADLINES:\n⚠️ Q1 Report — Due Feb 28 (15 days) → [Submit here](url)\n⚠️ Conference RSVP — Due Feb 20 (7 days) → [RSVP](url)"
      },
      {
        "title": "9. Edge Cases",
        "body": "SituationHow to HandleMultiple timezones in one emailExtract each event in its stated timezone, convert to user's TZ for display\"TBD\" or \"TBA\" timesCreate all-day event, flag for follow-upCancelled eventsCheck if already in calendar → offer to deleteRescheduled eventsFind original → offer to update (not create new)Recurring with exceptionsNote specific exception dates in descriptionDate ambiguity (02/03 = Feb 3 or Mar 2?)Use email's locale/origin for MM/DD vs DD/MM, ask if unclearEvents in quoted/forwarded textOnly process if user explicitly forwarded itAttachments with .ics filesParse ICS directly — highest confidence source\"Save the date\" emailsCreate tentative event, mark as placeholderConference with multiple sessionsExtract all sessions as separate events with shared description"
      },
      {
        "title": "10. Session Memory",
        "body": "Track user preferences across sessions:\n\n# memory/email-calendar-prefs.yaml\ndefault_timezone: \"America/New_York\"\ndefault_calendar: \"Work\"\ndefault_reminder_minutes: 30\nauto_create_patterns:\n  - \"standup\"\n  - \"1:1\"\nignore_patterns:\n  - \"newsletter\"\n  - \"marketing\"\npreferred_format: \"12h\"  # or \"24h\"\ntravel_reminder_hours: 3\n\nUpdate preferences when user corrects you or states a preference."
      }
    ],
    "body": "Email → Calendar Extraction Engine\n\nTurn emails into structured calendar events with zero missed deadlines.\n\nQuick Start\n\nWhen you receive an email (forwarded, pasted, or from inbox):\n\nParse — Extract every time-relevant item using the framework below\nClassify — Score each item by type and confidence\nPresent — Show structured results with numbered selection\nCreate — Use the user's calendar tool to create confirmed events\nFollow up — Track deadlines and send reminders\n1. Extraction Framework\nWhat to Look For\n\nScan every email for ALL of these categories:\n\nCategory\tSignals\tPriority\nHard Events\t\"meeting at\", \"call on\", \"event on\", specific date+time\t🔴 High\nDeadlines\t\"due by\", \"submit before\", \"RSVP by\", \"register by\", \"expires\"\t🔴 High\nSoft Events\t\"sometime next week\", \"let's meet soon\", \"planning for March\"\t🟡 Medium\nRecurring\t\"every Monday\", \"weekly\", \"monthly\", \"standing meeting\"\t🟡 Medium\nAction Items\t\"please review\", \"can you send\", \"follow up on\", \"action required\"\t🟡 Medium\nTravel/Logistics\tFlight numbers, hotel confirmations, check-in times, gate info\t🔴 High\nImplicit Deadlines\tEvent is Feb 20 → ticket deadline is likely 1-2 weeks before\t🟡 Medium\nExtraction Template\n\nFor each item found, extract:\n\n- title: \"Descriptive name (max 80 chars)\"\n  type: event | deadline | action_item | travel | recurring\n  date: \"YYYY-MM-DD\"\n  day_of_week: \"Monday\"  # Always include for verification\n  time_start: \"14:00\"    # 24h format, default 09:00 if unclear\n  time_end: \"15:00\"      # Default: start + 1h for meetings, all-day for deadlines\n  timezone: \"America/New_York\"  # Extract from email headers or content\n  is_all_day: false\n  is_multi_day: false     # If true, include end_date\n  end_date: null\n  recurrence: null        # \"weekly\" | \"biweekly\" | \"monthly\" | \"MWF\" | custom RRULE\n  location: null          # Physical address or video link\n  url: null               # Registration link, event page, or action URL\n  attendees: []           # Names/emails mentioned\n  confidence: high | medium | low\n  source_quote: \"exact text from email that indicates this event\"\n  notes: \"any context the user should know\"\n  deadline_action: null   # \"RSVP\" | \"register\" | \"buy tickets\" | \"submit\"\n  deadline_url: null      # Direct link to take action\n  reminder_minutes: 30    # Suggested reminder (15 for calls, 60 for travel, 1440 for deadlines)\n\nConfidence Scoring\nConfidence\tCriteria\nHigh\tExplicit date + time + clear event type. E.g. \"Meeting on Feb 15 at 2pm\"\nMedium\tDate but no time, or time but approximate date. E.g. \"next Tuesday afternoon\"\nLow\tVague reference. E.g. \"we should catch up soon\", \"sometime in March\"\nSmart Defaults\nNo time given for meeting → 09:00-10:00 (mark confidence: medium)\nNo time given for deadline → 23:59 (end of day)\nNo timezone → Use user's default timezone, note assumption\n\"Morning\" → 09:00, \"Afternoon\" → 14:00, \"Evening\" → 18:00, \"EOD\" → 17:00\n\"Next week\" → Following Monday (mark confidence: medium)\nMulti-day event → Set is_multi_day: true, include start and end dates\n2. Email Classification\n\nBefore extracting, classify the email:\n\nEmail Type\tHow to Handle\nCalendar notification (from calendar-notification@google.com, outlook, etc.)\tSKIP — these are responses to existing events\nNewsletter/marketing\tExtract only if contains relevant event dates\nPersonal/work email\tFull extraction\nTravel confirmation\tExtract ALL logistics: flights, hotels, car rentals, check-ins\nMeeting invite (ICS attachment or structured invite)\tExtract directly, high confidence\nThread/reply\tOnly extract NEW events, not ones from quoted text\nForwarded email\tProcess the forwarded content, note original sender\nIgnore Patterns (Skip These)\nAutomated calendar responses (Accepted, Declined, Tentative)\nUnsubscribe confirmations\nRead receipts\nAuto-replies / Out of office\nSpam/promotional (unless user explicitly forwards it)\n3. Presentation Format\n\nAlways present extracted items in this format:\n\n📧 From: [sender] | Subject: [subject] | Date: [received date]\n\nFound [N] calendar items:\n\n1. 🔴 **Team Standup** — Mon Feb 17, 9:00-9:30 AM EST\n   📍 Zoom (link in email) | 👥 Alice, Bob, Charlie\n   🔁 Recurring: Every weekday\n   ✅ Confidence: High\n\n2. 🔴 **Project Deadline: Q1 Report** — Fri Feb 28, EOD\n   ⚠️ ACTION REQUIRED: Submit report\n   🔗 [Submission portal](url)\n   ⏰ Suggested reminder: 3 days before\n   ✅ Confidence: High\n\n3. 🟡 **Team Lunch** — \"sometime next week\"\n   📍 TBD\n   ⚠️ Confidence: Medium — date needs confirmation\n\n---\nReply with numbers to create (e.g. \"1, 2\"), \"all\", or \"none\".\nType \"edit 3\" to modify before creating.\n\nPresentation Rules\nAlways show day of week — humans verify dates by day name\nGroup by date when >5 items\nFlag conflicts — if new event overlaps existing calendar\nHighlight deadlines with ⚠️ and days remaining\nShow source quote for medium/low confidence items\nNever auto-create without user confirmation\n4. Calendar Creation\n\nAfter user confirms, create events using their calendar tool:\n\nGoogle Calendar (via gog or API)\ngog calendar create \\\n  --title \"Event Title\" \\\n  --start \"2026-02-17T09:00:00-05:00\" \\\n  --end \"2026-02-17T10:00:00-05:00\" \\\n  --description \"Extracted from email: [subject]\" \\\n  --location \"Zoom link or address\"\n\nApple Calendar (via osascript)\nosascript -e 'tell application \"Calendar\"\n  tell calendar \"Work\"\n    make new event with properties {summary:\"Event Title\", start date:date \"Monday, February 17, 2026 at 9:00:00 AM\", end date:date \"Monday, February 17, 2026 at 10:00:00 AM\", description:\"Extracted from email\", location:\"Zoom\"}\n  end tell\nend tell'\n\nNotion / Other\nFormat as structured data and use the appropriate API\nOr output as .ics file the user can import anywhere\nICS Export (Universal)\nBEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nDTSTART:20260217T090000\nDTEND:20260217T100000\nSUMMARY:Event Title\nDESCRIPTION:Extracted from email\nLOCATION:Zoom link\nEND:VEVENT\nEND:VCALENDAR\n\n5. Duplicate Detection\n\nBefore creating any event, check for duplicates:\n\nSearch calendar for events on the same date with similar title (fuzzy match)\nCheck tracking file — maintain a log of created events:\n// memory/email-calendar-log.json\n{\n  \"created_events\": [\n    {\n      \"email_id\": \"msg-123\",\n      \"email_subject\": \"Team Offsite\",\n      \"event_title\": \"Team Offsite\",\n      \"event_date\": \"2026-02-17\",\n      \"calendar_event_id\": \"cal-456\",\n      \"created_at\": \"2026-02-13T10:00:00Z\"\n    }\n  ]\n}\n\nIf duplicate found: Show user and ask — \"This looks similar to [existing event]. Skip, update, or create anyway?\"\n6. Deadline & Reminder Engine\nDeadline Patterns to Detect\nPattern\tExample\tAction\nRSVP deadline\t\"RSVP by Feb 10\"\tCreate reminder 3 days before\nRegistration\t\"Register by March 1\"\tCreate reminder 1 week before\nEarly bird\t\"Early bird ends Feb 15\"\tCreate reminder 2 days before\nTicket sales\t\"Tickets on sale until...\"\tCreate reminder + calendar event\nSubmission\t\"Submit proposal by...\"\tCreate reminder 3 days before\nExpiration\t\"Offer expires...\"\tCreate reminder 1 day before\nReminder Strategy\n>30 days away: Remind 1 week before\n7-30 days away: Remind 3 days before\n<7 days away: Remind 1 day before\nDeadlines with URLs: Include the action URL in the reminder\nCreate reminder as separate calendar event: \"⚠️ DEADLINE: [action] for [event]\"\n7. Travel Email Handling\n\nTravel confirmations get special treatment:\n\nExtract ALL of these:\n✈️ Flights: airline, flight #, departure/arrival times+airports, terminal, gate, confirmation #\n🏨 Hotels: name, address, check-in/out times, confirmation #\n🚗 Car rentals: company, pickup/dropoff times+locations, confirmation #\n📋 Transfers: shuttle times, train bookings\nCreate these calendar events:\nFlight departure — include terminal, gate, flight # in description\nFlight arrival — for connecting flights too\nHotel check-in — with address and confirmation #\nHotel check-out — with reminder to pack\nCar pickup/dropoff — with location details\nTravel-specific reminders:\nFlight: 3 hours before (domestic), 4 hours before (international)\nHotel check-out: Morning of departure\nInclude all confirmation numbers in event descriptions\n8. Batch Processing\n\nWhen scanning an inbox for events:\n\nFetch unread emails (or emails from last N days)\nFilter out noise — apply ignore patterns\nExtract from each — run extraction framework\nDeduplicate across emails — same event mentioned in multiple threads\nSort by date — nearest first\nPresent grouped summary:\n📬 Inbox Scan: 47 unread → 12 with calendar items → 18 events found\n\nTHIS WEEK (Feb 13-19):\n1. 🔴 Sprint Review — Thu Feb 13, 3:00 PM\n2. 🔴 1:1 with Manager — Fri Feb 14, 10:00 AM\n...\n\nNEXT WEEK (Feb 20-26):\n5. 🟡 Team Lunch — date TBD (mentioned in 2 emails)\n...\n\nDEADLINES:\n⚠️ Q1 Report — Due Feb 28 (15 days) → [Submit here](url)\n⚠️ Conference RSVP — Due Feb 20 (7 days) → [RSVP](url)\n\n9. Edge Cases\nSituation\tHow to Handle\nMultiple timezones in one email\tExtract each event in its stated timezone, convert to user's TZ for display\n\"TBD\" or \"TBA\" times\tCreate all-day event, flag for follow-up\nCancelled events\tCheck if already in calendar → offer to delete\nRescheduled events\tFind original → offer to update (not create new)\nRecurring with exceptions\tNote specific exception dates in description\nDate ambiguity (02/03 = Feb 3 or Mar 2?)\tUse email's locale/origin for MM/DD vs DD/MM, ask if unclear\nEvents in quoted/forwarded text\tOnly process if user explicitly forwarded it\nAttachments with .ics files\tParse ICS directly — highest confidence source\n\"Save the date\" emails\tCreate tentative event, mark as placeholder\nConference with multiple sessions\tExtract all sessions as separate events with shared description\n10. Session Memory\n\nTrack user preferences across sessions:\n\n# memory/email-calendar-prefs.yaml\ndefault_timezone: \"America/New_York\"\ndefault_calendar: \"Work\"\ndefault_reminder_minutes: 30\nauto_create_patterns:\n  - \"standup\"\n  - \"1:1\"\nignore_patterns:\n  - \"newsletter\"\n  - \"marketing\"\npreferred_format: \"12h\"  # or \"24h\"\ntravel_reminder_hours: 3\n\n\nUpdate preferences when user corrects you or states a preference."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/1kalin/afrexai-email-to-calendar",
    "publisherUrl": "https://clawhub.ai/1kalin/afrexai-email-to-calendar",
    "owner": "1kalin",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/afrexai-email-to-calendar",
    "downloadUrl": "https://openagent3.xyz/downloads/afrexai-email-to-calendar",
    "agentUrl": "https://openagent3.xyz/skills/afrexai-email-to-calendar/agent",
    "manifestUrl": "https://openagent3.xyz/skills/afrexai-email-to-calendar/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/afrexai-email-to-calendar/agent.md"
  }
}