Claude Code Plugins

Community-maintained marketplace

Feedback

Infrastructure operations - 1Password secrets, Coolify deployments, Postman tests, Hetzner/Hostinger servers

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name ops
description Infrastructure operations - 1Password secrets, Coolify deployments, Postman tests, Hetzner/Hostinger servers

Ops Skill

Infrastructure operations skill for managing deployments, secrets, servers, and API testing.

When to Use

Invoke this skill when:

  • Deploying applications to Coolify or Hostinger
  • Retrieving secrets from 1Password
  • Running API tests with Newman
  • Checking server status
  • Managing environment variables

Part 1: Secrets Management (1Password)

Prerequisites

1Password CLI must be installed and desktop app running:

op --version

Getting Secrets

# List vaults
op vault list

# List items in a vault
op item list --vault "Development"

# Get a specific credential
op item get "API_KEY" --fields password

# Get full item as JSON
op item get "Database Connection" --format json

Common Secret Patterns

# Database URL
DB_URL=$(op item get "Production Database" --fields connectionString)

# API keys
OPENAI_KEY=$(op item get "OpenAI" --fields apiKey)

# Service accounts
op item get "Service Account" --fields username,password

Error Handling

If 1Password CLI times out:

[ERROR] connecting to desktop app timed out

Solution: Ensure 1Password desktop app is running with CLI integration enabled.


Part 2: Coolify Deployments

Coolify is the primary deployment platform with 50+ mycli tools available.

Server Management

# List all servers
mycli run coolify/servers/list

# Get server details
mycli run coolify/servers/get --uuid "server-uuid"

# Check server resources
mycli run coolify/servers/resources --uuid "server-uuid"

# Validate server connection
mycli run coolify/servers/validate --uuid "server-uuid"

Application Management

# List all applications
mycli run coolify/apps/list

# Get application details
mycli run coolify/apps/get --uuid "app-uuid"

# Create new application (GitHub)
mycli run coolify/apps/create-github \
  --project_uuid "project-uuid" \
  --server_uuid "server-uuid" \
  --repository "owner/repo" \
  --branch "main"

# Deploy application
mycli run coolify/deployments/deploy --uuid "app-uuid"

# Get deployment status
mycli run coolify/deployments/get --uuid "deployment-uuid"

Environment Variables

# List env vars for an app
mycli run coolify/apps/env/list --uuid "app-uuid"

# Update single env var
mycli run coolify/apps/env/update \
  --uuid "app-uuid" \
  --key "API_KEY" \
  --value "new-value"

# Bulk update env vars
mycli run coolify/apps/env/bulk-update \
  --uuid "app-uuid" \
  --env "KEY1=value1,KEY2=value2"

Database Management

# List databases
mycli run coolify/databases/list

# Create PostgreSQL database
mycli run coolify/databases/create \
  --server_uuid "server-uuid" \
  --type "postgresql" \
  --name "mydb"

# Start/stop database
mycli run coolify/databases/start --uuid "db-uuid"
mycli run coolify/databases/stop --uuid "db-uuid"

Services

# List services
mycli run coolify/services/list

# Start/stop/restart service
mycli run coolify/services/start --uuid "service-uuid"
mycli run coolify/services/stop --uuid "service-uuid"
mycli run coolify/services/restart --uuid "service-uuid"

Part 3: Hostinger VPS (Docker)

For direct Docker projects on Hostinger VPS.

Docker Projects

# List Docker projects
mycli run hostinger/vps/docker/list --vm_id "vm-id"

# Get project details
mycli run hostinger/vps/docker/get --vm_id "vm-id" --project_id "project-id"

# Get project logs
mycli run hostinger/vps/docker/logs --vm_id "vm-id" --project_id "project-id"

# Start/stop/restart project
mycli run hostinger/vps/docker/start --vm_id "vm-id" --project_id "project-id"
mycli run hostinger/vps/docker/stop --vm_id "vm-id" --project_id "project-id"
mycli run hostinger/vps/docker/restart --vm_id "vm-id" --project_id "project-id"

VPS Management

# Get VPS info
mycli run hostinger/vps/get --vm_id "vm-id"

# List all VPS
mycli run hostinger/vps/list

Part 4: API Testing (Newman)

Run Postman collections for API testing.

Running Collections

# Basic run
newman run collection.json

# With environment
newman run collection.json -e environment.json

# With reporters
newman run collection.json -r cli,html --reporter-html-export report.html

# Specific folder
newman run collection.json --folder "Authentication"

CI Integration

# Run and fail on errors
newman run collection.json --bail

# Run with iteration data
newman run collection.json -d data.csv

# Run with delay between requests
newman run collection.json --delay-request 500

Common Workflows

Deploy to Production

# 1. Get production secrets
DB_URL=$(op item get "Production DB" --fields connectionString)

