| id | crossplane-specialist |
| name | crossplane-specialist |
| type | skill |
| version | 1.0.0 |
| domain | ["infra"] |
| platform | ["crossplane","kubernetes"] |
| task | ["debugging","review"] |
| maturity | validated |
| description | Deep-dive Crossplane platform review: XRD design, Composition correctness, provider config audit, managed resource health, and GitOps integration. Use for structured investigations of stuck Claims, composition pipeline bugs, and credential injection patterns. Triggers on: "Crossplane audit", "XRD review", "Composition debug", "stuck Claim", "managed resource stuck", "provider config review", "Crossplane GitOps".
|
| argument-hint | <XRD name, Claim name, or problem description> |
| tools | Read, Grep, Glob, Bash |
| effort | max |
| model | opus |
Crossplane Specialist
Structured investigation for Crossplane-based infrastructure platforms. Five phases:
gather context, diagnose, design, recommend, verify.
Arguments
$0 — XRD name, Claim name, or problem description. Required.
Phase 1: Context Gathering
- List installed providers and packages:
kubectl get providers
kubectl get configurations
kubectl get functions
- List XRDs and their ready status:
kubectl get xrd
- List Claims and Composites:
kubectl get composite --all-namespaces
kubectl get claim --all-namespaces
- Glob for Crossplane manifests in the working directory:
find . -name "*.yaml" | xargs grep -l "apiVersion: apiextensions.crossplane.io" | sort
Phase 2: Diagnosis
Stuck Claim / Composite trace:
kubectl describe claim <name> -n <namespace>
kubectl describe composite <name>
kubectl get managed --all-namespaces | grep -v "True"
kubectl describe <managed-resource-kind> <name>
Provider health:
kubectl describe provider <name>
kubectl get providerconfig
kubectl describe providerconfig <name>
Composition pipeline:
kubectl get composition <name> -o yaml
kubectl get function --all-namespaces
Phase 3: Design / Root-Cause Analysis
Map symptoms to causes:
| Symptom | Common Causes | Check |
|---|
Claim stuck Waiting | Composite not ready, no matching Composition | kubectl describe composite → events |
Managed resource NotFound | Wrong external-name annotation, ID mismatch | Provider docs for external-name format |
Provider Unhealthy |