Live survey304 models · 14 providers · 22,792 auditsAudited grill-with-docs · SAFE →What changedHow we verifyllms.txt

Agent skill · Audited from source

Ops Integrate

skill · Lifecycle-Innovations-Limited/claude-opsMIT licenceAudited 31 Oct 2026 · source e6e2418e9e9c

★ 547pushed today
✕BLOCKGrade D · 69/100 · 3 findings · e6e2418
547repo stars · whole Lifecycle-Innovations-Limited/claude-ops

Is it safe? No — BLOCK, grade D (69/100). We read this skill's source at commit e6e2418e9e9c and found no filesystem, network or shell access and no hard-coded secrets. The audit raised 3 findings, 3 critical or high. What it does: OPS on-demand: This skill should be used when the user asks to "add an API", "integrate SaaS", or...

Ask an AI about this pageGChatGPTCClaudePPerplexityGeGeminiXGrok
More
Cite

Cite this page

ModelsAtlas. “Ops Integrate (Lifecycle-Innovations-Limited/claude-ops)”. Retrieved 31 Oct 2026. https://modelsatlas.com/skills/lifecycle-innovations-limited/ops-integrate

Blocked. The page stays public so you can check this skill if someone recommended it to you. The audit found 3 critical or high findings, starting with “Prompt injection” in SKILL.md:73. Do not install it without reading them.

Trust audit

Audit 0.4.1 · source read 31 Oct 2026

Trust score69/100✕BLOCK D
0 critical3 high0 medium0 low0 info

BLOCK means the audit found something that could harm you or your machine. Grade D is shared by 721 of 17,602 audited skills.

What the source does

  • FilesystemNone observedNo reads or writes in the source
  • NetworkNone observedNo outbound calls in the source
  • ShellNone observedNo commands run in the source
  • DependenciesPinnedNothing floats
  • SecretsNone foundNo keys in source

Five audit layers

LayerWhat we checkResultFindings
L0 ProvenanceRepo owner, licence, archive status, activityPASS0
L1 Static sourceSecrets, path traversal, supply chain, hidden codeNA0
L2 InstructionsPrompt injection, authority framing, hidden directivesFAIL3
L3 InventoryThe files and declarations match the sourcePASS0
L4 SandboxRun in isolation and watch behaviourSKIPPED why0

Gates applied: no behavioural pass.

Findings (3)

HIGHPrompt injectionprompt.credential_read · SKILL.md:73
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
### Step 3 — Collect credential
Why
asks the agent to read credentials
Fix
—
HIGHPrompt injectionprompt.credential_read · SKILL.md:80
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
If "Paste now": collect credential via AskUserQuestion free-text. Derive key name: `<lowercase_service_name>_api_key`
Why
asks the agent to read credentials
Fix
—
HIGHPrompt injectionprompt.credential_read · SKILL.md:145
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
# Read a credential for a registered integration
Why
asks the agent to read credentials
Fix
—

Audit 0.4.1 · source sha e6e2418e9e9c · 31 Oct 2026Report an issue or request a re-scan

Provenance

Who published it, and what the verdict is pinned to

  • PublisherLifecycle-Innovations-Limited GitHub organizationOwner of the repository this skill is read from
  • Source folderLifecycle-Innovations-Limited/claude-ops/claude-ops/skills/ops-integrateThe exact folder we audited
  • LicenceMITAs the repository states it
  • Commit pinned for this verdicte6e2418e9e9cA new audit runs when the source changes
  • Repository statusNot archivedPushed today
  • Sandboxed runNot runSkills are read, not executed; layer L4 is skipped

What it tells the agent

Full source on GitHub ↗

Its description: OPS on-demand: This skill should be used when the user asks to "add an API", "integrate SaaS", or...

---
name: ops-integrate
description: "OPS on-demand: This skill should be used when the user asks to \"add an API\", \"integrate SaaS\", or..."
argument-hint: '<service-name> [--url <base-url>] [--auth bearer|api-key|basic|oauth2] [--list]'
allowed-tools:
  - Bash
  - Read
  - Write
  - Edit
  - AskUserQuestion
  - WebSearch
effort: low
maxTurns: 25
---

## Runtime Context

```bash
PREFS="${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json"
PARTNER_REGISTRY=$(jq '.partner_registry // {}' "$PREFS" 2>/dev/null || echo '{}')
```

Parse `$ARGUMENTS`:

- Contains `--list` → run **List registered integrations** then exit
- Otherwise → run **Onboarding flow** with the service name as first positional argument

# OPS ► INTEGRATE

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`).

## List registered integrations (`--list`)

```bash
jq -r '.partner_registry // {} | to_entries[] | "\(.key): \(.value.base_url) [\(.value.auth_type)]"' "$PREFS" 2>/dev/null
```

Display as a table:

```
Registered integrations:
  hubspot       https://api.hubapi.com          [bearer]
  stripe        https://api.stripe.com          [bearer]
  sendgrid      https://api.sendgrid.com        [api-key]
