OPS on-demand: This skill should be used when the user asks to "make a call", "facetime", or…

MITAuto-check: notes

Install Ops Voice

skills CLI
$ npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-voice -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Lifecycle-Innovations-Limited/claude-ops ops-voice --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Lifecycle-Innovations-Limited/claude-ops.git skills-src && mkdir -p .claude/skills && cp -r skills-src/claude-ops/skills/ops-voice .claude/skills/ops-voice && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
ops-voice
GitHub stars
542
Token cost
~3.6k tokens
SKILL.md length
1,016 words
Files
1
Skills in repo
67
Repo updated
First seen
Licence
MIT

At a glance

OPS on-demand: This skill should be used when the user asks to "make a call", "facetime", or…

  • Works in 5 steps: Resolve the sub-command from $ARGUMENTS… → For native handlers (phone/facetime/zoom… → For API channels… → …
  • Asks to make a call
  • SKILL.md covers Sub-commands, Routing from /ops:comms, Mobile / SSH mode (Rule 7) and Execution
  • Calls curl and jq; reaches meet.google.com and meet.new; needs ELEVENLABS_API_KEY and GROQ_API_KEY

What it does

Ops Voice is an agent skill from Lifecycle-Innovations-Limited/claude-ops. OPS on-demand: This skill should be used when the user asks to "make a call", "facetime", or…

Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It works with Twilio. The repository describes itself as: Business operating system for Claude Code — 57 skills, 21 agents, smart daemon. Unified inbox (WhatsApp/Email/Slack/Telegram), autonomous PR merge, full-AWS monitoring, revenue… The licence is MIT.

When your agent uses it

  • Asks to make a call

Example prompts

  • “make a call”
  • “facetime”
  • “/ops-voice”

Requirements

  • A credential in ZOOM_API_TOKEN
  • A credential in TWILIO_AUTH_TOKEN
  • Pre-approved tools (allowed-tools): Bash, Read, Write, AskUserQuestion, WebFetch

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Resolve the sub-command from $ARGUMENTS (first word).
  2. For native handlers (phone/facetime/zoom start|join), shell out to bin/ops-voice — exit fast.
  3. For API channels (twilio/bland/zoom-schedule/tts/transcribe), resolve credentials in order, then curl.
  4. If a required key is missing, suggest /ops:ops-voice setup.
  5. For 1:1 outbound channels (twilio-call/sms, bland-call): stage one draft → AskUserQuestion → send → next.

What it can do on your machine

Read from SKILL.md and the folder at commit ee9c784. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • Write
    • AskUserQuestion
    • WebFetch

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl
    • jq

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • meet.google.com
    • meet.new
    • demo.twilio.com
    • api.bland.ai
    • api.elevenlabs.io
    • api.groq.com
    • zoom.us
    • api.twilio.com
    • api.zoom.us
    • us05web.zoom.us

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • ELEVENLABS_API_KEY
    • GROQ_API_KEY
    • ZOOM_API_TOKEN
    • TWILIO_AUTH_TOKEN
    • BLAND_AI_API_KEY
    • EL_KEY
    • GROQ_KEY
    • ZOOM_CLIENT_SECRET

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Ops Voice loads about 3.6k tokens when it runs. Until then it costs about 26 tokens; SKILL.md has 1,016 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~26
When it runs · the whole SKILL.md, loaded when a task matches
~3.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, Write, AskUserQuestion, WebFetch

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Lifecycle-Innovations-Limited/claude-ops at commit ee9c784, republished under its MIT licence (© Lifecycle-Innovations-Limited). 1,016 words, ~3,558 tokens.

Download SKILL.mdSave it as .claude/skills/ops-voice/SKILL.md (or your agent's skills folder).
name
ops-voice
description
OPS on-demand: This skill should be used when the user asks to "make a call", "facetime", or…
allowed-tools
Bash, Read, Write, AskUserQuestion, WebFetch
argument-hint
[phone|facetime|zoom|meet|whatsapp-call|twilio-call|twilio-sms|bland-call|tts|transcribe|setup]

OPS:VOICE — Voice Operations

Load ops-rules before acting. Public repo (no personal data). Outbound: one draft → one approval → one send. If AskUserQuestion / Workflow are missing, follow Rule 10 in ops-rules (Hermes: numbered options / two-turn Telegram card; delegate_task).

Voice / phone / video interface. All API calls via curl — no SDK dependencies. Native macOS handlers (Phone.app, FaceTime, Zoom) require no credentials; programmatic channels (Twilio, Bland, ElevenLabs, Groq, Zoom schedule) resolve credentials via:

Credential resolution order: env vars → ops_cred_get (lib/credential-store.sh / keychain) → preferences.json → Doppler CLI (doppler secrets get <KEY> --plain) → password manager.

All sub-commands have a thin bash wrapper at bin/ops-voice — prefer it over inline curl when scripting.

Outbound comms guardrail (Rule 6): twilio-call, twilio-sms, and bland-call are 1:1 outbound channels and MUST follow the per-message approval gate — stage final draft, show full target+body, wait for explicit approval (AskUserQuestion or single-word chat approval), send one, then stage the next. Never batch.


Sub-commands

Parse $ARGUMENTS for the command keyword, then execute. Native handlers exit fast; API calls report status and (where relevant) a poll command.


phone <number> — Native Phone.app via Continuity

Routes through the linked iPhone. Requires macOS + iPhone signed in to the same iCloud account with Calls on Other Devices enabled. No credentials.

bash
bin/ops-voice phone "+1234567890" --json
# {"ok":true,"channel":"phone","detail":"dialing +1234567890 via Phone.app (Continuity)"}

Under the hood: open "tel:<E.164>".


facetime <number-or-email> [--audio] — FaceTime video/audio

Defaults to video. Pass --audio for FaceTime Audio (free, Apple↔Apple). Accepts phone numbers or Apple-ID emails.

bash
bin/ops-voice facetime user@example.com               # video
bin/ops-voice facetime "+1234567890" --audio --json   # audio

Under the hood: open "facetime://<handle>" or open "facetime-audio://<handle>".


zoom start|join|schedule — Zoom meetings
bash
# Open zoom.us app and start a new instant meeting
bin/ops-voice zoom start

# Join an existing meeting
bin/ops-voice zoom join 1234567890 --pwd <password>

# Schedule a meeting via Zoom REST API (requires ZOOM_API_TOKEN — Server-to-Server OAuth access token)
bin/ops-voice zoom schedule "<topic>" --start "2026-05-22T15:00:00Z" --duration 30 --json
# {"ok":true,"channel":"zoom","detail":"scheduled meeting 12345 — https://us05web.zoom.us/j/..."}

Native start/join use zoommtg:// URL scheme. Schedule requires ZOOM_API_TOKEN resolved via the order above. Generate a Server-to-Server OAuth app in your Zoom Marketplace, then exchange for an access token.


meet start|join — Google Meet
bash
# Open a brand-new instant meeting (https://meet.new)
bin/ops-voice meet start

# Join by meeting code (xxx-yyyy-zzz) or full URL
bin/ops-voice meet join abc-defg-hij
bin/ops-voice meet join https://meet.google.com/abc-defg-hij --json

meet start opens https://meet.new in the default browser (creates a fresh meeting and lands you in it). meet join accepts a 3-4-3 Google Meet code, a bare code, or a full URL — all are normalized to https://meet.google.com/<code>. No credentials needed; the user must be signed into Google in the browser.


whatsapp-call <number> [--video] — WhatsApp Desktop voice/video call
bash
# Voice call (default)
bin/ops-voice whatsapp-call "+1234567890"

# Video call
bin/ops-voice whatsapp-call "+1234567890" --video --json

Opens WhatsApp Desktop via the whatsapp://call?phone=<digits> or whatsapp://video?phone=<digits> URL scheme. Requires WhatsApp Desktop installed and signed in. The leading + is stripped — WhatsApp expects digits only after phone=. No credentials needed; the WhatsApp session lives in the desktop app.


join [--at now|next|HH:MM] [--window MIN] [--dry-run] — Smart calendar-driven meeting joiner

Auto-joins the meeting that's happening now (within ±window minutes, default 10) or the next future meeting if nothing is current. Reads gog calendar events --all --today -j --sort start, extracts a conference URL from hangoutLink → conferenceData.entryPoints[] → location → description scan (supports Zoom, Google Meet, Microsoft Teams, Webex), applies the smart AV policy below, and hands off to the native opener (which honors Rule 7 on SSH/mobile).

bash
bin/ops-voice join                 # join current/next meeting
bin/ops-voice join --at next       # skip current, go to next future
bin/ops-voice join --window 5      # only consider events within ±5min of now
bin/ops-voice join --dry-run       # show what would happen — no launch
bin/ops-voice join --dry-run --json

AV policy (smart heuristic):

AttendeesCameraMicrophone
1–2ONON
3–9ONMUTED
10+OFFMUTED

Per-event overrides — tag the event description (case-insensitive):

[cam:on] [mic:off]      → force camera on, mic muted
[cam:off]               → force camera off (keep heuristic mic)
[mic:muted]             → force mic muted

Mic source — lid state:

  • macOS via ioreg AppleClamshellState → Yes=closed (external mic), No=open (MacBook mic).
  • Linux via /proc/acpi/button/lid/*/state → "open"/"closed".
  • Other OS / unknown → reports default; the meeting app uses whatever the system has selected.

Note: the script reports the policy and launches Camera Hub when present, but it does not programmatically flip Zoom/FaceTime/Meet in-app device settings — those apps remember the last-selected device, so flipping it once per app is permanent. (A future patch could AppleScript Zoom's preferences pane.)

Elgato Virtual Camera: if Elgato Camera Hub is installed (any OS), it's launched before the meeting opens so the virtual cam is registered. Detection paths:

  • macOS: /Applications/Elgato Camera Hub.app, ~/Applications/Elgato Camera Hub.app, /Applications/Camera Hub.app
  • Linux: elgato-camera-hub on PATH, or AppImage at ~/Applications/Elgato*CameraHub*.AppImage
  • Windows/WSL: ${PROGRAMFILES}/Elgato/CameraHub/CameraHub.exe

Zoom URL rewriting: when the picked event has a https://zoom.us/j/<ID>?pwd=<PWD> link, it's converted to zoommtg://zoom.us/join?confno=<ID>&pwd=<PWD> so the desktop app opens directly (no browser prompt). If cam=off from the policy, &zc=0 is appended.

Dry-run output (text mode):

dry-run: would join "Weekly Sync" (meet, 3 attendees)
  url=https://meet.google.com/abc-defg-hij
  cam=on mic=muted
  lid=closed mic_source=external
  elgato_hub=/Applications/Elgato Camera Hub.app

Show full SKILL.md (399 more words)Show less
twilio-call <to> <from> --twiml <URL> — Programmatic outbound voice

Real telco call (per-minute cost). Requires TWILIO_ACCOUNT_SID + TWILIO_AUTH_TOKEN. The --twiml URL must return TwiML XML describing call behavior — e.g. https://demo.twilio.com/docs/voice.xml or a custom Function/Studio flow.

bash
bin/ops-voice twilio-call "+1234567890" "+15551234567" \
  --twiml "https://demo.twilio.com/docs/voice.xml" --json

twilio-sms <to> <from> "<body>" — Programmatic outbound SMS
bash
bin/ops-voice twilio-sms "+1234567890" "+15551234567" "<body>" --json

For inbound SMS / WhatsApp routing, point your Twilio webhook at the ops daemon (out of scope for v1).


bland-call <number> "<prompt>" — Bland AI agent phone call

AI agent calls the number and follows the natural-language prompt. Recordings + transcripts available via the poll URL printed on success.

bash
bin/ops-voice bland-call "+1234567890" "<task prompt>" --json

Poll with: curl -H "authorization: $BLAND_AI_API_KEY" https://api.bland.ai/v1/calls/<call_id>.


tts [text] [--voice voice_id] [--out file.mp3] — ElevenLabs text-to-speech

Requires: ELEVENLABS_API_KEY (env / keychain / Doppler).

bash
EL_KEY="${ELEVENLABS_API_KEY:-$(doppler secrets get ELEVENLABS_API_KEY --plain 2>/dev/null || true)}"
VOICE_ID="${ELEVENLABS_VOICE_ID:-21m00Tcm4TlvDq8ikWAM}"  # Rachel
TEXT="<from $ARGUMENTS>"
OUT_FILE="${OUT_FILE:-/tmp/ops-tts-$(date +%s).mp3}"

curl -s -X POST "https://api.elevenlabs.io/v1/text-to-speech/${VOICE_ID}" \
  -H "xi-api-key: $EL_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"text\": \"$TEXT\",
    \"model_id\": \"eleven_monolingual_v1\",
    \"voice_settings\": {\"stability\": 0.5, \"similarity_boost\": 0.75}
  }" \
  --output "$OUT_FILE"

command -v afplay >/dev/null && afplay "$OUT_FILE" &
echo "Audio saved to: $OUT_FILE"

transcribe [file_path] — Groq Whisper transcription

Requires: GROQ_API_KEY (env / keychain / Doppler).

bash
GROQ_KEY="${GROQ_API_KEY:-$(doppler secrets get GROQ_API_KEY --plain 2>/dev/null || true)}"
AUDIO_FILE="<from $ARGUMENTS>"

[ -f "$AUDIO_FILE" ] || { echo "ERROR: $AUDIO_FILE not found"; exit 1; }

curl -s -X POST "https://api.groq.com/openai/v1/audio/transcriptions" \
  -H "Authorization: Bearer $GROQ_KEY" \
  -F "file=@$AUDIO_FILE" \
  -F "model=whisper-large-v3" \
  -F "response_format=json" | \
  jq -r '.text'

setup — Configure voice channels

Before asking for anything, auto-scan ALL sources in one background batch (Rule 4: run_in_background: true):

bash
# Env vars
printenv \
  TWILIO_ACCOUNT_SID TWILIO_AUTH_TOKEN TWILIO_FROM_NUMBER \
  BLAND_AI_API_KEY ELEVENLABS_API_KEY GROQ_API_KEY \
  ZOOM_API_TOKEN ZOOM_ACCOUNT_ID ZOOM_CLIENT_ID ZOOM_CLIENT_SECRET 2>/dev/null

# Shell profiles
grep -hE 'TWILIO|BLAND|ELEVENLABS|GROQ|ZOOM' \
  ~/.zshrc ~/.bashrc ~/.zprofile ~/.envrc 2>/dev/null | grep -v '^#'

# Doppler — ALL projects
for proj in $(doppler projects --json 2>/dev/null | jq -r '.[].slug'); do
  for cfg in dev stg prd; do
    doppler secrets --project "$proj" --config "$cfg" --json 2>/dev/null | \
      jq -r --arg p "$proj" --arg c "$cfg" \
        'to_entries[]
         | select(.key | test("TWILIO|BLAND|ELEVENLABS|GROQ|ZOOM"; "i"))
         | "\(.key)=\(.value.computed | .[0:12])... (doppler:\($p)/\($c))"'
  done
done

# Keychain
for svc in twilio bland-ai elevenlabs groq zoom; do
  security find-generic-password -s "$svc" -w 2>/dev/null >/dev/null \
    && echo "[keychain] $svc ✓"
done

# Native macOS prerequisites
ls /Applications/zoom.us.app \
   /System/Applications/FaceTime.app \
   /System/Applications/Phone.app 2>/dev/null

Validate found keys (in parallel):

ChannelProbe
Twiliocurl -u "$SID:$TOKEN" https://api.twilio.com/2010-04-01/Accounts/$SID.json
Blandcurl -H "authorization: $KEY" https://api.bland.ai/v1/me
ElevenLabscurl -H "xi-api-key: $KEY" "https://api.elevenlabs.io/v1/voices?page_size=1"
Groqcurl -H "Authorization: Bearer $KEY" https://api.groq.com/openai/v1/models
Zoomcurl -H "Authorization: Bearer $TOKEN" https://api.zoom.us/v2/users/me

Report each as [service] ✓ connected or [service] ✗ <error>. Rule 3 applies — never silently skip a channel. For each unset service, present AskUserQuestion with [Paste manually] / [Deep hunt — spawn agent] / [Skip].

Persist to preferences.json:

json
{
  "channels": {
    "voice": {
      "backend": "native+twilio+zoom+bland",
      "native": { "phone": true, "facetime": true, "zoom": true },
      "twilio": { "status": "configured", "from_number": "env:TWILIO_FROM_NUMBER" },
      "bland": { "status": "configured" },
      "zoom": { "status": "configured" }
    }
  },
  "default_channels": ["whatsapp", "email", "telegram", "slack", "voice"]
}

Routing from /ops:comms

Voice is wired into /ops:comms send-flow. The router resolves intent like:

User saysResolves to
call <name>ops-voice phone <number>
facetime <name>ops-voice facetime <handle>
start a zoomops-voice zoom start
text <name> "..."ops-voice twilio-sms ... "..."
have an AI call <name> and tell ...ops-voice bland-call <number> "..."

Contact-number lookup uses the same contact resolver as WhatsApp (mcp__whatsapp__search_contacts) plus an optional contacts.json map in preferences.json.


Mobile / SSH mode (Rule 7)

When $SSH_CONNECTION$SSH_CLIENT$SSH_TTY is set or $OPS_MOBILE=1:

  • bin/ops-voice still works for API channels.
  • Native channels (phone, facetime, zoom start|join) require a local macOS session — the script returns a plain-text instruction to open the URL on the host instead of calling open directly. The script must source lib/opener.sh and use ops_open_url for URL handoff.

(v1 of bin/ops-voice calls /usr/bin/open directly — Rule 7 adapter is a v1.1 follow-up; tracked in CHANGELOG.)


Execution

  1. Resolve the sub-command from $ARGUMENTS (first word).
  2. For native handlers (phone/facetime/zoom start|join), shell out to bin/ops-voice — exit fast.
  3. For API channels (twilio/bland/zoom-schedule/tts/transcribe), resolve credentials in order, then curl.
  4. If a required key is missing, suggest /ops:ops-voice setup.
  5. For 1:1 outbound channels (twilio-call/sms, bland-call): stage one draft → AskUserQuestion → send → next.

© Lifecycle-Innovations-Limited, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in claude-ops/skills/ops-voice of Lifecycle-Innovations-Limited/claude-ops.

Open the folder on GitHubat commit ee9c784

Compare with similar skills

Ops Voice next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Ops Voice compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ops Voice this skillLifecycle-Innovations-Limited/claude-ops542—~3.6kAutomated safety check: NotesMIT
PhoneBlockRunAI/ClawRouter6.6k—~2.4kAutomated safety check: PassMIT
Smscoreyhaines31/marketingskills54k1 repos~4.6kAutomated safety check: PassMIT
Breach Patternsbriiirussell/cybersecurity-skills413—~3.5kAutomated safety check: NotesMIT
Brigade Voice Callsspinabot/brigade11k—~288Automated safety check: PassMIT
Twilio Communicationsdavila7/claude-code-templates33k5 repos~2.3kAutomated safety check: PassMIT

Similar skills

  • Phone

    BlockRunAI/ClawRouter

    Verify phone numbers (carrier + SIM-swap fraud signals) and place AI-powered outbound voice calls via BlockRun's gateway (Twilio + Bland.ai).

    6.6k GitHub stars~2.4k tokensUpdated 4 days ago
    Auto-check passed
  • Sms

    coreyhaines31/marketingskills

    When the user wants to plan, build, or optimize SMS, MMS, or WhatsApp marketing — including welcome flows, abandoned cart texts, post-purchase, win-back, promotional sends, or transactional/auth SMS.

    54k GitHub starsUsed in 1 repo~4.6k tokens
    Marketing & SEOAuto-check passed
  • Breach Patterns

    briiirussell/cybersecurity-skills

    Learn from public breach disclosures — extract the audit question each one implies and check your own stack.

    413 GitHub stars~3.5k tokensUpdated 4 mo ago
    DatabasesAuto-check: notes
  • Brigade Voice Calls

    spinabot/brigade

    Starts and inspects phone calls through the Brigade voice-call plugin, using a CLI command or the voice_call tool, with Twilio, Telnyx, Plivo or a mock provider.

    11k GitHub stars~288 tokensUpdated yesterday
    Productivity & AutomationAuto-check passed
  • Twilio Communications

    davila7/claude-code-templates

    Build communication features with Twilio: SMS messaging, voice calls, WhatsApp Business API, and user verification (2FA).

    33k GitHub starsUsed in 5 repos~2.3k tokens
    Backend & APIsAuto-check passed
  • Voice Call

    trpc-group/trpc-agent-go

    Start voice calls via the OpenClaw voice-call plugin. An agent skill from trpc-group/trpc-agent-go.

    1.9k GitHub starsUsed in 4 repos~290 tokens
    Auto-check passed

More from Lifecycle-Innovations-Limited/claude-ops

All 67 skills in this repo
  • Ops Dash

    Lifecycle-Innovations-Limited/claude-ops

    OPS on-demand: This skill should be used when the user asks to "ops dashboard", "pixel HQ", or…

    542 GitHub stars~4.7k tokensUpdated today
    Auto-check: notes
  • Ops Gtm

    Lifecycle-Innovations-Limited/claude-ops

    OPS on-demand: This skill should be used when the user asks to "go to market", "GTM plan", or…

    542 GitHub stars~3.7k tokensUpdated today
    Auto-check: notes
  • Ops Marketing

    Lifecycle-Innovations-Limited/claude-ops

    OPS on-demand: This skill should be used when the user asks to "klaviyo", "ads spend", or…

    542 GitHub stars~3.5k tokensUpdated today
    Auto-check: notes
  • Ops Socials

    Lifecycle-Innovations-Limited/claude-ops

    OPS on-demand: This skill should be used when the user asks to "tweet", "post to linkedin", or…

    542 GitHub stars~3.6k tokensUpdated today
    Auto-check: notes
  • Ops Yolo

    Lifecycle-Innovations-Limited/claude-ops

    OPS on-demand: This skill should be used when the user asks to "yolo mode", "run the business today"…

    542 GitHub stars~4k tokensUpdated today
    Auto-check: notes
  • Ops Monitor

    Lifecycle-Innovations-Limited/claude-ops

    OPS on-demand: This skill should be used when the user asks to "datadog", "APM alerts", or…

    542 GitHub starsUsed in 1 repo~1.5k tokens
    Auto-check: notes

Works with

Questions about Ops Voice

What does Ops Voice do?

OPS on-demand: This skill should be used when the user asks to "make a call", "facetime", or…. Ops Voice is an agent skill from Lifecycle-Innovations-Limited/claude-ops.

When should I use Ops Voice?

Ops Voice fits situations like: asks to make a call.

How do I install Ops Voice in Claude Code?

Run `npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-voice -a claude-code`. Or copy the skill folder (claude-ops/skills/ops-voice in Lifecycle-Innovations-Limited/claude-ops) into .claude/skills/ops-voice in your project. Claude Code loads it when a task matches its description.

How do I install Ops Voice in Codex?

Run `npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-voice -a codex`. Or copy the skill folder (claude-ops/skills/ops-voice in Lifecycle-Innovations-Limited/claude-ops) into .agents/skills/ops-voice in your project. Codex loads it when a task matches its description.

Can I use Ops Voice in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-voice -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ops-voice, .gemini/skills/ops-voice, .github/skills/ops-voice and .opencode/skills/ops-voice in your project.

What does Ops Voice need to run?

Going by SKILL.md and its folder, Ops Voice needs the command-line tools its instructions call (curl and jq) and credentials named ELEVENLABS_API_KEY, GROQ_API_KEY, ZOOM_API_TOKEN and TWILIO_AUTH_TOKEN. Our summary lists: A credential in ZOOM_API_TOKEN; A credential in TWILIO_AUTH_TOKEN. Its frontmatter pre-approves these tools: Bash, Read, Write, AskUserQuestion, WebFetch.

Does Ops Voice access the network?

SKILL.md names 10 domains. In commands or code: meet.google.com, meet.new, demo.twilio.com, api.bland.ai, api.elevenlabs.io, api.groq.com, zoom.us, api.twilio.com, api.zoom.us and us05web.zoom.us; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Ops Voice safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Ops Voice use?

Ops Voice is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Ops Voice use?

About 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Ops Voice?

Skills that share tags, products or a category with Ops Voice: Phone (BlockRunAI/ClawRouter, 6.6k stars), Sms (coreyhaines31/marketingskills, 54k stars), Breach Patterns (briiirussell/cybersecurity-skills, 413 stars) and Brigade Voice Calls (spinabot/brigade, 11k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ops Voice?

Lifecycle-Innovations-Limited (a GitHub organization) maintains it in Lifecycle-Innovations-Limited/claude-ops, which has 542 GitHub stars. The repository holds 67 skills in this directory. The repository was last updated on October 10, 2026.

Source: Lifecycle-Innovations-Limited/claude-ops on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.