{"enrichment":{"faq":[{"a":"Prowler-provider guides you through extending the Prowler SDK by adding new cloud providers. Start by creating a provider folder under the providers directory following the established structure. Implement a provider class that inherits from the base provider, set up authentication handling, and create service classes for each cloud service you want to support. The skill provides templates and patterns for folder organization, credential management, and resource fetchers to accelerate development.","q":"How do I extend prowler SDK with a new cloud provider?"},{"a":"Prowler-provider explains the provider architecture through its directory layout and class hierarchy. Providers live in dedicated folders containing a __init__.py file, a provider class file, and service subfolders. Each service folder holds a service class and checks. The architecture separates concerns: the provider manages authentication and region handling, services encapsulate API clients as singletons, and checks implement audit logic. This structure ensures consistency across all Prowler providers.","q":"What is the prowler provider architecture and folder structure?"},{"a":"Prowler-provider teaches you to add services by creating a new service folder within your provider directory. Implement a service class that instantiates and manages the cloud API client as a singleton. Define resource fetcher methods that retrieve cloud resources, then create check files that use these fetchers to audit compliance. Follow the naming conventions and inheritance patterns shown in the skill to ensure your service integrates seamlessly with Prowler's check discovery and execution system.","q":"How do I add a service to an existing prowler provider?"},{"a":"Prowler-provider covers secure credential handling for providers. Authentication logic belongs in the provider class __init__ method, where you validate and store credentials from environment variables or CLI arguments. Use Prowler's credential management patterns to avoid exposing secrets in logs or error messages. The skill shows how to implement provider-specific authentication flows, handle multiple credential types, and integrate with Prowler's existing credential resolution order for consistency.","q":"How should prowler provider authentication and credentials be handled?"},{"a":"Prowler-provider addresses secure handling of sensitive data by teaching you to mark CLI arguments as secret-bearing and exclude them from debug output. Store sensitive values in environment variables rather than passing them directly through code. The skill demonstrates patterns for sanitizing logs, protecting credentials during provider initialization, and following Prowler's conventions for argument naming and validation to prevent accidental exposure.","q":"How do I handle sensitive CLI arguments and environment variables in prowler?"},{"a":"Prowler-provider provides service class patterns that establish consistency across the SDK. Services instantiate cloud API clients as singletons to avoid repeated authentication. Implement resource fetcher methods that query the cloud API and return structured data. Use exception handling to gracefully manage API errors and region availability. The skill shows how to organize checks within service folders, name them following Prowler conventions, and ensure they access resources through the service's client interface.","q":"What patterns should I follow for prowler service class implementation?"}],"shadow_tags":["cloud-provider-sdk","security-scanning-framework","multi-cloud-architecture","credential-management","api-client-pattern","compliance-automation","infrastructure-auditing","singleton-pattern"],"summary_rewrite":"Prowler-provider guides you through adding new cloud providers or services to the Prowler SDK. It provides the required directory structure, class templates for providers and services, and patterns for handling authentication and CLI arguments securely."},"files":[{"bytes":5528,"path":"skills/prowler-provider/SKILL.md","sha256":"38f2564d92b2e07d5ff96f23a421ede173cfdfc32e3192ec1c940196e12d8e96","url":"https://skillfed.io/files/prowler-cloud/prowler/prowler-provider/46730397/SKILL.md"}],"id":"prowler-cloud/prowler/prowler-provider","links":{"html":"https://skillfed.io/prowler-cloud/prowler/prowler-provider","md":"https://skillfed.io/prowler-cloud/prowler/prowler-provider.md","repo":"https://github.com/prowler-cloud/prowler"},"meta":{"agents_supported":[],"first_seen":"2026-07-28","forks":2285,"language":"Python","last_updated":"2026-07-27","license":"Apache-2.0","name":"prowler-provider","publisher":"prowler-cloud","stars":14491},"relations":{"similar":[{"id":"prowler-cloud/prowler/prowler-sdk-check"},{"id":"prowler-cloud/prowler/prowler"},{"id":"prowler-cloud/prowler/prowler-test-sdk"},{"id":"prowler-cloud/prowler/prowler-compliance-review"},{"id":"prowler-cloud/prowler/prowler-readme-table"},{"id":"prowler-cloud/prowler/jsonapi"},{"id":"prowler-cloud/prowler/tdd"},{"id":"prowler-cloud/prowler/prowler-test-api"},{"id":"prowler-cloud/prowler/django-drf"},{"id":"prowler-cloud/prowler/pytest"}]},"slug":{"owner":"prowler-cloud","repo":"prowler","skill":"prowler-provider"},"version":"46730397"}