```

If no integrations registered: `No integrations registered yet. Run /ops:integrate <service-name> to add one.`

## Onboarding flow (5 steps)

### Step 1 — Discover API details

If `--url` not provided, use WebSearch to find:

- Official API docs URL
- Base API URL
- Authentication pattern (bearer token / api-key header / basic auth / oauth2)
- API key generation URL (where the user gets credentials)
- Health/test endpoint (e.g., /healthz, /v1/ping, /me)

### Step 2 — Confirm with user

Present findings via AskUserQuestion (≤4 options):

```
Found: <service-name> API — Base URL: <url> — Auth: <auth-type>
[Looks correct — continue]  [Change base URL]  [Change auth type]  [Cancel]
```

If "Change base URL": AskUserQuestion with free-text input for the new URL.
If "Change auth type": AskUserQuestion (≤4 options): `[bearer]  [api-key]  [basic]  [oauth2]`

### Step 3 — Collect credential

```
Paste your <service-name> <auth-type> credential (it will be stored locally only)
[Paste now]  [Configure later]
```

If "Paste now": collect credential via AskUserQuestion free-text. Derive key name: `<lowercase_service_name>_api_key`

Write to preferences.json via atomic tmpfile swap:

```bash
tmp=$(mktemp)
jq --arg k "$KEY_NAME" --arg v "$CREDENTIAL" '.[$k] = $v' "$PREFS" > "$tmp" && mv "$tmp" "$PREFS"
```

### Step 4 — Health check

Curl the health/test endpoint with the credential:

```bash
# Bearer token
curl -sf -o /dev/null -w "%{http_code}" \
  -H "Authorization: Bearer ${CREDENTIAL}" \
  "${BASE_URL}${HEALTH_ENDPOINT}"

# API key header (X-Api-Key)
curl -sf -o /dev/null -w "%{http_code}" \
  -H "X-Api-Key: ${CREDENTIAL}" \
  "${BASE_URL}${HEALTH_ENDPOINT}"

# Basic auth
curl -sf -o /dev/null -w "%{http_code}" \
  -u "${CREDENTIAL}:" \
  "${BASE_URL}${HEALTH_ENDPOINT}"
```

Report: ✅ if HTTP 200-299, ⚠️ with status code otherwise. If credential not yet configured, skip health check and report `⬜ health check skipped — credential not configured`.

### Step 5 — Register in partner registry

```bash
tmp=$(mktemp)
jq --arg name "${SERVICE_NAME}" \
   --arg url "${BASE_URL}" \
   --arg auth "${AUTH_TYPE}" \
   --arg key_name "${KEY_NAME}" \
   --arg health "${HEALTH_ENDPOINT}" \
   '.partner_registry[$name] = {base_url: $url, auth_type: $auth, credential_key: $key_name, health_endpoint: $health, added: (now | todate)}' \
   "$PREFS" > "$tmp" && mv "$tmp" "$PREFS"
```

Confirmation output:

```
✅ <service-name> registered in partner registry
   Auth: <auth-type>
   Health: <base-url><health-endpoint>
   Credential key: <key-name>

   Access via: jq '.partner_registry["<service-name>"]' $PREFS
```

## CLI/API Reference

```bash
# List all registered integrations
jq '.partner_registry' "${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json"

# Look up a specific integration
jq '.partner_registry["hubspot"]' "$PREFS"

# Read a credential for a registered integration
jq -r ".$KEY_NAME" "$PREFS"

# Remove an integration from the registry
jq 'del(.partner_registry["<service-name>"])' "$PREFS" > tmp && mv tmp "$PREFS"
```

Excerpt, first 4,528 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.

Install

Pinned to the audited commit e6e2418

git clone https://github.com/Lifecycle-Innovations-Limited/claude-ops
git -C claude-ops checkout e6e2418e9e9c

The author documents no install command, so this uses the repository directly. Our verdict covers commit e6e2418e9e9c only.

Works in

The author has not said which agents this skill supports, and we have not tested it in any.

Audit history

Every audit, every source change

  1. ✕BLOCK D 69 / 100

    first audit · source e6e2418e9e9c

Questions about Ops Integrate

What does the Ops Integrate skill do?
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 (Stripe+RevenueCat), e-commerce (Shopify), marketing (Klaviyo/Meta/GA4), voice (Bland/ElevenLabs), APM (Datadog/NewRelic/OT
Is Ops Integrate safe to install?
No — not without reading the findings first. The audit graded it D (69/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What can Ops Integrate access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
How current is this page?
The grade is for one exact copy of the source (e6e2418e9e9c), read on 2026-10-31. The repository is watched, and a new audit runs when it changes — this is the first audit.

Sources

Spotted something wrong? Report a correction · Methodology

Keep going in your AI

Opens with this page as the source. We add nothing else to the prompt.