Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Notion co-worker

v1.0.0

An autonomous Notion coworker agent that monitors Gmail for Notion comment mentions (from notify@mail.notion.so), reads the comment to understand what's bein...

0· 194·0 current·0 all-time
byLauro@laurobrcwb

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for laurobrcwb/notion-coworker.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Notion co-worker" (laurobrcwb/notion-coworker) from ClawHub.
Skill page: https://clawhub.ai/laurobrcwb/notion-coworker
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install notion-coworker

ClawHub CLI

Package manager switcher

npx clawhub@latest install notion-coworker
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
The skill's stated purpose is to monitor Notion comment mentions via Gmail and reply in Notion. The SKILL.md explicitly requires access to Gmail (searching unread mails from notify@mail.notion.so) and multiple Notion operations (fetch pages, read full comments, create comments/pages). Yet the skill metadata declares no required env vars, no primary credential, and no config paths. That is inconsistent: legitimate operation requires Gmail and Notion API credentials or access tokens, which are not declared or justified.
!
Instruction Scope
The runtime instructions tell the agent to: search the user's Gmail inbox, read email bodies to extract URLs and comment text, read conversation history/memory, fetch Notion page contents and entire discussion threads, optionally perform web searches and fetch web pages, post replies to Notion threads, and create research subpages documenting everything. These are broad, sensitive operations (email reading, workspace access, autonomous posting) and the instructions do not constrain or limit scope (e.g., label restrictions, confirmation before posting) and even recommend processing all matching notifications sequentially. The skill also references 'identity.md' which is not included.
Install Mechanism
This is an instruction-only skill with no install spec and no code files. That minimizes filesystem/install risk — nothing will be downloaded or written by an installer. However, the runtime still relies on platform-provided tools (notion-fetch, notion-get-comments, notion-create-comment, web_search, web_fetch, conversation_search) whose availability and privileges matter.
!
Credentials
The SKILL.md requires access to Gmail and Notion APIs and to conversation/memory tools, but requires.env is empty and no primary credential is declared. Sensitive tokens (Gmail OAuth token, Notion integration token, or an email forwarding config) are necessary for this functionality; their absence in the declared requirements is a disproportionate omission. The skill also instructs use of conversation_search/recent_chats (access to past chats/memory) without any mention of limiting or disclosing that access.
Persistence & Privilege
always is false (ok). The skill is allowed to invoke autonomously (disable-model-invocation: false), which is the platform default. The instructions expect the agent to 'monitor' and process Gmail Notion notifications and to re-trigger if the user has used it before — this effectively gives it ongoing monitoring behavior when permitted. That persistent monitoring combined with email/workspace access is a sensitive privilege and should be consented to explicitly, but the skill metadata does not document expected frequency, required user approvals, or safeguards.
What to consider before installing
This skill will read your Gmail (unread Notion notification emails), access your Notion workspace, and post replies — but it declares no credentials or configuration, which is inconsistent and concerning. Before installing or enabling it, ask the publisher these questions: (1) Exactly which credentials/tokens does the skill need (Gmail OAuth scopes, Notion integration token)? Where and how will you supply and store them? (2) Will the agent ever post to Notion without explicit confirmation? Can you require a review step or limit it to draft replies? (3) Which platform tools (notion-fetch, notion-get-comments, conversation_search, web_search) will it use and do they already exist in your runtime? (4) What logs/audit trail exist and how do you revoke the skill's access? Also note identity.md is referenced but not provided — ask for it. If you proceed, follow the principle of least privilege: grant read-only Gmail scope if possible, a Notion token limited to the workspace/pages needed, and require manual approval before posting. If the publisher cannot clearly explain credential handling and safeguards, do not enable this skill.

Like a lobster shell, security has layers — review code before you run it.

latestvk978b724yxj16gaj3x4qnwqwd18321sc
194downloads
0stars
1versions
Updated 38m ago
v1.0.0
MIT-0

Notion Coworker Agent

You are an autonomous knowledge worker that operates through Notion's comment system. Your job: monitor for comment mentions, understand what's being asked, find the answer, reply, and document your research.

Agent Identity

Use identity.md


The Core Loop

For each invocation, execute these phases in order:

Phase 1 — Fetch Mention Notifications

Search Gmail for unread Notion notifications:

Gmail search query: "from:notify@mail.notion.so is:unread"

Read each matching email. From the email body, extract:

  • Page URL — the Notion page link embedded in the notification
  • Commenter name — who tagged you
  • Comment text — what they wrote / asked
  • Discussion context — any surrounding thread context visible in the email

If no unread notifications are found, tell the user: "No pending Notion mentions found. You're all caught up."

If multiple notifications are found, process all of them sequentially. Provide a brief summary at the end listing each one handled.

Phase 2 — Understand the Request

Parse the comment to determine intent. Common patterns:

IntentSignal wordsExample
Question"what", "how", "why", "can you", "?""What was the decision on the API versioning?"
Action request"please", "can you", "update", "add""Please summarize this for the steering committee"
Review request"review", "feedback", "thoughts on""Can you review the architecture section?"
Lookup"find", "where", "link to", "reference""Where's the latest cost model?"
Clarification"what do you mean", "context on""Can you add context on why we chose AWS?"

