Notion
Full Notion access—search, query databases, create pages, read content

Notion Workspace

Your Notion workspace, fully accessible. Query databases, create pages, manage content blocks—all through natural language.

What You Can Do

Search: Find anything in your workspace. Pages, databases, by title or content.

Databases: Query with filters (status, date, tags), create new entries, update existing ones. Works with any property type.

Pages: Create standalone pages or database entries with rich content. Headings, lists, toggles, code blocks, callouts—the works.

Read: Pull content from any page. Get the full structure or just what you need.

Quick Examples

  • "Find my project tracker database"
  • "Add a new task to my Tasks database: review Q4 budget, due Friday, high priority"
  • "Create a meeting notes page for today's standup"
  • "What's in my Reading List that I haven't finished?"
  • "Show me everything tagged 'urgent' in my Projects"
When to use
Use when user wants to interact with Notion. Triggers: 'in my notion', 'notion database', 'create a page', 'add to my tasks database', 'what's in my [database]', 'read my notion page'. Supports: search, database queries with filters, page creation, reading content.

INSTALLER

To install Notion:

1
📥
Download and install skill files rm -rf ./skills/sauna/notion.workspace.hub && curl -fsSL "https://sk.ills.app/api/skill/notion.workspace.hub/download" | tar -xzf - -C ./skills/sauna/ && cat ./skills/sauna/notion.workspace.hub/SKILL.md
2
▶️
Check if Notion is connected. If not, help the user connect their account. Once connected, explain that you can analyze their Notion workspace to learn how they use it, capture their writing style, and build a profile—but this takes a few minutes. Ask if they'd like to run the analysis now or skip it. If yes, run taskSetup Notion Connection. If no, explain that you can still help them with their Notion workspace.

SKILL.MD

Notion Workspace Agent Rules

Personal Profile

The profile at <a href="/ui/context.connections.profiles" class="bullet-pill"><img src="/icons/bullets/ui.svg" alt="ui" class="bullet-pill-icon" /><span class="pill-name">Connection Profiles</span></a> shows how THIS user uses Notion:

  • All documents — every page and database entry they write to (not just databases)
  • Topics and information — what they write about, what information they capture
  • Collaboration patterns — who they work with regularly
  • Writing style — how they write in Notion (captured in uiWriting Style)
  • Quick access — IDs for fast lookups without searching

The profile is narrative-focused, describing how the person uses Notion rather than just listing databases. Use this to understand their workflow, topics of interest, and writing patterns. When they mention "my tasks" or "my project tracker", check their profile to understand their actual usage patterns before searching.

Always Use Tasks, Not Code Directly

Route through the appropriate task:

  • "Find X" / "Search for" / "Where is" / "Query database" / "Show entries" / "Filter by" / "List items" → <a href="/task/notion.workspace.search" class="bullet-pill"><img src="/icons/bullets/task.svg" alt="task" class="bullet-pill-icon" /><span class="pill-name">Search Notion</span></a>
  • "Create entry" / "Add to database" / "Write to" / "Write a document" / "Add page" / "Create database" / "Inline database" / "Update page" → <a href="/task/notion.workspace.write" class="bullet-pill"><img src="/icons/bullets/task.svg" alt="task" class="bullet-pill-icon" /><span class="pill-name">Write to Notion</span></a>
  • "Read page" / "What's in" / "Show content of" → <a href="/task/notion.workspace.read" class="bullet-pill"><img src="/icons/bullets/task.svg" alt="task" class="bullet-pill-icon" /><span class="pill-name">Read Notion Content</span></a>

Tasks contain interpretation logic and human-friendly behavior. Calling code directly bypasses that.

Interpret Intent, Not Just Words

Users say "my tasks database" not "database ID abc123". They say "due this week" not {"property": "Due", "date": {"next_week": {}}}.

The pattern: Understand what they want → resolve IDs from <a href="/ui/context.connections.profiles" class="bullet-pill"><img src="/icons/bullets/ui.svg" alt="ui" class="bullet-pill-icon" /><span class="pill-name">Connection Profiles</span></a> → construct proper API calls.

