yc-reader — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited yc-reader (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Fetches Y Combinator company data from the yc-oss/api, an unofficial open-source API that indexes all publicly launched YC companies. The data is sourced from YC's Algolia search index and updated daily via GitHub Actions.
This is a read-only data source. It provides company profiles, batch listings, industry/tag breakdowns, hiring status, and diversity data. No write operations exist — the API serves static JSON files.
No authentication required. The API is public and free. Just use curl to fetch JSON endpoints.
This skill only needs curl (to fetch data) and jq (to parse/filter JSON). Both are pre-installed on most systems.
!`(command -v curl > /dev/null && echo "CURL_OK" || echo "CURL_MISSING") && (command -v jq > /dev/null && echo "JQ_OK" || echo "JQ_MISSING")`If JQ_MISSING, install it:
# macOS
brew install jq
# Linux (Debian/Ubuntu)
sudo apt-get install jqIf jq is unavailable, you can still fetch raw JSON with curl and parse it inline with Python or other tools — but jq makes filtering much easier.
Match the user's request to the appropriate endpoint. See references/api_reference.md for full details.
| User Request | Endpoint | Notes |
|---|---|---|
| Overall YC stats | meta.json | Company count, batch list, industry/tag lists |
| All companies | companies/all.json | Full dataset (~5,700 companies) — large response |
| Top companies | companies/top.json | ~91 top-performing YC companies |
| Companies hiring | companies/hiring.json | ~1,400 currently hiring |
| Non-profit companies | companies/nonprofit.json | YC-backed non-profits |
| Diversity data | companies/black-founded.json, hispanic-latino-founded.json, women-founded.json | Founder diversity |
| Specific batch | batches/{batch-name}.json | e.g., winter-2026.json, spring-2026.json, fall-2025.json |
| Single company profile | batches/{batch-name}/{slug}.json | e.g., batches/summer-2009/stripe.json, batches/winter-2009/airbnb.json |
| By industry | industries/{industry}.json | e.g., fintech.json, healthcare.json |
| By tag | tags/{tag}.json | e.g., ai.json, developer-tools.json |
Batches use {season}-{year} format: winter-2026, spring-2026, summer-2026, fall-2025. Older batches follow the same pattern back to summer-2005. The short form (w09, s21) also works for the per-company endpoint.
Use lowercase with hyphens for multi-word names: real-estate, developer-tools, machine-learning.
https://yc-oss.github.io/api/# Fetch and pretty-print
curl -s https://yc-oss.github.io/api/companies/top.json | jq .
# Count companies in a result
curl -s https://yc-oss.github.io/api/batches/winter-2025.json | jq length
# Filter by field (e.g., hiring companies in a batch)
curl -s https://yc-oss.github.io/api/batches/winter-2025.json | jq '[.[] | select(.isHiring == true)]'
# Extract specific fields
curl -s https://yc-oss.github.io/api/companies/top.json | jq '.[] | {name, one_liner, batch, team_size, website}'
# Search by name (case-insensitive)
curl -s https://yc-oss.github.io/api/companies/all.json | jq '[.[] | select(.name | test("stripe"; "i"))]'winter-2025 not Winter 2025 or W25developer-tools not Developer Tools| Filter | Purpose | ||
|---|---|---|---|
jq length | Count results | ||
jq '.[0]' | First company | ||
jq '.[:10]' | First 10 companies | ||
| `jq '[.[] \ | select(.isHiring == true)]'` | Only hiring companies | |
| `jq '[.[] \ | select(.status == "Active")]'` | Only active companies | |
| `jq '[.[] \ | select(.team_size > 100)]'` | Companies with 100+ employees | |
| `jq '.[] \ | {name, one_liner, batch, website}'` | Select specific fields | |
| `jq '[.[] \ | select(.name \ | test("query"; "i"))]'` | Search by name |
| `jq 'sort_by(-.team_size) \ | .[:10]'` | Top 10 by team size |
After fetching data, present it clearly for startup/venture research:
If a request fails:
| Error | Cause | Fix |
|---|---|---|
404 Not Found | Invalid batch, industry, or tag name | Check meta.json for valid names |
Empty array [] | No companies match the query | Broaden the search or check spelling |
curl: Could not resolve host | No internet connection | Check network connectivity |
| Large/slow response | Fetching companies/all.json (5,700+ entries) | Use a more specific endpoint or add jq filters |
To discover valid batch, industry, and tag names:
# List all batches
curl -s https://yc-oss.github.io/api/meta.json | jq '.batches[].name'
# List all industries
curl -s https://yc-oss.github.io/api/meta.json | jq '.industries[].name'
# List all tags (there are 333+)
curl -s https://yc-oss.github.io/api/meta.json | jq '.tags[].name'references/api_reference.md — Complete endpoint reference with company schema, all endpoint URLs, and research workflow examplesRead the reference file when you need the exact company field schema, valid batch/industry/tag names, or detailed research workflow patterns.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.