[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KD8ZC3VPA3RYKSE0W7SFM2":3,"skill-same:01M6KD8ZC3VPA3RYKSE0W7SFM2":52},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":25,"linkOnly":26,"markdownContent":27,"markdownBody":28,"frontMatter":29,"refName":30,"commitSha":31,"skillDirectory":32,"forksCount":33,"repositoryHtmlUrl":34,"repositoryHomepageUrl":35,"ownerHtmlUrl":36,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":37,"install":38,"resources":51},"01M6KD8ZC3VPA3RYKSE0W7SFM2","datetime-formatting",null,"Format dates and times according to specific requirements for meeting confirmations","cxcscmu\u002FSkillLearnBench","cxcscmu","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F142838272?v=4","01M6KCQDFQWPDSN0MKZY96MSQP","01M6KCQDM7G70TKJ28NTSQC0RZ",93,"MIT","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fb1-one-shot-claude-haiku-4-5\u002Fschedule-planning\u002Fdatetime-formatting\u002FSKILL.md",[],[18,19,20,21,22,23,24],"formatting","datetime","datetime formatting","format","requirements","meeting","for","2026-11-10 10:12:30",false,"---\nname: datetime-formatting\ndescription: Format dates and times according to specific requirements for meeting confirmations\n---\n\n# Date\u002FTime Formatting Skill\n\n## Overview\nThis skill covers formatting dates and times in the specific formats required for meeting confirmation replies, including proper day names, 12-hour AM\u002FPM format, and date formatting.\n\n## Key Concepts\n\n### Required Format Specifications\n\n**Date Format**: `{day_name}, {month} {DD}, {YYYY}`\n- Example: `Thursday, January 08, 2026`\n- **NOT**: `January 8th, 2026` or `January 8, 2026`\n- Two-digit day with leading zero\n- Full month name (not abbreviated)\n- Full day name (not abbreviated)\n\n**Time Format**: `{HH:MM AM\u002FPM} - {HH:MM AM\u002FPM}`\n- Example: `09:00 AM - 10:30 AM`\n- Two-digit hour with leading zero\n- Two-digit minute with leading zero (never just `9:00 AM`)\n- Uppercase AM\u002FPM with space before it\n\n## Code Examples\n\n### Format Date\n```python\nfrom datetime import datetime\n\ndef format_date(date_obj):\n    \"\"\"Format datetime to 'Thursday, January 08, 2026' format\"\"\"\n    return date_obj.strftime('%A, %B %d, %Y')\n\n# Example\nd = datetime(2026, 1, 8)\nprint(format_date(d))  # Thursday, January 08, 2026\n```\n\n### Format Time Range\n```python\ndef format_time(hour, minute, use_am_pm=True):\n    \"\"\"Format single time as 'HH:MM AM\u002FPM'\"\"\"\n    time_obj = datetime(2026, 1, 1, hour, minute)\n    if use_am_pm:\n        return time_obj.strftime('%I:%M %p')\n    else:\n        return time_obj.strftime('%H:%M')\n\ndef format_time_range(start_hour, start_minute, end_hour, end_minute):\n    \"\"\"Format time range as 'HH:MM AM\u002FPM - HH:MM AM\u002FPM'\"\"\"\n    start_time = format_time(start_hour, start_minute)\n    end_time = format_time(end_hour, end_minute)\n    return f'{start_time} - {end_time}'\n\n# Example\nprint(format_time_range(9, 0, 10, 30))  # 09:00 AM - 10:30 AM\nprint(format_time_range(13, 30, 15, 0))  # 01:30 PM - 03:00 PM\n```\n\n### Format Duration in Hours\n```python\ndef format_duration(duration_hours):\n    \"\"\"Format duration as 'X hour(s)' - match request format\"\"\"\n    if duration_hours == int(duration_hours):\n        hours = int(duration_hours)\n        return f'{hours} hour' if hours == 1 else f'{hours} hours'\n    else:\n        # Handle fractional hours\n        total_minutes = int(duration_hours * 60)\n        if total_minutes % 60 == 0:\n            hours = total_minutes \u002F\u002F 60\n            return f'{hours} hours'\n        else:\n            return f'{duration_hours} hours'\n\n# Examples\nprint(format_duration(1.0))    # 1 hour\nprint(format_duration(1.5))    # 1.5 hours\nprint(format_duration(0.75))   # 0.75 hours\n```\n\n### Complete Reply Generation\n```python\ndef generate_reply(recipient_name, meeting_date, start_hour, start_minute, end_hour, end_minute, duration_hours):\n    \"\"\"Generate complete meeting confirmation reply\"\"\"\n    date_str = format_date(meeting_date)\n    time_range = format_time_range(start_hour, start_minute, end_hour, end_minute)\n    duration_str = format_duration(duration_hours)\n\n    reply = f\"\"\"Hi,\n\nThank you for your meeting request.\n\nI can be available:\n\nDate: {date_str}\nTime: {time_range}\nDuration: {duration_str}\n\nIf this time doesn't work, please let me know your preferred alternatives.\n\nBest regards,\nConSkillBench\"\"\"\n\n    return reply\n```\n\n### Timezone-Aware Formatting\n```python\nimport pytz\nfrom datetime import datetime\n\ndef format_datetime_with_timezone(date_obj, hour, minute, timezone_name='US\u002FEastern'):\n    \"\"\"Format datetime with timezone context\"\"\"\n    tz = pytz.timezone(timezone_name)\n    # Create a timezone-aware datetime\n    dt = tz.localize(datetime(date_obj.year, date_obj.month, date_obj.day, hour, minute))\n\n    date_str = dt.strftime('%A, %B %d, %Y')\n    time_str = dt.strftime('%I:%M %p')\n\n    return date_str, time_str\n```\n\n### Validate Format Compliance\n```python\nimport re\n\ndef validate_date_format(formatted_date):\n    \"\"\"Check if date follows correct format\"\"\"\n    pattern = r'^[A-Z][a-z]+, [A-Z][a-z]+ \\d{2}, \\d{4}$'\n    return bool(re.match(pattern, formatted_date))\n\ndef validate_time_format(formatted_time):\n    \"\"\"Check if time follows correct format\"\"\"\n    pattern = r'^\\d{2}:\\d{2} [AP]M - \\d{2}:\\d{2} [AP]M$'\n    return bool(re.match(pattern, formatted_time))\n\n# Examples\nprint(validate_date_format('Thursday, January 08, 2026'))  # True\nprint(validate_date_format('January 8, 2026'))             # False\nprint(validate_time_format('09:00 AM - 10:30 AM'))         # True\nprint(validate_time_format('9:00 AM - 10:30 AM'))          # False\n```\n\n## Common Formatting Errors to Avoid\n1. ❌ Single-digit day: `January 8` → ✅ `January 08`\n2. ❌ Abbreviated day: `Thu` → ✅ `Thursday`\n3. ❌ Abbreviated month: `Jan` → ✅ `January`\n4. ❌ No leading zero on hour: `9:00 AM` → ✅ `09:00 AM`\n5. ❌ Lowercase AM\u002FPM: `09:00 am` → ✅ `09:00 AM`\n6. ❌ Written ordinal: `January 8th` → ✅ `January 08`\n7. ❌ Year only 2 digits: `January 08, 26` → ✅ `January 08, 2026`\n\n## Python datetime Directives Reference\n| Directive | Meaning | Example |\n|-----------|---------|---------|\n| `%A` | Full weekday name | `Thursday` |\n| `%B` | Full month name | `January` |\n| `%d` | Day of month (02-31) | `08` |\n| `%Y` | Year with century | `2026` |\n| `%I` | Hour 12-hour (01-12) | `09` |\n| `%M` | Minute (00-59) | `30` |\n| `%p` | AM\u002FPM | `AM` |\n\n## Best Practices\n1. Always use `%I:%M %p` for 12-hour format with AM\u002FPM\n2. Always use `%d` for zero-padded days\n3. Always use `%A, %B %d, %Y` for complete date format\n4. Validate formatted output against required patterns\n5. Test edge cases: midnight, noon, early morning, late night\n6. When working with different timezones, convert before formatting\n","# Date\u002FTime Formatting Skill\n\n## Overview\nThis skill covers formatting dates and times in the specific formats required for meeting confirmation replies, including proper day names, 12-hour AM\u002FPM format, and date formatting.\n\n## Key Concepts\n\n### Required Format Specifications\n\n**Date Format**: `{day_name}, {month} {DD}, {YYYY}`\n- Example: `Thursday, January 08, 2026`\n- **NOT**: `January 8th, 2026` or `January 8, 2026`\n- Two-digit day with leading zero\n- Full month name (not abbreviated)\n- Full day name (not abbreviated)\n\n**Time Format**: `{HH:MM AM\u002FPM} - {HH:MM AM\u002FPM}`\n- Example: `09:00 AM - 10:30 AM`\n- Two-digit hour with leading zero\n- Two-digit minute with leading zero (never just `9:00 AM`)\n- Uppercase AM\u002FPM with space before it\n\n## Code Examples\n\n### Format Date\n```python\nfrom datetime import datetime\n\ndef format_date(date_obj):\n    \"\"\"Format datetime to 'Thursday, January 08, 2026' format\"\"\"\n    return date_obj.strftime('%A, %B %d, %Y')\n\n# Example\nd = datetime(2026, 1, 8)\nprint(format_date(d))  # Thursday, January 08, 2026\n```\n\n### Format Time Range\n```python\ndef format_time(hour, minute, use_am_pm=True):\n    \"\"\"Format single time as 'HH:MM AM\u002FPM'\"\"\"\n    time_obj = datetime(2026, 1, 1, hour, minute)\n    if use_am_pm:\n        return time_obj.strftime('%I:%M %p')\n    else:\n        return time_obj.strftime('%H:%M')\n\ndef format_time_range(start_hour, start_minute, end_hour, end_minute):\n    \"\"\"Format time range as 'HH:MM AM\u002FPM - HH:MM AM\u002FPM'\"\"\"\n    start_time = format_time(start_hour, start_minute)\n    end_time = format_time(end_hour, end_minute)\n    return f'{start_time} - {end_time}'\n\n# Example\nprint(format_time_range(9, 0, 10, 30))  # 09:00 AM - 10:30 AM\nprint(format_time_range(13, 30, 15, 0))  # 01:30 PM - 03:00 PM\n```\n\n### Format Duration in Hours\n```python\ndef format_duration(duration_hours):\n    \"\"\"Format duration as 'X hour(s)' - match request format\"\"\"\n    if duration_hours == int(duration_hours):\n        hours = int(duration_hours)\n        return f'{hours} hour' if hours == 1 else f'{hours} hours'\n    else:\n        # Handle fractional hours\n        total_minutes = int(duration_hours * 60)\n        if total_minutes % 60 == 0:\n            hours = total_minutes \u002F\u002F 60\n            return f'{hours} hours'\n        else:\n            return f'{duration_hours} hours'\n\n# Examples\nprint(format_duration(1.0))    # 1 hour\nprint(format_duration(1.5))    # 1.5 hours\nprint(format_duration(0.75))   # 0.75 hours\n```\n\n### Complete Reply Generation\n```python\ndef generate_reply(recipient_name, meeting_date, start_hour, start_minute, end_hour, end_minute, duration_hours):\n    \"\"\"Generate complete meeting confirmation reply\"\"\"\n    date_str = format_date(meeting_date)\n    time_range = format_time_range(start_hour, start_minute, end_hour, end_minute)\n    duration_str = format_duration(duration_hours)\n\n    reply = f\"\"\"Hi,\n\nThank you for your meeting request.\n\nI can be available:\n\nDate: {date_str}\nTime: {time_range}\nDuration: {duration_str}\n\nIf this time doesn't work, please let me know your preferred alternatives.\n\nBest regards,\nConSkillBench\"\"\"\n\n    return reply\n```\n\n### Timezone-Aware Formatting\n```python\nimport pytz\nfrom datetime import datetime\n\ndef format_datetime_with_timezone(date_obj, hour, minute, timezone_name='US\u002FEastern'):\n    \"\"\"Format datetime with timezone context\"\"\"\n    tz = pytz.timezone(timezone_name)\n    # Create a timezone-aware datetime\n    dt = tz.localize(datetime(date_obj.year, date_obj.month, date_obj.day, hour, minute))\n\n    date_str = dt.strftime('%A, %B %d, %Y')\n    time_str = dt.strftime('%I:%M %p')\n\n    return date_str, time_str\n```\n\n### Validate Format Compliance\n```python\nimport re\n\ndef validate_date_format(formatted_date):\n    \"\"\"Check if date follows correct format\"\"\"\n    pattern = r'^[A-Z][a-z]+, [A-Z][a-z]+ \\d{2}, \\d{4}$'\n    return bool(re.match(pattern, formatted_date))\n\ndef validate_time_format(formatted_time):\n    \"\"\"Check if time follows correct format\"\"\"\n    pattern = r'^\\d{2}:\\d{2} [AP]M - \\d{2}:\\d{2} [AP]M$'\n    return bool(re.match(pattern, formatted_time))\n\n# Examples\nprint(validate_date_format('Thursday, January 08, 2026'))  # True\nprint(validate_date_format('January 8, 2026'))             # False\nprint(validate_time_format('09:00 AM - 10:30 AM'))         # True\nprint(validate_time_format('9:00 AM - 10:30 AM'))          # False\n```\n\n## Common Formatting Errors to Avoid\n1. ❌ Single-digit day: `January 8` → ✅ `January 08`\n2. ❌ Abbreviated day: `Thu` → ✅ `Thursday`\n3. ❌ Abbreviated month: `Jan` → ✅ `January`\n4. ❌ No leading zero on hour: `9:00 AM` → ✅ `09:00 AM`\n5. ❌ Lowercase AM\u002FPM: `09:00 am` → ✅ `09:00 AM`\n6. ❌ Written ordinal: `January 8th` → ✅ `January 08`\n7. ❌ Year only 2 digits: `January 08, 26` → ✅ `January 08, 2026`\n\n## Python datetime Directives Reference\n| Directive | Meaning | Example |\n|-----------|---------|---------|\n| `%A` | Full weekday name | `Thursday` |\n| `%B` | Full month name | `January` |\n| `%d` | Day of month (02-31) | `08` |\n| `%Y` | Year with century | `2026` |\n| `%I` | Hour 12-hour (01-12) | `09` |\n| `%M` | Minute (00-59) | `30` |\n| `%p` | AM\u002FPM | `AM` |\n\n## Best Practices\n1. Always use `%I:%M %p` for 12-hour format with AM\u002FPM\n2. Always use `%d` for zero-padded days\n3. Always use `%A, %B %d, %Y` for complete date format\n4. Validate formatted output against required patterns\n5. Test edge cases: midnight, noon, early morning, late night\n6. When working with different timezones, convert before formatting\n",{"name":5,"description":7},"main","726e1f79b96b0cb3d729d0e55a1c847e0b5353ae","skills\u002Fb1-one-shot-claude-haiku-4-5\u002Fschedule-planning\u002Fdatetime-formatting",8,"https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench","https:\u002F\u002Fcxcscmu.github.io\u002FSkillLearnBench","https:\u002F\u002Fgithub.com\u002Fcxcscmu","2026-10-02 22:55:36",{"source":8,"skillName":5,"commands":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add cxcscmu\u002FSkillLearnBench --skill datetime-formatting",{"tool":44,"command":45},"bunx","bunx skills add cxcscmu\u002FSkillLearnBench --skill datetime-formatting",{"tool":47,"command":48},"pnpm","pnpm dlx skills add cxcscmu\u002FSkillLearnBench --skill datetime-formatting","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fb1-one-shot-claude-haiku-4-5\u002Fschedule-planning\u002Fdatetime-formatting\u002FSKILL.md",true,[],[53,71,94,112,132,144],{"skillNo":54,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":64,"publishedAt":25},"01M6KM5KH175P5ABP5JMX2SBDQ","object_counter","Count occurrences of an object in the image using computer vision algorithm.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Fvideo-object-counting\u002Fobject_counter\u002FSKILL.md",[59],{"categoryNo":60,"categoryName":61,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[65,66,67,68,69,70],"object counter","object","vision","computer","Computer Vision","image",{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":80,"publishedAt":25},"01M6KM51TMVXG79MMPCS6Y8G86","travel-planning-workflow","Invoke this skill when performing travel planning. It defines a structured workflow for generating itineraries. Following this workflow is essential to ensure the final plan satisfies user requirements.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftravel-planning\u002Ftravel-planning-workflow\u002FSKILL.md",[77],{"categoryNo":78,"categoryName":79,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000023","Skill与智能体开发",[81,82,83,84,85,86,87,88,89,24,90,91,22,92,93],"workflow","planning","planning workflow","travel","travel planning","travel planning workflow","structured","performing","plan","user","it","essential","itineraries",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":25},"01M6KM4DY820XHS9YTSK5QP5HD","bundled-dataset-search-tool","invoke this skill when you need to perform database search for travel planning. This skill provides some useful pre-packaged tools to look up accommodations, attractions, cities, driving distance, flights, and restaurants from the bundled dataset.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftravel-planning\u002Fbundled-dataset-search-tool\u002FSKILL.md",[],[101,102,103,104,105,106,107,84,108,109,85,110,24,111,82],"search","tool","dataset","bundled dataset search tool","restaurants","Tools","up","look","flights","you","database",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":25},"01M6KM465BB9PQ0B548HQSVAWZ","glm-output","Output-processing guidance for GLM tasks. Especially useful after glm-basics and glm-calibration when you need verifier-matching metrics from output.nc and a final \u002Froot\u002Fmetrics.json.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftemperature-simulation\u002Fglm-output\u002FSKILL.md",[],[119,120,121,24,122,123,124,125,126,127,128,129,110,130,131],"glm output","output","glm","tasks","metrics","json","basics","guidance","matching","verifier","processing","root","calibration",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":139,"publishedAt":25},"01M6KM40KY3QWDW5W97S39R2BC","glm-calibration","Calibration guidance for GLM tasks. Often most effective after glm-basics has clarified the setup; glm-output is the companion skill for exact final metric computation.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftemperature-simulation\u002Fglm-calibration\u002FSKILL.md",[138],{"categoryNo":78,"categoryName":79,"taxonomyType":62,"taxonomyTypeDesc":63},[140,131,121,120,126,125,122,141,142,24,143],"glm calibration","setup","companion","metric",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":150,"publishedAt":25},"01M6KM3VHHVSGMGHJQB3PPT6YG","glm-basics","A good starting point for GLM calibration tasks. Use to inspect glm3.nml, confirm how GLM runs, and identify the relevant files before moving on to calibration and output evaluation.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftemperature-simulation\u002Fglm-basics\u002FSKILL.md",[],[151,121,125,152,140,131,24,120,153,154,155,156,157,158,122],"glm basics","inspect","relevant","files","good","use","how","Evaluation"]