If you can't resolve something, ask: "I found 3 databases with 'tasks' in the name. Which one?"

Database Operations

Before Querying

  1. Check <a href="/ui/context.connections.profiles" class="bullet-pill"><img src="/icons/bullets/ui.svg" alt="ui" class="bullet-pill-icon" /><span class="pill-name">Connection Profiles</span></a> for known database IDs
  2. If not found, search for it first with <a href="/code/notion.workspace.search" class="bullet-pill"><img src="/icons/bullets/code.svg" alt="code" class="bullet-pill-icon" /><span class="pill-name">Search Notion Workspace</span></a>
  3. Cache newly discovered databases in the workspace file

Property Mapping

Users describe properties naturally. Map them:

  • "status is done" → Status property equals "Done"
  • "tagged with urgent" → Multi-select contains "urgent"
  • "due this week" → Date property within next 7 days
  • "assigned to me" → People property contains current user

When property names are ambiguous, state your assumption: "Filtering by the 'Status' property—let me know if you meant something else."

Pagination

Notion returns max 100 items per request. For larger queries:

  • Fetch with pagination automatically
  • Report total count: "Found 247 entries, showing first 50"
  • Offer to continue: "Want me to load more?"

Creating Content

Database Entries

  1. Identify target database (search if needed)
  2. Map user's input to database properties
  3. For missing required properties, ask or use sensible defaults
  4. After creation, confirm with the new entry's title and URL

Pages with Blocks

Build rich content when appropriate:

  • Meeting notes → headings + bullet lists
  • Documentation → headings + paragraphs + code blocks
  • Task descriptions → checkboxes + callouts for important notes

Refer to <a href="/slice/notion.workspace.reference" class="bullet-pill"><img src="/icons/bullets/slice.svg" alt="slice" class="bullet-pill-icon" /><span class="pill-name">Notion API Reference</span></a> for block construction.

Inline Databases in Pages

Inline databases cannot be created as blocks during page creation. Use this two-step workflow:

  1. Create the page first with parentType: page or database
  2. Then call <a href="/code/notion.workspace.write" class="bullet-pill"><img src="/icons/bullets/code.svg" alt="code" class="bullet-pill-icon" /><span class="pill-name">Create/Update Notion Content</span></a> again with parentType: inline_database using the new page's ID

Critical: Always use the provided scripts for inline databases. The script sets is_inline: true which embeds the database in the page. Writing custom API code without this flag creates a full-page database that's merely linked—not embedded.

Never bypass the scripts with raw fetch calls. The scripts handle flags and formatting that are easy to miss.

Reading Content

Extract the useful parts:

  • For databases: Show properties in a readable table format
  • For pages: Summarize structure, surface key content
  • Don't dump raw block arrays at users

When content is long, summarize first: "This page has 3 sections: Overview, Requirements, and Timeline. Want the full content or a specific section?"

Error Handling

Common issues and responses:

  • Page not shared with integration: "I can't access that page. Make sure it's shared with the Notion integration."
  • Database not found: "Couldn't find a database called X. Want me to search your workspace?"
  • Invalid property value: "The Status property doesn't have an option called 'Completed'. Available options are: To Do, In Progress, Done."

Rate Limits

Notion allows 3 requests/second average. The code handles this, but for large operations, warn users: "Updating 50 entries—this'll take about 20 seconds."

Understanding User's Notion Usage

The profile at <a href="/ui/context.connections.profiles" class="bullet-pill"><img src="/icons/bullets/ui.svg" alt="ui" class="bullet-pill-icon" /><span class="pill-name">Connection Profiles</span></a> is built during setup by analyzing ALL documents the user writes to—both database entries and standalone pages. It captures:

  • Document patterns — how many documents, mix of databases vs pages, activity levels
  • Topics — what information and topics they write about
  • Collaboration — who they work with frequently
  • Writing style — tone, formality, structure patterns (also saved to <a href="/ui/context.user.writing_style" class="bullet-pill"><img src="/icons/bullets/ui.svg" alt="ui" class="bullet-pill-icon" /><span class="pill-name">Writing Style</span></a>)

