smithery/Sahib-Sawhney-WH

dapr-config-validator

Automatically validate DAPR configuration files (dapr.yaml, component YAML files) when they are created or modified.

Installation

$ npx skills add smithery/Sahib-Sawhney-WH --skill dapr-config-validator

Summary

  • Automatically validate DAPR configuration files (dapr.yaml, component YAML files) when they are created or modified.
  • Checks for schema compliance, missing required fields, invalid values, and common misconfigurations.
  • Use when validating DAPR configs, reviewing component setup, or before deployment.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery/Sahib-Sawhney-WH.

npx skills add smithery/Sahib-Sawhney-WH

Browse all from smithery/Sahib-Sawhney-WH

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Skill metadata

Parsed from SKILL.md frontmatter.

Allowed toolsRead, Grep, Glob

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,920 B
  • docs SUMMARY.md 329 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

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.yaml file 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:

  • version field present and valid
  • apps array is not empty
  • Each app has required fields: appId, appDirPath, appPort
  • appPort values 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:

  • apiVersion is dapr.io/v1alpha1
  • kind is Component
  • metadata.name is valid (lowercase, alphanumeric, hyphens)
  • spec.type is a valid DAPR component type
  • spec.version is 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.redis
  • state.azure.cosmosdb
  • state.postgresql
  • state.mongodb
  • state.azure.tablestorage

Pub/Sub:

  • pubsub.redis
  • pubsub.azure.servicebus.topics
  • pubsub.kafka
  • pubsub.rabbitmq

Secret Stores:

  • secretstores.azure.keyvault
  • secretstores.local.file
  • secretstores.kubernetes

Bindings:

  • bindings.azure.blobstorage
  • bindings.azure.eventgrid
  • bindings.cron
  • bindings.http

Validation Process

  1. Find Configuration Files

`` Scan for: - dapr.yaml in project root - components/*.yaml - components/**/*.yaml ``

  1. Parse YAML

- Validate YAML syntax - Check for duplicate keys - Verify proper indentation

  1. Schema Validation

- Check required fields - Validate field types - Verify enum values

  1. Cross-Reference Checks

- Components referenced in dapr.yaml exist - Secret stores exist if secrets are referenced - No conflicting ports or app-ids

  1. 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-specialist agent for deeper configuration help
  • dapr-debugger agent when validation errors cause runtime issues
  • /dapr:component command to generate valid configs