Skip to content
Back to skills

Ops Integrate

ASecurity

Add any SaaS API as a first-class integration. Provide the service name — ops-integrate discovers auth patterns, tests connectivity, and registers the API in your partner registry so it's available to other skills.

  • 538 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 27, 2026
data-aibashapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-integrate --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ops Integrate?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ops Integrate
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/lifecycle-innovations-limited-ops-integrate/badge)](https://www.skillsdirectory.com/skills/lifecycle-innovations-limited-ops-integrate)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ops-integrate
description: Add any SaaS API as a first-class integration. Provide the service name — ops-integrate discovers auth patterns, tests connectivity, and registers the API in your partner registry so it's available to other skills.
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

## 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"
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.