Always check the profile before searching. The profile tells you HOW this specific user uses Notion, not just what databases exist. Use it to understand their workflow, what they care about, and how they organize information.

When you discover new patterns or frequently-used databases/pages, the profile will be updated on the next setup run to reflect their actual usage.


# Notion Workspace Agent Rules

## Personal Profile

The profile at ``./documents/connections/[service-name].md`` shows how THIS user uses Notion:

- **All documents** — every page and database entry they write to (not just databases)
- **Topics and information** — what they write about, what information they capture
- **Collaboration patterns** — who they work with regularly
- **Writing style** — how they write in Notion (captured in `./documents/user/writing_style.md`)
- **Quick access** — IDs for fast lookups without searching

The profile is narrative-focused, describing how the person uses Notion rather than just listing databases. Use this to understand their workflow, topics of interest, and writing patterns. When they mention "my tasks" or "my project tracker", check their profile to understand their actual usage patterns before searching.

## Always Use Tasks, Not Code Directly

Route through the appropriate task:

- "Find X" / "Search for" / "Where is" / "Query database" / "Show entries" / "Filter by" / "List items" → ``./skills/sauna/notion.workspace.hub/resources/recipes/notion.workspace.search.md``
- "Create entry" / "Add to database" / "Write to" / "Write a document" / "Add page" / "Create database" / "Inline database" / "Update page" → ``./skills/sauna/notion.workspace.hub/resources/recipes/notion.workspace.write.md``
- "Read page" / "What's in" / "Show content of" → ``./skills/sauna/notion.workspace.hub/resources/recipes/notion.workspace.read.md``

Tasks contain interpretation logic and human-friendly behavior. Calling code directly bypasses that.

## Interpret Intent, Not Just Words

Users say "my tasks database" not "database ID abc123". They say "due this week" not `{"property": "Due", "date": {"next_week": {}}}`.

**The pattern:** Understand what they want → resolve IDs from ``./documents/connections/[service-name].md`` → construct proper API calls.

If you can't resolve something, ask: "I found 3 databases with 'tasks' in the name. Which one?"

## Database Operations

### Before Querying

1. Check ``./documents/connections/[service-name].md`` for known database IDs
2. If not found, search for it first with ``./skills/sauna/notion.workspace.hub/scripts/notion.workspace.search.js``
3. Cache newly discovered databases in the workspace file

### Property Mapping

Users describe properties naturally. Map them:

- "status is done" → Status property equals "Done"
- "tagged with urgent" → Multi-select contains "urgent"
- "due this week" → Date property within next 7 days
- "assigned to me" → People property contains current user

When property names are ambiguous, state your assumption: "Filtering by the 'Status' property—let me know if you meant something else."

### Pagination

Notion returns max 100 items per request. For larger queries:

- Fetch with pagination automatically
- Report total count: "Found 247 entries, showing first 50"
- Offer to continue: "Want me to load more?"

## Creating Content

### Database Entries

1. Identify target database (search if needed)
2. Map user's input to database properties
3. For missing required properties, ask or use sensible defaults
4. After creation, confirm with the new entry's title and URL

### Pages with Blocks

Build rich content when appropriate:

- Meeting notes → headings + bullet lists
- Documentation → headings + paragraphs + code blocks
- Task descriptions → checkboxes + callouts for important notes

Refer to ``./skills/sauna/notion.workspace.hub/resources/context/notion.workspace.reference.md`` for block construction.

### Inline Databases in Pages

Inline databases cannot be created as blocks during page creation. Use this two-step workflow:

1. Create the page first with `parentType: page` or `database`
2. Then call ``./skills/sauna/notion.workspace.hub/scripts/notion.workspace.write.js`` again with `parentType: inline_database` using the new page's ID

**Critical:** Always use the provided scripts for inline databases. The script sets `is_inline: true` which embeds the database in the page. Writing custom API code without this flag creates a full-page database that's merely linked—not embedded.

