用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/Arvo-AI/aurora --skill notion命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | notion |
| id | notion |
| description | Notion workspace integration for searching pages, managing databases, creating postmortems, and exporting RCA findings |
| category | knowledge |
| connection_check | {"method":"get_token_data","provider_key":"notion","required_any_fields":["access_token","token"]} |
| tools | ["notion_search","notion_fetch","notion_create_pages","notion_update_page","notion_append_to_page","notion_move_pages","notion_duplicate_page","notion_trash_page","notion_get_block_children","notion_update_block","notion_delete_block","notion_create_database","notion_update_database","notion_update_database_properties","notion_query_database","notion_create_data_source","notion_get_data_source","notion_update_data_source","notion_update_data_source_properties","notion_query_data_source","notion_list_data_source_templates","notion_create_view","notion_update_view","notion_delete_view","notion_list_database_views","notion_query_view","notion_create_comment","notion_get_comments","notion_list_users","notion_get_user","notion_get_self","notion_find_person","[Truncated]"] |
| index | Knowledge workspace -- search pages, manage databases, export postmortems & action items |
| rca_priority | 4 |
| allowed-tools | notion_search, notion_fetch, notion_create_pages, notion_update_page, notion_append_to_page, notion_move_pages, notion_duplicate_page, notion_trash_page, notion_get_block_children, notion_update_block, notion_delete_block, notion_create_database, notion_update_database, notion_update_database_properties, notion_query_database, notion_create_data_source, notion_get_data_source, notion_update_data_source, notion_update_data_source_properties, notion_query_data_source, notion_list_data_source_templates, notion_create_view, notion_update_view, notion_delete_view, notion_list_database_views, notion_query_view, notion_create_comment, notion_get_comments, notion_list_users, notion_get_user, notion_get_self, notion_find_person, notion_list_teamspaces, notion_upload_file, notion_list_file_uploads, notion_list_custom_emojis, notion_export_postmortem, notion_create_action_items |
| metadata | {"author":"aurora","version":"1.0"} |
Notion workspace integration for searching, reading, and managing pages, databases, blocks, comments, users, and files. Also supports exporting Aurora RCA postmortems and action items to Notion databases.
Notion is a REMOTE service. Use ONLY the Notion tools listed below -- never shell commands or local file access.
Before any operation, search to understand the workspace layout:
notion_search(query='...', types=['page']) -- find pages by title keyword
notion_search(query='...', types=['database']) -- find databases by title keyword
notion_search(query='...', max_results=25) -- search all object types (pages + databases)
types accepts ["page"], ["database"], or omit for both.max_results range: 1--100, default 10.To read a specific page or database:
notion_fetch(url_or_id='<page_url_or_uuid>', max_length=5000) -- returns page body as markdown
max_length range: 100--50000, default 5000. Output truncated with "... [truncated]" marker beyond this.notion_get_block_children with pagination instead.Create pages:
notion_create_pages(pages=[{title, parent_page_id|parent_database_id, markdown, icon, cover, properties}])
parent_page_id (under a page) or parent_database_id (as a database row).markdown: optional body content as markdown string.icon: emoji string (e.g. "📋") or image URL.cover: image URL.properties: raw Notion property payload (for database-parented pages with custom schema columns).Update a page:
notion_update_page(page_id, properties=None, icon=None, cover=None, archived=None, markdown=None, markdown_mode='append')
markdown_mode: "append" (default, adds to end) or "replace" (overwrites body).Append content:
notion_append_to_page(page_id, markdown) -- append markdown to the end of a page.
Move pages:
notion_move_pages(page_ids=[...], new_parent_id) -- move one or more pages under a new parent page.
Duplicate a page:
notion_duplicate_page(page_id, new_parent_id=None) -- deep-copy (title, icon, cover, markdown body).
new_parent_id omitted, duplicates under the same parent.Trash (archive) a page:
notion_trash_page(page_id) -- soft-delete; recoverable from Notion trash UI.
List child blocks:
notion_get_block_children(block_id, max_results=100, start_cursor=None)
max_results range: 1--100, default 100.has_more flag, next_cursor for pagination.start_cursor from a previous response to get the next page.Update a block:
notion_update_block(block_id, block={...}) -- pass partial block payload.
{"paragraph": {"rich_text": [{"type": "text", "text": {"content": "new text"}}]}}Delete a block:
notion_delete_block(block_id) -- permanent deletion from API (irreversible). Use with extreme care; prefer notion_trash_page for pages.
Create a database:
notion_create_database(parent_page_id, title, properties, icon=None, cover=None)
properties: Notion property schema object defining columns.title, rich_text, number, select, multi_select, status, date, people, files, checkbox, url, email, phone_number, formula, relation, rollup, created_time, created_by, last_edited_time, last_edited_by.Update database metadata:
notion_update_database(database_id, title=None, description=None, icon=None, cover=None, archived=None)
description: plain text (converted to rich_text internally).Update database schema:
notion_update_database_properties(database_id, properties={...}) -- add, rename, or remove columns.
null REMOVES that column and all its data. Always confirm with the user before removing columns.Query a database:
notion_query_database(database_id, filter=None, sorts=None, max_results=25, start_cursor=None)
max_results range: 1--100, default 25.has_more/next_cursor for pagination.Filters use property name + type + condition:
Text (title, rich_text, url, email, phone_number):
{"property": "Name", "title": {"contains": "incident"}}
{"property": "Description", "rich_text": {"is_not_empty": true}}
Number:
{"property": "Priority", "number": {"greater_than": 3}}
{"property": "Score", "number": {"equals": 100}}
Select:
{"property": "Status", "select": {"equals": "Done"}}
{"property": "Type", "select": {"does_not_equal": "Bug"}}
Multi-select:
{"property": "Tags", "multi_select": {"contains": "P0"}}
Checkbox:
{"property": "Completed", "checkbox": {"equals": true}}
Date:
{"property": "Due", "date": {"on_or_before": "2025-01-15"}}
{"property": "Created", "date": {"after": "2025-01-01"}}
{"property": "Due", "date": {"past_week": {}}}
{"property": "Due", "date": {"next_month": {}}}
Date conditions: equals, before, after, on_or_before, on_or_after, is_empty, is_not_empty, past_week, past_month, past_year, next_week, next_month, next_year.
Timestamp (created_time / last_edited_time):
{"timestamp": "created_time", "created_time": {"on_or_before": "2025-01-13"}}
Relation:
{"property": "Tasks", "relation": {"contains": "<page_uuid>"}}
Compound filters (AND / OR):
{"and": [
{"property": "Status", "select": {"equals": "Active"}},
{"property": "Priority", "number": {"greater_than": 2}}
]}
By property:
[{"property": "Priority", "direction": "descending"}]
By timestamp:
[{"timestamp": "last_edited_time", "direction": "descending"}]
Multiple sorts are applied in order (first sort is primary).
notion_list_users(max_results=100, start_cursor=None) -- list all workspace members (people + bots).
notion_get_user(target_user_id) -- fetch a single user by ID.
notion_get_self() -- get the Aurora bot user (the integration itself).
notion_find_person(name_or_email) -- find a person:
@): exact match.notion_list_teamspaces() -- best-effort listing of teamspaces (uses workspace search internally). Often empty on Free/Plus plans.
Post a comment:
notion_create_comment(text, page_id=None, block_id=None, discussion_id=None)
page_id (new top-level comment), block_id (comment on a block), discussion_id (reply to existing thread).text: plain text (converted to rich_text internally). Supports inline formatting only (bold, italic, code, links) -- no block-level markdown.Read comments:
notion_get_comments(page_id_or_block_id, include_resolved=False)
include_resolved=False (default): filters out resolved comments.Upload a file:
notion_upload_file(file_path_or_url, filename=None, content_type=None)
List uploads:
notion_list_file_uploads(max_results=25, start_cursor=None) -- list recent file uploads by this integration.
notion_list_custom_emojis() -- list custom emojis in the workspace. Returns supported: false on plans without this feature.
These endpoints require specific Notion plans. All return {"supported": false} gracefully on workspaces without access.
notion_create_data_source(payload) -- create a data source (full payload passed through).
notion_get_data_source(data_source_id) -- fetch by ID.
notion_update_data_source(data_source_id, updates) -- update attributes.
notion_update_data_source_properties(data_source_id, properties) -- update schema.
notion_query_data_source(data_source_id, filter=None, sorts=None, max_results=25, start_cursor=None) -- query with filter/sort/pagination.
notion_list_data_source_templates(data_source_id) -- list templates.
These endpoints require specific Notion plans. All return {"supported": false} gracefully on workspaces without access.
notion_create_view(payload) -- create a view on a database.
notion_update_view(view_id, updates) -- update filters, sorts, visible properties.
notion_delete_view(view_id) -- irreversible deletion of a view.
notion_list_database_views(database_id) -- list all views on a database.
notion_query_view(view_id, filter=None, sorts=None, max_results=25, start_cursor=None) -- query through a view.
Export a postmortem:
notion_export_postmortem(incident_id, database_id, action_items_database_id=None)
incident_id: UUID of the Aurora incident.database_id: target Notion database for the postmortem page.action_items_database_id: optional separate database for action items.Create action items:
notion_create_action_items(incident_id, action_items_database_id, assignee_hints=None)
assignee_hints: optional map {"item_text_prefix": "user@email.com"} to assign owners.IMPORTANT: You MUST search Notion early in every RCA investigation. The workspace contains past postmortems, runbooks, and action items that provide critical historical context. Do NOT skip this step.
IMPORTANT: During RCA, Notion is READ-ONLY. Do NOT create pages, export postmortems, create action items, or write to Notion. The engineer reviews your findings and exports via the UI after approving.
Step 1 (EARLY -- do this within your first 3 tool calls) -- Search Notion for historical context:
notion_search(query='<service_name>', types=['page']) to find past postmortems or runbooks related to the affected service.
Also try: notion_search(query='<alert_type_or_keyword>') for broader matches.
Step 2 -- Query postmortem databases for patterns:
notion_search(query='postmortem', types=['database']) to find postmortem databases, then:
notion_query_database(database_id='...', filter={"property": "Service", "select": {"equals": "<service_name>"}}, sorts=[{"timestamp": "created_time", "direction": "descending"}])
Step 3 -- Read relevant past postmortems:
notion_fetch(url_or_id='<page_id>', max_length=10000) to get full postmortem content. Past incidents on the same service often reveal recurring root causes.
url_or_id / page_id / database_id parameters accept UUIDs with or without dashes.notion_fetch truncates at max_length characters. For full content of long pages, paginate with notion_get_block_children.notion_update_database_properties with a null value REMOVES a column and its data. Always confirm.notion_delete_block is permanent and irreversible from the API.notion_delete_view is irreversible.has_more (bool) and next_cursor (string). Pass start_cursor=next_cursor to fetch the next page.{"supported": false} on workspaces without access -- do not retry, inform the user.code: "reauth_required", ask the user to reconnect Notion at the connection page, then retry.code: "not_connected", ask the user to connect Notion first.基于 SOC 职业分类