Claude Code Plugins

Community-maintained marketplace

Feedback

AI-powered pipeline diagnostics. Explains why faces weren't detected, tracked, embedded, or clustered using OpenAI GPT-4o analysis. Use when debugging pipeline issues, reviewing unclustered tracks, or understanding why quality gates rejected faces.

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 pipeline-insights
description AI-powered pipeline diagnostics. Explains why faces weren't detected, tracked, embedded, or clustered using OpenAI GPT-4o analysis. Use when debugging pipeline issues, reviewing unclustered tracks, or understanding why quality gates rejected faces.

Pipeline Insights Skill

Use this skill to get AI-powered explanations for pipeline failures.

When to Use

  • Track wasn't clustered and you don't know why
  • Faces show "skipped" but the reason isn't clear
  • Quality gate rejected faces you expected to pass
  • Need to understand which config threshold to adjust
  • Batch diagnosing unclustered tracks

Quick Start

Diagnose a Single Track

curl -X POST "http://localhost:8000/diagnostics/episodes/{ep_id}/diagnose_track/{track_id}"

Diagnose All Unclustered Tracks

curl -X POST "http://localhost:8000/diagnostics/episodes/{ep_id}/diagnose_unclustered" \
  -H "Content-Type: application/json" \
  -d '{"max_tracks": 50}'

Check Service Status

curl "http://localhost:8000/diagnostics/status"

Understanding Results

Stage Progression

Each track progresses through these stages:

Stage Description Failure Meaning
detected RetinaFace found a face Face not visible or below confidence
tracked ByteTrack linked across frames Lost tracking or single-frame only
embedded ArcFace generated 512-d embedding Quality gate rejected (blur, pose, contrast)
clustered Agglomerative clustering assigned identity Below similarity threshold or outlier

Common Failure Patterns

"embedding:min_blur_score"

Cause: Face too blurry (motion blur, out of focus)

Check: max_blur_score in diagnostic vs threshold (default: 18.0)

Fix: Lower config/pipeline/faces_embed_sampling.yaml:

quality_gating:
  min_blur_score: 10.0  # default is 18.0

"clustering:min_identity_sim"

Cause: Embedding didn't match any existing cluster

Check: nearest_cluster_sim in diagnostic

Fix: Lower config/pipeline/clustering.yaml:

cluster_thresh: 0.44  # default is 0.52
min_identity_sim: 0.40  # default is 0.45

"detection:confidence"

Cause: Face detection confidence too low

Fix: Lower config/pipeline/detection.yaml:

confidence_th: 0.40  # default is 0.50

Config Reference

Embedding Thresholds

File: config/pipeline/faces_embed_sampling.yaml

Key Default Description
min_blur_score 18.0 Minimum Laplacian variance (sharpness)
min_confidence 0.45 Minimum detection confidence
min_quality_score 1.5 Combined quality score
max_yaw_angle 60.0 Maximum head rotation (degrees)
max_pitch_angle 45.0 Maximum head tilt (degrees)

Clustering Thresholds

File: config/pipeline/clustering.yaml

Key Default Description
cluster_thresh 0.52 Cosine similarity for clustering
min_identity_sim 0.45 Minimum similarity to centroid
min_cluster_size 1 Minimum tracks per cluster

Diagnostic Output Example

{
  "track_id": 59,
  "stage_reached": "tracked",
  "stage_failed": "embedded",
  "raw_data": {
    "faces_count": 1,
    "faces_skipped": 1,
    "skip_reasons": ["blurry:10.8"],
    "max_blur_score": 10.78,
    "embedding_generated": false
  },
  "ai_analysis": {
    "explanation": "Track 59 has only 1 face, and that face was too blurry (score 10.78) to generate an embedding. The minimum blur threshold is 18.0.",
    "root_cause": "Single-frame track with blur below quality gate",
    "blocked_by": "embedding:min_blur_score",
    "suggested_fixes": [
      "Lower min_blur_score to 10.0",
      "Manually assign track in Faces Review UI"
    ],
    "config_changes": [{
      "file": "config/pipeline/faces_embed_sampling.yaml",
      "key": "quality_gating.min_blur_score",
      "current": 18.0,
      "suggested": 10.0,
      "reason": "Allow blurrier faces for short tracks"
    }]
  }
}

Saved Reports

Diagnostic reports are saved to:

data/manifests/{ep_id}/diagnostics/
├── track_0059_diagnostic.json
├── track_0127_diagnostic.json
└── ...

Reports are cached - use force_refresh: true to regenerate.

Environment Variables

Variable Required Default Description
DIAGNOSTIC_PROVIDER No anthropic AI provider: anthropic or openai
ANTHROPIC_API_KEY If using Anthropic - Anthropic API key
ANTHROPIC_DIAGNOSTIC_MODEL No claude-sonnet-4-20250514 Claude model to use
OPENAI_API_KEY If using OpenAI - OpenAI API key
OPENAI_DIAGNOSTIC_MODEL No gpt-4o OpenAI model to use

Provider Fallback: If the preferred provider is unavailable, falls back to the other provider. If neither API key is set, uses rule-based analysis.

Related Skills