Install
$ agentstack add skill-spirosbax-insaight-save-notion ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Insaight — Save Research to Notion
Persist a research brief to Notion so the next research run on the same subject can build on it instead of starting cold.
Scope: research briefs only. The [NOTIONOUTREACHLOG] page is the user's own record of what they sent, kept by hand — treat it as read-only here. Writing generated messages into it would corrupt the one record of what a real human actually sent.
Step 1 — Verify there's something to save
Look for a structured research brief in the conversation:
- Person:
👤 Role & Context,🧭 Career Trajectory, … - Company:
🏢 Company Snapshot,🎯 Prospect Evaluation, … - Post:
📌 Post Summary,💬 Comment Themes, …
If there's no brief, stop and say so. Reconstructing one from memory would save something the research skills never actually produced.
Step 2 — Find the parent page
notion:search(query="[NOTION_RESEARCH_PAGE]")
If it's missing, search for [NOTIONWORKSPACE] (both names come from insaight:get_config()) and create [NOTIONRESEARCH_PAGE] under it — only with the user's confirmation, since creating pages in someone's workspace is not reversible from here. Cache the parent page ID for the session.
Step 3 — Update or create
Search for a page titled with the subject:
notion:search(query="[Name]")
If a page for this exact subject already exists under [NOTIONRESEARCHPAGE]:
- Update it rather than creating a second page — duplicates split the
history the research skills read back on the next run.
- Preserve prior content; replace only the sections the current brief covers.
- Append
Last updated: [YYYY-MM-DD].
Otherwise create a new page:
- Person or company:
[Name] — [YYYY-MM-DD] - Post:
Post — [author last name] — [topic gist] — [YYYY-MM-DD]
Step 4 — Write the page
Use Notion blocks rather than one markdown blob, so the page stays navigable and individually editable:
heading_1for the name/titleparagraph(italic) for the metadata lineheading_2for section headersparagraphfor body textbulleted_list_itemfor liststablefor the prospect evaluation rubric
Page structure
# [Name] — Prospect Analysis
*Analysed on [date] | Source: LinkedIn via Insaight*
---
## 👤 Role & Context (person)
## 🏢 Company Snapshot (company)
## 📌 Post Summary (post)
...
## 🧭 Career Trajectory (person)
## 🎓 Education & Credentials (person)
## 📝 Content Themes
## 🎯 Professional Focus / Prospect Evaluation
## 🔭 Future (company)
## 💬 Comment Themes (post)
## 🔑 Decision-Maker Signals
## 💎 Uncommon Commonalities (person, if provided)
## 🪝 Outreach Hooks
## ❓ Open Questions
Mirror the sections the brief actually produced — the list above is a superset across brief types, not a template to fill in. Inventing a section puts empty headers in front of the user next time they open the page.
Step 5 — Report and stop
One line: > Saved to Notion: [page title] ([create | update])
Don't re-output the brief. The user is already reading it in the conversation.
Edge cases
- Notion MCP not connected: Tell the user once and let the calling skill's
output stand — a missing integration shouldn't swallow finished research. Message: "Notion MCP isn't connected — research completed but not auto-saved. Connect at claude.ai → Settings → Integrations."
- Notion tools not loaded: Run
tool_search(query="notion search fetch create")
to load the schemas, then retry. Tool names vary between Notion MCP builds, so use the names that come back rather than assuming them.
- Duplicate page titles: Prefer the match under [NOTIONRESEARCHPAGE]. If
it's still ambiguous, ask — writing to the wrong page is harder to undo than asking one question.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: spirosbax
- Source: spirosbax/insaight
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.