Skip to content

Instantly share code, notes, and snippets.

@bradfeld
Last active May 7, 2026 13:54
Show Gist options
  • Select an option

  • Save bradfeld/75b96d28d13ed65d3b28fd74ba299cbc to your computer and use it in GitHub Desktop.

Select an option

Save bradfeld/75b96d28d13ed65d3b28fd74ba299cbc to your computer and use it in GitHub Desktop.
CompanyOS — AI-powered business operations layer for Claude Code

CompanyOS — AI-powered business operations layer for Claude Code

CompanyOS

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.


How It Works

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.


Architecture

┌─────────────────────────────────────────────────────────┐
│                     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.


Safety Posture

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_message without showing the full final email and waiting for explicit approval.
  • No secrets in the repo. All credentials live in GCP Secret Manager. setup.sh regenerates 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.

Skills

Listed by category. Each skill is a structured workflow with explicit triggers, guardrails, and output formats.

Communication

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

Operations & Decisions

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

Strategy & Analysis

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

Product & Launch

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

Personal & Misc

Skill When to use
co-music Spotify playback, search, playlist management

CompanyOS Itself (Meta)

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

Slash Commands

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

Agents

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

Automated Jobs (Edge Functions)

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

Why This Works

Three non-obvious things make CompanyOS practical at small scale:

  1. The marginal cost of skill creation is low. A new workflow takes 30 minutes — write a SKILL.md, add a trigger to co-skill-rules.json, run setup.sh. Compare that to building a new internal tool, hiring an ops person, or buying yet another SaaS. The skill fleet compounds.

  2. 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.

  3. 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment