vuln-report

Installation
SKILL.md

Vuln Report

Write vulnerability reports and advisories that a maintainer or triager can confirm without asking a question back. A finished report states the flaw, its trigger condition, and the demonstrated result in its first block; gives the exact version tested, kept apart from any estimated range; reproduces from a clean setup with expected and observed results; bounds impact by explicit preconditions; leaves severity to whoever owns it unless the venue asks for it; and says what tools and AI did and what the person verified. The evidence beside it is named, referenced from the text, hashed, and free of private paths and secrets.

The rules come from a survey of published report originals, research-team advisories, maintainer and program policies, record formats, and accepted advisories in Python and agent tooling. Each rule names its sources by ID in backticks. The exemplar catalog resolves each published source ID to a URL and to what was extracted, describes reddit-survey and local, and lists where sources disagree. When they disagree, the target's own written policy decides. Rules labeled local are the pack maintainer's requirements or the pack's review practice rather than a published source.

Authority

Drafting and checking local files is the default result. Write drafts and evidence outside any repository that is pushed publicly, or under a path its ignore rules cover, and never stage them; ask when the destination is unclear. Submitting a report, posting to a tracker or mailing list, sending email, opening or editing an advisory, requesting a CVE, and publishing a write-up are separate actions: take one only when the user asks for that action, and show the final text first.

Never put details of an unfixed vulnerability in a public issue, pull request, commit message, public chat channel, gist, or public repository (curl-policy, rails-policy, github-pvr), unless the target's policy routes that class to a public channel, as the kernel does for AI-found or trivially discoverable bugs and Node.js does for hardening; even then, withhold a working reproducer until asked (kernel-policy, node-security). Evidence comes from systems the user owns or is authorized to test, with the minimum PoC, no harmful payload, and no access to other users' data (node-security, bugcrowd-guide, ghsa-mlflow).

The agent drafts, checks, and packages; the person runs or confirms the PoC, reads the patch, owns every sentence, and submits. Write verification and disclosure statements no stronger than what that person did, offer a recording rather than claim one exists, and do not answer a maintainer's questions in the person's name unless asked (local).

Policies differ on AI-drafted text. curl asks the reporter to write the report themselves after verifying the finding, and Apple discourages long AI-generated descriptions (curl-ai-policy, apple-guidelines). Django and the kernel accept AI-drafted reports that are short, disclosed, and verified by the person (django-policy, kernel-policy). Where the policy asks for the reporter's own words or rejects AI-written report text, deliver the verified facts, the section outline, and the checker output for the person to write from, and list "rewrite in your own words" as an open item.

Normal path

Route the request first. A check returns the checker output and checklist findings and edits nothing unless asked. A revision keeps the person's wording outside the defects named. A CVE description or GHSA body goes to its section in venue formats. A reply to a maintainer goes to After submission. A new report follows these steps and the decision rules after them.

Installs
1
GitHub Stars
2
First Seen
Oct 14, 2026