---
name: aiskillstore-system-integration-validator
description: "Validates system integration before deployment. Use when checking ports, database connections, frontend-backend APIs, or debugging blocked/stuck workflows. Detects dead ends, bottlenecks, circular dependencies."
metadata:
  decimalai-skill-id: "be5bbc9b-1589-4a5c-8af3-ae012dd5fb93"
  decimalai-version-id: "ac8ff1c3-506c-4bd5-8250-c7bcaf668323"
  decimalai-version: "1"
  decimalai-body-sha256: "283df602fe66ea61fb79f5a7a5020a883b7489a11bf4254de752166277d965e7"
  decimalai-name: "aiskillstore/system-integration-validator"
  decimalai-format: "1"
  decimalai-invocation: "model"
  decimalai-category: "devops"
  decimalai-source: "https://app.decimal.ai/s/aiskillstore-system-integration-validator@1/SKILL.md"
---
# System Integration Validator

Validates system integration before deployment.

## When to Use

- Pre-deployment validation
- Checking port availability
- Verifying database connections
- Debugging stuck workflows
- Detecting dead ends or circular dependencies

## Workflow

### Step 1: Check Ports

Verify all required ports are free.

### Step 2: Verify Databases

Test PostgreSQL and Redis connections.

### Step 3: Validate API Contracts

Ensure frontend ↔ backend match.

### Step 4: Analyze Data Flow

Detect dead ends, orphan inputs, bottlenecks.

---

## Pre-Deployment Checklist

1. **Ports** - All required ports free
2. **Database** - Connection, pool, migrations OK
3. **API Contract** - Frontend ↔ Backend match
4. **Data Flow** - No dead ends or loops

## Port Check
```bash
for port in 3000 3001 5432 6379 8080; do
  lsof -i :$port > /dev/null 2>&1 && echo "⚠️ $port IN USE" || echo "✅ $port free"
done
```

## Database Check
```bash
pg_isready -h localhost -p 5432 && echo "✅ PostgreSQL OK"
redis-cli ping && echo "✅ Redis OK"
```

## Flow Analysis

Look for:
- **Dead ends**: Output never consumed
- **Orphan inputs**: Input never provided
- **Bottlenecks**: High in-degree (>3 inputs)
- **Circular deps**: A → B → A

## Common Blocks
```typescript
// ❌ No timeout
await fetch(url)

// ✓ With timeout
const ctrl = new AbortController()
setTimeout(() => ctrl.abort(), 5000)
await fetch(url, { signal: ctrl.signal })
```
