{"id":48748996,"url":"https://github.com/lifecycle-innovations-limited/claude-ops","last_synced_at":"2026-06-14T05:01:46.124Z","repository":{"id":350684407,"uuid":"1207844328","full_name":"Lifecycle-Innovations-Limited/claude-ops","owner":"Lifecycle-Innovations-Limited","description":"Business operating system for Claude Code — 25 skills, 13 agents, smart daemon. Unified inbox (WhatsApp/Email/Slack/Telegram), autonomous PR merge, full-AWS monitoring, revenue (Stripe+RevenueCat), e-commerce (Shopify), marketing (Klaviyo/Meta/GA4), voice (Bland/ElevenLabs), APM (Datadog/NewRelic/OTEL), YOLO mode.","archived":false,"fork":false,"pushed_at":"2026-06-12T01:59:13.000Z","size":5106,"stargazers_count":18,"open_issues_count":1,"forks_count":6,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-12T03:15:10.101Z","etag":null,"topics":["agent-teams","ai-agent","ai-automation","anthropic","autonomous-agent","aws","business-operations","claude","claude-code","claude-code-plugin","devops","ecommerce","inbox-zero","klaviyo","marketing","mcp","morning-briefing","pr-automation","shopify","terminal"],"latest_commit_sha":null,"homepage":"https://github.com/Lifecycle-Innovations-Limited/claude-ops/wiki","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Lifecycle-Innovations-Limited.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"Lifecycle-Innovations-Limited"}},"created_at":"2026-04-11T13:34:59.000Z","updated_at":"2026-06-12T01:55:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Lifecycle-Innovations-Limited/claude-ops","commit_stats":null,"previous_names":["auroracapital/claude-ops","lifecycle-innovations-limited/claude-ops"],"tags_count":125,"template":false,"template_full_name":null,"purl":"pkg:github/Lifecycle-Innovations-Limited/claude-ops","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lifecycle-Innovations-Limited%2Fclaude-ops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lifecycle-Innovations-Limited%2Fclaude-ops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lifecycle-Innovations-Limited%2Fclaude-ops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lifecycle-Innovations-Limited%2Fclaude-ops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lifecycle-Innovations-Limited","download_url":"https://codeload.github.com/Lifecycle-Innovations-Limited/claude-ops/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lifecycle-Innovations-Limited%2Fclaude-ops/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34309655,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-teams","ai-agent","ai-automation","anthropic","autonomous-agent","aws","business-operations","claude","claude-code","claude-code-plugin","devops","ecommerce","inbox-zero","klaviyo","marketing","mcp","morning-briefing","pr-automation","shopify","terminal"],"created_at":"2026-04-12T15:14:36.829Z","updated_at":"2026-06-14T05:01:46.093Z","avatar_url":"https://github.com/Lifecycle-Innovations-Limited.png","language":"Shell","funding_links":["https://github.com/sponsors/Lifecycle-Innovations-Limited"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# claude-ops\n\n**Business Operating System for Claude Code**\n\n![Version](https://img.shields.io/badge/version-2.2.0-blue)\n![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)\n![Claude Code Plugin](https://img.shields.io/badge/Claude%20Code-Plugin-blueviolet.svg)\n![Skills](https://img.shields.io/badge/skills-35-success)\n![Agents](https://img.shields.io/badge/agents-18-informational)\n![Integrations](https://img.shields.io/badge/integrations-22-orange)\n![Auto-fix](https://img.shields.io/badge/v2-auto--fix%20subsystem-ef4444)\n![Safety](https://img.shields.io/badge/v2-safety%20hooks-22c55e)\n![Models](https://img.shields.io/badge/Opus%204.6%20%2F%20Sonnet%204.6%20%2F%20Haiku%204.5-ff69b4)\n\n**One command. Sixty seconds. Your entire business, at a glance.**\n\n\u003c/div\u003e\n\n```\n╭──────────────────────────────────────────────────────────────────────────────╮\n│  /ops:go  ►  MORNING BRIEFING                              2026-04-12  09:03 │\n├─────────────────────────────────┬────────────────────────────────────────────┤\n│  INFRA    ████████████████  ok  │  ECS: 4/4 healthy  RDS: ok  Redis: ok     │\n│  CI/CD    ████████████░░░░  75% │  3 passing  1 failing  (my-api #847)  │\n│  INBOX    ░░░░░░░░░░░░░░░░  14  │  Slack: 9  Telegram: 3  Gmail: 2 unread   │\n│  PRs      ████████████████  3   │  3 ready to merge  1 needs review          │\n│  SPRINT   ████████████░░░░  67% │  Sprint 24  —  8 of 12 issues complete     │\n│  REVENUE  ████████████████  $   │  $2,847 MTD  ↑12% vs last month           │\n├─────────────────────────────────┴────────────────────────────────────────────┤\n│  Next action: merge feat/user-profile  ·  fix my-api CI  ·  reply @alice    │\n╰──────────────────────────────────────────────────────────────────────────────╯\n```\n\nTurn 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.\n\n---\n\n## What's new in v2.0\n\nv2 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).\n\n| Capability | Skill | Doc |\n|------------|-------|-----|\n| 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) |\n| Pre-installed specialist agents + silent `general-purpose` → specialist routing | (transparent) | [agents.md](claude-ops/docs/agents.md) |\n| Universal safety hooks: secret-scan, `rm -rf` anchor block, `main` push warn | (always-on) | [safety-hooks.md](claude-ops/docs/safety-hooks.md) |\n| 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) |\n| 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) |\n| Periodic Task* tracking nudge | (PostToolUse hook) | [CHANGELOG](claude-ops/CHANGELOG.md#4-universal-task-tracking-nudge) |\n| Windsor.ai live marketing data source for ops dashboards, marketing, socials \u0026 ecom | [`/ops:marketing`](claude-ops/skills/ops-marketing/SKILL.md) | [windsor-ai.md](docs/integrations/windsor-ai.md) |\n\n### Quick start for the auto-fix subsystem\n\n```bash\n# 1. Upgrade\n/plugin update ops@lifecycle-innovations-limited-claude-ops\n\n# 2. Run the wizard (hits new steps 6.5a–6.5d for v2 toggles)\n/ops:setup\n\n# 3. Map your repos to their deploy URLs\n/ops:deploy-fix configure\n# (opens ~/.claude/config/post-merge-services.json)\n\n# 4. From now on, every `gh pr merge` you run from Claude Code will:\n#    - poll the deploy workflow\n#    - curl /health on success\n#    - verify /version returns the merged SHA\n#    - on failure: auto-rerun transients, OR dispatch a Haiku deploy-fixer\n/ops:deploy-fix          # see status / budget / live runs\n```\n\nPer-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.\n\n---\n\n## Quick Start\n\n```bash\n# 1. Add the marketplace\n/plugin marketplace add Lifecycle-Innovations-Limited/claude-ops\n\n# 2. Install the plugin\n/plugin install ops@lifecycle-innovations-limited-claude-ops\n\n# 3. Run the guided setup wizard\n/ops:setup\n```\n\n\u003e [!TIP]\n\u003e **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 **\u003c3 seconds** from warm cache instead of ~30s cold.\n\n**Local development:**\n\n```bash\ngit clone https://github.com/Lifecycle-Innovations-Limited/claude-ops.git\nclaude --plugin-dir ./claude-ops/claude-ops\n```\n\n---\n\n## Commands\n\nAll 36 skills, grouped by category:\n\n| 🧭 Navigation | 📊 Daily Ops |\n|---|---|\n| `/ops` — pixel-art dashboard | `/ops:go` — morning briefing |\n| `/ops:dash` — same + hotkeys | `/ops:next` — priority next action |\n| `/ops:setup` — guided wizard | `/ops:inbox` — deep-context inbox zero |\n| `/ops:uninstall` — clean removal | `/ops:comms` — send/read any channel |\n|                                   | `/ops:merge` — autonomous PR pipeline |\n\n| 🛠️ Project \u0026 Eng | 💰 Business |\n|---|---|\n| `/ops:projects` — **portfolio dashboard** | `/ops:revenue` — **Stripe + RevenueCat** + AWS |\n| `/ops:linear` — sprint board | `/ops:ecom` — Shopify operations |\n| `/ops:triage` — cross-platform issues | `/ops:marketing` — Klaviyo/Meta/GA4/GSC |\n| `/ops:fires` — incidents + **all AWS** | `/ops:gtm` — **cross-channel GTM planner** |\n| `/ops:deploy` — ECS/Vercel/Actions | `/ops:voice` — **native + Twilio + Bland + Zoom + smart `join`** |\n| `/ops:monitor` — Datadog/New Relic/OTEL | `/ops:package` — carrier-agnostic shipping |\n| `/ops:competitors` — **self-discovering competitor intel** (v2.3) | |\n\n| 🤖 Automation | 🧰 Maintenance |\n|---|---|\n| `/ops:orchestrate` — parallel engine | `/ops:speedup` — **GPU/ANE + power hogs + OS actions** |\n| `/ops:yolo` — 4 parallel C-suite agents | `/ops:doctor` — plugin auto-repair |\n| `/ops:integrate` — add external service | `/ops:daemon` — launchd background brain |\n| `/ops:whatsapp-biz` — catalog/orders | `/ops:status` — plugin + daemon health |\n\n### Voice / phone / video (v2.9)\n\n`/ops:voice` is a full voice surface — not just AI calls.\n\n| Subcommand | What it does |\n|---|---|\n| `phone \u003cnumber\u003e` | Native Phone.app dial via Continuity |\n| `facetime \u003chandle\u003e [--audio]` | FaceTime video or audio |\n| `zoom start\\|join\\|schedule` | Native Zoom + REST scheduling |\n| `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) |\n| `twilio-call`, `twilio-sms` | Programmatic outbound voice + SMS |\n| `bland-call` | AI agent phone call |\n| `tts`, `transcribe` | ElevenLabs TTS + Groq Whisper |\n\nAll outbound 1:1 channels (twilio, bland) go through the per-message approval gate (Rule 6).\n\n### Skill routing\n\n```mermaid\nflowchart TD\n    U[\"User\"] --\u003e O[\"/ops\"]\n    O --\u003e D[\"Dashboard\"]\n    D --\u003e Daily[\"Daily Ops\"]\n    D --\u003e Eng[\"Project \u0026 Eng\"]\n    D --\u003e Biz[\"Business\"]\n    D --\u003e Auto[\"Automation\"]\n    Daily --\u003e go[\"/ops:go\"]\n    Daily --\u003e inbox[\"/ops:inbox\"]\n    Daily --\u003e merge[\"/ops:merge\"]\n    Eng --\u003e projects[\"/ops:projects\"]\n    Eng --\u003e linear[\"/ops:linear\"]\n    Eng --\u003e fires[\"/ops:fires\"]\n    Biz --\u003e revenue[\"/ops:revenue\"]\n    Biz --\u003e ecom[\"/ops:ecom\"]\n    Biz --\u003e marketing[\"/ops:marketing\"]\n    Auto --\u003e yolo[\"/ops:yolo\"]\n    Auto --\u003e orchestrate[\"/ops:orchestrate\"]\n```\n\n---\n\n## Before / After\n\n```\n┌────────────────────────────────────────────┬──────────────────────────────────────────────┐\n│  WITHOUT claude-ops                        │  WITH claude-ops                             │\n├────────────────────────────────────────────┼──────────────────────────────────────────────┤\n│  Open 6+ tabs every morning                │  /ops:go  ——  one command, done              │\n│  Context-switch between Slack/Telegram/    │  /ops:inbox  ——  unified view, all channels  │\n│  email                                     │                                              │\n│  Manually review and merge PRs one by one  │  /ops:merge  ——  autonomous pipeline         │\n│  SSH into servers to check health          │  /ops:fires  ——  terminal dashboard          │\n│  Forget to track AWS spend                 │  /ops:revenue  ——  automatic cost snapshot   │\n│  Switch between Linear and GitHub          │  /ops:linear + /ops:projects  ——  unified    │\n└────────────────────────────────────────────┴──────────────────────────────────────────────┘\n```\n\n---\n\n## Integrations (22 services)\n\nMost integrations offer two paths — MCP (zero-config OAuth) or CLI (fuller feature set). The setup wizard lets you choose per-integration.\n\n| SERVICE | MCP | CLI | WHAT YOU LOSE WITHOUT CLI |\n|---|---|---|---|\n| GitHub | — | `gh` (auto) | EVERYTHING — CI logs, PR merge, triage all require `gh` |\n| AWS | — | `aws` (auto) | EVERYTHING — 17+ services probed by `infra-monitor` |\n| **Stripe** | — | **API key** | **Required for `/ops:revenue` MRR — web + desktop subs** |\n| **RevenueCat** | — | **API key + project ID** | **Required for mobile-app subscription MRR** |\n| Linear | OAuth via Claude.ai (12 tools) | — | Nothing — fully covered |\n| Vercel | OAuth via Claude.ai | — | Nothing — deploy status, build + runtime logs |\n| Slack | OAuth via Claude.ai | local bot token | MCP covers most. Token adds: unlimited search, private ch |\n| Gmail | OAuth (read) | `gog` (send+archive) | MCP = read-only. CLI = full autonomous inbox |\n| Calendar | OAuth via Claude.ai | `gog` (read-only) | MCP has more features — either works |\n| Sentry | OAuth via Claude.ai | `sentry-cli` | MCP covers triage. CLI adds source maps + releases |\n| WhatsApp | — | `wacli` | EVERYTHING — no MCP exists |\n| Telegram | — | bundled MCP server | EVERYTHING — plugin ships its own MTProto server |\n| Shopify | — | Admin API + template | Store ops, order mgmt, inventory via `/ops:ecom` |\n| Klaviyo | — | API key | Email/SMS campaigns via `/ops:marketing` |\n| Meta Ads | — | API token | Paid-social reporting via `/ops:marketing` |\n| GA4 | — | service account | Analytics via `/ops:marketing` |\n| GSC | — | service account | Search Console via `/ops:marketing` |\n| Bland AI | — | API key | Outbound voice via `/ops:voice` |\n| ElevenLabs | — | API key | TTS + cloning via `/ops:voice` |\n| Whisper | — | API key | Transcription via `/ops:voice` |\n| Twilio | — | API (Account SID + Auth Token) | Outbound voice + SMS via `/ops:voice twilio-*` |\n| Zoom | Server-to-Server OAuth | API token | Native start/join (no creds) + REST schedule via `/ops:voice zoom *` |\n| macOS Phone / FaceTime | — | URL schemes (`tel:`, `facetime://`, `facetime-audio://`) | Native via Continuity — no creds, no API |\n| Elgato Camera Hub | — | auto-launched if installed | Virtual camera setup for meetings via `/ops:voice join` |\n| GSD | — | auto-detected | Optional — roadmap state; degrades gracefully |\n| Doppler | `@dopplerhq/mcp-server` (MCP) | `doppler` CLI (fallback) | Secrets manager; MCP server provides direct tool access |\n\n\u003e [!NOTE]\n\u003e **`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.\n\n---\n\n## Architecture\n\n```mermaid\nflowchart TB\n    CC[Claude Code] --\u003e S[Skills · 22]\n    CC --\u003e A[Agents · 12]\n    CC --\u003e H[Hooks]\n    S \u0026 A \u0026 H --\u003e RC[Runtime Context]\n    RC --\u003e P[preferences.json]\n    RC --\u003e M[memories/]\n    RC --\u003e SEC[Doppler · PW Mgr · Keychain · env]\n    CC \u003c--\u003e D[ops-daemon\u003cbr/\u003elaunchd · 7 services]\n```\n\nAll 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.\n\n\u003e **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.\n\n```\nclaude-ops/                        ← marketplace root (this repo, this README)\n├── .claude-plugin/\n│   └── marketplace.json           # points to ./claude-ops as plugin source\n├── README.md                      # ← you are here\n│\n└── claude-ops/                    ← plugin root (Claude Code loads from here)\n    ├── .claude-plugin/plugin.json\n    ├── CLAUDE.md                  # 5 non-negotiable plugin rules\n    ├── skills/                    # 22 slash commands\n    ├── agents/                    # 12 autonomous agents (Opus/Sonnet/Haiku)\n    ├── bin/                       # ops-gather · ops-shopify-create · gog fallback\n    ├── hooks/                     # SessionStart health check\n    ├── telegram-server/           # bundled MCP server (gram.js)\n    ├── templates/                 # Shopify Admin + app scaffolding\n    ├── tests/                     # bash validation · test-no-secrets.sh\n    └── .mcp.json                  # MCP server declarations\n```\n\n---\n\n## Agent Teams\n\nEvery 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.\n\n**Enable:** Set `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` in your environment.\n\n**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`.\n\n```\nTeamCreate(\"fire-fixers\")\nAgent(team_name=\"fire-fixers\", name=\"fix-ecs\", ...)\nAgent(team_name=\"fire-fixers\", name=\"fix-ci\", ...)\nSendMessage(to=\"fix-ecs\", content=\"This is P0, prioritize over CI\")\n```\n\n**Without the flag:** Skills fall back to standard fire-and-forget subagents — still parallel, but no coordination or steering.\n\n| Skill | Team name | Agents |\n|-------|-----------|--------|\n| `/ops:go` | `go-team` | infra-scanner, inbox-scanner, pr-scanner, sprint-scanner |\n| `/ops:inbox` | `inbox-channels` | whatsapp-scanner, email-scanner, slack-scanner, telegram-scanner |\n| `/ops:merge` | `merge-fixers` | fixer-[repo] per failing PR |\n| `/ops:fires` | `fire-fixers` | fix-[service] per active incident |\n| `/ops:triage` | `triage-fixers` | fix-[issue-id] per active issue |\n| `/ops:yolo` | `yolo-csuite` | ceo, cto, cfo, coo |\n| `/ops:orchestrate` | `orchestrate-team` | per-project agents (hybrid auto-select) |\n| `/ops:monitor` | `monitor-probes` | datadog-probe, newrelic-probe, otel-probe |\n| `/ops:doctor` | `doctor-fixers` | fix-manifest, fix-permissions, fix-registry |\n| `/ops:marketing` | `marketing-team` | email-metrics, ads-metrics, analytics-metrics, seo-metrics |\n| `/ops:ecom` | `ecom-team` | orders-scanner, inventory-scanner, fulfillment-scanner |\n| `/ops:deploy` | `deploy-team` | ecs-checker, vercel-checker, ci-checker |\n| `/ops:projects` | `projects-team` | project-[alias] per registered project |\n| `/ops:dash` | `dash-team` | infra-loader, comms-loader, projects-loader, business-loader |\n| `/ops:next` | `next-team` | fires-checker, comms-checker, prs-checker, sprint-checker |\n| `setup` | `setup-hunters` | hunt-[service] per credential deep hunt |\n\n**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.\n\n---\n\n## Competitor Intelligence (v2.3)\n\nA self-discovering competitive-intelligence pipeline that goes well past \"weekly Google Alert.\" Free signals + LLM curation, $0 incremental cost, configurable per brand.\n\n**Pipeline per configured brand:**\n\n1. **Discovery** (Tavily, cached 30d) — surfaces the current competitor landscape for `{brand_name}` in `{category}`.\n2. **Per-competitor signal collectors** run in parallel (`scripts/lib/competitor/`):\n   - `reddit-search.sh` — Reddit JSON API\n   - `hn-search.sh` — HN Algolia API\n   - `appstore-lookup.sh` — iTunes Lookup (opt-in for mobile brands)\n   - `jobs-feed.sh` — Greenhouse + Lever public APIs (senior-hire detection)\n   - `page-diff.sh` — HTML pricing/features/careers SHA snapshots with money-token detection\n3. **Severity routing** via `event-router.sh`:\n   - `high` (price change on direct rival, funding, Show HN going viral) → immediate Telegram push every 10 min via `competitor-alert` cron\n   - `med` → daily 17:00 grouped roll-up via `competitor-daily` cron\n   - `low` → state-only, surfaces in weekly strategic synthesis\n4. **Weekly synthesis** (Mon 10:00) — `claude_invoke` Sonnet 4.6 against 7-day events.jsonl window. Output: `NEW entrants / Competitor moves / Brand signal / Threats \u0026 opportunities`.\n\n**Where it shows up:**\n\n| Surface | What you see |\n|---|---|\n| `/ops:go` | `COMPETITOR` row: alerts count, last_run, top-3 event snippets |\n| `/ops:next` | Priority 2 (between fires + comms): `REACT: \u003ccompetitor\u003e \u003csource\u003e changed` |\n| `/ops:marketing` | PRICING MOVES + FUNDING + SENTIMENT section |\n| `/ops:ecom` | APP RELEASES + PRODUCT/PRICING CHANGES section |\n| `/ops:yolo` | CEO/CTO/CFO/COO agents each load role-specific vertical slice |\n| `/ops:competitors` | Dedicated dashboard + `bin/ops-competitors` CLI |\n| Disk | `$DATA_DIR/reports/competitor-intel/YYYY-MM-DD_\u003cbrand\u003e.md` |\n\n**Config** (`preferences.json .competitor_intel`):\n```json\n{\n  \"brand_name\": \"Healify\",\n  \"category\": \"AI health coaching apps\",\n  \"max_competitors\": 5,\n  \"report_timezone\": \"Europe/Amsterdam\",\n  \"app_store\": true,\n  \"urls\": {\n    \"Noom\": { \"pricing\": \"https://www.noom.com/plans/\", \"features\": \"...\" }\n  }\n}\n```\n\n**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).\n\n**Cost at 10-brand scale:** ~13 Tavily calls/wk + ~320k Sonnet tokens/mo on Max-OAuth = **$0 incremental**.\n\n---\n\n## Privacy \u0026 Security\n\n\u003e [!IMPORTANT]\n\u003e **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.\n\n**Credential resolution chain (in order):** Doppler MCP → Doppler CLI → 1Password/Dashlane/Bitwarden → macOS Keychain → env vars → Claude Code's encrypted `userConfig` (`~/.claude.json`).\n\n**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).\n\n**The plugin does NOT:**\n- Phone home. No telemetry. No analytics. No crash reports.\n- Upload data to any third party you haven't configured.\n- Access clipboard, camera, microphone, or SSH keys.\n- Perform disk-wide scans — every scan is a targeted path.\n\n**Background daemon services (only those you enable):**\n- `briefing-pre-warm` every 2 min — parallel `ops-gather` for ECS/git/PRs/CI/unread. Local only.\n- `wacli-sync` continuous — WhatsApp Web protocol, same as standalone `wacli`.\n- `memory-extractor` every 30 min — Haiku summarizes local chats to `memories/`.\n- `inbox-digest` every 4h — aggregates for your configured Telegram bot (if any).\n- `store-health` daily 9am — Shopify Admin API, read-only.\n- `competitor-intel` weekly Mon 10:00 — full strategic synthesis for each configured brand (see below).\n- `competitor-alert` every 10 min — drains high-severity competitor events to Telegram + `alerts.log`.\n- `competitor-daily` daily 17:00 — drains medium-severity events into a grouped roll-up digest.\n- `message-listener` continuous — local polling, never sends outbound on its own.\n\n**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.\n\n**Your rights:** `/ops:uninstall` removes everything · memory files are plain markdown · MIT licensed, source is public and auditable.\n\nSee the [Privacy \u0026 Security wiki page](https://github.com/Lifecycle-Innovations-Limited/claude-ops/wiki/Privacy-and-Security) for the full scan inventory and threat model.\n\n---\n\n## Requirements\n\nJust [Claude Code](https://claude.ai/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).\n\n---\n\n## What's New in v1.7.0\n\n- **`/gtm` — cross-channel go-to-market planner** (NEW skill). Strategy layer on top of `/ops:marketing` that generates plans across paid, unpaid, sales, and AI-automation avenues and hands launchable items to `/marketing` via the `Skill` tool.\n- **`/ops:projects` portfolio dashboard** — every project in the GSD registry with active phase, task count, dirty-file count, and open-PR status. Backed by the `gsd-registry-sync` daemon service.\n- **`ops-speedup` v2 parity** — `--gpu` (Neural Engine + GPU util via `powermetrics`), `--power` (energy hogs from `top -o pmem`), `--os-actions` (cross-platform kernel_task / WindowServer restarts + launchd/systemd masking behind an allowlist). Hardened against 9 review findings including a SEV-9 `eval` shell-injection and a SEV-8 RETURN-trap race.\n- **`ops-memory-extractor` Claude Code OAuth support** — prefers the OAuth token stored in the macOS Keychain (`Claude Code-credentials`) so memory extraction is billed against the Claude Max subscription instead of the API credit. Falls back to `ANTHROPIC_API_KEY`. The OAuth token is never exported to the shell.\n- **Persistent WhatsApp `--follow`** — `wacli-keepalive.sh` no longer tears down the follower within 5-20 min of start. `INITIAL_BACKFILL_DELAY=30` lets the follower stabilize before the first `--once` sweep, and a reentrant guard prevents overlapping sweeps.\n- **MCP auto-reconnect** — `PreToolUse` hook kills and respawns any disconnected MCP server without user prompting.\n- **30 skills, 14 agents** — up from 21/12 in v0.6.0. Full list in [`claude-ops/README.md`](./claude-ops/README.md#features).\n- **Models:** C-suite on **Opus 4.6**, scanners/monitors/fix agents on **Sonnet 4.6**, memory extractor on **Haiku 4.5**.\n\n---\n\n## Contributing\n\nPRs welcome — see [CONTRIBUTING.md](./CONTRIBUTING.md) for the full guide, branch rules, and PR workflow.\n\n**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.\n\n```bash\n# Development mode — load plugin from local directory\nclaude --plugin-dir ./claude-ops/claude-ops\n\n# Reload after changes\n/reload-plugins\n```\n\nSee [`claude-ops/README.md`](./claude-ops/README.md) for detailed documentation on each skill, agent, and integration. Full guides, troubleshooting, and the threat model live on the [wiki](https://github.com/Lifecycle-Innovations-Limited/claude-ops/wiki).\n\n---\n\n## License\n\n[MIT](./claude-ops/LICENSE) — built by [Lifecycle Innovations Limited](https://github.com/Lifecycle-Innovations-Limited).\n\n\u003cdiv align=\"center\"\u003e\n\n**v1.7.0 · MIT · github.com/Lifecycle-Innovations-Limited**\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flifecycle-innovations-limited%2Fclaude-ops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flifecycle-innovations-limited%2Fclaude-ops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flifecycle-innovations-limited%2Fclaude-ops/lists"}