templates/skills/modules/notion/SKILL.md
Use MCP Notion for documentation, task tracking, and knowledge management.
npx skillsauth add hivellm/rulebook NotionInstall 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.
CRITICAL: Use MCP Notion for documentation, task tracking, and knowledge management.
// Query database
notion.databases.query({
database_id: 'database-id',
filter: {
property: 'Status',
select: { equals: 'In Progress' }
},
sorts: [{ property: 'Created', direction: 'descending' }]
})
// Get database
notion.databases.retrieve({ database_id: 'database-id' })
// Create page
notion.pages.create({
parent: { database_id: 'database-id' },
properties: {
'Name': { title: [{ text: { content: 'New Task' } }] },
'Status': { select: { name: 'To Do' } },
'Priority': { select: { name: 'High' } }
}
})
// Update page
notion.pages.update({
page_id: 'page-id',
properties: {
'Status': { select: { name: 'Done' } }
}
})
// Get page
notion.pages.retrieve({ page_id: 'page-id' })
// Get blocks
notion.blocks.children.list({ block_id: 'page-id' })
// Append blocks
notion.blocks.children.append({
block_id: 'page-id',
children: [
{
object: 'block',
type: 'heading_2',
heading_2: {
rich_text: [{ type: 'text', text: { content: 'Section Title' } }]
}
},
{
object: 'block',
type: 'paragraph',
paragraph: {
rich_text: [{ type: 'text', text: { content: 'Content here' } }]
}
}
]
})
// Search all content
notion.search({
query: 'search term',
filter: { property: 'object', value: 'page' },
sort: { direction: 'descending', timestamp: 'last_edited_time' }
})
// Create task
await notion.pages.create({
parent: { database_id: tasksDbId },
properties: {
'Task': { title: [{ text: { content: 'Implement feature X' } }] },
'Status': { select: { name: 'To Do' } },
'Assignee': { people: [{ id: userId }] },
'Due Date': { date: { start: '2024-12-31' } }
}
})
// Update task status
await notion.pages.update({
page_id: taskId,
properties: {
'Status': { select: { name: 'In Progress' } },
'Started': { date: { start: new Date().toISOString() } }
}
})
// Complete task
await notion.pages.update({
page_id: taskId,
properties: {
'Status': { select: { name: 'Done' } },
'Completed': { date: { start: new Date().toISOString() } }
}
})
// Create documentation page
const page = await notion.pages.create({
parent: { database_id: docsDbId },
properties: {
'Title': { title: [{ text: { content: 'API Documentation' } }] },
'Category': { select: { name: 'Technical' } }
}
})
// Add content blocks
await notion.blocks.children.append({
block_id: page.id,
children: [
{ type: 'heading_1', heading_1: { rich_text: [{ text: { content: 'API Reference' } }] } },
{ type: 'paragraph', paragraph: { rich_text: [{ text: { content: 'Endpoints overview...' } }] } },
{ type: 'code', code: {
language: 'typescript',
rich_text: [{ text: { content: 'const api = new API()' } }]
}}
]
})
// Create meeting notes
await notion.pages.create({
parent: { database_id: meetingsDbId },
properties: {
'Title': { title: [{ text: { content: 'Sprint Planning - Jan 2024' } }] },
'Date': { date: { start: '2024-01-15' } },
'Attendees': { people: attendeeIds }
}
})
// Add agenda and notes
await notion.blocks.children.append({
block_id: pageId,
children: [
{ type: 'heading_2', heading_2: { rich_text: [{ text: { content: 'Agenda' } }] } },
{ type: 'bulleted_list_item', bulleted_list_item: { rich_text: [{ text: { content: 'Review last sprint' } }] } },
{ type: 'bulleted_list_item', bulleted_list_item: { rich_text: [{ text: { content: 'Plan next sprint' } }] } },
{ type: 'heading_2', heading_2: { rich_text: [{ text: { content: 'Action Items' } }] } }
]
})
✅ DO:
❌ DON'T:
{
"mcpServers": {
"notion": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-notion"],
"env": {
"NOTION_API_KEY": "secret_xxx",
"NOTION_VERSION": "2022-06-28"
}
}
}
}
Setup:
NOTION_API_KEY// Sync OpenSpec tasks to Notion
const tasks = parseOpenSpecTasks('openspec/changes/my-feature/tasks.md')
for (const task of tasks) {
await notion.pages.create({
parent: { database_id: tasksDbId },
properties: {
'Task': { title: [{ text: { content: task.title } }] },
'Status': { select: { name: task.completed ? 'Done' : 'To Do' } },
'Source': { select: { name: 'OpenSpec' } }
}
})
}
// Query completed tasks
const completed = await notion.databases.query({
database_id: tasksDbId,
filter: {
and: [
{ property: 'Status', select: { equals: 'Done' } },
{ property: 'Completed', date: { after: '2024-01-01' } }
]
}
})
// Generate CHANGELOG.md entries
const entries = completed.results.map(task =>
`- ${task.properties.Task.title[0].plain_text}`
)
<!-- NOTION:END -->research
Create structured analyses with numbered findings, execution plans, and task materialization
research
Author a rulebook task spec interactively — research, draft, ask the user clarifying questions, confirm, then create the tasks in rulebook ready for /rulebook-driver. Use when the user wants to plan/spec a feature before implementing.
development
Behavioral guidelines to reduce common LLM coding mistakes — overcomplication, sloppy refactors, hidden assumptions, weak goals. Use when writing, reviewing, or refactoring code. Auto-applies; invoke explicitly via /karpathy-guidelines or 'follow karpathy discipline'.
data-ai
Autonomous AI agent loop for iterative task implementation (@hivehub/rulebook ralph)