What I Do
This skill instructs how to access and update company administrative information. All data lives in Notion - this skill just tells you where to find it and how to update it.
Prerequisites
Required: .env file
This skill requires a .env file at .opencode/skill/company-admin/.env with Notion page IDs.
If the file doesn't exist or is missing info, ask the user:
I need to set up the company-admin skill. Please provide:
- MCP Skills page ID (company-level info)
- Admin/Legal page ID (personal details, sensitive info)
- Investor Cheat Sheet page ID (optional)
You can find page IDs in the Notion URL after the page title.
Then create the .env file:
Check if .env exists
cat .opencode/skill/company-admin/.env
If missing, create it with user-provided values
.env Template
Notion Page IDs for Company Admin
Find these in the Notion URL: notion.so/[page-title]-[PAGE_ID]
NOTION_MCP_SKILLS_PAGE_ID= NOTION_ADMIN_LEGAL_PAGE_ID= NOTION_INVESTOR_CHEAT_SHEET_ID=
External service URLs (non-sensitive)
FIRSTBASE_DASHBOARD_URL=https://app.firstbase.io/company/OR5DEAF6/details TEAM_CALENDAR_URL=https://cal.com/team/0finance/30
Workflow
Step 1: Load Config
First, check for .env file
cat .opencode/skill/company-admin/.env
If missing or incomplete → Ask user to provide the page IDs and create the file.
Step 2: Fetch from Notion
For company-level info (incorporation, officers, addresses)
notion_notion-fetch: id="$NOTION_MCP_SKILLS_PAGE_ID" → Look at "Company Admin" section
For personal details (passport, addresses, stock status)
notion_notion-fetch: id="$NOTION_ADMIN_LEGAL_PAGE_ID"
For investor questions
notion_notion-fetch: id="$NOTION_INVESTOR_CHEAT_SHEET_ID"
Step 3: Update Notion (when user provides new info)
Update Admin/Legal page (personal info, stock status, etc.)
notion_notion-update-page: page_id: "$NOTION_ADMIN_LEGAL_PAGE_ID" command: "insert_content_after" selection_with_ellipsis: "[find appropriate section]" new_str: "[new content]"
Update MCP Skills page (company-level info)
notion_notion-update-page: page_id: "$NOTION_MCP_SKILLS_PAGE_ID" command: "insert_content_after" or "replace_content_range" ...
What Goes Where
Info Type Store In
Personal details (passport, DOB, citizenship) Admin/Legal page
Personal addresses (home, mailing) Admin/Legal page
Stock/shares status Admin/Legal page
Company details (legal name, state, industry) MCP Skills → Company Admin
Officers/directors/shareholders MCP Skills → Company Admin
Company addresses (registered agent, bank) MCP Skills → Company Admin
Service providers (Firstbase, Mercury) MCP Skills → Company Admin
Investor Q&A Investor Cheat Sheet
Security Rules
DO
-
Store page IDs in .env file (gitignored)
-
Fetch from Notion for accurate, up-to-date info
-
Update Notion when user provides new info
-
Ask user to create .env if missing
DON'T
-
Hardcode page IDs in the skill file
-
Cache sensitive info anywhere locally
-
Echo passport numbers, SSN in chat responses
-
Guess or make up legal/financial details
Common Tasks
Task Action
"What's our address?" Fetch MCP Skills page → Company Admin → Addresses
"Update my address" Update Admin/Legal page in Notion
"Fill out a form" Fetch relevant page, use info, don't echo sensitive data
"Add new company info" Update MCP Skills page → Company Admin section
"Stock/shares question" Fetch Admin/Legal page → Stock section
Admin Tasks Management
Tasks are stored in the Admin/Legal page under "# Admin Tasks" section.
Task Structure
Admin Tasks
Active Tasks
[Category] (Due: [date])
- Task name - Description
- Subtask or context
- Links, phone numbers, etc.
- Another task
Completed Tasks
- Completed task - moved here when done
How to Add a Task
notion_notion-update-page: page_id: "$NOTION_ADMIN_LEGAL_PAGE_ID" command: "insert_content_after" selection_with_ellipsis: "## Active Tasks...appropriate category" new_str: "- [ ] New task - Description\n - Subtask details"
How to Complete a Task
-
Fetch the Admin/Legal page
-
Find the task in "Active Tasks"
-
Move it to "Completed Tasks" section with [x] checked
notion_notion-update-page: page_id: "$NOTION_ADMIN_LEGAL_PAGE_ID" command: "replace_content_range" selection_with_ellipsis: "- [ ] Task name...details" new_str: "" # Remove from Active
Then add to Completed:
notion_notion-update-page: page_id: "$NOTION_ADMIN_LEGAL_PAGE_ID" command: "insert_content_after" selection_with_ellipsis: "## Completed Tasks" new_str: "\n- [x] Task name - Done [date]"
How to Add Subtasks
When researching a task reveals subtasks (like Gusto setup), add them nested:
- Main task
- Subtask 1
- Subtask 2
- Context: links, phone numbers, notes
Task Categories
Category Examples
Gusto Setup Payroll, tax registration, workers comp
Stock/Legal Share issuance, legal filings
Tax Filings, registrations, deadlines
Banking Mercury setup, account changes
Compliance CA requirements, retirement plans
First-Time Setup
If .env file is missing, run this flow:
-
Ask user for Notion page IDs
-
Create .env file:
cat > .opencode/skill/company-admin/.env << 'EOF' NOTION_MCP_SKILLS_PAGE_ID=[user-provided] NOTION_ADMIN_LEGAL_PAGE_ID=[user-provided] NOTION_INVESTOR_CHEAT_SHEET_ID=[user-provided] FIRSTBASE_DASHBOARD_URL=https://app.firstbase.io/company/OR5DEAF6/details TEAM_CALENDAR_URL=https://cal.com/team/0finance/30 EOF
-
Verify by fetching a page
-
Confirm setup complete