Notion LifeOS Skill

SkillDocs & knowledge

User's personal Notion LifeOS (PARA: tasks, notes, projects, Make Time journals) with pre-configured DB IDs + API access, required for any LifeOS interaction. Use for adding tasks, taking notes, journaling, querying todos, searching notes, creating projects, reflection. Triggers: 'add task', 'take a note', 'what do I need to do', 'search my notes', '加个任务', '查笔记', '待办', '记录想法', '反思', '目标偏移'. Not for Notion API docs or workspace admin.

Available today. Use it from your connected AI after setup.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the Notion LifeOS Skill skill

What this skill tells your AI

The instructions your AI receives, as published by jiahao-shao1/sjh-skills in skills/notion-lifeos/SKILL.md and read by ahel’s review.

A Notion life management system based on the PARA method and Make Time framework.

When NOT to Use This Skill

  • Notion product questions — pricing, features, API documentation, workspace admin
  • Generic productivity advice — "how should I organize my life" without intent to store/retrieve data
  • Other note-taking apps — unless user wants to migrate data INTO Notion LifeOS
  • Database schema modification — creating new databases, adding/removing properties

Core Principles

  • Capture first, organize later — Never let processing block input
  • Proactive information surfacing — Use Relations to automatically surface information where it's needed

See JEFF_SU_SUMMARY.md for detailed design philosophy.

Reference Files

Read these as needed — do NOT load them all upfront:

FileWhen to read
references/schema.mdBefore creating/updating any entry (get field names & types)
references/mcp-guide.mdWhen using MCP tools (Claude Code / Claude.ai)
references/api-guide.mdWhen using REST API (OpenClaw / Codex / other agents)
references/query-guide.mdWhen querying/filtering data (tasks by date, done status, etc.)
references/advanced.mdFor composite intents or error handling

Operation Guide

  • With Notion MCP tools → See references/mcp-guide.md
  • With Notion API access → See references/api-guide.md
  • For structured queries (filter by date, checkbox, select) → Always use scripts or REST API. MCP notion-search is semantic only and CANNOT filter by property values.

Intent Recognition & Database Mapping

User IntentTarget DBMethod
"Take a note about XXX"NotesMCP / API
"Add a task: XXX"Taskscripts/create-task.sh / MCP / API
"The best thing today was..."Make TimeMCP / API (check dedup first)
"Create project XXX"ProjectsMCP / API
"Today's tasks"Taskscripts/query-tasks.sh --date today
"Any unfinished tasks?"Taskscripts/query-tasks.sh --undone
"Today's unfinished tasks"Taskscripts/query-tasks.sh --date today --undone
"Search notes about XX"NotesMCP notion-search
"Add a resource/reference"ResourcesMCP / API
"Query my recent thoughts"Notesscripts/query-notes.sh --type Thoughts
"List active projects"Projectsscripts/query-projects.sh
"Tasks completed this month"Taskscripts/query-tasks.sh --done --since YYYY-MM-DD --by-edited
"/challenge X"Notesscripts/query-notes.sh + CC analysis (see Reflection Commands)
"/emerge"Notesscripts/query-notes.sh + CC analysis (see Reflection Commands)
"/drift"Projects + Task + Gitscripts/collect-drift-data.sh + CC analysis (see Reflection Commands)

For Note Type selection and Make Time journal extraction logic, see references/query-guide.md. For composite intents (multiple actions in one message), see references/advanced.md.

Business Rules

  1. Database IDs: Read ~/.config/notion-lifeos/CONFIG.private.md for IDs (fallback: CONFIG.private.md in skill dir). If missing, search for "LifeOS" root page (NOT "LifeOS Template"). Last resort: guide user to references/setup.md.
  2. Schema-first: Fetch database schema before first write in a session — confirm property names and allowed select values.
  3. Make Time dedup: Always check if today's entry exists before creating (scripts/check_today_journal.sh). Update if exists.
  4. Date format: ISO-8601 only (e.g., 2026-03-08).
  5. Relations: Require target page ID — search for it first.
  6. Post-op confirmation: Always confirm results to the user.

Reflection Commands

These commands use Notion data + Git history as input, with CC performing the analysis. Output is terminal only — never write to Notion.

/challenge <topic>

Stress-test a current belief against past writing.

  1. Run scripts/query-notes.sh --type Thoughts --days 90 --limit 50
  2. Scan the returned titles for relevance to the topic
  3. Use MCP notion-fetch to read the top 15-20 most relevant notes (do NOT fetch all 50 — context budget)
  4. Analyze: identify contradictions, weak assumptions, and evidence gaps
  5. Output in Chinese: "当前信念 → 矛盾证据 → 更强的替代假设"

/emerge

Surface recurring themes and hidden patterns in recent thinking.

  1. Run scripts/query-notes.sh --type Thoughts --days 30 --limit 50
  2. Scan titles first — select top 15 most interesting/diverse
  3. Use MCP notion-fetch to read those 15 notes
  4. Identify: recurring themes, emotional patterns, unasked questions, connections the user hasn't made explicit
  5. Output in Chinese, grouped by theme, quoting original notes

/drift [N days]

Detect gaps between stated goals and actual activity.

  1. Run scripts/collect-drift-data.sh --days N (default 30)
  2. Perform semantic matching (project names like "Thinking with Image" ≠ repo names like "agentic_umm" — match by meaning, not string)
  3. Analyze:
    • Per-project: git commit count + completed task count
    • 幽灵项目: active in Notion but zero git/task activity
    • 隐性工作: heavy git activity in repos not mapped to any active project
    • Time allocation distribution
  4. Output in Chinese: "项目活跃度矩阵" + "幽灵项目" + "隐性工作" + "建议"

Gotchas (Common Pitfalls)

MCP-Specific

  • Checkbox: __YES__ / __NO__, NOT true/false
  • URL property: Prefix with userDefined: (e.g., userDefined:URL)
  • Date property: Split into date:PropName:start, date:PropName:end, date:PropName:is_datetime
  • multi_select: Comma-separated string, NOT array
  • notion-search: Cannot filter by property values — use scripts/REST API

REST API-Specific

  • database_id vs data_source_id: REST API uses database_id, MCP uses data_source_id — they differ
  • Date filter: ISO-8601 only, never natural language

General

  • Select values change: NEVER hardcode — always fetch schema first
  • Duplicate DB names: Always use databases under the LifeOS root page

Signals

GitHub stars
38
Forks
1
Last commit
Sep 2026

ahel review

  • S4info
    community integration, published by jiahao-shao1, not notion
  • K6low
    bundled executables the agent is told to run

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Item type
skill
Key
notion-lifeos
Source
github.com/jiahao-shao1/sjh-skills