Never bypass the scripts with raw fetch calls. The scripts handle flags and formatting that are easy to miss.

## Reading Content

Extract the useful parts:

- For databases: Show properties in a readable table format
- For pages: Summarize structure, surface key content
- Don't dump raw block arrays at users

When content is long, summarize first: "This page has 3 sections: Overview, Requirements, and Timeline. Want the full content or a specific section?"

## Error Handling

Common issues and responses:

- **Page not shared with integration**: "I can't access that page. Make sure it's shared with the Notion integration."
- **Database not found**: "Couldn't find a database called X. Want me to search your workspace?"
- **Invalid property value**: "The Status property doesn't have an option called 'Completed'. Available options are: To Do, In Progress, Done."

## Rate Limits

Notion allows 3 requests/second average. The code handles this, but for large operations, warn users: "Updating 50 entries—this'll take about 20 seconds."

## Understanding User's Notion Usage

The profile at ``./documents/connections/[service-name].md`` is built during setup by analyzing ALL documents the user writes to—both database entries and standalone pages. It captures:

- **Document patterns** — how many documents, mix of databases vs pages, activity levels
- **Topics** — what information and topics they write about
- **Collaboration** — who they work with frequently
- **Writing style** — tone, formality, structure patterns (also saved to ``./documents/user/writing_style.md``)

Always check the profile before searching. The profile tells you HOW this specific user uses Notion, not just what databases exist. Use it to understand their workflow, what they care about, and how they organize information.

When you discover new patterns or frequently-used databases/pages, the profile will be updated on the next setup run to reflect their actual usage.

Tasks

These are tasks you can execute. Read the task file to get your instructions:

task icon Search Notion task:notion.workspace.search Find pages/databases by name, or query database entries with filters
task icon Write to Notion task:notion.workspace.write Create pages, database entries, inline databases, or update existing content
task icon Read Notion Content task:notion.workspace.read Read and understand the content of a Notion page
Search Notion : Find pages/databases by name, or query database entries with filters
💡 Find pages/databases or query database entries
Write to Notion : Create pages, database entries, inline databases, or update existing content
💡 Create pages, entries, inline databases, or update
Read Notion Content : Read and understand the content of a Notion page
💡 Read page content

UI

These are areas on the user's filesystem that you can read from and write to.

ui icon Connection Profiles ui:context.connections.profiles Cached summaries for connected services - channels, contacts, preferences. How does the user interact with the connected service?
ui icon User Context ui:context.user.profile Extracted user context organized by theme - work, interests, projects, etc.
ui icon Writing Style ui:context.user.writing_style Captured writing style patterns organized by service (Gmail, Notion, Slack) - tone, formality, structure, phrases, greetings, signatures. Each service has its own section to preserve context-specific styles. Used to draft content matching the user's voice.
Connection Profiles : Cached summaries for connected services - channels, contacts, preferences. How does the user interact with the connected service?
💡 [notion]
User Context : Extracted user context organized by theme - work, interests, projects, etc.
💡 Persistent user insights from Notion analysis
Writing Style : Captured writing style patterns organized by service (Gmail, Notion, Slack) - tone, formality, structure, phrases, greetings, signatures. Each service has its own section to preserve context-specific styles. Used to draft content matching the user's voice.
💡 'notion': Writing style analysis from Notion activity
---
name: Notion
description: Use when user wants to interact with Notion. Triggers: 'in my notion', 'notion database', 'create a page', 'add to my tasks database', 'what's in my [database]', 'read my notion page'. Supports: search, database queries with filters, page creation, reading content.
---


# Notion Workspace Agent Rules

## Personal Profile

The profile at `./documents/connections/[service-name].md` shows how THIS user uses Notion:

- **All documents** — every page and database entry they write to (not just databases)
- **Topics and information** — what they write about, what information they capture
- **Collaboration patterns** — who they work with regularly
- **Writing style** — how they write in Notion (captured in `./documents/user/writing_style.md`)
- **Quick access** — IDs for fast lookups without searching

