anomalyarmor

armor-connect

1
0
# Install this skill:
npx skills add anomalyarmor/agents --skill "armor-connect"

Install specific skill from multi-skill repository

# Description

Connect a new data source to AnomalyArmor. Handles "connect my database", "add snowflake", "setup postgres", "connect warehouse".

# SKILL.md


name: armor-connect
description: Connect a new data source to AnomalyArmor. Handles "connect my database", "add snowflake", "setup postgres", "connect warehouse".
hooks:
PreToolUse:
- matcher: "Bash"
hooks:
- type: command
command: "python ${CLAUDE_PLUGIN_ROOT}/scripts/ensure-auth.py"
once: true


Connect Data Source

Guide users through connecting a new data source (database, warehouse) to AnomalyArmor.

Prerequisites

  • AnomalyArmor API key configured (~/.armor/config.yaml or ARMOR_API_KEY env var)
  • Python SDK installed (pip install anomalyarmor)
  • Database credentials ready

When to Use

  • "Connect my Snowflake warehouse"
  • "Add my PostgreSQL database"
  • "Setup Databricks connection"
  • "Connect a new data source"

Supported Data Sources

  • snowflake - Snowflake Data Cloud
  • postgresql - PostgreSQL
  • databricks - Databricks
  • bigquery - Google BigQuery
  • redshift - Amazon Redshift
  • mysql - MySQL
  • clickhouse - ClickHouse

Steps

  1. Ask user for data source type if not specified
  2. Collect connection configuration (credentials, host, database, etc.)
  3. Create the asset with client.assets.create()
  4. Test the connection with client.assets.test_connection()
  5. If successful, trigger schema discovery with client.assets.trigger_discovery()
  6. Track discovery progress with client.jobs.status()

Example Usage

Connect Snowflake

from anomalyarmor import Client
import time

client = Client()

# Create the asset
asset = client.assets.create(
    name="Analytics Warehouse",
    source_type="snowflake",
    connection_config={
        "account": "abc123.us-east-1",
        "warehouse": "COMPUTE_WH",
        "database": "ANALYTICS",
        "user": "anomalyarmor_user",
        "password": "your_password",  # Or use key pair auth
        "role": "ANOMALYARMOR_ROLE"  # Optional
    },
    description="Main analytics data warehouse"
)
print(f"Created asset: {asset.id}")

# Test connection
result = client.assets.test_connection(asset.id)
if result.success:
    print("Connection successful!")
else:
    print(f"Connection failed: {result.error_message}")
    exit(1)

# Trigger schema discovery
job = client.assets.trigger_discovery(asset.id)
print(f"Discovery started: {job.job_id}")

# Wait for discovery to complete
while True:
    status = client.jobs.status(job.job_id)
    print(f"Discovery progress: {status.get('progress', 0)}%")
    if status.get('status') in ('completed', 'failed'):
        break
    time.sleep(5)

if status.get('status') == 'completed':
    print("Schema discovery complete!")
else:
    print(f"Discovery failed: {status.get('error')}")

Connect PostgreSQL

from anomalyarmor import Client

client = Client()

asset = client.assets.create(
    name="Production Database",
    source_type="postgresql",
    connection_config={
        "host": "db.example.com",
        "port": 5432,
        "database": "production",
        "user": "readonly_user",
        "password": "your_password",
        "sslmode": "require"
    }
)

# Test and discover...

Connect Databricks

from anomalyarmor import Client

client = Client()

asset = client.assets.create(
    name="Databricks Lakehouse",
    source_type="databricks",
    connection_config={
        "host": "adb-1234567890.1.azuredatabricks.net",
        "http_path": "/sql/1.0/warehouses/abc123",
        "access_token": "dapi..."
    }
)

Connection Config by Source Type

Snowflake

{
    "account": "abc123.us-east-1",
    "warehouse": "COMPUTE_WH",
    "database": "ANALYTICS",
    "user": "user",
    "password": "password",
    "role": "ROLE_NAME"  # optional
}

PostgreSQL

{
    "host": "hostname",
    "port": 5432,
    "database": "dbname",
    "user": "user",
    "password": "password",
    "sslmode": "require"  # optional
}

BigQuery

{
    "project_id": "my-project",
    "credentials_json": "{...}"  # Service account JSON
}

Security Notes

  • Never hardcode credentials in scripts
  • Use environment variables or secure vaults
  • Create read-only database users for AnomalyArmor
  • Ensure network connectivity (whitelist IPs if needed)

Follow-up Actions

After connecting, use:
- /armor:monitor to set up freshness and schema monitoring
- /armor:analyze to generate AI intelligence
- /armor:status to verify health

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.