Claude Ops — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Claude Ops (Plugin) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<div align="center">
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.
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 |
# 1. Upgrade
/plugin update ops@lifecycle-innovations-limited-claude-ops
# 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 runsPer-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.
# 1. Add the marketplace
/plugin marketplace add Lifecycle-Innovations-Limited/claude-ops
# 2. Install the plugin
/plugin install ops@lifecycle-innovations-limited-claude-ops
# 3. Run the guided setup wizard
/ops:setup[!TIP] The wizard installs the background daemon EARLY (Step 2c). While you're still answering "connect Slack? [OAuth/Skip]" questions,briefing-pre-warmis already running every 2 minutes — pre-fetching ECS health, git state, PRs, CI, and unread counts. By the time setup finishes, your first/ops:gobriefing 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-opsAll 59 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 |
| 🛠️ 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 |
/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).
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"]┌────────────────────────────────────────────┬──────────────────────────────────────────────┐
│ 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 │
└────────────────────────────────────────────┴──────────────────────────────────────────────┘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 |
| — | 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.
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.jsonpointing"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 # MCP server declarationsEvery 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.
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:
{brand_name} in {category}.scripts/lib/competitor/):reddit-search.sh — Reddit JSON APIhn-search.sh — HN Algolia APIappstore-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 detectionevent-router.sh:high (price change on direct rival, funding, Show HN going viral) → immediate Telegram push every 10 min via competitor-alert cronmed → daily 17:00 grouped roll-up via competitor-daily cronlow → state-only, surfaces in weekly strategic synthesisclaude_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.
[!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):
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 for the full scan inventory and threat model.
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).
/ops:marketing that generates plans across paid, unpaid, sales, and AI-automation avenues and hands launchable items to /marketing via the Skill tool.gsd-registry-sync daemon service.--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.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.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.PreToolUse hook kills and respawns any disconnected MCP server without user prompting.claude-ops/README.md.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-pluginsSee claude-ops/README.md for detailed documentation on each skill, agent, and integration. Full guides, troubleshooting, and the threat model live on the wiki.
MIT — built by Lifecycle Innovations Limited.
<div align="center">
v1.7.0 · MIT · github.com/Lifecycle-Innovations-Limited
</div>
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.