Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/danivellagit-notion-sync
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions: not checked yet.
What's inside
- Skill name
notion-sync- Description
- None
- License
- MIT
- Instructions
- 92 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- invalid YAML frontmatter: Nested mappings are not allowed in compact mappings at line 2, column 14:
- name: missing
- description: missing
Files (1)
- SKILL.md
SKILL.md (first lines)
# notion-sync
> **Optional skill.** It only applies if you keep your canonical People / Companies in Notion.
> If you do not use Notion, delete this skill folder; the graph works standalone.
## What it does, in one line
Keeps the canonical People / Companies lists whole: any human or company that shows up in the
graph but is not yet in Notion gets created there (and mirrored back), so the record never
falls behind the stream. Notion is the master for these two types; this repo mirrors them.
## The split it enforces
- **Notion = source of record** for `people` and `companies` (heavy, official).
- **This repo = a read-only mirror** of those two types, for wiki-linking inside the graph.
- All other node types (places, passions, cities, terms, groups, events, media, bonds, roles)
are born in the repo and are NOT this skill's job: they belong to `remember-people`.
- The owner file (`data/_me.md`, `owner_slug` in `config.local.yml`) is never synced.
## Notion targets
Set your own database data-source ids in `config.local.yml` and read them here; never hardcode
an id or a page url in a skill:
```yaml
notion:
people_datasource: "collection://<your People data-source id>"
companies_datasource: "collection://<your Companies data-source id>"
```
Always fetch the data source first to read its live schema (property names + types). Map only
to properties that exist; never invent a property.
## Flow: reconcile (per type, people then companies)
1. **List the graph side.** Every `data/people/<slug>.md` (and `data/companies/<slug>.md`).
2. **List the Notion side.** Query the People (then Companies) data source; build a match key
from the title (name) + any aliases.
3. **Match** each repo node to a Notion row, **by `notion_url` first** (it survives renames),
then by name / alias (fuzzy, case-insensitive). Resolve before creating, never fork a
duplicate. Three outcomes:
- **Match found, repo has no `notion_url`:** write the Notion page url into the repo node's
frontmatter (`notion_url:`). Pull down canonical fields that are empty in the repo
(company, role, city): enrich, never overwrite a value the repo already has.
- **No match (missing in Notion):** CREATE the Notion page (see guardrails), then write its
url back into the repo node as `notion_url:`. This is create-on-first-mention, in pair.
- **In Notion, not in repo:** out of scope here (the repo mirror grows from the stream via
remember-people, not by pulling all of Notion down).
4. **Write repo frontmatter through `tools/graph.py`**, never by hand, and finish with
`python3 tools/lint.py` at `mechanical findings: 0`.
## Forks, renames and merges
- **Two repo nodes with the same `notion_url` are one human.** That is the clearest fork signal
there is: report it as a duplicate and resolve it with
`python3 tools/merge.py <loser> <survivor> --why "..."`; never create a second Notion page to
"fix" it. `tools/checks.py` reports these as `possible-duplicate`.
- **A placeholder slug is not ready for Notion.** A node whose name is one word or a nickname
(`kit-climbing`) is a gap to chase, not an identity: creating a Notion page for it exports the
fork. Prefer waiting for the real name, or create it with the best known full name and add the
page to the report as provisional.
- **After `tools/rename.py`** the Notion page still carries the old title. Matching by
`notion_url` keeps the pair intact; list the stale title in the report for the owner to rename
(never overwrite a Notion value on your own).
## Create guardrails (important: this writes to your system of record)
- **Only** the People and Companies databases. Never touch Finance, Health, Documents, Goals,
Travel or any other surface.
- **Minimal fields only** on create: the title (full name), and, only if a clean property
exists and the repo node has the value, `role` (job title text), `company` (relation, if the
company row exists), and a link (LinkedIn / site). Leave everything else blank.
- **Never overwrite** an existing Notion value. Create-or-enrich-blank only.
- **Never delete** or archive a Notion row.
- **In pair, always:** a Notion create must be followed by writing `notion_url:` back into the
repo node. Never create one side without the other.
- **The wall:** never copy sensitive personal content (health, money, legal, dating, family,
gossip) from `data/` into Notion. Only the flat identity fields above. The rich private detail
stays in the repo.
## When it runs
Daily, right after the `remember-people` sweep (so it reconciles the people that sweep just
created / updated). Also on demand. Idempotent and fail-soft: if Notion is unreachable, log
what you could not reconcile and move on; never crash the run, never double-create.
## Report
End with a one-line count: people / companies matched, urls backfilled, created in Notion,
skipped (and why), plus any duplicate `notion_url`s and stale Notion titles for the owner.From danivellagit/personal-knowledge-graph, MIT.
More from danivellagit/personal-knowledge-graph
- 0.561score
remember-people
danivellagit
A chief-of-staff for one-to-one meetings.
SkillAFreshness: AClaude Code +9 - 0.561score
graph-audit
danivellagit
The weekly look at the graph from above.
SkillAFreshness: AClaude Code +9 - 0.559score
best-friend
danivellagit
The owner's best friend and daily-life assistant agent.
SkillAFreshness: AClaude Code +9 - 0.559score
fitness-coach
danivellagit
The owner's personal fitness coach agent.
SkillAFreshness: AClaude Code +9 - 0.559score
founder-assistant
danivellagit
The owner's work assistant and chief of staff agent.
SkillAFreshness: AClaude Code +9 - 0.559score
accountant
danivellagit
The owner's AI accountant and company-admin advisor agent.
SkillAFreshness: AClaude Code +9 - 0.556score
psychologist
danivellagit
A session with the owner's psychologist agent ("let's do a session", "I need to talk", "talk to the psychologist", or the persona name they gave it).
SkillAFreshness: AClaude Code +9 - 0.301score
web-builder
danivellagit
No description from the publisher yet.
SkillAFreshness: AClaude Code +9 - 0.301score
brand-designer
danivellagit
No description from the publisher yet.
SkillAFreshness: AClaude Code +9 - 0.301score
health-advisor
danivellagit
No description from the publisher yet.
SkillAFreshness: AClaude Code +9 - 0.301score
linkedin-coach
danivellagit
No description from the publisher yet.
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 22, 2026 (7 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from danivellagit
- 0.561score
graph-audit
danivellagit
The weekly look at the graph from above.
SkillAFreshness: AClaude Code +9 - 0.561score
remember-people
danivellagit
A chief-of-staff for one-to-one meetings.
SkillAFreshness: AClaude Code +9 - 0.559score
fitness-coach
danivellagit
The owner's personal fitness coach agent.
SkillAFreshness: AClaude Code +9 - 0.559score
accountant
danivellagit
The owner's AI accountant and company-admin advisor agent.
SkillAFreshness: AClaude Code +9 - 0.559score
founder-assistant
danivellagit
The owner's work assistant and chief of staff agent.
SkillAFreshness: AClaude Code +9 - 0.559score
best-friend
danivellagit
The owner's best friend and daily-life assistant agent.
SkillAFreshness: AClaude Code +9
Cite this page
notion-sync skill. Agent Mart. https://agentmart.dev/skills/danivellagit-notion-sync (last updated 2026-10-24)