From stackhawk-api
Use this skill when a user or agent needs to query the StackHawk platform for security reporting, findings analysis, or app management. Triggers include: "stackhawk api", "security posture", "findings report", "show me findings", "untriaged findings", "which apps", "scan history", "security dashboard", "triage", "what needs attention". Uses the hawk CLI (`hawk op` subcommand) for all platform queries. Do NOT use for running scans (use the hawkscan skill for "scan my app", "hawkscan", "stackhawk.yml", "DAST") or for fixing/remediating code or vulnerabilities — this skill only reads and reports platform data.
How this skill is triggered — by the user, by Claude, or both
Slash command
/stackhawk-api:apiThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill enables Claude to act as a security reporting agent against the StackHawk
This skill enables Claude to act as a security reporting agent against the StackHawk platform. The core workflow is:
Question → Authenticate → Query API via hawk op → Present Results → Suggest Next Actions
All platform queries run through the hawk binary's op subtree
(hawk op …). It authenticates, refreshes tokens, follows pagination, and
emits stable JSON. There is no raw-REST fallback — if hawk is unavailable,
install it and run hawk init --browser rather than hand-rolling curl.
See references/hawk-op-shortcuts.md.
Before making any calls, check what's available:
Is hawk installed and configured? (hawk version reports v6.0.0 or greater)
# Identify the driving skill for CLI usage telemetry (read by hawk/hawkop).
export _STACKHAWK_SKILL=api
command -v hawk >/dev/null && hawk op status
hawk init --browser (interactive; the combined binary
has no hawk op init — hawk init writes ~/.hawk/hawk.properties, which
hawk op reads along with the HAWK_API_KEY env var).hawk CLI (docs:
docs.stackhawk.com) and stop; do not fall back to curl.Is hawk op authenticated? For local/agentic use, hawk init --browser stores
credentials in ~/.hawk/hawk.properties — no env var needed for interactive
sessions. Verify:
hawk op status
CI/CD only: If running in a pipeline, set
HAWK_API_KEYas a secret.hawk opreads it directly — no config file required.
Is orgId known? Required for most endpoints.
hawk op org get returns the active org UUID.hawk op org set <ID> switches the default org.Route based on user intent:
| User says... | Go to... |
|---|---|
| "What's my security posture?" or "dashboard" | Step 3 (org summary) |
| "Tell me about [app]'s findings" or "what needs attention" | Step 4 (app deep dive) |
| "What apps haven't been scanned recently?" | Step 3 with stale-app focus |
| "What changed since last week?" or "what's new" | Step 4 with diff recipe |
| "Show me untriaged findings" | Step 3, then drill into Step 4 for flagged apps |
hawk init --browser once for interactive setup — the CLI stores credentials in
~/.hawk/hawk.properties and hawk op handles token refresh and 401 retry on
every call. No further auth work for this skill.
→ Full setup commands (install, CI env var, profiles for org switching):
references/hawk-op-shortcuts.md.
Goal: Give the user a bird's-eye view of security health across all apps and environments.
Use hawk op app list and hawk op scan list to assemble an org-level view.
hawk op app list --format json returns app metadata; hawk op scan list --format json
returns per-scan severity counts. Join on applicationId to build a posture table.
# All apps with metadata (team, type, env count)
hawk op app list --format json
# Recent scans across the org — has per-scan severity counts
hawk op scan list --limit 500 --format json
Fields available per scan: highAlertCount, mediumAlertCount, lowAlertCount,
applicationId, environmentName, startedTimestamp, status.
Format the response as:
| App | Environment | High | Medium | Low | Last Scan |
|---|---|---|---|---|---|
| My API | Production | 3 | 7 | 12 | 2024-01-15 |
| Auth Service | Staging | 0 | 2 | 4 | 2024-01-10 |
Resolve applicationId → app name via hawk op app list --format json.
startedTimestamp older than 30 days — flag as "No recent scan"highAlertCount > 0, sorted descendingstatus not COMPLETED — may indicate config issuesOffer to drill down on any flagged app:
Full recipe with jq transforms:
→ references/reporting-recipes.md
Goal: Get specific finding details for a single app — what was found, where, and what it means.
hawk op scan get (one command covers ~90% of cases)hawk op scan get walks the scan → alerts → findings chain internally. No manual drill-down, no ID extraction, no token handling.
# Latest scan for an app — overview + alerts table
hawk op scan get --app "<APP_NAME>"
# Full findings with HTTP evidence + remediation (best for AI agent reasoning)
hawk op scan get --app "<APP_NAME>" --detail full --format json
--detail full returns every alert, every affected URI, HTTP messages (subject to
--max-body-size), and remediation guidance in one JSON blob.
→ Specific scan IDs, single-alert / single-URI drill-down, --max-findings tuning:
references/hawk-op-shortcuts.md §2.
Show a structured summary:
Link to the scan on the platform:
https://app.stackhawk.com/scans/{scanId}
Compare two scans: use hawk op scan list to get the two most recent scan IDs for
the app, pull alerts for each via hawk op scan get, diff the pluginId sets.
→ Executable recipe (hawk op pipeline with comm diff):
references/hawk-op-shortcuts.md §2.
→ Full jq recipes: references/reporting-recipes.md.
app.stackhawk.com/scans/{scanId}) whenever referencing a specific scanNEW, FALSE_POSITIVE, RISK_ACCEPTED, ASSIGNED) alongside each findingBase suggestions on what the data shows:
| Finding | Suggested action |
|---|---|
| High severity findings present | Recommend immediate remediation; offer to hand finding details to → hawkscan skill for a re-scan to verify fixes |
| Stale apps (no scan > 30 days) | Recommend running a fresh scan → hawkscan skill |
| Clean results across all envs | Note that low path count may mean the spider needs tuning → hawkscan skill, config-patterns reference |
Untriaged findings (status: NEW) | Direct to platform for triage: app.stackhawk.com — triage write operations are out of scope for this skill |
ENV_INCOMPLETE app status | Direct to platform to complete environment configuration |
Use API data (this skill) when:
Direct to platform UI when:
hawk op scan get <SCAN_ID> --uri-id <ID> --message)${HAWK_API_KEY} for CI/CD; store credentials via hawk init --browser for local use; never inline the key value itself.orgId with appId — hawk op scan list --app <APP_ID> takes the app UUID. The org is implicit from config; override with --org <ID> if needed. Mixing them returns empty results, not an error.--detail full when you need the remediation/HTTP message payload. The default hawk op scan get output is the overview — it won't include per-URI evidence.npx claudepluginhub stackhawk/agent-skills --plugin stackhawk-apiRuns the HawkScan DAST security loop — configure, scan, fix all reported vulnerabilities (not just your changes), rescan to verify. Performs code-first discovery to configure high-value scans, and quality-gates every scan against code-derived expectations before findings are parsed. Use when the user asks to run or perform a security/DAST scan, to test an app or API for vulnerabilities, or to verify a vulnerability is fixed; and AUTONOMOUSLY right after you complete a code change (feature, bugfix, refactor) — "done" means "done and secure," so run the loop without asking permission. Do NOT trigger for: informational questions about what HawkScan is, detects, or how it works (e.g. "what vulnerabilities does HawkScan find?"); editing stackhawk.yml or other config without running a scan; querying existing findings, security posture, untriaged counts, or scan history (use the stackhawk-api skill); documentation-only changes; installing or setting up the CLI; or when the user explicitly says to skip scanning.
Pulls AWS Security Agent findings (penetration tests and code reviews) to a local gitignored directory, produces a prioritized triage, and drives remediation of the highest-risk vulnerabilities.
Queries and manages Fortify on Demand applications, releases, and security issues. Starts and monitors SAST/DAST/SCA scans, imports FPR/SARIF/CycloneDX artifacts, and performs policy/portfolio analysis.