Add Mpk Task
mirage-project/mirage
Step-by-step guide for adding a new task implementation to Mirage Persistent Kernel (MPK).
Read and write Notion data using Python + notion-client SDK.
$ npx skills add OpenMinis/MinisSkills --skill notion-hub -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install OpenMinis/MinisSkills notion-hub --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/OpenMinis/MinisSkills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/notion-hub .claude/skills/notion-hub && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "notion-hub" agent skill from https://github.com/OpenMinis/MinisSkills/tree/main/notion-hub into .claude/skills/notion-hub/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "notion-hub", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/OpenMinis/MinisSkills/tree/main/notion-hubType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add OpenMinis/MinisSkills --skill notion-hub -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install OpenMinis/MinisSkills notion-hub --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenMinis/MinisSkills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/notion-hub .agents/skills/notion-hub && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "notion-hub" agent skill from https://github.com/OpenMinis/MinisSkills/tree/main/notion-hub into .agents/skills/notion-hub/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "notion-hub", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add OpenMinis/MinisSkills --skill notion-hub -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install OpenMinis/MinisSkills notion-hub --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenMinis/MinisSkills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/notion-hub .cursor/skills/notion-hub && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "notion-hub" agent skill from https://github.com/OpenMinis/MinisSkills/tree/main/notion-hub into .cursor/skills/notion-hub/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "notion-hub", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/OpenMinis/MinisSkills.git --path notion-hub--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add OpenMinis/MinisSkills --skill notion-hub -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install OpenMinis/MinisSkills notion-hub --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenMinis/MinisSkills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/notion-hub .gemini/skills/notion-hub && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "notion-hub" agent skill from https://github.com/OpenMinis/MinisSkills/tree/main/notion-hub into .gemini/skills/notion-hub/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "notion-hub", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install OpenMinis/MinisSkills notion-hubInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add OpenMinis/MinisSkills --skill notion-hub -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/OpenMinis/MinisSkills.git skills-src && mkdir -p .github/skills && cp -r skills-src/notion-hub .github/skills/notion-hub && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "notion-hub" agent skill from https://github.com/OpenMinis/MinisSkills/tree/main/notion-hub into .github/skills/notion-hub/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "notion-hub", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add OpenMinis/MinisSkills --skill notion-hub -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install OpenMinis/MinisSkills notion-hub --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenMinis/MinisSkills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/notion-hub .opencode/skills/notion-hub && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "notion-hub" agent skill from https://github.com/OpenMinis/MinisSkills/tree/main/notion-hub into .opencode/skills/notion-hub/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "notion-hub", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
notion-hubRead and write Notion data using Python + notion-client SDK.
Notion Hub is an agent skill from OpenMinis/MinisSkills. Read and write Notion data using Python + notion-client SDK. Authenticated via NOTIONAPIKEY env var. Supports search, page CRUD (Markdown↔Blocks bidirectional conversion), database schema/query/create/add-row, block-level operations (append/update/delete), and comments. Trigger this skill whenever the user mentions "Notion", "notion", "notion-hub", "Notion page", "Notion database", "read Notion", "write Notion", "Notion API", or any scenario requiring programmatic read/write access to Notion data.
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/notion_hub.py`).
It sits in Databases, covering Database schema design. It works with Notion and Python. The repository describes itself as: Skills collection for Minis. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit ae8c5db. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
uvFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
notion.sofile.pngFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
NOTION_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Notion Hub loads about 2.3k tokens when it runs. Until then it costs about 129 tokens; SKILL.md has 427 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from OpenMinis/MinisSkills at commit ae8c5db, republished under its MIT licence (© OpenMinis). 427 words, ~2,262 tokens.
.claude/skills/notion-hub/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Read/write Notion via notion-client Python SDK. All operations through a single CLI script.
NOTION_API_KEY — Notion Internal Integration Tokennotion-client>=3.0.0, httpx>=0.27). Dependencies are auto-installed on first uv run, no manual pip install needed.Path: /var/minis/skills/notion-hub/scripts/notion_hub.py
Run: uv run --script --cache-dir /root/.cache/uv /var/minis/skills/notion-hub/scripts/notion_hub.py <command> [options]
Alias for brevity:
NH="uv run --script --cache-dir /root/.cache/uv /var/minis/skills/notion-hub/scripts/notion_hub.py"# Search everything
$NH search "meeting notes"
$NH search "project" --filter page
$NH search --filter database
$NH search "Q1" --sort descending --limit 5
# List users / get bot info
$NH users
$NH users --me# Get page properties (compact)
$NH page-get <page_id_or_url>
$NH page-get <page_id> --raw # full API response
# Read page content as Markdown (best for AI consumption)
$NH page-read <page_id>
$NH page-read <page_id> --depth 5 # deeper recursion
$NH page-read <page_id> -o /var/minis/workspace/page.md # save to file
# Accepts Notion URLs directly:
$NH page-read "https://notion.so/My-Page-abc123def456..."# Create page under another page
$NH page-create --page-id <parent_id> --title "New Page" --icon "📝"
# Create page in a database (= add row with content)
$NH page-create --database-id <db_id> --properties '{"Name":{"title":[{"text":{"content":"Task 1"}}]}}'
# Write Markdown content to a page
$NH page-write <page_id> --text "# Hello\n\nThis is a paragraph.\n\n- Item 1\n- Item 2"
# Write from file
$NH page-write <page_id> --file /var/minis/workspace/content.md
# Replace all existing content
$NH page-write <page_id> --text "Fresh content" --replace
# Update page properties
$NH page-update <page_id> --properties '{"Status":{"status":{"name":"Done"}}}'
$NH page-update <page_id> --icon "✅"
$NH page-update <page_id> --archived true # archive page# Get database schema (shows all properties, types, select options)
$NH db-get <database_id>
$NH db-get <database_id> --raw
# Query database rows
$NH db-query <database_id>
$NH db-query <database_id> --limit 20
# Query with filter
$NH db-query <database_id> --filter '{"property":"Status","status":{"equals":"In Progress"}}'
# Query with sort
$NH db-query <database_id> --sorts '[{"property":"Created","direction":"descending"}]'
# Compound filter
$NH db-query <db_id> --filter '{"and":[{"property":"Status","status":{"equals":"Done"}},{"property":"Priority","select":{"equals":"High"}}]}'
# Quick add a row (auto-detects property types from schema)
$NH db-add-row -d <database_id> --props '{"Name":"My Task","Status":"In Progress","Priority":"High","Due Date":"2024-03-15"}'
$NH db-add-row -d <database_id> --title "Simple row with just a title"
# Create a new database
$NH db-create --page-id <parent_page_id> --title "Task Tracker" --properties '{
"Name": {"title": {}},
"Status": {"status": {}},
"Priority": {"select": {"options": [{"name":"High"},{"name":"Medium"},{"name":"Low"}]}},
"Due Date": {"date": {}},
"Tags": {"multi_select": {"options": [{"name":"Bug"},{"name":"Feature"}]}},
"Assignee": {"people": {}},
"Done": {"checkbox": {}}
}'
# Update database schema
$NH db-update <db_id> --title "New Title"
$NH db-update <db_id> --properties '{"New Column": {"rich_text": {}}}'# Get top-level blocks of a page
$NH blocks-get <page_id>
$NH blocks-get <page_id> --raw
# Get ALL blocks recursively (full page tree)
$NH blocks-get-all <page_id>
$NH blocks-get-all <page_id> --depth 5
# Append content
$NH block-append <page_id> --text "A new paragraph"
$NH block-append <page_id> --text "Item A\\nItem B\\nItem C" --type bulleted_list_item
$NH block-append <page_id> --blocks '[{"type":"heading_2","heading_2":{"rich_text":[{"text":{"content":"Section"}}]}},{"type":"paragraph","paragraph":{"rich_text":[{"text":{"content":"Content here"}}]}}]'
# Update a specific block
$NH block-update <block_id> --content '{"paragraph":{"rich_text":[{"text":{"content":"Updated text"}}]}}'
# Delete a block
$NH block-delete <block_id># List comments on a page
$NH comments-list <page_id>
# Add a comment to a page
$NH comment-create "This looks good!" --page-id <page_id>
# Reply in a discussion thread
$NH comment-create "Agreed" --discussion-id <discussion_id>// Text property
{"property": "Name", "rich_text": {"contains": "keyword"}}
// Select
{"property": "Status", "select": {"equals": "Done"}}
// Multi-select
{"property": "Tags", "multi_select": {"contains": "Bug"}}
// Status
{"property": "Status", "status": {"equals": "In Progress"}}
// Checkbox
{"property": "Done", "checkbox": {"equals": true}}
// Date
{"property": "Due", "date": {"before": "2024-04-01"}}
{"property": "Due", "date": {"on_or_after": "2024-01-01"}}
// Number
{"property": "Score", "number": {"greater_than": 80}}
// Compound (AND)
{"and": [{"property": "Status", "status": {"equals": "Done"}}, {"property": "Priority", "select": {"equals": "High"}}]}
// Compound (OR)
{"or": [{"property": "Status", "status": {"equals": "Done"}}, {"property": "Status", "status": {"equals": "Archived"}}]}[{"property": "Created", "direction": "descending"}]
[{"property": "Name", "direction": "ascending"}]
[{"timestamp": "last_edited_time", "direction": "descending"}]The --props JSON maps property names to simple values. The script auto-detects types from the database schema:
| Type | Value format | Example |
|---|---|---|
| title | string | "My Title" |
| rich_text | string | "Some text" |
| number | number | 42 |
| select | string (option name) | "High" |
| multi_select | comma-separated string or array | "Bug,Feature" or ["Bug","Feature"] |
| status | string (status name) | "In Progress" |
| date | ISO date string or {start, end} | "2024-03-15" |
| checkbox | boolean | true |
| url | string | "https://..." |
| string | "a@b.com" | |
| relation | comma-separated IDs or array | "id1,id2" |
| people | comma-separated user IDs | "user_id" |
| files | URL string or array of URLs | "https://file.png" |
$NH search or $NH search --filter database to discover accessible pages/databases and get their IDs.$NH db-get <id> to see the schema (property names, types, select options).page-read for Markdown output — much more readable than raw blocks.page-write --text with Markdown — the script auto-converts to Notion blocks.--limit to cap results.All errors return {"error": "..."} JSON. Common issues:
$NOTION_API_KEY.users command auto-masks email addresses (e.g. w***3@gmail.com). Do not attempt to retrieve or display full emails.blocks-get --raw and handle the URL in a script without printing it.blocks-get-all and page-read cap at depth 10 to prevent API call storms.© OpenMinis, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (scripts) in notion-hub of OpenMinis/MinisSkills.
Open the folder on GitHubat commit ae8c5db
Notion Hub next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Notion Hub this skillOpenMinis/MinisSkills | 446 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Add Mpk Taskmirage-project/mirage | 2.5k | — | ~4.5k | Automated safety check: Pass | Apache-2.0 | |
| Saleor Django Migration Rulessaleor/saleor | 23k | — | ~1.6k | Automated safety check: Pass | BSD-3-Clause | |
| SQL Schema Policy Validatorrominirani/antigravity-skills | 592 | — | ~264 | Automated safety check: Pass | None | |
| Tushare Plugin BuilderYourdaylight/stock_datasource | 189 | — | ~2.5k | Automated safety check: Pass | MIT | |
| Modelersidequery/sidemantic | 129 | — | ~4.2k | Automated safety check: Pass | Apache-2.0 |
mirage-project/mirage
Step-by-step guide for adding a new task implementation to Mirage Persistent Kernel (MPK).
saleor/saleor
Rules for writing Django migrations in Saleor that avoid long table locks and stay compatible with zero-downtime rolling deploys.
rominirani/antigravity-skills
Validates SQL schema files for compliance with internal safety and naming policies.
Yourdaylight/stock_datasource
Turns a Tushare API doc URL into a full data plugin for the stock_datasource repo: extractor, ClickHouse schema, query service, config and curl examples.
sidequery/sidemantic
Build, validate, and manage semantic models using Sidemantic.
AUTO-MAS-Project/AUTO-MAS
Define backend data modeling standards for Python services. An agent skill from AUTO-MAS-Project/AUTO-MAS.
OpenMinis/MinisSkills
Automate Android apps that have no public API or web version by driving the UI layer through the Accessibility Service.
OpenMinis/MinisSkills
Install and run OpenAI Codex CLI inside the Minis/iSH Alpine sandbox on iOS, where rustls TLS and async sockets are broken.
OpenMinis/MinisSkills
Score a claim against the evidence behind it. An agent skill from OpenMinis/MinisSkills.
OpenMinis/MinisSkills
HyperFrames CLI and Minis rendering. An agent skill from OpenMinis/MinisSkills.
OpenMinis/MinisSkills
Predict when a person's brain works best from their sleep, using the WhenPeak performance-intelligence API, and turn it into concrete scheduling advice.
OpenMinis/MinisSkills
Generate a mobile-first, immersive, Amap(Gaode)-style custom landmark marker HTML map for travel itinerary planning, place showcasing, location sharing, etc.
Categories
Read and write Notion data using Python + notion-client SDK. Notion Hub is an agent skill from OpenMinis/MinisSkills. Read and write Notion data using Python + notion-client SDK.
Notion Hub fits situations like: this skill whenever the user mentions Notion; notion database; any scenario requiring programmatic read/write access to Notion data.
Run `npx skills add OpenMinis/MinisSkills --skill notion-hub -a claude-code`. Or copy the skill folder (notion-hub in OpenMinis/MinisSkills) into .claude/skills/notion-hub in your project. Claude Code loads it when a task matches its description.
Run `npx skills add OpenMinis/MinisSkills --skill notion-hub -a codex`. Or copy the skill folder (notion-hub in OpenMinis/MinisSkills) into .agents/skills/notion-hub in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add OpenMinis/MinisSkills --skill notion-hub -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/notion-hub, .gemini/skills/notion-hub, .github/skills/notion-hub and .opencode/skills/notion-hub in your project.
Going by SKILL.md and its folder, Notion Hub needs Python for the scripts in its folder, the command-line tools its instructions call (uv) and credentials named NOTION_API_KEY. Our summary lists: Python 3; A credential in NOTION_API_KEY.
SKILL.md names 2 domains. In commands or code: notion.so and file.png; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Notion Hub is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Notion Hub: Add Mpk Task (mirage-project/mirage, 2.5k stars), Saleor Django Migration Rules (saleor/saleor, 23k stars), SQL Schema Policy Validator (rominirani/antigravity-skills, 592 stars) and Tushare Plugin Builder (Yourdaylight/stock_datasource, 189 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
OpenMinis (a GitHub organization) maintains it in OpenMinis/MinisSkills, which has 446 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 7, 2026.
Source: OpenMinis/MinisSkills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.