# claude-ops **Business Operating System for Claude Code** ![Version](https://img.shields.io/badge/version-3.11.0-blue) ![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg) ![Claude Code Plugin](https://img.shields.io/badge/Claude%20Code-Plugin-blueviolet.svg) ![Skills](https://img.shields.io/badge/skills-66-success) ![Agents](https://img.shields.io/badge/agents-21-informational) ![Integrations](https://img.shields.io/badge/integrations-22-orange) ![Auto-fix](https://img.shields.io/badge/v2-auto--fix%20subsystem-ef4444) ![Safety](https://img.shields.io/badge/v2-safety%20hooks-22c55e) ![Models](https://img.shields.io/badge/Opus%204.6%20%2F%20Sonnet%204.6%20%2F%20Haiku%204.5-ff69b4) **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](https://github.com/Lifecycle-Innovations-Limited/claude-ops/releases/tag/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`](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. > [!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 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 ` | Native Phone.app dial via Continuity | | `facetime [--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
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: 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_.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/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:** - Phone home. No telemetry. No analytics. No crash reports. - Upload data to any third party you haven't configured. - Access clipboard, camera, microphone, or SSH keys. - Perform disk-wide scans — every scan is a targeted path. **Background daemon services (only those you enable):** - `briefing-pre-warm` every 2 min — parallel `ops-gather` for ECS/git/PRs/CI/unread. Local only. - `wacli-sync` continuous — WhatsApp Web protocol, same as standalone `wacli`. - `memory-extractor` every 30 min — Haiku summarizes local chats to `memories/`. - `inbox-digest` every 4h — aggregates for your configured Telegram bot (if any). - `store-health` daily 9am — Shopify Admin API, read-only. - `competitor-intel` weekly Mon 10:00 — full strategic synthesis for each configured brand (see below). - `competitor-alert` every 10 min — drains high-severity competitor events to Telegram + `alerts.log`. - `competitor-daily` daily 17:00 — drains medium-severity events into a grouped roll-up digest. - `message-listener` continuous — local polling, never sends outbound on its own. **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](https://github.com/Lifecycle-Innovations-Limited/claude-ops/wiki/Privacy-and-Security) for the full scan inventory and threat model. --- ## Requirements Just [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). --- ## What's New in v1.7.0 - **`/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. - **`/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. - **`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. - **`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. - **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. - **MCP auto-reconnect** — `PreToolUse` hook kills and respawns any disconnected MCP server without user prompting. - **57 skills, 21 agents** — up from 21/12 in v0.6.0. Full list in [`claude-ops/README.md`](./claude-ops/README.md#features). - **Models:** C-suite on **Opus 4.6**, scanners/monitors/fix agents on **Sonnet 4.6**, memory extractor on **Haiku 4.5**. --- ## Contributing PRs welcome — see [CONTRIBUTING.md](./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. ```bash # Development mode — load plugin from local directory claude --plugin-dir ./claude-ops/claude-ops # Reload after changes /reload-plugins ``` See [`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). --- ## License [MIT](./claude-ops/LICENSE) — built by [Lifecycle Innovations Limited](https://github.com/Lifecycle-Innovations-Limited).
**v1.7.0 · MIT · github.com/Lifecycle-Innovations-Limited**