agentleFS
coroboroscoroboros/agent-skills/skills/notion/SKILL.md

notion

Skill4 starsChanged 15 days agoMITView on GitHub

Read, search, update or organize Notion pages and databases using available Notion MCP tools. Use ntn for requested scripts or capabilities missing from the connector; verify target schema and authorization before writes.

98 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use taskflow-inbox-triage, voice-call and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • AtomicBot-aiSkill

    taskflow-inbox-triage

    Also in 6 projects that use this

  • seedprodSkill

    voice-call

    Start voice calls via the OpenClaw voice-call plugin.

    Also in 17 projects that use this

  • jiulingyunSkill

    BlueBubbles

    为Clawdbot构建或更新BlueBubbles外部通道插件(扩展包,REST发送/探测,webhook入站)。

    Also in 17 projects that use this

  • seedprodSkill

    session-logs

    Search and analyze your own session logs (older/parent conversations) using jq.

    Also in 17 projects that use this

  • hkyutongSkill

    openclaw-release-maintainer

    Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.

    Also in 4 projects that use this

  • AtomicBot-aiSkill

    taskflow

    Also in 6 projects that use this

  • +5 more from seedprod

The file

We split this skill into the rules it gives an agent

4 rules. 0 are common, 2 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 93 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Read the MCP resource notion://docs/enhanced-markdown-spec — the canonical reference for Notion-flavored Markdown used by …

    line 20
  2. Distinctive:

    If the available MCP supports the requested operation and no CLI script is requested, stay on the MCP.

    line 43
  3. Distinctive:

    Discover the current tool set: Read available descriptions and the changelog when something looks missing.

    line 71
  4. Very specific:

    Never echo a Notion API token (prefix ntn_… for ntn OAuth or secret_… for integration tokens) in tool output, logs, commits, or PR bodies.

    line 80

“Common” is measured: kept by at least 6 in 10 of the 93 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Notion

Prefer the official Notion MCP connector when it exposes the requested operation. Notion supports Codex and other clients as well as Claude Code; route by actual tools, not client identity. Use the optional ntn CLI for supported capabilities missing from the connector or a requested script. Run the Pre-flight, preserve the user's write scope and verify resulting content.

Pre-flight (do once per session before any content write)

MCP path only — on the ntn CLI branch, skip this and validate shapes against the REST API responses instead.

  1. Read the MCP resource notion://docs/enhanced-markdown-spec — the canonical reference for Notion-flavored Markdown used by notion-create-pages content and notion-update-page update_content / replace_content. Don't guess Markdown syntax — Notion's flavor diverges from CommonMark in non-obvious ways.
  2. For database row CRUD — notion-fetch the target data source first. The fetch returns the current SQLite-style schema. Property names are case-sensitive; expanded keys apply (date:<col>:start | :end | :is_datetime, place:<col>:name | address | latitude | longitude | google_place_id, checkbox __YES__ / __NO__, properties literally named id or url → prefix userDefined:).

Routing — MCP vs CLI

Default — MCP

Inspect the active tool descriptions. Depending on the connector, supported operations can include:

  • SQL DDL for schemas — notion-create-database / notion-update-data-source
  • View DSL — notion-create-view / notion-update-view
  • Block-level comments — selection_with_ellipsis against rendered Markdown
  • Batch up to 100 rows in one notion-create-pages call
  • Semantic search across connected sources (Slack, GDrive, GitHub, Jira, MS Teams, Sharepoint, OneDrive, Linear)

Use the ntn CLI when its capabilities fit

  • File upload to Notion — ntn files create when the active MCP lacks upload support.
  • Notion Workers / serverless — ntn workers … when needed tools are absent from the MCP.
  • Headless / CI / non-interactive — use the supported CLI authentication and output flags for the requested script. A CI job need not have a Claude session; absence of Claude does not imply absence of MCP elsewhere.
  • Raw API discovery — ntn api ls enumerates every endpoint. Useful when an action isn't covered by any high-level MCP tool.
  • Shell piping — ntn pages get <id> --json | jq … for ad-hoc data wrangling.

If the available MCP supports the requested operation and no CLI script is requested, stay on the MCP. If its tools are unavailable, use an installed, authenticated CLI or report the concrete missing capability. Authentication or connection setup needs the user's applicable authorization.

When the CLI path is required but ntn is missing

Print the install + auth URLs from References and stop. Never auto-install on the user's behalf — auth setup needs an interactive token decision.

References

Defer to these — do not embed their content in the skill body. Each is the single source of truth and stays current without any skill update.

WhatWhere
MCP overview + setup (start here for newcomers)https://developers.notion.com/guides/mcp/overview
MCP capability evolutionNotion changelog
MCP tool DSL syntax (per tool)The tool's own description in the active session — read it before first use
Notion-flavored Markdown specMCP resource notion://docs/enhanced-markdown-spec
ntn CLI installationhttps://developers.notion.com/cli/get-started/installation
ntn CLI authentication (OAuth + NOTION_API_TOKEN)https://developers.notion.com/cli/get-started/authentication
ntn CLI command referencehttps://developers.notion.com/cli/reference/commands · ntn <command> --help
Notion REST API referencehttps://developers.notion.com/reference

Gotchas

These operational checks supplement the live tool schemas. Verify version-sensitive limits and returned shapes before relying on them.

  1. Targeted edits match fetched Markdown exactly. Read the active update tool's schema; update_content currently uses content_updates[].old_str and new_str. Copy the existing snippet from a fresh notion-fetch, preserve whitespace, and narrow ambiguous matches. Use the returned error to correct a mismatch; never assume a rejected or queued edit completed.
  2. New databases may land at the bottom of the parent page's children. Verify placement with a fetch. For an authorized move, preserve the exact fetched child-page/database tags and follow the active edit schema. If child-deletion validation refuses an edit, preserve the error and read back the page before retrying; never enable allow_deleting_content to bypass a placement problem. An intended child deletion follows the tool's named-child confirmation requirement.
  3. Batch limits follow the active schema. Some notion-create-pages schemas allow 100 rows; verify the actual limit and use batching only within the user's write and readback constraints.
  4. Discover the current tool set. Read available descriptions and the changelog when something looks missing; release cadence is not a capability guarantee.
  5. Writes fail with archived ancestor if any parent (page / database / data source) is in the trash. notion-fetch against the data source still returns the schema, masking this during pre-flight — the failure only surfaces at write time. Before trusting pre-flight to greenlight writes on an unfamiliar target, notion-fetch <page_id> and check for the deleted attribute on the returned <page> tag.

Maintenance

This skill encodes routing rules, the pre-flight, and the operational checks above. Per-tool syntax → tool descriptions; CLI commands → ntn --help; Markdown rules → the notion://docs/enhanced-markdown-spec resource; capability evolution → Notion changelog; auth → the CLI docs URL. A new MCP tool or ntn subcommand requires no skill update — discovery happens via the tool or CLI itself.

Privacy

Never echo a Notion API token (prefix ntn_… for ntn OAuth or secret_… for integration tokens) in tool output, logs, commits, or PR bodies. The token belongs in .envrc (gitignored, chmod 600) or ~/.config/ntn/, never in tracked files.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.