# 2. Update environment variables
mycli run coolify/apps/env/update \
  --uuid "prod-app-uuid" \
  --key "DATABASE_URL" \
  --value "$DB_URL"

# 3. Trigger deployment
mycli run coolify/deployments/deploy --uuid "prod-app-uuid"

# 4. Check deployment status
mycli run coolify/deployments/list --uuid "prod-app-uuid"

Health Check All Servers

# Check Coolify servers
mycli run coolify/servers/list | jq '.[] | {name, status}'

# Check Hostinger VPS
mycli run hostinger/vps/list | jq '.[] | {hostname, state}'

# Run API health tests
newman run health-checks.json

Rotate Secrets

# 1. Generate new secret in 1Password
# 2. Update in Coolify
mycli run coolify/apps/env/update \
  --uuid "app-uuid" \
  --key "API_SECRET" \
  --value "$(op item get 'API Secret' --fields password)"

# 3. Restart application
mycli run coolify/services/restart --uuid "app-uuid"

# 4. Verify with API test
newman run auth-tests.json

Infrastructure Overview

Platform Type Count Purpose
Coolify PaaS 2 servers Main deployments
Hostinger VPS 2 servers Docker projects
Hetzner Cloud - Underlying infra

Access via mycli:

  • coolify/* - 50+ tools
  • hostinger/vps/* - VPS management
  • sentry/* - Error tracking (when configured)

Part 5: Error Tracking (Sentry/GlitchTip)

Manage error tracking and monitoring across environments.

Setup

Configure error tracking with:

/setup-error-tracking

Querying Errors via API

Until mycli has native Sentry integration, use the API directly:

# Set auth token
SENTRY_TOKEN=$(op item get "Sentry Auth Token" --fields password)

# List recent issues
curl -H "Authorization: Bearer $SENTRY_TOKEN" \
  "https://sentry.io/api/0/projects/ORG/PROJECT/issues/?query=is:unresolved"

# Get issue details
curl -H "Authorization: Bearer $SENTRY_TOKEN" \
  "https://sentry.io/api/0/issues/ISSUE_ID/"

# Resolve an issue
curl -X PUT -H "Authorization: Bearer $SENTRY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"status": "resolved"}' \
  "https://sentry.io/api/0/issues/ISSUE_ID/"

GlitchTip API (Same as Sentry)

GlitchTip uses Sentry-compatible API:

# Use your GlitchTip instance URL
GLITCHTIP_URL="https://errors.myapp.com"

curl -H "Authorization: Bearer $GLITCHTIP_TOKEN" \
  "$GLITCHTIP_URL/api/0/projects/ORG/PROJECT/issues/"

MyCLI Integration (Future)

When mycli has Sentry integration:

# List unresolved errors
mycli run sentry/issues/list \
  --project="myapp" \
  --query="is:unresolved"

# Get error details
mycli run sentry/issues/get --id="12345"

# Resolve issue
mycli run sentry/issues/resolve --id="12345"

# Get error stats
mycli run sentry/stats/errors \
  --project="myapp" \
  --period="24h"

# Create alert rule
mycli run sentry/alerts/create \
  --project="myapp" \
  --name="High error rate" \
  --conditions='[{"type":"event_frequency","value":100,"interval":"1h"}]'

Common Workflows

Investigate Production Error:

# 1. Get recent unresolved issues
curl -s -H "Authorization: Bearer $SENTRY_TOKEN" \
  "https://sentry.io/api/0/projects/ORG/PROJECT/issues/?query=is:unresolved&limit=10" \
  | jq '.[].title'

# 2. Get specific issue events
curl -s -H "Authorization: Bearer $SENTRY_TOKEN" \
  "https://sentry.io/api/0/issues/ISSUE_ID/events/" \
  | jq '.[0]'

# 3. Check if related to recent deploy
mycli run coolify/deployments/list --uuid "$APP_UUID" | head -5

Post-Deploy Error Check:

# Wait for errors after deploy
sleep 300  # 5 minutes

# Check for new errors since deploy
DEPLOY_TIME=$(date -u -d '5 minutes ago' +%Y-%m-%dT%H:%M:%S)
curl -s -H "Authorization: Bearer $SENTRY_TOKEN" \
  "https://sentry.io/api/0/projects/ORG/PROJECT/issues/?query=firstSeen:>$DEPLOY_TIME" \
  | jq 'length'

Storing Credentials

# Sentry Auth Token (for API access)
op item create \
  --category=api_credential \
  --title="Sentry Auth Token" \
  --vault="Development" \
  credential="sntrys_xxx..."

# Sentry DSN (for SDK)
op item create \
  --category=login \
  --title="Sentry DSN - MyApp" \
  --vault="Development" \
  url="https://sentry.io" \
  password="https://xxx@o123.ingest.sentry.io/123"