Skip to content
Back to skills

Smart Calendar

ASecurity

基于 macOS / iOS 苹果生态的智能日程与待办事项管理 skill。将非结构化输入(口语描述、聊天截图、邮件截图)自动解析为结构化任务,经用户确认后写入 Apple 日历 / 提醒事项,支持标签管理(工作 / 生活 / 自定义)、时间冲突检测、后续更新删除,以及按项目制自动生成工作周报(项目 - 进展 - 待办三级结构)。语言风格定位为专业正式书面语,也适用于其他需要专业书面表达的知识工作场景。单机版:每台 Mac 独立运行,数据本地存储,不做多端同步。

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 25, 2026
toolspythonbashapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 10 files and shows the line behind each finding

Scanned September 25, 2026

npx -y skills add CSlawyer1985/legal-skillhub --skill smart-calendar --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Smart Calendar?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Smart Calendar
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/cslawyer1985-smart-calendar/badge)](https://www.skillsdirectory.com/skills/cslawyer1985-smart-calendar)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: smart-calendar
description: 基于 macOS / iOS 苹果生态的智能日程与待办事项管理 skill。将非结构化输入(口语描述、聊天截图、邮件截图)自动解析为结构化任务,经用户确认后写入 Apple 日历 / 提醒事项,支持标签管理(工作 / 生活 / 自定义)、时间冲突检测、后续更新删除,以及按项目制自动生成工作周报(项目 - 进展 - 待办三级结构)。语言风格定位为专业正式书面语,也适用于其他需要专业书面表达的知识工作场景。单机版:每台 Mac 独立运行,数据本地存储,不做多端同步。
metadata:
  description_zh: 智能日程待办管理(单机版)
  description_en: Smart Calendar & Todo Manager (single-machine edition)
  version: 1.0-dist
  disable: false
---

# smart-calendar(分发版 / 单机)

## 定位

**单机版**。每台 Mac 独立维护一份本地任务数据库(`~/.smart-calendar/tasks.json`)。日历事件和提醒事项本身会通过你已有的 iCloud 账号自动同步到其他 Apple 设备,但本 skill 的元数据(formal_title / 标签 / 项目 / 任务类型等)**不跨机同步**。如需跨设备保留完整上下文,请在同一台 Mac 上集中管理任务,或参考多机协同改造方案另行设计。

## When to use

用户在以下场景触发:
1. 输入待办事项的口语描述(如"明天之前把 A 项目方案改完发给协作方")
2. 上传聊天截图、邮件截图等非结构化信息
3. 要求更新或删除之前创建的日程 / 任务
4. 要求生成工作周报
5. 要求管理标签(添加 / 删除 / 修改任务标签)
6. 任何涉及"把 XX 加到日历 / 提醒里"、"帮我排个日程"、"生成周报"的请求

## Prerequisites

- macOS 系统(操作 Calendar 和 Reminders app)
- Calendar 和 Reminders app 需被允许脚本控制 — 首次运行时会弹出 *系统设置 → 隐私与安全性 → 自动化* 的权限请求,必须授权
- Python 3 已安装(macOS 系统自带)
- **Apple Reminders 已建好「工作」和「生活」两个列表**
- **Apple Calendar 已建好「工作」和「生活」两个 iCloud 日历**

## 运作模型(v4.0 — Apple 当真源)

> **Apple Calendar / Reminders 是真源**,本 skill 的 `tasks.json` 是本地缓存。

```
                     [写入]
用户 / agent ─────────────────────────► Apple Reminders / Calendar
                                              │
                                              │ 列表名 = 主标签的物理载体
                                              │ description / body 末尾 = metadata block
                                              │(project, task_type, aux_tags, formal_title)
                                              │
                          iCloud 跨设备同步 ◄──┘
                                              │
                     [读取 / sync]            ▼
tasks.json ◄───────────────────────  Mac / iPhone
(本地缓存,可重建)
```

**核心规则**:
- 创建任务时,agent 决定主标签 `--tag-major work|life` → 自动写入对应列表 / 日历
- 元数据(project / task_type / aux_tags / formal_title)走 metadata block 跟着事件本体同步
- 跨机一致 + iPhone 友好(手动加到「工作」列表的任务也会被 skill 识别为「工作」)
- `sync` 命令随时从 Apple 真源重建 `tasks.json`

## Loop 层(可选自动心跳)

> harness 让 agent 能干活,**loop 让"同步 + 周报"被持续调度、验证、记录**。默认不启用。

两个心跳命令(手动可跑,也可挂 launchd 自动跑 — 见 README「启用自动 loop」节):

```bash
python3 .../task_manager.py loop-tick --mode daily    # 每日 sync
python3 .../task_manager.py loop-tick --mode weekly   # sync + 出周报
python3 .../task_manager.py loop-status               # 查看 loop 健康
```

**A+B minimum viable loop**:automation(launchd)+ skill(本 skill)+ state file(`loop-state.json`,含 30 条 history 滚动)+ gate(结构性断言:`SYNC_DONE` + tasks.json 可解析 + 报告 size>800 + 含必需段落;失败弹 Basso 通知 + 写 `last_error` + exit 1)。

**设计原则**:确定性机械操作用结构性断言 gate,不引 maker/checker;cron 单跑天然 hard-stop;失败必显式上报。判断类工作(哪些算重点、对外投递)不进 loop。

## 首次配置

首次使用时 skill 会自动创建默认配置(`~/.smart-calendar/config.json`)。建议确认 / 修改以下字段:

1. **周报标题与团队名**(默认标题为"个人工作周报",team_name 为空):
   ```bash
   # 个人使用:默认即"个人工作周报",无需配置;如需改名再 set-config
   python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py set-config \
     --key weekly_report.report_title --value "重点项目周报"
   # 团队 / 小组场景:设置 team_name,标题变成 "{team_name}{report_title}"
   python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py set-config \
     --key weekly_report.team_name --value "项目组"
   ```
   最终周报标题 = `{team_name}{report_title}`;team_name 为空时只用 report_title。

2. **周报输出目录**(必须设置,否则周报只能输出到控制台):
   ```bash
   python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py set-config \
     --key weekly_report.output_dir \
     --value "/path/to/your/weekly/report/folder"
   ```

3. **查看当前配置**:
   ```bash
   python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py get-config
   ```

4. **可选:自定义数据目录**(指向 iCloud Drive 或其他位置,用于测试隔离):
   ```bash
   export SMART_CALENDAR_DATA_DIR="$HOME/Library/Mobile Documents/com~apple~CloudDocs/smart-calendar"
   ```
   ⚠️ 注意:iCloud Drive 跨机同步**不是事务性的**,两端同时写会产生 `.conflicted` 文件。单机版不建议把 DATA_DIR 放 iCloud Drive,仅作测试用途。

## Steps

### 阶段一:解析输入

1. 接收用户输入(文字或图片)。如果是图片,使用多模态能力提取文字内容。
2. 从输入中提取以下结构化字段:
   - **任务标题**(核心描述)
   - **任务类型**:文件审阅 / 反馈 / 调研 / 文书撰写 / 会议 / 其他
   - **所属项目**(用户根据自己业务确定,例如"A 项目"、"X 收购"、"客户 Y"等)
   - **截止时间**(日期 + 可选时间)
   - **开始时间**(如有明确起止时段则提取)
   - **结束时间**(如有明确起止时段则提取)
   - **优先级**:高 / 中 / 低
   - **相关人员**(协作方 / 相关方 / 管理层等)
   - **备注**(额外上下文)
3. 信息不完整时(缺少截止时间、任务类型模糊、所属项目不明确),向用户确认。每个待确认字段提供"留白 / 不回答"选项。用户选择留白时基于已有信息和上下文推断默认值。

### 阶段二:主标签判定 + 次标签收集(v4.0 关键设计)

4. **主标签**:基于任务内容判断「工作」or「生活」。判断规则:
   - 涉及业务项目名、专业术语(方案、审阅、调研、评审会等)、工作相关人员(协作方、外部顾问、管理层)→ **工作**
   - 涉及家庭、购物、健身、休闲、个人事务 → **生活**
   - 无法明确判断时,**主动询问用户**:"这个任务属于工作还是生活?"
5. **主标签的物理载体是 Apple 列表 / 日历**(不是 tasks.json 字段):
   - 工作任务 → 写入「工作」列表 + 「工作」日历
   - 生活任务 → 写入「生活」列表 + 「生活」日历
   - 这是真源 — 即使在 iPhone 上把一条 reminder 从「工作」拖到「生活」,sync 后 skill 也会立即识别为「生活」
6. **次标签**(紧急、自定义)走 metadata block,与主标签分层:
   - 不为每个次标签建 Apple 列表(避免列表爆炸)
   - 次标签通过 `--meta-aux-tags` 写入 reminder body / event description 末尾的 metadata block
   - 用户可随时添加自定义次标签:
     ```bash
     python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py add-tag "紧急"
     ```

**标签别名说明**:内部规范用中文标签(`工作` / `生活`)。agent 用英文写入 `work` / `Work` / `WORK` / `life` / `Life` / `LIFE` 会自动归一化为对应中文。`--tag-major` 同样接受这些别名。

### 阶段三:确认与正式用语生成

7. 将提取的结构化信息展示给用户:

   ```
   📋 识别到的任务信息
   ──────────────────────────────
   任务标题:[提取的标题]
   任务类型:[类型]
   所属项目:[项目名]
   截止时间:[日期 时间]
   优先级:[高/中/低]
   标签:[工作/生活/自定义]
   相关人员:[人员列表]
   备注:[备注]
   ──────────────────────────────
   🎯 将创建:提醒事项 / 日历事件 / 两者
   ```

8. 用户确认后生成正式用语(专业书面语):
   - 标题正式化:口语化描述转专业书面语
   - 备注正式化:补充完整上下文,使用专业术语
   - 示例:"明天把 A 项目方案改完" → "A 项目方案修订及定稿 —— 根据内部审阅意见完成方案文本修订并发送协作方确认"

### 阶段四:冲突检测

9. 写入前检查时间冲突:
   ```bash
   python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py check-conflict \
     --date "YYYY-MM-DD" [--time "HH:MM"] [--duration 60]
   ```
   - 给定 `--time` 时按 `[time, time + duration)` 区间做真正的重叠判断
   - 不给 `--time` 时返回当天全部事件
10. 有冲突时展示详情并询问用户是否继续:
    ```
    ⚠️ 时间冲突提示
    该时段已有以下日程:
    - 14:00-15:30  A 项目内部讨论会
    是否继续创建?
    ```

### 阶段五:智能路由与写入

11. 根据任务特征智能路由:
    - **仅提醒事项**:只有截止时间、无明确起止时段的任务型工作(如"周五前提交审阅意见")
    - **仅日历事件**:有明确起止时间的会议 / 约会(如"周三下午 2-4 点评审会")
    - **两者同时创建**:有截止时间的复杂任务,提醒事项记录任务本身、日历事件预留工作时段
    - 默认偏好:任务型居多时路由到提醒事项;有明确时段时路由到日历

12. 执行写入(**v4.0:用 `--tag-major` + `--meta-*` 参数**):
    ```bash
    # 创建提醒事项(不指定 --list 时自动按 --tag-major 选「工作」/「生活」列表)
    python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py create-reminder \
      --title "正式标题" \
      --tag-major work \
      --due "YYYY-MM-DD HH:MM" \
      --notes "正式备注" \
      --priority [1|2|3] \
      --meta-project "项目名" \
      --meta-task-type "文件审阅" \
      --meta-aux-tags "紧急,待审" \
      --meta-formal-title "正式标题"

    # 创建日历事件(同理,不指定 --calendar 时自动按 --tag-major 选)
    python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py create-event \
      --title "正式标题" \
      --tag-major work \
      --start "YYYY-MM-DD HH:MM" \
      --end "YYYY-MM-DD HH:MM" \
      --notes "正式备注" \
      --meta-project "项目名" \
      --meta-task-type "会议"
    ```

    `--tag-major` 接受 `work` / `life` / `工作` / `生活`,自动归一化。
    metadata block 会被追加到 reminder body / event description 末尾,跨机同步、跨端可读。

### 阶段六:本地索引(可选)+ sync

13. **v4.0 下 Apple 是真源,tasks.json 是本地缓存**。如果只是创建任务,无需手动 save-task — 跑 `sync` 命令可随时从 Apple 重建 tasks.json。但如果想立即更新本地索引(避免下次跑 search 时漏掉刚创建的任务),可显式保存:
    ```bash
    python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py save-task \
      --task-id "auto-generated-uuid" \
      --user-input "原始输入" \
      --parsed-json '{...}' \
      --formal-title "..." \
      --formal-notes "..." \
      --calendar-event-id "..." \
      --reminder-id "..." \
      --project "项目名" \
      --task-type "类型" \
      --major-tag work \
      --aux-tags "紧急"
    ```
14. **`sync` 命令 — 从 Apple 真源重建 tasks.json**(推荐定期跑,尤其在 iPhone 手动加任务后):
    ```bash
    python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py sync
    # 可选参数:
    #   --months-back 6 / --months-forward 3   日历事件扫描范围
    #   --dry-run                              只 print 不写盘
    ```
    sync 行为:
    - 扫白名单内的 Reminders 列表(`work_lists` + `life_lists`)的**未完成** reminders
    - 扫白名单内的 Calendar 日历(`work_calendars` + `life_calendars`)的指定时间范围内事件
    - 解析每条 description / body 末尾的 metadata block 还原 project / task_type / aux_tags / formal_title
    - 主标签由所在列表 / 日历名物理推断(不读 metadata 里的 tags 字段)
    - 写盘前自动备份 `tasks.json.bak`
15. 数据库路径:`~/.smart-calendar/tasks.json`(可通过 `SMART_CALENDAR_DATA_DIR` 环境变量覆盖)

### 阶段七:更新 / 删除

15. 用户要求更新 / 删除时:
    - 搜索本地数据库匹配关键词:
      ```bash
      python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py search "关键词"
      ```
    - 展示匹配结果,让用户选择要操作的记录
    - 执行更新或删除:
      ```bash
      python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py update \
        --task-id "xxx" --field "title" --value "新标题"

      python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py delete \
        --task-id "xxx"
      ```

### 阶段八:周报生成

16. 用户主动触发周报(**本版本不实现自动定时**;如需周五自动提示请用 launchd / cron 自行配置):
    ```bash
    # 输出到控制台
    python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py weekly-report

    # 写入文件(使用配置的输出目录)
    python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py weekly-report \
      --output-dir "/path/to/output"
    ```
17. 周报规则:
    - **时间范围**:上周五 18:00 至 本周五 17:00(在 Mon-Thu 触发时返回上一个已结束的周期)
    - **过滤条件**:只提取带"工作"标签的日程和待办
    - **结构**:项目 - 进展 - 待办 三级结构
    - **进展**:本周时间范围内有活动的任务(创建 / 更新 / 截止)
    - **待办**:截止时间在本周期结束后、或没有截止时间但状态仍为 active 的任务
    - **期号计算**:基于固定锚点(2026-01-02)按周递推,跨机一致
    - **输出格式**:Markdown 文件
    - **文件名**:`{team_name}{report_title}(YYYY-MM-DD).md`(默认 `个人工作周报(YYYY-MM-DD).md`)

## Pitfalls

1. **Calendar / Reminders 权限**:首次运行 AppleScript 会弹权限请求。用户拒绝后所有写入都会失败,且不会再次弹窗 — 需手动到 *系统设置 → 隐私与安全性 → 自动化* 重新授权。
2. **AppleScript 字符转义**:标题 / 备注中的双引号、反斜杠、换行符都会被自动转义,但极少数情况可能仍需手动检查。
3. **时间格式**:AppleScript 的 date 构造对格式敏感,必须使用 `YYYY-MM-DD HH:MM:SS` 格式。
4. **时区**:Calendar 和 Reminders 使用系统时区。`created_at` / `updated_at` 落盘时带本地时区,周报范围判断已做 timezone-aware 处理。
5. **并发写入**:JSON 数据库采用原子重命名写入。**单进程使用安全**,但**多进程并发写入**仍有竞态风险(读 - 改 - 写之间不持锁)。单机交互式使用一般不会触发。
6. **模糊时间解析**:用户说"明天""下周一"等相对时间,需要 agent 根据当前日期正确计算绝对日期。
7. **日历 / 列表名约定(v4.0 关键)**:skill 假设 Apple 已有「工作」和「生活」两个 Reminders 列表 + 两个 Calendar 日历(首次配置时必须建好)。**默认 `--tag-major work` 写入「工作」列表 / 「工作」日历**,不要手写 `--list "提醒事项"` 或 `--calendar "Work"`(v3 旧法,会落到错误列表)。如需 override 列表名,确认目标真实存在,并通过 `work_lists` / `life_lists` / `work_calendars` / `life_calendars` 配置白名单(允许多名共存)。第一次写入前可用 `list-calendars` / `list-reminder-lists` 验证。
8. **截图解析失败**:图片 OCR 可能识别错误,关键字段(尤其是时间和人名)必须向用户二次确认。
9. **多端同步限制**:本 skill 不做多端协同。Mac A 创建的任务在 Mac B 上跑搜索 / 更新 / 周报命令会**完全看不到** — 因为元数据数据库 `tasks.json` 是本地文件。Apple 日历 / 提醒本身会跨设备同步,但脱离本 skill 的元数据上下文。如需多机协同,请按用户需求定制改造。

## Verification

1. 创建任务后,打开 Calendar / Reminders app 验证事件 / 提醒是否成功创建
2. 检查 iPhone / iPad 上是否同步出现
3. 运行 `list-recent --limit 5` 查看最近创建的记录
4. 运行 `list-tags` 查看标签列表
5. 周报生成后,核对任务数量与数据库记录是否一致,确认"生活"标签任务未被包含

## 数据持久化格式

### 任务记录

每个任务以 JSON 对象存储在 `~/.smart-calendar/tasks.json`:

```json
{
  "task_id": "uuid-v4",
  "user_input": "用户原始输入",
  "parsed": {
    "title": "提取标题",
    "task_type": "文件审阅|反馈|调研|文书撰写|会议|其他",
    "project": "项目名",
    "deadline_date": "2026-05-22",
    "deadline_time": "17:00",
    "start_datetime": null,
    "end_datetime": null,
    "priority": "高|中|低",
    "related_people": ["人员1", "人员2"],
    "notes": "额外上下文"
  },
  "formal_title": "正式用语标题",
  "formal_notes": "正式用语备注",
  "calendar_event_id": "Apple Event UID 或 null",
  "reminder_id": "Apple Reminder ID 或 null",
  "tags": ["工作"],
  "created_at": "2026-05-20T14:30:00+08:00",
  "updated_at": "2026-05-20T14:30:00+08:00",
  "status": "active|completed|cancelled"
}
```

### 配置文件

`~/.smart-calendar/config.json`:

```json
{
  "tags": ["工作", "生活"],
  "weekly_report": {
    "enabled": true,
    "output_dir": "",
    "generate_day": "friday",
    "generate_time": "17:00",
    "team_name": "",
    "report_title": "个人工作周报"
  },
  "first_run": true
}
```

## CLI 命令速查

```bash
# 日历 / 提醒操作(v4.0:用 --tag-major + --meta-*)
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py list-calendars
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py list-reminder-lists
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py create-event \
  --title "..." --tag-major work --start "YYYY-MM-DD HH:MM" --end "YYYY-MM-DD HH:MM" \
  --meta-project "..." --meta-task-type "..."
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py create-reminder \
  --title "..." --tag-major work --due "YYYY-MM-DD HH:MM" \
  --meta-project "..." --meta-aux-tags "紧急" --meta-formal-title "..."

# v4.0:从 Apple 真源重建 tasks.json
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py sync
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py sync --dry-run

# 任务管理
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py save-task \
  --task-id "..." --parsed-json '{...}' --tags "工作"
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py search "关键词"
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py update \
  --task-id "xxx" --field "status" --value "completed"
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py delete --task-id "xxx"
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py list-recent --limit 10

# 标签管理
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py list-tags
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py add-tag "紧急"
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py remove-tag "紧急"
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py set-task-tags \
  --task-id "xxx" --tags "工作,紧急"

# 冲突检测
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py check-conflict \
  --date "YYYY-MM-DD" --time "HH:MM" --duration 60

# 周报
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py weekly-report
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py weekly-report \
  --output-dir "/path/to/output"

# 配置
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py get-config
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py set-config \
  --key weekly_report.team_name --value "项目组"
python3 ~/.claude/skills/smart-calendar/scripts/task_manager.py set-config \
  --key weekly_report.output_dir --value "/path"
```

## 文件结构

```
~/.claude/skills/smart-calendar/
├── SKILL.md                          # 本文件
├── README.md                         # 安装与定位说明
├── scripts/
│   ├── task_manager.py               # Python 核心控制器
│   └── smoke_test.py                 # 冒烟测试
├── references/
│   └── applescript_api.md            # AppleScript API 参考
└── templates/
    └── weekly_report.md              # 周报模板(参考用,当前由代码直接拼装)

~/.smart-calendar/          # 数据目录(运行时自动创建)
├── tasks.json                        # 任务数据库
├── config.json                       # 配置文件
└── tmp_*.scpt                        # 临时 AppleScript 文件(用完自动清理)
```

## 已知边界

v4.0 已实现方向 B(Apple 真源 + metadata block + sync),单机版上限大致到这里。剩余边界:

- **写入并发锁**:多进程同时写 tasks.json 仍有竞态风险(单进程交互使用不触发)
- **周五自动触发**:周报生成需用户或外部 scheduler(如 launchd / cron)触发,skill 不内嵌
- **Reminder 标记完成**:update task status 到 completed 不会反向标记 Reminders.app 里的提醒
- **sync 性能**:大型 Apple 库下首次 sync 可能 30~60 秒(实测:少量 active reminder + 几十 calendar event ≈ 51 秒)
- **多机协同(部分实现)**:Apple Calendar / Reminders 通过 iCloud 跨机同步是真源;tasks.json 仍是各机本地缓存。如需在 Mac B 同样体验完整 skill,需另行安装本 skill 并跑一次 `sync` 重建本地缓存

Files in this skill

  • LICENSE1 KB
  • README.md8.7 KB
  • README.zh-CN.md6.8 KB
  • SKILL.md22.8 KB
  • references/applescript_api.md5.4 KB
  • scripts/smoke_test.py24.9 KB
  • scripts/task_manager.py68.2 KB
  • templates/com.smartcalendar.daily.plist.template1.7 KB
  • templates/com.smartcalendar.weekly.plist.template1.6 KB
  • templates/weekly_report.md490 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…