The profile is narrative-focused, describing how the person uses Notion rather than just listing databases. Use this to understand their workflow, topics of interest, and writing patterns. When they mention "my tasks" or "my project tracker", check their profile to understand their actual usage patterns before searching.

## Always Use Tasks, Not Code Directly

Route through the appropriate task:

- "Find X" / "Search for" / "Where is" / "Query database" / "Show entries" / "Filter by" / "List items" → `./skills/sauna/notion.workspace.hub/resources/recipes/notion.workspace.search.md`
- "Create entry" / "Add to database" / "Write to" / "Write a document" / "Add page" / "Create database" / "Inline database" / "Update page" → `./skills/sauna/notion.workspace.hub/resources/recipes/notion.workspace.write.md`
- "Read page" / "What's in" / "Show content of" → `./skills/sauna/notion.workspace.hub/resources/recipes/notion.workspace.read.md`

Tasks contain interpretation logic and human-friendly behavior. Calling code directly bypasses that.

## Interpret Intent, Not Just Words

Users say "my tasks database" not "database ID abc123". They say "due this week" not `{"property": "Due", "date": {"next_week": {}}}`.

**The pattern:** Understand what they want → resolve IDs from `./documents/connections/[service-name].md` → construct proper API calls.

If you can't resolve something, ask: "I found 3 databases with 'tasks' in the name. Which one?"

## Database Operations

### Before Querying

1. Check `./documents/connections/[service-name].md` for known database IDs
2. If not found, search for it first with `./skills/sauna/notion.workspace.hub/scripts/notion.workspace.search.js`
3. Cache newly discovered databases in the workspace file

### Property Mapping

Users describe properties naturally. Map them:

- "status is done" → Status property equals "Done"
- "tagged with urgent" → Multi-select contains "urgent"
- "due this week" → Date property within next 7 days
- "assigned to me" → People property contains current user

When property names are ambiguous, state your assumption: "Filtering by the 'Status' property—let me know if you meant something else."

### Pagination

Notion returns max 100 items per request. For larger queries:

- Fetch with pagination automatically
- Report total count: "Found 247 entries, showing first 50"
- Offer to continue: "Want me to load more?"

## Creating Content

### Database Entries

1. Identify target database (search if needed)
2. Map user's input to database properties
3. For missing required properties, ask or use sensible defaults
4. After creation, confirm with the new entry's title and URL

### Pages with Blocks

Build rich content when appropriate:

- Meeting notes → headings + bullet lists
- Documentation → headings + paragraphs + code blocks
- Task descriptions → checkboxes + callouts for important notes

Refer to `./skills/sauna/notion.workspace.hub/resources/context/notion.workspace.reference.md` for block construction.

### Inline Databases in Pages

Inline databases cannot be created as blocks during page creation. Use this two-step workflow:

1. Create the page first with `parentType: page` or `database`
2. Then call `./skills/sauna/notion.workspace.hub/scripts/notion.workspace.write.js` again with `parentType: inline_database` using the new page's ID

**Critical:** Always use the provided scripts for inline databases. The script sets `is_inline: true` which embeds the database in the page. Writing custom API code without this flag creates a full-page database that's merely linked—not embedded.

Never bypass the scripts with raw fetch calls. The scripts handle flags and formatting that are easy to miss.

## Reading Content

Extract the useful parts:

- For databases: Show properties in a readable table format
- For pages: Summarize structure, surface key content
- Don't dump raw block arrays at users

When content is long, summarize first: "This page has 3 sections: Overview, Requirements, and Timeline. Want the full content or a specific section?"

## Error Handling

Common issues and responses:

- **Page not shared with integration**: "I can't access that page. Make sure it's shared with the Notion integration."
- **Database not found**: "Couldn't find a database called X. Want me to search your workspace?"
- **Invalid property value**: "The Status property doesn't have an option called 'Completed'. Available options are: To Do, In Progress, Done."

## Rate Limits

Notion allows 3 requests/second average. The code handles this, but for large operations, warn users: "Updating 50 entries—this'll take about 20 seconds."

