CompanyOS — AI-powered business operations layer for Claude Code
Run a company through Claude Code instead of a dozen SaaS dashboards.
CompanyOS is an open-source operating layer that turns Claude Code into the universal interface for running a business. Instead of context-switching between Linear, Gmail, Help Scout, Stripe, Notion, Sentry, Vercel, Google Calendar, and Slack — you have one conversation. Skills handle the integrations, agents handle the orchestration, and automated jobs handle the things that should run without you.
We built it because two people running a multi-product SaaS company couldn't keep up with the tab-switching. Now we run seven products with two humans and a fleet of skills.
CompanyOS distinguishes three execution modes. Knowing which mode a piece of work belongs to is the core mental model.
| Mode | Trigger | Latency | Example |
|---|---|---|---|
| Skill | You invoke it (slash command or natural language) | Seconds | "Draft an email to our alpha users" → co-comms activates |
| Agent | Claude dispatches it via the Task tool, in service of a larger goal | Seconds–minutes | co-feedback-analyst summarizing a Linear backlog |
| Automated Job | Cron schedule or webhook event, no human in the loop | Continuous | email-agent polls Gmail every 5 minutes |
Skills are markdown files (SKILL.md) with structured front matter. Claude reads them at session start and auto-invokes them based on context. They're not code — they're prompts that encode workflow knowledge: when to act, what tools to use, how to format output, and what guardrails to honor (e.g., "always show a draft email to the user before sending").
Agents live in .claude/agents/. They're dispatched on-demand for parallelizable or context-isolated work. They report back; they don't run continuously.
Automated Jobs live in supabase/functions/ as Edge Functions, triggered by pg_cron schedules or database webhooks. They're the only mode that runs without a human in the conversation.
┌─────────────────────────────────────────────────────────┐
│ Claude Code (CLI) │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ Skills │ │ Agents │ │ Commands │ │
│ │ (auto-fire)│ │ (Task tool)│ │ (/slash) │ │
│ └─────┬──────┘ └─────┬──────┘ └─────┬──────┘ │
└────────┼─────────────────┼─────────────────┼────────────┘
│ │ │
└─────────────────┼─────────────────┘
│
┌────────▼────────┐
│ MCP Servers │
│ (tool gateways) │
└────────┬────────┘
│
┌─────────┬──────┬──────┼──────┬──────┬──────┬──────┐
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
Linear Gmail Stripe Supabase Sentry Notion Vercel ...
┌─────────────────────────────────────────────────────────┐
│ Supabase Edge Functions │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ email-agent │ │support-agent │ │ daily-tasks │ │
│ │ (every 5m) │ │ (every 30m) │ │ (daily) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────┘
Per-user setup. Each team member runs CompanyOS from their own machine using their own git identity and OAuth tokens. There's no shared login, no central server. Skills and rules are version-controlled in a git repo and symlinked into ~/.claude/ by setup.sh. When someone updates a skill and merges to main, every team member's machine auto-pulls the change on the next launchd cycle.
Three-repo pattern. The CompanyOS core (IntensityMagic/companyos) holds skills shared across companies. Each company has a private config repo (e.g., companyos-config-foundry) holding its people, products, conventions, and any company-specific skills. When a company-specific skill proves generally useful, a GitHub Action proposes it as a PR to the core repo for promotion.
Every external action is audited. Emails sent, Stripe operations, support ticket actions — they're all logged via Claude Code hooks to a Supabase telemetry table. Skill invocations are logged too, which is how co-skill-report and co-insights know what got used.
A few principles, enforced by skill-level guardrails and project rules:
- Draft-first for external comms. Every email goes through a draft → review → approve loop. The system never calls
send_gmail_messagewithout showing the full final email and waiting for explicit approval. - No secrets in the repo. All credentials live in GCP Secret Manager.
setup.shregenerates a temporary local vault on demand. - Protected workflows. Git commits go through
/co-commit(with PR review for the core repo). Production deploys require explicit promotion, not direct pushes. - Tool-aware, not tool-coupled. Skills check a "Tools Map" in company context before making MCP calls. Switching from Linear to Asana is a config change, not a skill rewrite.
Listed by category. Each skill is a structured workflow with explicit triggers, guardrails, and output formats.
| Skill | When to use |
|---|---|
co-comms |
Drafting, reviewing, or sending any business communication |
co-content |
Marketing content, blog posts, announcements, social media campaigns |
co-deck-review |
Pitch deck, one-pager, or company description feedback |
co-foundry-board-update |
Summarizing a board meeting for plm@foundry.vc distribution |
co-launch-content |
Coordinated launch materials — email + blog + social |
co-support |
Customer support triage and ticket responses |
rewriter |
Polishing raw content into business prose, with optional voice matching |
| Skill | When to use |
|---|---|
co-calendar |
Schedule checks, meeting prep, finding free time across multiple Google calendars |
co-incident |
Production down or service broken — triage, comms, mitigation, postmortem |
co-meetings |
Reviewing meeting notes, transcripts, action items, recurring topics |
co-ops |
Company operations, conventions, decisions, contacts |
co-tasks |
Personal task scratchpad — add, complete, reorder, review |
co-plan (command) |
Build your prioritized daily plan |
co-standup (command) |
Daily standup from Linear, git, calendar, Help Scout |
co-recap / co-recap-weekly (commands) |
Log session or weekly accomplishments |
| Skill | When to use |
|---|---|
co-board-deck-review |
Reviewing board materials before a meeting |
co-feedback |
Triaging customer feedback, identifying patterns, sentiment analysis |
co-five-whys |
Root cause analysis on a recurring problem |
co-pricing |
Tier design, value metrics, freemium vs free trial decisions |
co-search |
Cross-tool search across Linear, Gmail, Drive, Help Scout, Notion, Sentry |
co-wisdom |
Pep talk, perspective shift — Give First and the Techstars Mentor Manifesto |
| Skill | When to use |
|---|---|
co-domain-search |
Brand name brainstorming with live domain availability checks |
co-feature-request |
Capturing structured feature requests, filing as GitHub Issues |
co-issue |
Reporting a CompanyOS problem — auto-classifies bug vs feature request |
co-launch |
Managing launch cohorts, participants, messaging |
| Skill | When to use |
|---|---|
co-music |
Spotify playback, search, playlist management |
| Skill | When to use |
|---|---|
co-audit |
Verify CompanyOS setup health, permissions, security posture |
co-help |
Discover what CompanyOS can do; find the right skill for a task |
co-insights |
Claude Code session analytics and usage patterns |
co-l10-prep |
Pull scorecard metrics before the weekly L10 leadership meeting |
co-recurring |
View, pause, resume, or create scheduled background jobs |
co-secrets |
Manage API keys via GCP Secret Manager |
co-settings |
Per-user preferences — confirmations, default team, notifications |
co-skill-audit |
Audit skill quality against CompanyOS standards |
Imperative workflows invoked explicitly. Skills auto-fire on context; commands run when you ask.
| Command | What it does |
|---|---|
/co-add-mcp |
Walk through adding a new MCP server to the registry |
/co-admin |
Operations health dashboard — alerts, users, costs, activity |
/co-cleanup |
Monthly hygiene — find stale memory, branches, drafts, drift |
/co-commit |
Commit changes — PRs for core repo, direct push for config repos |
/co-create-skill |
Generate a new skill from the standard template |
/co-help |
List all skills, commands, and services |
/co-incident |
Real-time incident response and postmortem |
/co-plan |
Build a prioritized daily plan |
/co-pr-review |
Interactive PR review queue across repos |
/co-recap / /co-recap-weekly |
Session and weekly summaries |
/co-skill-report |
Skill usage stats for the scorecard |
/co-standup |
Daily standup (Yesterday/Today/Blockers) |
/co-switch |
Switch between CompanyOS contexts within one session |
/co-test-gaps |
Detect untested setup.sh sections, file Linear tickets |
Dispatched by Claude when a task benefits from a fresh context window or parallelization.
| Agent | When dispatched |
|---|---|
co-feedback-analyst |
Bulk feedback needs categorization, theme analysis, or structured summary |
co-research |
Market research, competitor analysis, or tool evaluation |
Run headless on Supabase. No human in the conversation.
| Job | Schedule | Purpose |
|---|---|---|
email-agent |
Every 5 min, 24/7 | Gmail polling — Claude reply or task routing |
support-agent |
Every 30 min | Help Scout auto-triage |
daily-tasks-email |
Daily | Team task digest email |
daily-changelog |
Daily | What changed across repos and tools |
daily-infra-changes |
Daily | Infrastructure drift report |
recurring-task-runner |
Cron-driven | Execute scheduled task definitions |
weekly-skill-report |
Fridays 4 PM MT | Skill usage analytics email |
admin-health |
Daily 5:45 AM MT | Operations health snapshot — users, skills, infra, secrets, costs — consumed by /co-admin and the changelog email |
Three non-obvious things make CompanyOS practical at small scale:
-
The marginal cost of skill creation is low. A new workflow takes 30 minutes — write a
SKILL.md, add a trigger toco-skill-rules.json, runsetup.sh. Compare that to building a new internal tool, hiring an ops person, or buying yet another SaaS. The skill fleet compounds. -
The model handles ambiguity humans usually mediate. "Send Daniel the Q4 numbers" used to mean someone opens three dashboards, screenshots them, writes an email. Now Claude pulls the numbers, drafts the email, shows a preview, sends on approval. The human stays in the loop for judgment, not for clicks.
-
Per-user OAuth, shared skills. Each person operates in their own account with their own permissions and audit trail. The skills are shared knowledge; the access is individual. No service-account sprawl, no credential hand-off when someone leaves.
The current bet: a two-person company with this fleet has more operational capacity than a five-person company without it. We'll find out.