Community
Contribute
The archive is maintained by the community. Adding a writeup means creating a YAML file and opening a pull request — no code required.
What gets in, and what doesn’t
This is the only rule that really matters, and it’s deliberately strict:
- Accepted: Writeups by authors known in the community, or with demonstrable results: paid bounties, assigned CVEs, reports disclosed on official platforms.
- Accepted: Original research from labs and security teams with a track record.
- Accepted: Podcast episodes and talks with verifiable technical content.
- Not accepted: “I made $10,000 in a week” posts with no PoC, no public report and nothing backing the number.
- Not accepted: AI-regurgitated content re-explaining the OWASP Top 10 for the hundredth time.
- Not accepted: Estimated, inferred or “approximate” bounty amounts. If the number isn’t public, the field stays empty.
Add a writeup
- 1
Create the file
In
data/writeups/, namedYYYY-MM-DD-short-title.yaml. The date is the article’s publication date, not today’s. - 2
Fill in the fields
data/writeups/2026-07-15-ssrf-example.yamltitle: "Blind SSRF via PDF export" author: "@handle" author_url: "https://twitter.com/handle" # optional date: "2026-07-15" url: "https://example.com/writeup" source: "HackerOne" # Classification bug_type: "SSRF" severity: "High" cwe: "CWE-918" # optional # Program platform: "HackerOne" program: "Example Inc." # optional # Bounty — only when the amount is public is_paid: true bounty_amount: 5000 currency: "USD" summary: "One or two sentences of your own, not the article's blurb." # optional tags: - "ssrf" - "pdf-export"
- 3
Open the pull request
CI validates the schema, checks the URL resolves and confirms it isn’t a duplicate. If something fails, the bot comments on the PR with what to fix.
Allowed values
The taxonomies are closed on purpose: if every writeup invents its own category, the filters stop being useful. Adding a value means editing data/taxonomy.yaml and web/src/lib/types.ts in the same PR — the build fails if they drift apart, which is what forces the discussion.
severity
platform
bug_type
Add a source
Check the sources page first — if it’s already tracked, there’s nothing to do. Otherwise add a block to data/sources.yaml:
- name: "Source name" url: "https://example.com/feed.xml" site: "https://example.com" category: blog # blog | platform | researcher | podcast | news status: active # active | stale | broken | no-feed verified: true # known author or organisation? note: "Optional context."
Reporting a broken feed counts as a contribution too — and it’s the fastest one to review.