skills/integrations/notion/notion-connect/SKILL.md
Connect to any Notion database by name. Load when user mentions 'notion', 'connect notion', 'setup notion', 'query [database-name]', 'add to [database]', 'notion databases', or any database name from persistent context. Meta-skill that discovers workspace, caches schemas, and routes to appropriate operations.
npx skillsauth add beam-ai-team/beam-next-skills notion-connectInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Meta-skill for complete Notion workspace integration.
Enable natural language interaction with ANY Notion database. User says "query my Projects database" or "add a page to CRM" and it just works - no manual API calls, no remembering database IDs, no schema lookups.
This skill uses notion-master shared library. Load references as needed:
| Resource | When to Load |
|----------|--------------|
| notion-master/scripts/check_notion_config.py | Always first (pre-flight) |
| notion-master/references/setup-guide.md | If config check fails |
| notion-master/references/error-handling.md | On any API errors |
| notion-master/references/api-reference.md | For API details |
If user has never used Notion integration before:
Run config check to detect setup state:
python 00-system/skills/notion-master/scripts/check_notion_config.py
If exit code 2 (not configured), run the interactive setup wizard:
python 00-system/skills/notion-master/scripts/setup_notion.py
The wizard will:
.envuser-config.yaml02-memory/integrations/notion-databases.yamlAfter setup completes, user can immediately start querying databases
Setup triggers: "setup notion", "connect notion", "configure notion"
Every workflow MUST start with config validation:
python 00-system/skills/notion-master/scripts/check_notion_config.py
Exit code meanings:
If exit code 2 (config incomplete):
python 00-system/skills/notion-master/scripts/setup_notion.pyIf exit code 0 or 1: Continue to requested operation
Triggers: "connect notion", "sync notion", "discover databases", "what databases", "refresh notion"
Purpose: Find all accessible databases in user's Notion workspace and cache schemas.
Steps:
python 00-system/skills/notion-master/scripts/discover_databases.py
02-memory/integrations/notion-databases.yamlFirst-time flow: If notion-databases.yaml doesn't exist, discovery runs automatically.
Triggers: "query [database]", "find in [database]", "search [database]", "show [database]", "list [database]"
Purpose: Query any database by name with optional filters.
Steps:
02-memory/integrations/notion-databases.yaml
python 00-system/skills/notion-master/scripts/search_skill_database.py --db <database_id> [--filter "..."] [--sort ...] [--limit N]
Filter Syntax (load notion-master/references/filter-syntax.md if user needs help):
--filter "Status = Active"--filter "Priority = High"--filter "Tags contains Design"Note: Currently supports single filter per query. Multiple filters (AND/OR) planned for future.
Triggers: "add to [database]", "create in [database]", "new [item] in [database]"
Purpose: Create a new page in any database with property validation.
Steps:
python 00-system/skills/notion-master/scripts/create_page.py --db <database_id> --properties '{"Title": "...", "Status": "..."}'
Triggers: "create database", "new database", "add property to [database]", "update [database] schema"
Purpose: Create new databases or modify existing database schemas.
Steps:
python 00-system/skills/notion-master/scripts/manage_database.py create \
--parent <page_id> \
--title "Database Name" \
--properties '[{"name": "Name", "type": "title"}, {"name": "Status", "type": "select", "options": ["Todo", "Done"]}]'
python discover_databases.pypython 00-system/skills/notion-master/scripts/manage_database.py update \
--db <database_id> \
--add-property '{"name": "Priority", "type": "select", "options": ["Low", "Medium", "High"]}'
Supported Property Types for Creation:
title - Primary name field (required, one per database)rich_text - Multi-line textnumber - Numeric values (with optional precision)select - Single choice from optionsmulti_select - Multiple choices from optionsdate - Date/datetimecheckbox - Boolean true/falseurl, email, phone_number - Validated text fieldspeople - User assignmentrelation - Link to another databaseTriggers: "update [page]", "edit [page]", "change [property] to [value]", "modify page"
Purpose: Modify properties of an existing page.
Steps:
python search_skill_database.py --db <id> --filter "Name contains [search]"python 00-system/skills/notion-master/scripts/manage_page.py update \
--page <page_id> \
--properties '{"Status": "Done", "Priority": "High"}'
Triggers: "get page [id]", "show page details", "delete page", "remove [page]"
Purpose: Retrieve full page details or delete a page.
Steps:
python 00-system/skills/notion-master/scripts/manage_page.py get --page <page_id>
python 00-system/skills/notion-master/scripts/manage_page.py delete --page <page_id>
Triggers: "append to [page]", "add section to [page]", "edit content of [page]", "list blocks", "delete block"
Purpose: Read, append, update, and delete content blocks within pages.
Steps:
python 00-system/skills/notion-master/scripts/manage_blocks.py children --page <page_id>
# Simple block
python 00-system/skills/notion-master/scripts/manage_blocks.py append \
--page <page_id> --type paragraph --text "Your content here"
# Multiple blocks
python 00-system/skills/notion-master/scripts/manage_blocks.py append \
--page <page_id> --content '[{"type": "heading_1", ...}, {"type": "paragraph", ...}]'
python 00-system/skills/notion-master/scripts/manage_blocks.py update \
--block <block_id> --content '{"paragraph": {"rich_text": [...]}}'
python 00-system/skills/notion-master/scripts/manage_blocks.py delete --block <block_id> --confirm
Supported Block Types (load notion-master/references/block-types.md for full list):
paragraph, heading_1, heading_2, heading_3, quote, calloutbulleted_list_item, numbered_list_item, to_do, togglecode (with language), equationimage, video, file, bookmarkdivider, table_of_contentsTriggers: "list users", "who can access", "get user", "find user"
Purpose: List workspace users and get user details for @mentions.
Steps:
python 00-system/skills/notion-master/scripts/manage_users.py list --save
02-memory/integrations/notion-users.yamlpython 00-system/skills/notion-master/scripts/manage_users.py me
Triggers: "add comment", "list comments", "comment on [page]", "reply to comment"
Purpose: Create and list comments on pages and discussions.
Steps:
python 00-system/skills/notion-master/scripts/manage_comments.py list --page <page_id>
# New comment on page
python 00-system/skills/notion-master/scripts/manage_comments.py create \
--page <page_id> --text "Your comment here"
# Reply to existing discussion
python 00-system/skills/notion-master/scripts/manage_comments.py create \
--discussion <discussion_id> --text "Your reply here"
Status: Planned for Phase 6
Sub-workflows:
Location: 02-memory/integrations/notion-databases.yaml
---
last_synced: 2025-12-10T23:00:00
sync_count: 3
databases:
- id: "abc123-def456"
name: "Client Projects"
parent: "Marketing" # For disambiguation
url: "https://notion.so/..."
properties:
- name: "Name"
type: "title"
- name: "Status"
type: "select"
options: ["Not Started", "In Progress", "Complete"]
- name: "Priority"
type: "select"
options: ["Low", "Medium", "High"]
- name: "Due Date"
type: "date"
- name: "Assignee"
type: "people"
- id: "ghi789-jkl012"
name: "Content Calendar"
parent: null
url: "https://notion.so/..."
properties:
- name: "Title"
type: "title"
- name: "Publish Date"
type: "date"
- name: "Channel"
type: "multi_select"
options: ["Blog", "Twitter", "LinkedIn"]
---
# Notion Databases Context
Auto-generated by notion-connect skill.
Run "refresh notion" to update.
When user says a database name:
Disambiguation prompt (if multiple matches):
Found 3 databases matching "Projects":
1. Client Projects (Marketing)
2. Personal Projects
3. Project Templates
Which one? (enter number or be more specific)
| Error | Action | |-------|--------| | No databases found | Check Notion integration has database access | | Database not in context | Run discovery: "refresh notion" | | Permission denied | Verify integration connected to database | | Rate limited | Wait and retry with exponential backoff | | Invalid property | Show valid options from cached schema |
Load notion-master/references/error-handling.md for detailed troubleshooting.
First-time setup:
User: "connect to notion"
AI: Running Notion discovery...
Found 5 databases: Client Projects, Content Calendar, CRM, Tasks, Meeting Notes
Saved to context. You can now query any database by name!
Query by name:
User: "query my Projects for active items"
AI: Querying "Client Projects"...
Found 12 active items:
1. Website Redesign (High priority, due Jan 15)
2. Q1 Marketing Plan (Medium priority, due Jan 30)
...
Create page:
User: "add a new task to my Tasks database"
AI: Creating in "Tasks" database.
Required properties:
- Task Name: [your input]
- Status: Not Started / In Progress / Complete
- Due Date: [optional, format: YYYY-MM-DD]
What's the task name?
Notion Connect v1.1 - Meta-skill for complete Notion workspace integration
Changelog:
development
--- name: taste-skill type: skill version: '1.0' author: Leonxlnx (packaged by Zhichao Li) category: general tags: - frontend - design - anti-slop - landing-page updated: '2026-06-11' visibility: public description: Anti-slop frontend skill for landing pages, portfolios, and redesigns. The agent reads the brief, infers the right design direction, and ships interfaces that do not look templated. Real design systems when applicable, audit-first on redesigns, strict pre-flight check. license: MIT.
development
Use when communicating quantitative information in any form — Slack updates, emails, reports, decks, dashboards, landing pages, product UI, public talks. Covers two integrated layers: (1) making numbers semantically meaningful (translation, anchoring, simplification, story-pairing) and (2) showing numbers cleanly (chart vs table vs prose, chart-by-message, pre-attentive emphasis, color discipline, decluttering). Distilled and integrated from *Show Me the Numbers* (Stephen Few) and *Make Numbers Count* (Chip Heath & Karla Starr). Not for raw data analysis or statistics — this is about communication of numbers, not their derivation.
development
Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and reusable design systems or tokens. Also use for bland designs that need to become bolder or more delightful, loud designs that should become quieter, live browser iteration on UI elements, or ambitious visual effects that should feel technically extraordinary. Not for backend-only or non-UI tasks.
tools
Stateful multi-session tutor adapted for Beam — teach a stakeholder to understand, trust, and operate a specific agent, or teach a Solution Engineer a client's business process for delivery. Grounds every lesson in Knowledge Hub sources (real agent graphs, real tasks, transcripts, Linear) before any web resource. Also works for any general topic. Trigger on "teach me", "beam teach", "教我", "onboard <person> on <agent>", "help <stakeholder> understand the agent", "learn this client's process".