workspace-bridge
Skill1 starsChanged 8 months agoMITView on GitHub
Notion + Google Workspace bridge for My PM Tools. Provides 16 MCP tools for reading/writing Notion pages and databases, searching Google Drive, reading/writing Sheets, listing/creating Calendar events, and searching Gmail. Extends the core project management workflow with external knowledge and document integration.
- Reads credentials
In this repository7 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- my_pm_toolsSkill
- ci-cd-pipelineSkill
- code-qualitySkill
- git-workflowSkill
- project-setup-automationSkill
- typescript-best-practicesSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 2 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 72
Create an integration at https://www.notion.so/my-integrations
- Distinctive: line 82
Create OAuth 2.0 credentials in Google Cloud Console
- Very specific: line 219
Update protocol: see refresh-specs.md.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Workspace Bridge
Notion + Google Workspace bridge for My PM Tools. Provides read/write access to external PM tools through 16 MCP tools.
Supported Tools (16)
Notion Tools (7)
| Tool | Operation | Description |
notion_search | Read | Search workspace for pages and databases by title |
notion_get_page | Read | Get page content converted to Markdown |
notion_query_database | Read | Query database with filter/sort |
notion_create_page | Write | Create page under database or page |
notion_append_blocks | Write | Append paragraph blocks to existing page |
notion_update_page | Write | Update page properties |
notion_archive_page | Write | Archive (soft-delete) a page |
Google Workspace Tools (9)
| Tool | Operation | Description |
workspace_search_drive | Read | Search Drive for files by query and MIME type |
workspace_get_doc | Read | Export Google Docs as Markdown |
workspace_get_sheet | Read | Read spreadsheet range (headers + rows) |
workspace_get_slides | Read | Export Slides as plain text |
workspace_list_events | Read | List Calendar events with time range filter |
workspace_search_gmail | Read | Search Gmail with metadata extraction |
workspace_update_sheet | Write | Write values to spreadsheet cell range |
workspace_append_sheet | Write | Append rows to a spreadsheet |
workspace_create_event | Write | Create a Calendar event with attendees |
Auth Setup
Notion
- Create an integration at https://www.notion.so/my-integrations
- Copy the Internal Integration Token
- Set the environment variable:
export NOTION_TOKEN="ntn_xxxxxxxxxxxxx" - Share target pages/databases with the integration in Notion UI
Google Workspace
- Create OAuth 2.0 credentials in Google Cloud Console
- Enable APIs: Drive, Sheets, Calendar, Gmail
- Obtain a refresh token via OAuth flow
- Set environment variables:
export GOOGLE_CLIENT_ID="xxxxx.apps.googleusercontent.com" export GOOGLE_CLIENT_SECRET="GOCSPX-xxxxx" export GOOGLE_REFRESH_TOKEN="1//xxxxx"
Security: Never commit tokens to git. Use
.envfiles (added to.gitignore) or a secret manager.
Usage Examples
Notion: Search and read a page
notion_search({ query: "Sprint 5 Planning" })
→ Returns page IDs matching the query
notion_get_page({ pageId: "page-uuid-1234" })
→ Returns page content as MarkdownNotion: Query a database
notion_query_database({
databaseId: "db-uuid",
filter: '{"property":"Status","select":{"equals":"In Progress"}}',
sorts: '[{"property":"Priority","direction":"ascending"}]'
})
→ Returns filtered/sorted rowsGoogle: Read spreadsheet data
workspace_get_sheet({
spreadsheetId: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms",
range: "Sheet1!A1:D10"
})
→ Returns headers + data rowsGoogle: Search Drive
workspace_search_drive({
query: "Sprint Report",
mimeType: "application/vnd.google-apps.document",
limit: 10
})
→ Returns matching file list with URLsGoogle: List Calendar events
workspace_list_events({
calendarId: "primary",
timeMin: "2026-03-28T00:00:00Z",
timeMax: "2026-04-04T00:00:00Z",
limit: 20
})
→ Returns events in the time rangeNotion: Update page properties
notion_update_page({
pageId: "page-uuid-1234",
properties: '{"Status":{"status":{"name":"Done"}}}'
})
→ Returns updated page objectNotion: Archive a page
notion_archive_page({
pageId: "page-uuid-1234"
})
→ Returns archived page confirmationGoogle: Write to spreadsheet
workspace_update_sheet({
spreadsheetId: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms",
range: "Sheet1!B2:D2",
values: [[42, "Sprint 5", "2026-03-28"]]
})
→ Returns updated cell countGoogle: Append rows to spreadsheet
workspace_append_sheet({
spreadsheetId: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms",
range: "Sheet1!A:D",
values: [["Sprint 5", "2026-03-28", 42, "Done"]]
})
→ Returns appended rangeGoogle: Create Calendar event
workspace_create_event({
calendarId: "primary",
summary: "Sprint 5 Review",
start: "2026-04-06T14:00:00+09:00",
end: "2026-04-06T15:00:00+09:00",
description: "Sprint 5 demo and retrospective",
attendees: ["team@example.com"]
})
→ Returns created event with ID and linkAPI Spec References
Detailed API specifications are maintained in api-specs/:
api-specs/notion.md— Notion API v1 referenceapi-specs/google/drive.md— Google Drive API v3api-specs/google/sheets.md— Google Sheets API v4api-specs/google/calendar.md— Google Calendar API v3api-specs/google/gmail.md— Gmail API v1
Update protocol: see refresh-specs.md.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