## Understanding User's Notion Usage

The profile at `./documents/connections/[service-name].md` is built during setup by analyzing ALL documents the user writes to—both database entries and standalone pages. It captures:

- **Document patterns** — how many documents, mix of databases vs pages, activity levels
- **Topics** — what information and topics they write about
- **Collaboration** — who they work with frequently
- **Writing style** — tone, formality, structure patterns (also saved to `./documents/user/writing_style.md`)

Always check the profile before searching. The profile tells you HOW this specific user uses Notion, not just what databases exist. Use it to understand their workflow, what they care about, and how they organize information.

When you discover new patterns or frequently-used databases/pages, the profile will be updated on the next setup run to reflect their actual usage.



## Skills

This skill depends on the following skills. Use these if needed.

**Writing Style Analyzer**: Analyze writing samples to capture your voice and style
Note: Provides comprehensive writing style analysis
Follow the instructions in: `./skills/sauna/notion.workspace.hub/resources/skills/context.user.style_analyzer/SKILL.md`


## Tasks

These are tasks you can execute. Read the task file to get your instructions:

**Search Notion**: Find pages/databases by name, or query database entries with filters
Note: Find pages/databases or query database entries
Follow the instructions in: `./skills/sauna/notion.workspace.hub/resources/recipes/notion.workspace.search.md`

**Write to Notion**: Create pages, database entries, inline databases, or update existing content
Note: Create pages, entries, inline databases, or update
Follow the instructions in: `./skills/sauna/notion.workspace.hub/resources/recipes/notion.workspace.write.md`

**Read Notion Content**: Read and understand the content of a Notion page
Note: Read page content
Follow the instructions in: `./skills/sauna/notion.workspace.hub/resources/recipes/notion.workspace.read.md`



## UI

These are areas on the user's filesystem that you can read from and write to.

**Connection Profiles**: Cached summaries for connected services - channels, contacts, preferences. How does the user interact with the connected service?
Note: [notion]
Use this directory: `./documents/connections/[service-name].md`

**User Context**: Extracted user context organized by theme - work, interests, projects, etc.
Note: Persistent user insights from Notion analysis
Use this directory: `./documents/user/[personal|work|goals|interests].md`

**Writing Style**: Captured writing style patterns organized by service (Gmail, Notion, Slack) - tone, formality, structure, phrases, greetings, signatures. Each service has its own section to preserve context-specific styles. Used to draft content matching the user's voice.
Note: 'notion': Writing style analysis from Notion activity
Use this file: `./documents/user/writing_style.md`
1. Install Notion with: ```bash
rm -rf ./skills/sauna/notion.workspace.hub && curl -fsSL "https://sk.ills.app/api/skill/notion.workspace.hub/download" | tar -xzf - -C ./skills/sauna/ && cat ./skills/sauna/notion.workspace.hub/SKILL.md
```. Do so silently without commentary.

2. Check if Notion is connected. If not, help the user connect their account. Once connected, explain that you can analyze their Notion workspace to learn how they use it, capture their writing style, and build a profile—but this takes a few minutes. Ask if they'd like to run the analysis now or skip it. If yes, run `./skills/sauna/notion.workspace.hub/resources/recipes/notion.workspace.setup.md`. If no, explain that you can still help them with their Notion workspace.

# Notion Workspace

Your Notion workspace, fully accessible. Query databases, create pages, manage content blocks—all through natural language.

## What You Can Do

**Search**: Find anything in your workspace. Pages, databases, by title or content.

**Databases**: Query with filters (status, date, tags), create new entries, update existing ones. Works with any property type.

**Pages**: Create standalone pages or database entries with rich content. Headings, lists, toggles, code blocks, callouts—the works.

**Read**: Pull content from any page. Get the full structure or just what you need.

## Quick Examples

- "Find my project tracker database"
- "Add a new task to my Tasks database: review Q4 budget, due Friday, high priority"
- "Create a meeting notes page for today's standup"
- "What's in my Reading List that I haven't finished?"
- "Show me everything tagged 'urgent' in my Projects"