GitHub Issue Export
Purpose
Read findings.json from the current pentest session and produce one copy-pasteable GitHub issue markdown block per confirmed finding.
Each block follows the AppSec reporting guide format — concrete impact, reproducible steps, raw PoC — so developers can act immediately without back-and-forth.
Workflow
- Read
findings.json from the repo root (or the path provided in $ARGUMENTS if given)
- For each entry in
findings[].findings (skip diagram entries):
- Format it using the template below
- Check
pocs/ for any .http file whose name contains a keyword from the finding title — if found, read it and paste the content into the PoC block
- After formatting the block, call
http(action="request", ...) with method PATCH, url http://localhost:7777/api/findings/{finding.id}, body {"gh_issue": "<the formatted markdown block>"}, and headers {"Content-Type": "application/json"} — this couples the block to the finding in the dashboard
- Write all formatted blocks to
gh-issues.md in the repo root, separated by ---, with a header line # GitHub Issues — <target> — <date> at the top. Create or overwrite the file.
- Print all blocks consecutively with a
--- separator between them
- After the last block, print a one-line summary:
X issue(s) ready to file — saved to gh-issues.md and copied above.
Output Template
For every finding, output exactly this structure (omit ## Browsers Verified In for non-browser/non-web findings):
**Summary:** <one sentence: what the vulnerability is and which component/endpoint is affected>
**Impact:** <what an attacker can concretely do — name the data exposed, the privilege gained, or the service disrupted. Never write "could lead to" — write "allows an attacker to". One short paragraph.>
**Severity Level:** <Critical | High | Medium | Low>
## Steps To Reproduce:
1. <exact first step — full URL, parameter name, payload>
2. <exact second step>
3. <what to observe in the response that confirms the issue>
## PoC
```
<paste the raw curl command, HTTP request from pocs/*.http, or tool output excerpt that proves exploitability>
```
## Supporting Material/References:
* <CVE ID if applicable, otherwise omit this line>
* Affected target: <target URL or file path from the finding>
* Tool: <tool_used value from the finding>
* <any additional evidence: key excerpt from raw tool output>
## Remediation
<if the finding has a `remediation` field, include this section — otherwise omit it entirely>
**Effort:** <effort level> | **Breaking change:** <Yes/No>
```diff
<paste the diff from remediation.diff, or show before/after from remediation.before and remediation.after>
```
**File:** <remediation.file>:<remediation.line>
**Verification:** <remediation.verification — how to confirm the fix worked>
**References:**
* <each URL from remediation.references>
Rules
- One block per finding — never merge two findings into one issue
- Impact must be concrete — derive it from the finding's
description and evidence fields; never invent hypothetical consequences
- Steps to Reproduce must be self-contained — if the finding has a
reproduction field, use its command as the primary reproduction step. Otherwise include full URLs and exact payloads so a developer can reproduce without asking questions
- PoC block is mandatory — if a matching
.http file exists in pocs/, paste its full content; if the finding has reproduction.command, include that; otherwise extract the most relevant raw evidence line from the evidence field
- Remediation section — if the finding has a
remediation field, include the ## Remediation section with the diff, effort level, verification step, and references. If no remediation exists, omit the section entirely
- Severity mapping: critical →
Critical, high → High, medium → Medium, low → Low
- Output only the markdown blocks and the final summary line — no extra prose, no headers, no explanation around the blocks
1---2name: gh-export3description: Formats all confirmed pentest findings from findings.json into copy-pasteable GitHub issue markdown blocks, following the AppSec reporting guide template.4---56# GitHub Issue Export78## Purpose910Read `findings.json` from the current pentest session and produce one copy-pasteable GitHub issue markdown block per confirmed finding.1112Each block follows the AppSec reporting guide format — concrete impact, reproducible steps, raw PoC — so developers can act immediately without back-and-forth.1314## Workflow15161. Read `findings.json` from the repo root (or the path provided in `$ARGUMENTS` if given)172. For each entry in `findings[].findings` (skip diagram entries):18 - Format it using the template below19 - Check `pocs/` for any `.http` file whose name contains a keyword from the finding title — if found, read it and paste the content into the PoC block20 - After formatting the block, call `http(action="request", ...)` with method `PATCH`, url `http://localhost:7777/api/findings/{finding.id}`, body `{"gh_issue": "<the formatted markdown block>"}`, and headers `{"Content-Type": "application/json"}` — this couples the block to the finding in the dashboard213. Write all formatted blocks to `gh-issues.md` in the repo root, separated by `---`, with a header line `# GitHub Issues — <target> — <date>` at the top. Create or overwrite the file.224. Print all blocks consecutively with a `---` separator between them235. After the last block, print a one-line summary: `X issue(s) ready to file — saved to gh-issues.md and copied above.`2425## Output Template2627For every finding, output exactly this structure (omit `## Browsers Verified In` for non-browser/non-web findings):2829~~~markdown30**Summary:** <one sentence: what the vulnerability is and which component/endpoint is affected>3132**Impact:** <what an attacker can concretely do — name the data exposed, the privilege gained, or the service disrupted. Never write "could lead to" — write "allows an attacker to". One short paragraph.>3334**Severity Level:** <Critical | High | Medium | Low>3536## Steps To Reproduce:37381. <exact first step — full URL, parameter name, payload>392. <exact second step>403. <what to observe in the response that confirms the issue>4142## PoC4344```45<paste the raw curl command, HTTP request from pocs/*.http, or tool output excerpt that proves exploitability>46```4748## Supporting Material/References:4950* <CVE ID if applicable, otherwise omit this line>51* Affected target: <target URL or file path from the finding>52* Tool: <tool_used value from the finding>53* <any additional evidence: key excerpt from raw tool output>5455## Remediation5657<if the finding has a `remediation` field, include this section — otherwise omit it entirely>5859**Effort:** <effort level> | **Breaking change:** <Yes/No>6061```diff62<paste the diff from remediation.diff, or show before/after from remediation.before and remediation.after>63```6465**File:** <remediation.file>:<remediation.line>6667**Verification:** <remediation.verification — how to confirm the fix worked>6869**References:**70* <each URL from remediation.references>71~~~7273## Rules7475- **One block per finding** — never merge two findings into one issue76- **Impact must be concrete** — derive it from the finding's `description` and `evidence` fields; never invent hypothetical consequences77- **Steps to Reproduce must be self-contained** — if the finding has a `reproduction` field, use its `command` as the primary reproduction step. Otherwise include full URLs and exact payloads so a developer can reproduce without asking questions78- **PoC block is mandatory** — if a matching `.http` file exists in `pocs/`, paste its full content; if the finding has `reproduction.command`, include that; otherwise extract the most relevant raw evidence line from the `evidence` field79- **Remediation section** — if the finding has a `remediation` field, include the ## Remediation section with the diff, effort level, verification step, and references. If no remediation exists, omit the section entirely80- **Severity mapping**: critical → `Critical`, high → `High`, medium → `Medium`, low → `Low`81- Output only the markdown blocks and the final summary line — no extra prose, no headers, no explanation around the blocks