$npx -y skills add kv0906/pm-kit --skill notionBridge PM-Kit vault with Notion workspace — search, sync, publish, and link vault notes to Notion pages. Use when the user says "/notion", "notion sync", "publish to notion", "notion search", "sync from notion", "push to notion", "notion setup", mentions Notion in any project man
| 1 | # /notion — Notion Integration |
| 2 | |
| 3 | Bridge your PM-Kit vault with Notion. Search, publish, sync, and link vault notes to Notion pages so you can share with stakeholders who live in Notion. |
| 4 | |
| 5 | ## Context |
| 6 | |
| 7 | Today's date: `!date +%Y-%m-%d` |
| 8 | Config: @_core/config.yaml |
| 9 | Active projects: `!ls 01-index/*.md 2>/dev/null | sed 's|01-index/||;s|\.md||'` |
| 10 | |
| 11 | ## Input |
| 12 | |
| 13 | User input: $ARGUMENTS |
| 14 | |
| 15 | ## Sub-commands |
| 16 | |
| 17 | Parse the first word of `$ARGUMENTS` to determine the sub-command: |
| 18 | |
| 19 | | Input starts with | Sub-command | Purpose | |
| 20 | |---|---|---| |
| 21 | | `setup` | Setup | Guide MCP connection + auth | |
| 22 | | `search` or a question | Search | Find Notion pages/databases | |
| 23 | | `publish` | Publish | Push vault note(s) to Notion | |
| 24 | | `pull` | Pull | Import Notion page into vault | |
| 25 | | `sync` | Sync | Two-way sync between vault note and Notion page | |
| 26 | | `link` | Link | Connect vault note <-> Notion page | |
| 27 | | `db` | Database | Query or create Notion databases | |
| 28 | | *(empty)* | Status | Show connection status + workspace overview | |
| 29 | |
| 30 | ## Step 0: Connection Check |
| 31 | |
| 32 | Before any sub-command (except `setup`), verify Notion MCP is available: |
| 33 | |
| 34 | 1. Try calling `mcp__claude_ai_Notion__search` with a simple query |
| 35 | 2. If the tool call fails or Notion tools are not available: |
| 36 | |
| 37 | ``` |
| 38 | Notion MCP is not connected yet. |
| 39 | |
| 40 | Run `/notion setup` to connect — it takes about 30 seconds. |
| 41 | ``` |
| 42 | |
| 43 | Then stop. Don't attempt other operations without a working connection. |
| 44 | |
| 45 | --- |
| 46 | |
| 47 | ## setup — Connect Notion MCP |
| 48 | |
| 49 | Guide the user through connecting Notion's remote MCP server to Claude Code. |
| 50 | |
| 51 | ### Steps to present to user: |
| 52 | |
| 53 | ``` |
| 54 | ## Notion MCP Setup |
| 55 | |
| 56 | Notion's MCP server is hosted by Notion — no local install needed. |
| 57 | |
| 58 | ### Step 1: Add the server |
| 59 | Run this in your terminal: |
| 60 | |
| 61 | claude mcp add --transport http notion https://mcp.notion.com/mcp |
| 62 | |
| 63 | ### Step 2: Authenticate |
| 64 | In a Claude Code session, run: |
| 65 | |
| 66 | /mcp |
| 67 | |
| 68 | Then follow the OAuth flow — it'll open your browser to authorize Notion access. |
| 69 | |
| 70 | ### Step 3: Verify |
| 71 | Once authenticated, try: |
| 72 | |
| 73 | /notion |
| 74 | |
| 75 | You should see your Notion workspace overview. |
| 76 | ``` |
| 77 | |
| 78 | **Optional enrichment**: Mention the [Notion plugin for Claude Code](https://github.com/makenotion/claude-code-notion-plugin) which bundles pre-built skills for common Notion workflows. |
| 79 | |
| 80 | After presenting, ask if the user wants help running these commands now. |
| 81 | |
| 82 | If the user confirms, run the `claude mcp add` command via Bash, then inform them they need to run `/mcp` themselves (it requires interactive browser auth that can't be automated). |
| 83 | |
| 84 | ### Scope options |
| 85 | |
| 86 | Explain scope if the user asks: |
| 87 | - `--scope local` (default): Available only in the current project |
| 88 | - `--scope project`: Shared with team via `.mcp.json` file (already configured in this vault) |
| 89 | - `--scope user`: Available across all projects |
| 90 | |
| 91 | --- |
| 92 | |
| 93 | ## search — Search Notion |
| 94 | |
| 95 | Find pages, databases, or content across the user's Notion workspace. |
| 96 | |
| 97 | ### Processing |
| 98 | |
| 99 | 1. **Parse query** from `$ARGUMENTS` (everything after "search") |
| 100 | 2. **Search via Notion MCP** — Use `mcp__claude_ai_Notion__search` with the query |
| 101 | 3. **Present results** in a scannable format: |
| 102 | |
| 103 | ``` |
| 104 | ## Notion Search: "{query}" |
| 105 | |
| 106 | Found {count} results: |
| 107 | |
| 108 | | Title | Type | Last Edited | URL | |
| 109 | |-------|------|-------------|-----| |
| 110 | | {title} | {page/database} | {date} | {url} | |
| 111 | ``` |
| 112 | |
| 113 | 4. **Offer actions**: "Want to `/notion pull` any of these into the vault, or `/notion link` one to an existing note?" |
| 114 | |
| 115 | ### Flags |
| 116 | |
| 117 | - `--type page|database` — Filter by content type |
| 118 | - `--team {name}` — Filter by teamspace |
| 119 | - `--since YYYY-MM-DD` — Filter by creation date |
| 120 | |
| 121 | --- |
| 122 | |
| 123 | ## publish — Push Vault Note to Notion |
| 124 | |
| 125 | Convert a vault note to a Notion page so stakeholders can read it in Notion. |
| 126 | |
| 127 | ### Input |
| 128 | |
| 129 | Expects: `/notion publish {vault-note-path-or-wikilink}` with optional `--parent {notion-page-url}` |
| 130 | |
| 131 | ### Processing |
| 132 | |
| 133 | 1. **Resolve vault note** — Find the note by path, wikilink, or fuzzy search |
| 134 | 2. **Read the note** and extract: |
| 135 | - Title from H1 or frontmatte |