en un clic
company-admin
// Access and update company administrative information stored in Notion
// Access and update company administrative information stored in Notion
Debug production issues on Vercel using logs, database inspection, and proper deployment waiting
Make features testable by design. Testing pyramid from fast (local) to slow (UI). Expose APIs securely for testing.
Manage DNS records for domains hosted on Vercel using the Vercel CLI
Workspace guide to introduce OpenWork and onboard new users.
Create and register new OpenCode skills in this repo
Keep the 0 Finance CLI aligned with product capabilities.
| name | company-admin |
| description | Access and update company administrative information stored in Notion |
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.
.env fileThis 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:
1. MCP Skills page ID (company-level info)
2. Admin/Legal page ID (personal details, sensitive info)
3. 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
# 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.
# 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"
# 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"
...
| 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 |
.env file (gitignored).env if missing| 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 |
Tasks are stored in the Admin/Legal page under "# Admin Tasks" section.
# Admin Tasks
## Active Tasks
### [Category] (Due: [date])
- [ ] **Task name** - Description
- Subtask or context
- Links, phone numbers, etc.
- [ ] Another task
## Completed Tasks
- [x] Completed task - moved here when done
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"
[x] checkednotion_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]"
When researching a task reveals subtasks (like Gusto setup), add them nested:
- [ ] **Main task**
- [ ] Subtask 1
- [ ] Subtask 2
- Context: links, phone numbers, notes
| 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 |
If .env file is missing, run this flow:
.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