prowler-cloud/prowler/gh-aw
- community
Checking that the SKILL.md file is still in the repository.
Create and maintain GitHub Agentic Workflows (gh-aw) for Prowler. Trigger: When creating agentic workflows, modifying gh-aw frontmatter, configuring safe-outputs, setting up MCP servers in workflows, importing Copilot Custom Agents, or debugging gh-aw compilation.
Install
npx vskill@latest install prowler-cloud/prowler/gh-awSKILL.md
When to Use
- Creating new
.github/workflows/*.mdagentic workflows - Modifying frontmatter (triggers, permissions, safe-outputs, tools, MCP servers)
- Creating or importing
.github/agents/*.mdCopilot Custom Agents - Debugging
gh aw compileerrors or warnings - Configuring network access, rate limits, or footer templates
File Layout
See references/ for existing workflow and agent examples in this repo.
Critical Patterns
AGENTS.md Is the Source of Truth
Agent personas MUST NOT hardcode codebase layout, file paths, skill names, tech stack versions, or project conventions. All of this lives in the repo's AGENTS.md files and WILL go stale if duplicated.
Instead: Instruct the agent to READ AGENTS.md at runtime:
For monorepos with component-specific AGENTS.md files, include a routing table that tells the agent WHICH file to read based on context — but never copy the contents of those files into the agent:
Why this matters: Agent personas are deployed as workflow files. When AGENTS.md updates (new skills, renamed paths, version bumps), agents that READ it at runtime get the update automatically. Agents that HARDCODE it require a separate PR to stay current — and they won't.
Two-File Architecture
Workflow file = config + context only. Agent file = all reasoning logic.
The workflow imports the agent via imports: and passes sanitized runtime context. The agent contains the persona, rules, steps, and output format. This separation makes agents reusable across workflows.
Import Path Resolution
Paths resolve relative to the importing file, NOT from repo root:
Sanitized Context (Security)
NEVER pass raw github.event.issue.body to the agent:
Read-Only Permissions + Safe Outputs
Workflows run read-only. Writes go through safe-outputs:
Strict Mode
strict: true (default) enforces: no write permissions, explicit network config, no wildcard domains, ecosystem identifiers required. IMPORTANT: strict: true rejects custom domains in network.allowed — only ecosystem identifiers (defaults, python, node, etc.) are permitted. Workflows using custom MCP server domains (e.g., mcp.prowler.com) MUST use strict: false. This is an intentional tradeoff, not a development shortcut.
Footer Control
Prevent double footers with messages.footer:
Variables: {workflow_name}, {run_url}, {triggering_number}, {event_type}, {status}.
MCP Servers
Always use allowed to restrict tools. Add domains to network.allowed:
Security Hardening
Defense-in-Depth Layers (Workflow Author's Responsibility)
gh-aw provides substrate-level and plan-level security automatically. The workflow author controls configuration-level security. Apply ALL of the following:
| Layer | How | Why | |
|---|---|---|---|
| Read-only permissions | Only read in permissions: | Agent never gets write access | |
| Safe outputs | Declare writes in safe-outputs: | Writes happen in separate jobs with scoped permissions | |
| Sanitized context | ${{ needs.activation.outputs.text }} | Prevents prompt injection from raw issue/PR body | |
| Explicit network | List domains in network.allowed: | AWF firewall blocks all other egress | |
| Tool allowlisting | allowed: in each mcp-servers: entry | Restricts which MCP tools the agent can call | |
| Concurrency | concurrency: with cancel-in-progress: true | Prevents race conditions on same trigger | |
| Rate limiting | rate-limit: with max and window | Prevents abuse via rapid re-triggering | |
| Threat detection | Custom prompt under safe-outputs.threat-detection: | AI scans agent output before writes execute | |
| Lockdown mode | tools.github.lockdown: true/false | For PUBLIC repos, explicitly declare — filters content to push-access users |
Threat Detection
threat-detection: is nested UNDER safe-outputs: (NOT a top-level field). It is auto-enabled when safe-outputs exist. Customize the prompt to match your workflow's actual threat model:
Custom steps (steps: under threat-detection:) are for workflows that produce code patches (e.g., create-pull-request). For comment-only workflows, the AI prompt is sufficient — don't add TruffleHog/Semgrep steps unless the workflow generates files or patches.
Lockdown Mode (Public Repos)
For PUBLIC repositories, ALWAYS set lockdown: explicitly under tools.github::
Set lockdown: true for workflows that should only see content from users with push access. Set lockdown: false for triage, spam detection, planning — workflows designed to handle untrusted input. Requires GH_AW_GITHUB_TOKEN secret when true.
Compilation Security Scanners
Run the full scanner suite before shipping:
- actionlint: Workflow linting (includes shellcheck & pyflakes)
- zizmor: Security vulnerabilities, privilege escalation
- poutine: Supply chain risks, third-party action trust
Findings in the auto-generated .lock.yml from gh-aw internals can be ignored. Only act on findings in YOUR workflow configuration.
Trigger Patterns
| Pattern | Trigger | Use Case | |
|---|---|---|---|
| LabelOps | issues.types: [labeled] + names: [label] | Triage, review | |
| ChatOps | issue_comment + command parsing | Bot commands | |
| DailyOps | schedule: daily | Reports, maintenance | |
| IssueOps | issues.types: [opened] | Auto-triage on creation |
Dual-label gate (require trigger label + existing label):
Safe Outputs Quick Reference
| Type | What | Key options | |
|---|---|---|---|
add-comment | Post comment | hide-older-comments, target | |
create-issue | Create issue | title-prefix, labels, close-older-issues, expires | |
add-labels | Add labels | allowed (restrict to list) | |
remove-labels | Remove labels | allowed (restrict to list) | |
create-pull-request | Create PR | max, target-repo | |
close-issue | Close issue | target, required-labels | |
update-issue | Update fields | status, title, body | |
dispatch-workflow | Trigger workflow | workflows (list) |
AI Engines
| Engine | Value | Notes | |
|---|---|---|---|
| GitHub Copilot | copilot | Default, supports Custom Agents | |
| Claude | claude | Anthropic | |
| OpenAI Codex | codex | OpenAI |
Commands
Compilation Checklist
After modifying any .github/workflows/*.md:
- [ ] Run
gh aw compile— check for errors - [ ] Run
gh aw compile --actionlint --zizmor --poutine— full security scan - [ ] Stage the
.lock.ymlalongside the.md - [ ] Stage
.github/aw/actions-lock.jsonif changed - [ ] Verify
network.allowedincludes all MCP server domains - [ ] Verify permissions are read-only (use safe-outputs for writes)
- [ ] Verify
threat-detection:prompt matches actual workflow threat model - [ ] For public repos: verify
lockdown:is explicitly set undertools.github:
.gitattributes
Add to repo root so lock files auto-resolve on merge:
Resources
- Examples: See references/ for existing workflow and agent files in this repo
- Documentation: See references/ for links to gh-aw official docs
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/gh-aw/SKILL.md
Popularity
- Repository stars
- 13,499
- Repository forks
- 2,068
- 7-day trend score
- 48
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 4 Apr 2026, 6 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/prowler-cloud/prowler/gh-aw)