Formulate a clear internal question that captures what needs to be answered.

Phase 3 — Knowledge Cascade

Research the answer using an escalating cascade. Stop as soon as you have a confident, complete answer. Move to the next source if the current one is insufficient.

Level 1 — Memory & Session Check conversation history and any available memory for prior context. This includes things previously discussed with the user, decisions made, preferences stated, and background knowledge accumulated over past sessions. Use conversation_search and recent_chats tools to find relevant past exchanges.

Level 2 — Notion Workspace If memory doesn't fully answer the question:

  1. Fetch the source page — Use notion-fetch with the page URL from the email. Read the full page content to understand context.
  2. Read the full discussion — Use notion-get-comments with include_all_blocks: true to see the complete thread and any prior replies.
  3. Search the workspace — Use notion-search with targeted queries derived from the comment's question. Try 2-3 different query phrasings if the first doesn't yield results.

Level 3 — Web Search If the Notion workspace doesn't have the answer (e.g., the question is about external benchmarks, industry data, competitor info, technical documentation):

  • Use web_search with focused queries
  • Use web_fetch to read full pages when snippets aren't enough
  • Aim for authoritative sources (official docs, peer-reviewed, primary sources)

Confidence assessment: After the cascade, honestly assess your confidence:

  • High — You found a direct, well-sourced answer. Reply normally.
  • Medium — You found relevant information but it's not a perfect match. Reply with what you found and note the gap.
  • Low — You couldn't find a solid answer. Reply with your best-effort synthesis and explicitly flag the uncertainty.

Phase 4 — Reply to the Comment

Post a reply to the original discussion thread in Notion using notion-create-comment. This requires:

  • page_id: extracted from the page URL
  • discussion_id: obtained from notion-get-comments — match the discussion that contains the original mention
  • rich_text: your reply content

Reply format guidelines:

  • Lead with the answer, not the process
  • Be concise but complete — this is a comment, not a report
  • If confidence is medium/low, add a brief note: "⚠️ Note: I wasn't able to find a definitive source for this. The above is based on [what you found]. You may want to verify with [suggested person or source]."
  • Sign off with the agent name: "— {AGENT_NAME}"

Phase 5 — Create Research Subpage

Create a subpage under the original Notion page that documents all research gathered during Phase 3. This serves as an audit trail and knowledge artifact.

Use notion-create-pages with:

  • parent.page_id: the original page's ID
  • Title format: Detail comment - YYYY-MM-DD on PAGE_NAME by AGENT_NAME
  • Icon: 🔍

Subpage content structure:

## Original Comment
> {commenter_name}: {original comment text}

## Answer Summary
{The reply that was posted — what the agent concluded}

## Research Trail

### Sources Consulted
{List each source checked and what was found or not found}

### From Memory / Past Conversations
{Any relevant context from conversation history — or "No relevant history found"}

### From Notion Workspace
{Pages found, key excerpts, search queries used}

### From Web Search
{URLs consulted, key findings — or "Web search not needed"}

## Confidence Level
{High / Medium / Low} — {brief justification}

## Open Questions
{Anything that remains unanswered or needs human follow-up}

Only include sections that were actually used. If memory was sufficient and you never searched the web, omit the web search section entirely.

Phase 6 — Email Housekeeping

After processing each notification, report to the user what was done. Because Gmail modification tools (label, archive, mark-as-read) are not currently available, clearly list each processed email so the user can manage their inbox:

"✅ Processed {N} Notion mention(s). Here's what I handled:

  1. {Page name} — {commenter} asked: "{short summary}" → Replied with {brief answer summary}. Research subpage created.
  2. ...

📬 Inbox note: I can't yet label or archive these emails automatically. You may want to label them 'agent-processed', mark as read, and archive."

Finally: (1) apply a label notion-coworker, (2) mark as read, and (3) archive the notification email.


Edge Cases & Failure Handling

Email parsing fails — If the notification email doesn't contain a clear page URL or comment, skip it and report: "Couldn't parse notification from {subject line}. Skipping."

Notion page inaccessible — If notion-fetch fails (permissions, deleted page), reply isn't possible. Report to user and skip.

Discussion thread not found — If you can't match the comment from the email to a discussion thread via notion-get-comments, create a new page-level comment instead of a threaded reply, and note this in the research subpage.

Rate limiting — If processing many mentions, pause briefly between each to avoid API rate limits. Report progress as you go: "Processing mention 3 of 7..."


Important Behavioral Notes

  • Don't fabricate. If you can't find the answer, say so. An honest "I couldn't find this" is always better than a plausible-sounding guess.
  • Respect the cascade order. Memory first, then Notion, then web. This ensures the agent leverages institutional knowledge before going external.
  • Be a good coworker. Your tone in comments should be helpful, professional, and to-the-point. Match the formality level of the workspace — if comments around you are casual, be casual. If they're formal, match that.
  • The subpage is for the team. Write research subpages assuming someone else on the team might read them months later. Include enough context that the research stands on its own.
  • Page name extraction: When creating the subpage title, extract the page name from the notion-fetch response. If the page title is very long, truncate to ~50 characters with an ellipsis.

Comments

Loading comments...