claude-ops — Claude Code plugin: overview and installation
Builds a single view of infrastructure, CI, inbox messages, pull requests, sprint progress, and revenue. Use it to review business operations at the start of a workday.
/plugin marketplace add anthropics/claude-plugins-community
/plugin install claude-ops@claude-communityWhat claude-ops does
Run /ops:go for a morning briefing covering infrastructure and CI health, open pull requests, sprint progress, messages from WhatsApp, Slack, Email, and Telegram, plus revenue from Stripe, RevenueCat, and AWS. The view combines several services, so its contents depend on those sources being connected.
The plugin also provides /ops:merge for autonomous PR merging, a production incident dashboard, and cross-platform issue triage. The project description lists 13 skills and 9 specialized agents. Installation takes two marketplace commands, in sequence.
What it helps with
- review infrastructure and CI in a morning briefing
- check open pull requests and sprint progress
- bring messages from several channels into one view
- inspect revenue from Stripe, RevenueCat, and AWS
- start an automated PR merge
Example prompts for the agent
- Give me a morning briefing on infrastructure, CI, pull requests, sprint progress, and revenue:
/ops:go. - Show messages from WhatsApp, Slack, Email, and Telegram in the briefing:
/ops:go. - Start the automated merge for ready pull requests:
/ops:merge.
How to install claude-ops
Plugin marketplace
/plugin marketplace add anthropics/claude-plugins-community/plugin install claude-ops@claude-communityStep by step, with commands for each platform: Claude Code plugins: marketplaces, installing, and building your own
Questions about claude-ops
How do I install claude-ops in Claude Code?
Run these commands in order: /plugin marketplace add anthropics/claude-plugins-community, then /plugin install claude-ops@claude-community.
What does claude-ops do?
Its /ops:go command creates a briefing with infrastructure, CI, inbox, pull request, sprint, and revenue information. The plugin also includes a command for autonomous PR merging.
Which services can appear in the briefing?
It can include messages from WhatsApp, Slack, Email, and Telegram, along with revenue data from Stripe, RevenueCat, and AWS.
Source text
SKILL.md · MIT
<div align="center">
# claude-ops
**Business Operating System for Claude Code**









**One command. Sixty seconds. Your entire business, at a glance.**
</div>
```
╭──────────────────────────────────────────────────────────────────────────────╮
│ /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: see the version badge above and the [latest release](https://github.com/Lifecycle-Innovations-Limited/claude-ops/releases/latest).** 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`](claude-ops/docs/harness-ports.md). Rules: [`skills/ops-rules/SKILL.md`](claude-ops/skills/ops-rules/SKILL.md). Full notes: [`CHANGELOG`](claude-ops/CHANGELOG.md).
---
## 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`](claude-ops/CHANGELOG.md#200--2026-04-26) and [`docs/migrating-from-v1.md`](claude-ops/docs/migrating-from-v1.md).
| Capability | Skill | Doc |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| Post-merge + build-failure auto-fix (PostToolUse hooks → headless Haiku fixer) | [`/ops:deploy-fix`](claude-ops/skills/ops-deploy-fix/SKILL.md) | [deploy-fix.md](claude-ops/docs/deploy-fix.md) |
| Pre-installed specialist agents + silent `general-purpose` → specialist routing | (transparent) | [agents.md](claude-ops/docs/agents.md) |
| Universal safety hooks: secret-scan, `rm -rf` anchor block, `main` push warn | (always-on) | [safety-hooks.md](claude-ops/docs/safety-hooks.md) |
| Recap marquee — multi-session digest in tmux `status-right` / `statusLine` | [`/ops:recap`](claude-ops/skills/ops-recap/SKILL.md) | [recap.md](claude-ops/docs/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`](claude-ops/skills/ops-rotate/SKILL.md), [`/ops:rotate-setup`](claude-ops/skills/ops-rotate-setup/SKILL.md) | [CHANGELOG](claude-ops/CHANGELOG.md#6-multi-account-claude-max-rotator) |
| Periodic Task\* tracking nudge | (PostToolUse hook) | [CHANGELOG](claude-ops/CHANGELOG.md#4-universal-task-tracking-nudge) |
| Windsor.ai live marketing data source for ops dashboards, marketing, socials & ecom | [`/ops:marketing`](claude-ops/skills/ops-marketing/SKILL.md) | [windsor-ai.md](docs/integrations/windsor-ai.md) |
### Quick start for the auto-fix subsystem
```bash
# 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
```bash
# 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)
```bash
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`](./installer/README.md) for the schema, supported agents, and `verify` / `doctor` / `update` / `uninstall` subcommands.
**Already installed? Check that every CLI loads the same skills (read-only):**
```bash
ops-update --check
# or, from a clone without npm dependencies:
node claude-ops/lib/parity/check.mjs
```
It compares the bytes Claude Code, Codex, Grok, Cursor and Hermes actually load
against the installed release and writes, fetches and locks nothing. Every
status, exit code and fix is in [`claude-ops/docs/skill-parity.md`](./claude-ops/docs/skill-parity.md).
> [!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:**
```bash
git clone https://github.com/Lifecycle-Innovations-Limited/claude-ops.git
claude --plugin-dir ./claude-ops/claude-ops
```
---
## Commands
All 68 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
```mermaid
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
```mermaid
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](https://docs.anthropic.com/en/docs/claude-code) — 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`):
```json
{
"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/B...
© Lifecycle-Innovations-Limited · MIT · Lifecycle-Innovations-Limited/claude-ops