DAPR Configuration Validator
This skill automatically validates DAPR configuration files to catch errors before runtime.
When to Use
Claude automatically uses this skill when:
- A YAML file in
components/directory is created or modified - A
dapr.yamlfile is created or modified - User asks to validate DAPR configuration
- Before deployment to catch issues early
Validation Rules
dapr.yaml Validation
# Required structure
version: 1
common:
resourcesPath: ./components
apps:
- appId: my-service # Required: unique identifier
appDirPath: ./src # Required: path to app
appPort: 8000 # Required: application port
command: ["python", "main.py"]
Checks performed:
-
versionfield present and valid -
appsarray is not empty - Each app has required fields:
appId,appDirPath,appPort -
appPortvalues don't conflict - Referenced paths exist
- Commands are valid
Component YAML Validation
# Required structure
apiVersion: dapr.io/v1alpha1 # Must be exact
kind: Component # Must be exact
metadata:
name: component-name # Required: valid name
spec:
type: state.redis # Required: valid type
version: v1 # Required: valid version
metadata: # Component-specific fields
- name: redisHost
value: localhost:6379
Checks performed:
-
apiVersionisdapr.io/v1alpha1 -
kindisComponent -
metadata.nameis valid (lowercase, alphanumeric, hyphens) -
spec.typeis a valid DAPR component type -
spec.versionis specified - Required metadata fields for component type are present
- No secrets in plain text (warn if found)
- Secret references are properly formatted
Valid Component Types
State Stores:
state.redisstate.azure.cosmosdbstate.postgresqlstate.mongodbstate.azure.tablestorage
Pub/Sub:
pubsub.redispubsub.azure.servicebus.topicspubsub.kafkapubsub.rabbitmq
Secret Stores:
secretstores.azure.keyvaultsecretstores.local.filesecretstores.kubernetes
Bindings:
bindings.azure.blobstoragebindings.azure.eventgridbindings.cronbindings.http
Validation Process
-
Find Configuration Files
Scan for: - dapr.yaml in project root - components/*.yaml - components/**/*.yaml -
Parse YAML
- Validate YAML syntax
- Check for duplicate keys
- Verify proper indentation
-
Schema Validation
- Check required fields
- Validate field types
- Verify enum values
-
Cross-Reference Checks
- Components referenced in dapr.yaml exist
- Secret stores exist if secrets are referenced
- No conflicting ports or app-ids
-
Security Checks
- No hardcoded secrets
- Secret references properly formatted
- Scopes defined for sensitive components
Output Format
DAPR Configuration Validation Report
=====================================
✓ dapr.yaml - Valid
- 2 applications defined
- Resources path: ./components
✓ components/statestore.yaml - Valid
- Type: state.redis
- Name: statestore
⚠ components/pubsub.yaml - Warnings
- Type: pubsub.azure.servicebus.topics
- Warning: connectionString appears to contain a secret value
- Recommendation: Use secretKeyRef instead
✗ components/secrets.yaml - Invalid
- Error: Missing required field 'spec.type'
- Error: 'metadata.name' contains invalid characters
Summary: 2 valid, 1 warning, 1 error
Common Issues and Fixes
Missing Required Field
# Bad
spec:
metadata:
- name: host
value: localhost
# Good
spec:
type: state.redis
version: v1
metadata:
- name: redisHost
value: localhost:6379
Secret in Plain Text
# Bad (security risk)
- name: password
value: mysecretpassword
# Good (use secret reference)
- name: password
secretKeyRef:
name: redis-secrets
key: password
Invalid Component Name
# Bad
metadata:
name: My State Store # No spaces, uppercase
# Good
metadata:
name: my-state-store # Lowercase, hyphens only
Wrong apiVersion
# Bad
apiVersion: v1
# Good
apiVersion: dapr.io/v1alpha1
Integration Points
This skill integrates with:
config-specialistagent for deeper configuration helpdapr-debuggeragent when validation errors cause runtime issues/dapr:componentcommand to generate valid configs
