Agentic GitHub Actions Auditor
trailofbits/skills
Statically audits GitHub Actions workflows that run AI coding agents, tracing attacker-controlled input to agent prompts and flagging unsafe sandbox, trigger and allowlist settings.
Draft a security-audit scope from GitHub repos or API access, with a protocol narrative and a sizing table.
$ npx skills add forefy/.context --skill audit-scope -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install forefy/.context audit-scope --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/forefy/.context.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/hunter-utils/audit-scope .claude/skills/audit-scope && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "audit-scope" agent skill from https://github.com/forefy/.context/tree/main/skills/hunter-utils/audit-scope into .claude/skills/audit-scope/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audit-scope", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/forefy/.context/tree/main/skills/hunter-utils/audit-scopeType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add forefy/.context --skill audit-scope -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install forefy/.context audit-scope --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forefy/.context.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/hunter-utils/audit-scope .agents/skills/audit-scope && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "audit-scope" agent skill from https://github.com/forefy/.context/tree/main/skills/hunter-utils/audit-scope into .agents/skills/audit-scope/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audit-scope", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add forefy/.context --skill audit-scope -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install forefy/.context audit-scope --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forefy/.context.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/hunter-utils/audit-scope .cursor/skills/audit-scope && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "audit-scope" agent skill from https://github.com/forefy/.context/tree/main/skills/hunter-utils/audit-scope into .cursor/skills/audit-scope/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audit-scope", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/forefy/.context.git --path skills/hunter-utils/audit-scope--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add forefy/.context --skill audit-scope -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install forefy/.context audit-scope --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forefy/.context.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/hunter-utils/audit-scope .gemini/skills/audit-scope && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "audit-scope" agent skill from https://github.com/forefy/.context/tree/main/skills/hunter-utils/audit-scope into .gemini/skills/audit-scope/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audit-scope", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install forefy/.context audit-scopeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add forefy/.context --skill audit-scope -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/forefy/.context.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/hunter-utils/audit-scope .github/skills/audit-scope && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "audit-scope" agent skill from https://github.com/forefy/.context/tree/main/skills/hunter-utils/audit-scope into .github/skills/audit-scope/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audit-scope", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add forefy/.context --skill audit-scope -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install forefy/.context audit-scope --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forefy/.context.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/hunter-utils/audit-scope .opencode/skills/audit-scope && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "audit-scope" agent skill from https://github.com/forefy/.context/tree/main/skills/hunter-utils/audit-scope into .opencode/skills/audit-scope/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audit-scope", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
audit-scopeDraft a security-audit scope from GitHub repos or API access, with a protocol narrative and a sizing table.
Audit Scope is an agent skill from forefy/.context. Draft a security-audit scope from GitHub repos or API access, with a protocol narrative and a sizing table. Use when scoping a new engagement.
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Security, covering Security review. It works with GitHub. The repository describes itself as: AI Agent Skills, Goals and Dynamic Workflows for Security Auditing, Pentesting and Research. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c8ff161. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
ghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Audit Scope loads about 2.3k tokens when it runs. Until then it costs about 39 tokens; SKILL.md has 1,198 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from forefy/.context at commit c8ff161, republished under its MIT licence (© forefy). 1,198 words, ~2,286 tokens.
.claude/skills/audit-scope/SKILL.md (or your agent's skills folder).User provides one or more of:
No report-days input needed - report writing is hardcoded (see Constants).
Scope is measured in days. Do not attach monetary amounts to the output - days are the unit of measurement here.
For each GitHub repo URL provided:
/tmp/<repo-name>-audit via gh repo clonecloc <repo> --quiet --not-match-f="(?i)(spec|test)" --not-match-d="(test|spec|__tests__|__mocks__)" --include-lang=TypeScript,JavaScript,Kotlin,Java,Go,Python,Rust,Solidity,HCL (exclude test/spec files and dirs, case-insensitive; adjust --include-lang for the repo's stack)For API-only scope (no repo):
Read enough to understand:
Apply these automatically - do not ask user:
| Condition | Discount |
|---|---|
| Multiple repos audited back-to-back (streak) | -0.5d lift-off discount |
| Multiple repos share same domain/features (similarity) | -20-35% off affected component's days |
| Spec/rules doc in scope alongside backend that implements it | -1-2d off backend (domain fluency pre-built) |
Lift-off discount = negative row in table (streak saves ramp time). Similarity discount = bidirectional - applies whenever two components share significant overlapping attack surface, regardless of order. E.g. SDKs and backend sharing the same signing/API domain discount each other: SDKs get discounted because backend covers the server-side of the same flow; backend gets discounted because SDK work already mapped the signing trust boundary. Bake into the component day estimate directly (no separate row).
Base pace: ~300-400 NSLOC/day for deep manual security audit. Adjust for:
Do not pace all NSLOC uniformly. First split the repo into trust-boundary vs non-audited code, then only price the trust boundary at audit depth. Raw cloc NSLOC != auditable NSLOC. This is the #1 source of overquoting - especially on web frontends, where most lines are presentational or read-only.
*Stats mappers, APY/TVL math that only feeds charts, zustand stores, config/utils. Skim for leaked secrets, injection into outbound requests, and any value that feeds transaction sizing - then move on. Do NOT read line-by-line.Contract/SDK out of scope -> frontend crypto pace is faster, not slower. If the on-chain program or signing SDK lives in a separate repo (imported dependency, not vendored), the frontend only orchestrates pre-built instructions. Don't apply the ~200 NSLOC/day crypto pace to it - the frontend can only validate at the guard layer, so those passes are firm but quick. Flag the separate contract/SDK repo as its own potential line item (that's where fund-safety bugs actually live).
Before finalizing days, compare against typical engagement sizes below. These are calibration anchors - if a NSLOC-derived estimate lands well outside the range for its type, re-check the tiering in step 4 (usually display/read-only code priced at audit depth).
| Engagement type | Typical days |
|---|---|
| Red team engagement | ~10-25 |
| Security tool development services | ~15-20 |
| Cloud misconfiguration review | ~8-12 |
| Secure code review | ~10 |
| Low-level secure code review | ~10 |
| Web app penetration test | ~5-8 |
| Android app pentest | ~5 |
| SDK secure code review | ~3-5 |
| Miniapp with lean backend | ~3-4 |
| Incident response | ~2-5 |
| 2-day custom training (build time) | ~20 |
Web/frontend protocol audits track the "web app pentest" row (5-8d), not "secure code review" (~10d), unless the frontend vendors its own contracts/signing code.
Line 1 - Protocol mission + why audit needed:
<Protocol name> is a <what it does>. <Scope components> are/is <role in system> - <why a flaw here = business impact>, making it <risk framing for the engagement>.
Scope components must be woven into this line with clear business justification for auditing them.
Line 2 - User story:
A <user type> <does X> - <SDK/component> <does Y> and <delivers Z to downstream system>.
Line 3 - Attacker story + incentives:
Attacker targets <attack surface> to <attack goal> - enabling <business-critical impact e.g. fund theft, unauthorized access, data breach>.
Columns: Component | NSLOC | Focus Areas | Days
Row order:
Lift-off discount (streak) | - | - | -0.5Report writing | - | - | 1Focus areas per component:
Print narrative (3 lines), blank line, then table. Nothing else.
Protocol: Acme is a payments infrastructure API enabling businesses to move digital assets across chains. The SDKs (sdk-lang1, sdk-lang2) are the sole cryptographic trust boundary between a business's private keys and the Acme API - any signing flaw directly enables fund theft or unauthorized wallet creation, making them the highest-risk component in the integration stack.
User story: A fintech backend creates a wallet and signs a transaction step - the SDK constructs and stamps the activity payload locally, returning a signature the app posts to the Acme API.
Attacker story & incentives: Attacker targets the private key or signing flow to forge activity stamps - enabling unauthorized wallet creation or hijacking transactions to redirect funds to attacker-controlled addresses.
| Component | NSLOC | Focus Areas | Days |
|---|---|---|---|
| sdk-lang1 audit | 943 | P-256 stamp construction, key isolation, body serialization, input validation, logger redaction | 1.5 |
| sdk-lang2 audit (similarity discount) | 1,764 | Signing parity with sdk-lang1, JVM key handling, coroutine error propagation, serialization safety | 2 |
| Lift-off discount (streak) | - | - | -0.5 |
| Report writing | - | - | 1 |
| Total | 2,707 | 4 |
© forefy, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/hunter-utils/audit-scope of forefy/.context.
Open the folder on GitHubat commit c8ff161
Audit Scope next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Audit Scope this skillforefy/.context | 152 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Agentic GitHub Actions Auditortrailofbits/skills | 7.4k | 6 repos | ~5.4k | Automated safety check: Notes | CC-BY-SA-4.0 | |
| Codebase Audit Pre Pushsickn33/agentic-awesome-skills | 47k | 2 repos | ~2.1k | Automated safety check: Notes | MIT | |
| Security SecretsIgorWarzocha/Opencode-Workflows | 122 | — | ~1.2k | Automated safety check: Notes | None | |
| Hunter 22aeonfun/aeon | 767 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Repo SentinelMathews-Tom/armory | 327 | — | ~2.2k | Automated safety check: Pass | MIT |
trailofbits/skills
Statically audits GitHub Actions workflows that run AI coding agents, tracing attacker-controlled input to agent prompts and flagging unsafe sandbox, trigger and allowlist settings.
sickn33/agentic-awesome-skills
Deep audit before GitHub push: removes junk files, dead code, security holes, and optimization issues.
IgorWarzocha/Opencode-Workflows
Review secret detection patterns and scanning workflows. An agent skill from IgorWarzocha/Opencode-Workflows.
aeonfun/aeon
Scan the ClawHunter agent bounty marketplace for opportunities that genuinely match this agent's real capabilities (code, security research, writing) and surface only real matches — never a raw…
Mathews-Tom/armory
Full security audit for public repositories across 12 attack surfaces: git history, secrets, CI/CD, containers, dependencies, licenses.
kedro-org/kedro
Run a Kedro security scan on the full codebase or just a pull request.
forefy/.context
Builds and formats security audit reports in Google Docs through the Docs API, with fixes for index drift, code styling and cross-reference links.
forefy/.context
Audits the Safe multisig wallets of DeFi protocols for governance misconfigurations, scoring each against a finding library and producing a severity-ranked report.
forefy/.context
Turns a company's domains into likely storage bucket names and checks six cloud providers for publicly readable buckets, for authorized security assessments only.
forefy/.context
Passively map a company's domains, subdomains, DNS ownership, tech stack, and CDNs.
forefy/.context
Comprehensive smart contract security audit framework with multi-expert analysis.
forefy/.context
Comprehensive infrastructure security audit framework for IaC, Docker, Kubernetes, and cloud configurations.
Works with
Categories
Draft a security-audit scope from GitHub repos or API access, with a protocol narrative and a sizing table. context. Draft a security-audit scope from GitHub repos or API access, with a protocol narrative and a sizing table.
Audit Scope fits situations like: scoping a new engagement; tasks that involve Security review.
Run `npx skills add forefy/.context --skill audit-scope -a claude-code`. Or copy the skill folder (skills/hunter-utils/audit-scope in forefy/.context) into .claude/skills/audit-scope in your project. Claude Code loads it when a task matches its description.
Run `npx skills add forefy/.context --skill audit-scope -a codex`. Or copy the skill folder (skills/hunter-utils/audit-scope in forefy/.context) into .agents/skills/audit-scope in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add forefy/.context --skill audit-scope -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/audit-scope, .gemini/skills/audit-scope, .github/skills/audit-scope and .opencode/skills/audit-scope in your project.
Going by SKILL.md and its folder, Audit Scope needs the command-line tools its instructions call (gh).
SKILL.md contains no URLs. Its commands use gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Audit Scope is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Audit Scope: Agentic GitHub Actions Auditor (trailofbits/skills, 7.4k stars), Codebase Audit Pre Push (sickn33/agentic-awesome-skills, 47k stars), Security Secrets (IgorWarzocha/Opencode-Workflows, 122 stars) and Hunter 22 (aeonfun/aeon, 767 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
forefy (a GitHub user) maintains it in forefy/.context, which has 152 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on October 4, 2026.
Source: forefy/.context on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.