Agent skill · Audited from source
Ops Integrate
skill · Lifecycle-Innovations-Limited/claude-opsMIT licenceAudited 31 Oct 2026 · source e6e2418e9e9c
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...
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
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
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | PASS | 0 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | NA | 0 |
L2 Instructions | Prompt injection, authority framing, hidden directives | FAIL | 3 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: no behavioural pass.
Findings (3)
HIGHPrompt injectionprompt.credential_read · SKILL.md:73
### Step 3 — Collect credential
- Why
- asks the agent to read credentials
- Fix
- —
HIGHPrompt injectionprompt.credential_read · SKILL.md:80
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
# 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
- ✕BLOCK D 69 / 100
first audit · source
e6e2418e9e9c
Similar skills
All automation skills →Lifecycle-Innovations-Limited/claude-ops
This skill should be used when the user asks to "ops command center", "/ops:ops", or "run the business". Single discovery router for all business operations — communications, projects, infrastructure, revenue,…
Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "competitor intel", "what did they...
Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "which keys are set", "missing...
Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "deploy auto-fix", "failed deploy", or...
Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "control the desktop", "click on...
Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "plugin broken", "ops doctor", or...
Questions about Ops Integrate
What does the Ops Integrate skill do?
Is Ops Integrate safe to install?
What can Ops Integrate access on my machine?
How current is this page?
Sources
- github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/cl — the audited source at commit e6e2418e9e9c and every finding aboveObserved · 31 Oct 2026
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.
- What does the Ops Integrate skill do?
- Is Ops Integrate safe to install?
- What can Ops Integrate access on my machine?