claude-ops README

The project's README from github.com/Lifecycle-Innovations-Limited/claude-ops. As one markdown file: README.md.

claude-ops

Business Operating System for Claude Code

Version License: MIT Claude Code Plugin Skills Agents Integrations Auto-fix Safety Models

One command. Sixty seconds. Your entire business, at a glance.

╭──────────────────────────────────────────────────────────────────────────────╮
│  /ops:go  ►  MORNING BRIEFING                              2026-04-12  09:03 │
├─────────────────────────────────┬────────────────────────────────────────────┤
│  INFRA    ████████████████  ok  │  ECS: 4/4 healthy  RDS: ok  Redis: ok     │
│  CI/CD    ████████████░░░░  75% │  3 passing  1 failing  (my-api #847)  │
│  INBOX    ░░░░░░░░░░░░░░░░  14  │  Slack: 9  Telegram: 3  Gmail: 2 unread   │
│  PRs      ████████████████  3   │  3 ready to merge  1 needs review          │
│  SPRINT   ████████████░░░░  67% │  Sprint 24  —  8 of 12 issues complete     │
│  REVENUE  ████████████████  $   │  $2,847 MTD  ↑12% vs last month           │
├─────────────────────────────────┴────────────────────────────────────────────┤
│  Next action: merge feat/user-profile  ·  fix my-api CI  ·  reply @alice    │
╰──────────────────────────────────────────────────────────────────────────────╯

Turn Claude Code into a complete business operating system — infrastructure health, CI/CD status, unified inbox, open PRs, sprint state, revenue snapshot (Stripe + RevenueCat + AWS), and autonomous C-suite agents that act on your behalf.


What's new in v3.6

Current: v3.6.1. One plugin, three harnesses, official skill shape.

Hermes Installer mirrors skills into ~/.hermes/skills for working slash commands and links hermes-plugin/ for skill_view("ops:*").
Grok Loads the Claude plugin as-is. No .grok-plugin.
Skills Third-person trigger descriptions, shared preamble, ops-rules (plugin-root CLAUDE.md is a pointer). Oversized skills split into references/.
Versions plugin.json = Hermes plugin.yaml = installer pin. ops-release keeps them together.
MCP Plugin .mcp.json is empty. Servers start on demand, not once per session.

Ports: claude-ops/docs/harness-ports.md. Rules: skills/ops-rules/SKILL.md. Full notes: CHANGELOG.


What's new in v2.0

v2 turns claude-ops from a briefing + comms surface into an autonomy layer for Claude Code itself. Purely additive — no v1 behaviour changes by default. See claude-ops/CHANGELOG.md and docs/migrating-from-v1.md.

Capability Skill Doc
Post-merge + build-failure auto-fix (PostToolUse hooks → headless Haiku fixer) /ops:deploy-fix deploy-fix.md
Pre-installed specialist agents + silent general-purpose → specialist routing (transparent) agents.md
Universal safety hooks: secret-scan, rm -rf anchor block, main push warn (always-on) safety-hooks.md
Recap marquee — multi-session digest in tmux status-right / statusLine /ops:recap recap.md
Multi-account Claude Max rotator with launchd daemon + AI-brain (jittered post-rotation respawn + /login re-auth so a freshly-rotated account isn't hit by a synchronized first-call burst) /ops:rotate, /ops:rotate-setup CHANGELOG
Periodic Task* tracking nudge (PostToolUse hook) CHANGELOG
Windsor.ai live marketing data source for ops dashboards, marketing, socials & ecom /ops:marketing windsor-ai.md

Quick start for the auto-fix subsystem

# 1. Upgrade
/plugin update ops@ops-marketplace

# 2. Run the wizard (hits new steps 6.5a–6.5d for v2 toggles)
/ops:setup

# 3. Map your repos to their deploy URLs
/ops:deploy-fix configure
# (opens ~/.claude/config/post-merge-services.json)

# 4. From now on, every `gh pr merge` you run from Claude Code will:
#    - poll the deploy workflow
#    - curl /health on success
#    - verify /version returns the merged SHA
#    - on failure: auto-rerun transients, OR dispatch a Haiku deploy-fixer
/ops:deploy-fix          # see status / budget / live runs

Per-repo budget caps (default 3/hour), single-flight locks, and content-hash dedup prevent runaway spending. Notifications route via macos/ntfy/pushover/discord/telegram/none. Every toggle is spacebar-toggleable in /plugins settings.


Quick Start

# 1. Add the marketplace (ships ops + desktop-act companion)
/plugin marketplace add Lifecycle-Innovations-Limited/claude-ops

# 2. Install the ops plugin
/plugin install ops@ops-marketplace
# Optional explicit companion (also run by /ops:setup and /ops:update):
# /plugin install desktop-act@ops-marketplace

# 3. Run the guided setup wizard (co-installs desktop-act by default)
/ops:setup

Cross-CLI install (Claude Code + Codex + Gemini + OpenClaw + Hermes + OpenCode)

git clone https://github.com/Lifecycle-Innovations-Limited/claude-ops.git
cd claude-ops/installer
npm install
node bin/claude-ops-installer.mjs install

One command mirrors upstream skills + binstubs into every detected CLI's expected layout from a single central config (~/.config/claude-ops-installer/config.yaml). See installer/README.md for the schema, supported agents, and verify / doctor / update / uninstall subcommands.

[!TIP] The wizard installs the background daemon EARLY (Step 2c). While you're still answering "connect Slack? [OAuth/Skip]" questions, briefing-pre-warm is already running every 2 minutes — pre-fetching ECS health, git state, PRs, CI, and unread counts. By the time setup finishes, your first /ops:go briefing loads in <3 seconds from warm cache instead of ~30s cold.

Local development:

git clone https://github.com/Lifecycle-Innovations-Limited/claude-ops.git
claude --plugin-dir ./claude-ops/claude-ops

Commands

All 66 skills, grouped by category:

🧭 Navigation 📊 Daily Ops
/ops — pixel-art dashboard /ops:go — morning briefing
/ops:dash — same + hotkeys /ops:next — priority next action
/ops:setup — guided wizard /ops:inbox — deep-context inbox zero
/ops:uninstall — clean removal /ops:comms — send/read any channel
/ops:merge — autonomous PR pipeline
/ops:relations — relationship manager
/ops:vip — VIP list, answered first
🛠️ Project & Eng 💰 Business
/ops:projects — portfolio dashboard /ops:revenue — Stripe + RevenueCat + AWS
/ops:linear — sprint board /ops:ecom — Shopify operations
/ops:triage — cross-platform issues /ops:marketing — Klaviyo/Meta/GA4/GSC
/ops:fires — incidents + all AWS /ops:gtm — cross-channel GTM planner
/ops:deploy — ECS/Vercel/Actions /ops:voice — native + Twilio + Bland + Zoom + smart join
/ops:monitor — Datadog/New Relic/OTEL /ops:package — carrier-agnostic shipping
/ops:competitors — self-discovering competitor intel (v2.3)
🤖 Automation 🧰 Maintenance
/ops:orchestrate — parallel engine /ops:speedup — GPU/ANE + power hogs + OS actions
/ops:yolo — 4 parallel C-suite agents /ops:doctor — plugin auto-repair
/ops:integrate — add external service /ops:daemon — launchd background brain
/ops:whatsapp-biz — catalog/orders /ops:status — plugin + daemon health

Voice / phone / video (v2.9)

/ops:voice is a full voice surface — not just AI calls.

Subcommand What it does
phone <number> Native Phone.app dial via Continuity
facetime <handle> [--audio] FaceTime video or audio
zoom start|join|schedule Native Zoom + REST scheduling
join [--at now|next] Auto-joins the current/next calendar meeting with smart AV defaults (cam/mic policy by attendee count, lid-state mic switching, Elgato auto-launch)
twilio-call, twilio-sms Programmatic outbound voice + SMS
bland-call AI agent phone call
tts, transcribe ElevenLabs TTS + Groq Whisper

All outbound 1:1 channels (twilio, bland) go through the per-message approval gate (Rule 6).

Skill routing

flowchart TD
    U["User"] --> O["/ops"]
    O --> D["Dashboard"]
    D --> Daily["Daily Ops"]
    D --> Eng["Project & Eng"]
    D --> Biz["Business"]
    D --> Auto["Automation"]
    Daily --> go["/ops:go"]
    Daily --> inbox["/ops:inbox"]
    Daily --> merge["/ops:merge"]
    Eng --> projects["/ops:projects"]
    Eng --> linear["/ops:linear"]
    Eng --> fires["/ops:fires"]
    Biz --> revenue["/ops:revenue"]
    Biz --> ecom["/ops:ecom"]
    Biz --> marketing["/ops:marketing"]
    Auto --> yolo["/ops:yolo"]
    Auto --> orchestrate["/ops:orchestrate"]

Before / After

┌────────────────────────────────────────────┬──────────────────────────────────────────────┐
│  WITHOUT claude-ops                        │  WITH claude-ops                             │
├────────────────────────────────────────────┼──────────────────────────────────────────────┤
│  Open 6+ tabs every morning                │  /ops:go  ——  one command, done              │
│  Context-switch between Slack/Telegram/    │  /ops:inbox  ——  unified view, all channels  │
│  email                                     │                                              │
│  Manually review and merge PRs one by one  │  /ops:merge  ——  autonomous pipeline         │
│  SSH into servers to check health          │  /ops:fires  ——  terminal dashboard          │
│  Forget to track AWS spend                 │  /ops:revenue  ——  automatic cost snapshot   │
│  Switch between Linear and GitHub          │  /ops:linear + /ops:projects  ——  unified    │
└────────────────────────────────────────────┴──────────────────────────────────────────────┘

Integrations (22 services)

Most integrations offer two paths — MCP (zero-config OAuth) or CLI (fuller feature set). The setup wizard lets you choose per-integration.

SERVICE MCP CLI WHAT YOU LOSE WITHOUT CLI
GitHub — gh (auto) EVERYTHING — CI logs, PR merge, triage all require gh
AWS — aws (auto) EVERYTHING — 17+ services probed by infra-monitor
Stripe — API key Required for /ops:revenue MRR — web + desktop subs
RevenueCat — API key + project ID Required for mobile-app subscription MRR
Linear OAuth via Claude.ai (12 tools) — Nothing — fully covered
Vercel OAuth via Claude.ai — Nothing — deploy status, build + runtime logs
Slack OAuth via Claude.ai local bot token MCP covers most. Token adds: unlimited search, private ch
Gmail OAuth (read) gog (send+archive) MCP = read-only. CLI = full autonomous inbox
Calendar OAuth via Claude.ai gog (read-only) MCP has more features — either works
Sentry OAuth via Claude.ai sentry-cli MCP covers triage. CLI adds source maps + releases
WhatsApp — wacli EVERYTHING — no MCP exists
Telegram — bundled MCP server EVERYTHING — plugin ships its own MTProto server
Shopify — Admin API + template Store ops, order mgmt, inventory via /ops:ecom
Klaviyo — API key Email/SMS campaigns via /ops:marketing
Meta Ads — API token Paid-social reporting via /ops:marketing
GA4 — service account Analytics via /ops:marketing
GSC — service account Search Console via /ops:marketing
Bland AI — API key Outbound voice via /ops:voice
ElevenLabs — API key TTS + cloning via /ops:voice
Whisper — API key Transcription via /ops:voice
Twilio — API (Account SID + Auth Token) Outbound voice + SMS via /ops:voice twilio-*
Zoom Server-to-Server OAuth API token Native start/join (no creds) + REST schedule via /ops:voice zoom *
macOS Phone / FaceTime — URL schemes (tel:, facetime://, facetime-audio://) Native via Continuity — no creds, no API
Elgato Camera Hub — auto-launched if installed Virtual camera setup for meetings via /ops:voice join
GSD — auto-detected Optional — roadmap state; degrades gracefully
Doppler @dopplerhq/mcp-server (MCP) doppler CLI (fallback) Secrets manager; MCP server provides direct tool access

[!NOTE] infra-monitor now covers every AWS service you have IAM for — ECS, EC2, RDS, Lambda, S3, CloudFront, ALB/NLB, API Gateway, SQS, SNS, DynamoDB, ElastiCache, Route 53, ACM, CloudWatch, Budgets, IAM. Probes run in parallel; services you can't access are silently skipped.


Architecture

flowchart TB
    CC[Claude Code] --> S[Skills · 22]
    CC --> A[Agents · 12]
    CC --> H[Hooks]
    S & A & H --> RC[Runtime Context]
    RC --> P[preferences.json]
    RC --> M[memories/]
    RC --> SEC[Doppler · PW Mgr · Keychain · env]
    CC <--> D[ops-daemon<br/>launchd · 7 services]

All skills use pre-execution shell blocks (! fences) that gather data before model context loads — zero extra latency, minimal token overhead. The ops-daemon pre-warms briefing data so /ops:go hits warm cache.

Why the nested claude-ops/claude-ops/ directory? Claude Code's plugin marketplace system requires a two-level layout: the repo root acts as a marketplace container (with .claude-plugin/marketplace.json pointing "source": "./claude-ops"), while the inner directory is the actual plugin root (with .claude-plugin/plugin.json, skills, agents, etc.). This is how Claude Code resolves and caches plugins — it cannot be flattened.

claude-ops/                        ← marketplace root (this repo, this README)
├── .claude-plugin/
│   └── marketplace.json           # points to ./claude-ops as plugin source
├── README.md                      # ← you are here
│
└── claude-ops/                    ← plugin root (Claude Code loads from here)
    ├── .claude-plugin/plugin.json
    ├── CLAUDE.md                  # 5 non-negotiable plugin rules
    ├── skills/                    # 22 slash commands
    ├── agents/                    # 12 autonomous agents (Opus/Sonnet/Haiku)
    ├── bin/                       # ops-gather · ops-shopify-create · gog fallback
    ├── hooks/                     # SessionStart health check
    ├── telegram-server/           # bundled MCP server (gram.js)
    ├── templates/                 # Shopify Admin + app scaffolding
    ├── tests/                     # bash validation · test-no-secrets.sh
    └── .mcp.json                  # empty on purpose — MCP starts on demand, not per session

Agent Teams

Every ops skill that spawns agents supports Claude Code Agent Teams — a coordination layer where agents share context, report progress, and accept mid-flight steering.

Enable: Set CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 in your environment.

How it works: When the flag is set, skills create a named team and dispatch agents into it. Agents within a team can share findings (e.g., an inbox agent discovers a Slack message referencing an email thread, so the email agent prioritizes it) and you can steer priorities via SendMessage.

TeamCreate("fire-fixers")
Agent(team_name="fire-fixers", name="fix-ecs", ...)
Agent(team_name="fire-fixers", name="fix-ci", ...)
SendMessage(to="fix-ecs", content="This is P0, prioritize over CI")

Without the flag: Skills fall back to standard fire-and-forget subagents — still parallel, but no coordination or steering.

Skill Team name Agents
/ops:go go-team infra-scanner, inbox-scanner, pr-scanner, sprint-scanner
/ops:inbox inbox-channels whatsapp-scanner, email-scanner, slack-scanner, telegram-scanner
/ops:merge merge-fixers fixer-[repo] per failing PR
/ops:fires fire-fixers fix-[service] per active incident
/ops:triage triage-fixers fix-[issue-id] per active issue
/ops:yolo yolo-csuite ceo, cto, cfo, coo
/ops:orchestrate orchestrate-team per-project agents (hybrid auto-select)
/ops:monitor monitor-probes datadog-probe, newrelic-probe, otel-probe
/ops:doctor doctor-fixers fix-manifest, fix-permissions, fix-registry
/ops:marketing marketing-team email-metrics, ads-metrics, analytics-metrics, seo-metrics
/ops:ecom ecom-team orders-scanner, inventory-scanner, fulfillment-scanner
/ops:deploy deploy-team ecs-checker, vercel-checker, ci-checker
/ops:projects projects-team project-[alias] per registered project
/ops:dash dash-team infra-loader, comms-loader, projects-loader, business-loader
/ops:next next-team fires-checker, comms-checker, prs-checker, sprint-checker
setup setup-hunters hunt-[service] per credential deep hunt

Compliance enforced by CI: tests/test-agent-teams.sh audits every skill for Agent Teams support — any skill with Agent in its allowed-tools must have TeamCreate/SendMessage, a documentation section, the feature flag check, and a fallback path.


Competitor Intelligence (v2.3)

A self-discovering competitive-intelligence pipeline that goes well past "weekly Google Alert." Free signals + LLM curation, $0 incremental cost, configurable per brand.

Pipeline per configured brand:

  1. Discovery (Tavily, cached 30d) — surfaces the current competitor landscape for {brand_name} in {category}.
  2. Per-competitor signal collectors run in parallel (scripts/lib/competitor/):
    • reddit-search.sh — Reddit JSON API
    • hn-search.sh — HN Algolia API
    • appstore-lookup.sh — iTunes Lookup (opt-in for mobile brands)
    • jobs-feed.sh — Greenhouse + Lever public APIs (senior-hire detection)
    • page-diff.sh — HTML pricing/features/careers SHA snapshots with money-token detection
  3. Severity routing via event-router.sh:
    • high (price change on direct rival, funding, Show HN going viral) → immediate Telegram push every 10 min via competitor-alert cron
    • med → daily 17:00 grouped roll-up via competitor-daily cron
    • low → state-only, surfaces in weekly strategic synthesis
  4. Weekly synthesis (Mon 10:00) — claude_invoke Sonnet 4.6 against 7-day events.jsonl window. Output: NEW entrants / Competitor moves / Brand signal / Threats & opportunities.

Where it shows up:

Surface What you see
/ops:go COMPETITOR row: alerts count, last_run, top-3 event snippets
/ops:next Priority 2 (between fires + comms): REACT: <competitor> <source> changed
/ops:marketing PRICING MOVES + FUNDING + SENTIMENT section
/ops:ecom APP RELEASES + PRODUCT/PRICING CHANGES section
/ops:yolo CEO/CTO/CFO/COO agents each load role-specific vertical slice
/ops:competitors Dedicated dashboard + bin/ops-competitors CLI
Disk $DATA_DIR/reports/competitor-intel/YYYY-MM-DD_<brand>.md

Config (preferences.json .competitor_intel):

{
  "brand_name": "My-Project",
  "category": "AI health coaching apps",
  "max_competitors": 5,
  "report_timezone": "Europe/Amsterdam",
  "app_store": true,
  "urls": {
    "Noom": { "pricing": "https://www.noom.com/plans/", "features": "..." }
  }
}

Required env: TAVILY_API_KEY (free tier 1000 searches/mo — covers ~30 brands). Optional: TELEGRAM_BOT_TOKEN + TELEGRAM_CHAT_ID for push delivery (otherwise reports persist to disk only).

Cost at 10-brand scale: ~13 Tavily calls/wk + ~320k Sonnet tokens/mo on Max-OAuth = $0 incremental.


Privacy & Security

[!IMPORTANT] Transparency matters. claude-ops reads from your AWS, GitHub, Linear, Sentry, WhatsApp, Email, Slack, Telegram, Shopify, Stripe, RevenueCat, and more. You should know exactly what it touches.

Credential resolution chain (in order): Doppler MCP → Doppler CLI → 1Password/Dashlane/Bitwarden → macOS Keychain → env vars → Claude Code's encrypted userConfig (~/.claude.json).

Setup auto-scan sources (only during /ops:setup): env, shell profiles, Doppler, 1Password, Dashlane, Bitwarden, macOS Keychain, Claude Code's ~/.claude.json, Chrome history URL list (never page content), Slack Playwright profile (only if chosen).

The plugin does NOT:

Background daemon services (only those you enable):

Security measures: umask 077 on preferences.json · credentials in Claude Code's encrypted userConfig · registry/preferences gitignored · tests/test-no-secrets.sh pre-commit · Rule 5 blocks destructive actions without confirmation · append-only shell profile writes.

Your rights: /ops:uninstall removes everything · memory files are plain markdown · MIT licensed, source is public and auditable.

See the Privacy & Security wiki page for the full scan inventory and threat model.


Requirements

Just Claude Code 1.0+. Everything else is installed automatically by /ops:setup via Homebrew (macOS), apt (Linux), or winget (Windows). /ops:speedup auto-detects macOS / Linux / WSL / Windows and applies host-appropriate tuning (no manual flags needed).


What's New in v1.7.0


Contributing

PRs welcome — see CONTRIBUTING.md for the full guide, branch rules, and PR workflow.

Branch strategy: main is the only long-lived branch. All work goes through feature branches → PR to main. Branch protection is enforced at repo and org level — no direct pushes, no force pushes, no branch deletion.

# Development mode — load plugin from local directory
claude --plugin-dir ./claude-ops/claude-ops

# Reload after changes
/reload-plugins

See claude-ops/README.md for detailed documentation on each skill, agent, and integration. Full guides, troubleshooting, and the threat model live on the wiki.


License

MIT — built by Lifecycle Innovations Limited.

v1.7.0 · MIT · github.com/Lifecycle-Innovations-Limited

claude-ops (Lifecycle-Innovations-Limited/claude-ops)

Searching Database…

What is this?A plugin that turns Claude Code into a business operating system: one /ops:go command surfaces infrastructure health, CI/CD status, a unified inbox, open PRs, sprint state and revenue (Stripe + RevenueCat + AWS), with autonomous C-suite agents that act on your behalf.
Is it a separate app, or does it live inside Claude Code?It lives inside Claude Code as a plugin — 57 skills and 21 agents you drive with /ops: slash commands in the terminal. Its installer can also mirror the same skills into Codex, Gemini, OpenClaw, Hermes and OpenCode.
How do I install it and what happens during setup?Run the cross-CLI installer once; a wizard then walks you through service connections and installs the background daemon early, so briefing data is pre-warmed every 2 minutes while you finish setup.
Which services and credentials does it actually need to be useful?The gh and aws CLIs are required — CI logs, PR merging and the AWS probes all depend on them. The rest of the 22 supported services (Stripe, Slack, Gmail, WhatsApp, Shopify and more) are optional, set up per service via MCP OAuth or an API key.
Do I need a Mac to use all the features?The core briefing works wherever Claude Code runs, but some features are macOS-only: the Claude Max account rotator runs as a launchd daemon, and dialing goes through the native Phone and FaceTime apps via Continuity.
Do agents running in parallel actually coordinate with each other?Only if you opt in: with CLAUDECODEEXPERIMENTALAGENTTEAMS=1, skills dispatch agents into named teams that share findings and accept mid-flight steering. Without the flag you get standard fire-and-forget parallel subagents.
What stops it from running wild — spending money, messaging people or breaking my repo?Always-on safety hooks scan for secrets, block rm -rf commands and warn before pushes to main. Outbound calls and texts pass a per-message approval gate, and the auto-fixer is capped at 3 fixes per hour by default.
What does the /ops:go morning briefing show?Infrastructure health, CI/CD status, unified inbox, open PRs, sprint state, a revenue snapshot from Stripe, RevenueCat and AWS, plus a competitor row with alerts. The ops-daemon pre-warms it all so the briefing loads from warm cache.
Which messaging channels does the unified inbox cover?WhatsApp, Gmail, Slack and Telegram. Gmail over MCP is read-only — the gog CLI unlocks a fully autonomous inbox; WhatsApp has no MCP at all and runs through the bundled wacli CLI.
What is YOLO mode?/ops:yolo spins up a C-suite of agents — CEO, CTO, CFO and COO — each loading a role-specific vertical slice of your business and acting autonomously instead of just briefing you.
How does the competitor intelligence feature work?Tavily discovers your competitors (its free tier covers ~30 brands), then collectors watch Reddit, Hacker News, the App Store, job boards and pricing pages. High-severity events push to Telegram every 10 minutes, and a weekly Monday synthesis is written by Sonnet.
Size
10.2 MB
Stars
546
Age
6mo
Commits · 90 Days