Setup
On first use, read setup.md to establish token access, workspace scope, and safe write defaults.
When to Use
User wants to treat a Notion database as a calendar, editorial plan, launch schedule, content calendar, or dated task board.
Agent handles schema discovery, time-window queries, page creation, rescheduling, and status updates for pages that appear in Notion calendar views.
Requirements
NOTION_API_KEY for official API access.
- A Notion integration shared with the target database.
- Optional community CLI:
notion from FroeMic/notion-cli for quick search and CRUD shortcuts.
Architecture
Memory lives in ~/notion-calendar/. See memory-template.md for structure.
~/notion-calendar/
|-- memory.md # Status, timezone defaults, and workspace context
|-- calendars.md # Database and data source IDs plus property mappings
|-- templates.md # Reusable page payload patterns
`-- safety-log.md # Ambiguous matches, destructive confirmations, and rollbacks
Quick Reference
| Topic |
File |
| Setup and first-run behavior |
setup.md |
| Memory structure |
memory-template.md |
| Calendar source mapping |
calendars.md |
| Reusable payload templates |
templates.md |
| Optional CLI patterns |
cli-patterns.md |
| Calendar database schema guidance |
calendar-schema.md |
| Query, create, and reschedule flows |
query-playbook.md |
| Common failures and fixes |
troubleshooting.md |
Core Rules
1. Treat Notion Calendar as Date-Driven Data Sources
- The operational unit is a Notion database or data source with at least one date property.
- Do not promise direct control of Google Calendar or native Notion Calendar app settings through this skill.
2. Discover Schema Before Writing
- Retrieve the database container, then resolve the active
data_source_id and property names before create or update operations.
- Cache title, date, status, assignee, and timezone-relevant fields in
calendars.md after user approval.
3. Use Explicit Time Windows
- Convert requests such as "next week" or "this quarter" into bounded ISO dates with a declared timezone.
- Query only the requested window first, then widen if the result set is empty or clearly incomplete.
4. Prefer the CLI for Fast Reads, Fallback to Official HTTP for Modern Gaps
- If
notion CLI is installed and the task is basic search, read, or simple page CRUD, use it for speed.
- For
2025-09-03 data source workflows, schema migration, or any unsupported command, use direct requests to api.notion.com.
5. Read Before Write and Verify After
- Before create, reschedule, archive, or status changes, fetch matching rows in the exact target window.
- After a write, read back the changed page and report the final title, date, status, and URL.
6. Keep Calendar Semantics Explicit
- Confirm whether a row is all-day, single timestamp, or start/end range before writing date values.
- Recurrence is not a first-class calendar series here; if the user wants repeating items, create a template or batch future pages intentionally.
7. Escalate Ambiguity Instead of Guessing
- If multiple pages share the same title, ask for the page URL, page ID, or the exact date window.
- Never archive or move rows on a low-confidence title match.
Common Traps
- Assuming every database ID is enough on its own -> newer Notion versions may require
data_source_id.
- Writing to the first property named "Date" without schema review -> wrong calendar column updated.
- Treating Notion rows as true recurring events -> repeat behavior must be modeled, not assumed.
- Rescheduling by title only -> duplicate launch plans or editorial items get changed accidentally.
- Querying wide open ranges by default -> noisy results and missed verification.
External Endpoints
| Endpoint |
Data Sent |
Purpose |
https://api.notion.com/v1/search |
Search text, filters, pagination cursor |
Find candidate databases, data sources, or pages |
https://api.notion.com/v1/databases/* |
Database ID |
Retrieve container metadata and child data sources |
https://api.notion.com/v1/data_sources/* |
Data source IDs, filters, sorts, property schema updates |
Query rows and inspect or update calendar schema |
https://api.notion.com/v1/pages/* |
Page properties and content updates |
Create pages, reschedule items, update status |
No other data is sent externally.
Security & Privacy
Data that leaves your machine:
- Search text, page properties, dates, and page content sent to Notion through
api.notion.com.
Data that stays local:
- Workspace context, property mappings, and safe defaults in
~/notion-calendar/.
This skill does NOT:
- Store API keys in skill memory files.
- Access undeclared third-party calendar APIs.
- Claim a write succeeded without a read-back check.
- Modify files outside
~/notion-calendar/ for this workflow.
Scope
This skill ONLY:
- Works with Notion databases, data sources, and pages used as calendar items.
- Uses the optional
notion CLI when available for compatible operations.
- Falls back to direct Notion API calls when the CLI lags the current API shape.
This skill NEVER:
- Configure Notion Calendar app preferences or account settings.
- Synchronize Google Calendar accounts on the user's behalf.
- Hide destructive changes behind implicit matches.
Trust
By using this skill, calendar-related workspace data is sent to Notion.
Only install if you trust Notion with page titles, dates, status fields, and related planning metadata.
Related Skills
Install with clawhub install <slug> if user confirms:
api - general REST API request patterns and debugging.
dates - precise date math, ranges, and timezone interpretation.
pkm - broader knowledge and workspace organization patterns.
productivity - execution systems around tasks and schedules.
schedule - planning logic when requests become multi-step scheduling work.
Feedback
- If useful:
clawhub star notion-calendar
- Stay updated:
clawhub sync
1---2name: notion-calendar3description: Manage Notion calendar databases with date-aware search, page creation, rescheduling, and safe workflows for planning views.4---56## Setup78On first use, read `setup.md` to establish token access, workspace scope, and safe write defaults.910## When to Use1112User wants to treat a Notion database as a calendar, editorial plan, launch schedule, content calendar, or dated task board.13Agent handles schema discovery, time-window queries, page creation, rescheduling, and status updates for pages that appear in Notion calendar views.1415## Requirements1617- `NOTION_API_KEY` for official API access.18- A Notion integration shared with the target database.19- Optional community CLI: `notion` from FroeMic/notion-cli for quick search and CRUD shortcuts.2021## Architecture2223Memory lives in `~/notion-calendar/`. See `memory-template.md` for structure.2425```text26~/notion-calendar/27|-- memory.md # Status, timezone defaults, and workspace context28|-- calendars.md # Database and data source IDs plus property mappings29|-- templates.md # Reusable page payload patterns30`-- safety-log.md # Ambiguous matches, destructive confirmations, and rollbacks31```3233## Quick Reference3435| Topic | File |36|-------|------|37| Setup and first-run behavior | `setup.md` |38| Memory structure | `memory-template.md` |39| Calendar source mapping | `calendars.md` |40| Reusable payload templates | `templates.md` |41| Optional CLI patterns | `cli-patterns.md` |42| Calendar database schema guidance | `calendar-schema.md` |43| Query, create, and reschedule flows | `query-playbook.md` |44| Common failures and fixes | `troubleshooting.md` |4546## Core Rules4748### 1. Treat Notion Calendar as Date-Driven Data Sources49- The operational unit is a Notion database or data source with at least one date property.50- Do not promise direct control of Google Calendar or native Notion Calendar app settings through this skill.5152### 2. Discover Schema Before Writing53- Retrieve the database container, then resolve the active `data_source_id` and property names before create or update operations.54- Cache title, date, status, assignee, and timezone-relevant fields in `calendars.md` after user approval.5556### 3. Use Explicit Time Windows57- Convert requests such as "next week" or "this quarter" into bounded ISO dates with a declared timezone.58- Query only the requested window first, then widen if the result set is empty or clearly incomplete.5960### 4. Prefer the CLI for Fast Reads, Fallback to Official HTTP for Modern Gaps61- If `notion` CLI is installed and the task is basic search, read, or simple page CRUD, use it for speed.62- For `2025-09-03` data source workflows, schema migration, or any unsupported command, use direct requests to `api.notion.com`.6364### 5. Read Before Write and Verify After65- Before create, reschedule, archive, or status changes, fetch matching rows in the exact target window.66- After a write, read back the changed page and report the final title, date, status, and URL.6768### 6. Keep Calendar Semantics Explicit69- Confirm whether a row is all-day, single timestamp, or start/end range before writing date values.70- Recurrence is not a first-class calendar series here; if the user wants repeating items, create a template or batch future pages intentionally.7172### 7. Escalate Ambiguity Instead of Guessing73- If multiple pages share the same title, ask for the page URL, page ID, or the exact date window.74- Never archive or move rows on a low-confidence title match.7576## Common Traps7778- Assuming every database ID is enough on its own -> newer Notion versions may require `data_source_id`.79- Writing to the first property named "Date" without schema review -> wrong calendar column updated.80- Treating Notion rows as true recurring events -> repeat behavior must be modeled, not assumed.81- Rescheduling by title only -> duplicate launch plans or editorial items get changed accidentally.82- Querying wide open ranges by default -> noisy results and missed verification.8384## External Endpoints8586| Endpoint | Data Sent | Purpose |87|----------|-----------|---------|88| `https://api.notion.com/v1/search` | Search text, filters, pagination cursor | Find candidate databases, data sources, or pages |89| `https://api.notion.com/v1/databases/*` | Database ID | Retrieve container metadata and child data sources |90| `https://api.notion.com/v1/data_sources/*` | Data source IDs, filters, sorts, property schema updates | Query rows and inspect or update calendar schema |91| `https://api.notion.com/v1/pages/*` | Page properties and content updates | Create pages, reschedule items, update status |9293No other data is sent externally.9495## Security & Privacy9697**Data that leaves your machine:**98- Search text, page properties, dates, and page content sent to Notion through `api.notion.com`.99100**Data that stays local:**101- Workspace context, property mappings, and safe defaults in `~/notion-calendar/`.102103**This skill does NOT:**104- Store API keys in skill memory files.105- Access undeclared third-party calendar APIs.106- Claim a write succeeded without a read-back check.107- Modify files outside `~/notion-calendar/` for this workflow.108109## Scope110111This skill ONLY:112- Works with Notion databases, data sources, and pages used as calendar items.113- Uses the optional `notion` CLI when available for compatible operations.114- Falls back to direct Notion API calls when the CLI lags the current API shape.115116This skill NEVER:117- Configure Notion Calendar app preferences or account settings.118- Synchronize Google Calendar accounts on the user's behalf.119- Hide destructive changes behind implicit matches.120121## Trust122123By using this skill, calendar-related workspace data is sent to Notion.124Only install if you trust Notion with page titles, dates, status fields, and related planning metadata.125126## Related Skills127Install with `clawhub install <slug>` if user confirms:128- `api` - general REST API request patterns and debugging.129- `dates` - precise date math, ranges, and timezone interpretation.130- `pkm` - broader knowledge and workspace organization patterns.131- `productivity` - execution systems around tasks and schedules.132- `schedule` - planning logic when requests become multi-step scheduling work.133134## Feedback135136- If useful: `clawhub star notion-calendar`137- Stay updated: `clawhub sync`