Prowler Studio is an AI workflow that ensures Claude Code follows Prowler’s skills, guardrails, and best practices when creating new security checks. What lands in the resulting pull request is consistent, tested, and ready for human review — not half-correct boilerplate that needs to be rewritten.Documentation Index
Fetch the complete documentation index at: https://docs.prowler.com/llms.txt
Use this file to discover all available pages before exploring further.
Contributor Tool: Prowler Studio is a workflow for advanced contributors adding new Prowler security checks. It is not part of Prowler Cloud, Prowler App, or Prowler CLI.
Prowler Studio Repository
Clone the source code, install Prowler Studio, and explore the agent workflow in detail.
The Problem
Adding a new check to Prowler is more than writing detection logic. A correct check has to:- Match Prowler’s exact service and check folder structure and naming conventions
- Wire up metadata, severity, remediation, tests, and compliance mappings
- Mirror the patterns used by the hundreds of existing checks in the same provider
- Actually load when Prowler scans for available checks — silent structural mistakes are easy to make
The Solution
Prowler Studio enforces the workflow end-to-end. Describe the check once — a markdown ticket, a Jira issue, or a GitHub issue — and the workflow:- Loads Prowler-specific skills into every agent. Every step starts with the same context an experienced Prowler engineer would have in mind. See AI Skills System for how skills are structured.
- Runs specialized agents in sequence. Implementation → testing → compliance mapping → review → PR creation. Each agent has one job and a tight scope.
- Verifies as it goes. The check must load in Prowler. Tests must pass. If something fails, the agent fixes it and re-runs (up to a bounded number of attempts) before moving on.
- Produces a complete pull request. Branch, passing check, tests, compliance mappings, and a pull request waiting for human review.
Quick Start
Install
Prowler Studio requiresuv — see the official installation guide.
Describe the Check
A ticket is a structured markdown description of the check to create. It is the only input the workflow needs; every agent (implementation, testing, compliance mapping, review, PR creation) uses it as the source of truth, so the more concrete it is, the closer the first PR will land to the desired outcome. The ticket can be supplied in three ways:- Local markdown file →
--ticket path/to/ticket.md - Jira issue →
--jira-url https://...(uses the issue body) - GitHub issue →
--github-url https://...(uses the issue body)
- The local copy at
check_ticket_template.mdcovers--ticketand Jira tickets. - A prefilled GitHub form is also available: Create a New Check Request issue.
Run the Workflow
From a local markdown ticket:Provide exactly one of
--ticket, --jira-url, or --github-url.What You Get
After a successful run the working environment contains:- A new branch on a clean Prowler worktree containing the check, metadata, tests, and compliance mappings
- A pull request opened against Prowler (skipped with
--local) - A timestamped log file under
logs/capturing every step the agents took
CLI Options
| Option | Short | Description |
|---|---|---|
--branch | -b | Branch name (default: feat/<ticket>-<check_name> or feat/<check_name>) |
--ticket | -t | Path to a markdown check ticket file |
--jira-url | -j | Jira ticket URL (e.g., https://mycompany.atlassian.net/browse/PROJ-123) |
--github-url | -g | GitHub issue URL (e.g., https://github.com/owner/repo/issues/123) |
--working-dir | -w | Working directory for the Prowler clone (default: ./working) |
--no-worktree | Legacy mode — work directly on the main clone instead of using worktrees | |
--cleanup-worktree | Remove the worktree after a successful pull request is created | |
--local | Keep changes local — skip push and pull request creation |
Configuration
Set these environment variables depending on the input source:| Variable | When Needed | Purpose |
|---|---|---|
GITHUB_TOKEN | --github-url (recommended) | Higher GitHub API rate limits and access to private issues |
JIRA_SITE_URL | --jira-url | Jira site, e.g. https://mycompany.atlassian.net |
JIRA_EMAIL | --jira-url | Email of the Jira account used to fetch the ticket |
JIRA_API_TOKEN | --jira-url | API token for the Jira account |

